Add versioned in-tree docs for 3.11.11 and 4.0-rc1, also update stable and latest symlinks.
diff --git a/src/doc/3.11 b/src/doc/3.11
index 530fe91..2653961 120000
--- a/src/doc/3.11
+++ b/src/doc/3.11
@@ -1 +1 @@
-3.11.9
\ No newline at end of file
+3.11.11
\ No newline at end of file
diff --git a/src/doc/3.11.11/.buildinfo b/src/doc/3.11.11/.buildinfo
new file mode 100644
index 0000000..33cda18
--- /dev/null
+++ b/src/doc/3.11.11/.buildinfo
@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
+config: 1e9233cc281e3e9b59d7b8228d0502d0
+tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/src/doc/3.11.11/_images/eclipse_debug0.png b/src/doc/3.11.11/_images/eclipse_debug0.png
new file mode 100644
index 0000000..79fc5fd
--- /dev/null
+++ b/src/doc/3.11.11/_images/eclipse_debug0.png
Binary files differ
diff --git a/src/doc/3.11.11/_images/eclipse_debug1.png b/src/doc/3.11.11/_images/eclipse_debug1.png
new file mode 100644
index 0000000..87b8756
--- /dev/null
+++ b/src/doc/3.11.11/_images/eclipse_debug1.png
Binary files differ
diff --git a/src/doc/3.11.11/_images/eclipse_debug2.png b/src/doc/3.11.11/_images/eclipse_debug2.png
new file mode 100644
index 0000000..df4eddb
--- /dev/null
+++ b/src/doc/3.11.11/_images/eclipse_debug2.png
Binary files differ
diff --git a/src/doc/3.11.11/_images/eclipse_debug3.png b/src/doc/3.11.11/_images/eclipse_debug3.png
new file mode 100644
index 0000000..2317814
--- /dev/null
+++ b/src/doc/3.11.11/_images/eclipse_debug3.png
Binary files differ
diff --git a/src/doc/3.11.11/_images/eclipse_debug4.png b/src/doc/3.11.11/_images/eclipse_debug4.png
new file mode 100644
index 0000000..5063d48
--- /dev/null
+++ b/src/doc/3.11.11/_images/eclipse_debug4.png
Binary files differ
diff --git a/src/doc/3.11.11/_images/eclipse_debug5.png b/src/doc/3.11.11/_images/eclipse_debug5.png
new file mode 100644
index 0000000..ab68e68
--- /dev/null
+++ b/src/doc/3.11.11/_images/eclipse_debug5.png
Binary files differ
diff --git a/src/doc/3.11.11/_images/eclipse_debug6.png b/src/doc/3.11.11/_images/eclipse_debug6.png
new file mode 100644
index 0000000..61ef30b
--- /dev/null
+++ b/src/doc/3.11.11/_images/eclipse_debug6.png
Binary files differ
diff --git a/src/doc/3.11.11/_sources/architecture/dynamo.rst.txt b/src/doc/3.11.11/_sources/architecture/dynamo.rst.txt
new file mode 100644
index 0000000..a7dbb87
--- /dev/null
+++ b/src/doc/3.11.11/_sources/architecture/dynamo.rst.txt
@@ -0,0 +1,139 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Dynamo
+------
+
+.. _gossip:
+
+Gossip
+^^^^^^
+
+.. todo:: todo
+
+Failure Detection
+^^^^^^^^^^^^^^^^^
+
+.. todo:: todo
+
+Token Ring/Ranges
+^^^^^^^^^^^^^^^^^
+
+.. todo:: todo
+
+.. _replication-strategy:
+
+Replication
+^^^^^^^^^^^
+
+The replication strategy of a keyspace determines which nodes are replicas for a given token range. The two main
+replication strategies are :ref:`simple-strategy` and :ref:`network-topology-strategy`.
+
+.. _simple-strategy:
+
+SimpleStrategy
+~~~~~~~~~~~~~~
+
+SimpleStrategy allows a single integer ``replication_factor`` to be defined. This determines the number of nodes that
+should contain a copy of each row.  For example, if ``replication_factor`` is 3, then three different nodes should store
+a copy of each row.
+
+SimpleStrategy treats all nodes identically, ignoring any configured datacenters or racks.  To determine the replicas
+for a token range, Cassandra iterates through the tokens in the ring, starting with the token range of interest.  For
+each token, it checks whether the owning node has been added to the set of replicas, and if it has not, it is added to
+the set.  This process continues until ``replication_factor`` distinct nodes have been added to the set of replicas.
+
+.. _network-topology-strategy:
+
+NetworkTopologyStrategy
+~~~~~~~~~~~~~~~~~~~~~~~
+
+NetworkTopologyStrategy allows a replication factor to be specified for each datacenter in the cluster.  Even if your
+cluster only uses a single datacenter, NetworkTopologyStrategy should be prefered over SimpleStrategy to make it easier
+to add new physical or virtual datacenters to the cluster later.
+
+In addition to allowing the replication factor to be specified per-DC, NetworkTopologyStrategy also attempts to choose
+replicas within a datacenter from different racks.  If the number of racks is greater than or equal to the replication
+factor for the DC, each replica will be chosen from a different rack.  Otherwise, each rack will hold at least one
+replica, but some racks may hold more than one. Note that this rack-aware behavior has some potentially `surprising
+implications <https://issues.apache.org/jira/browse/CASSANDRA-3810>`_.  For example, if there are not an even number of
+nodes in each rack, the data load on the smallest rack may be much higher.  Similarly, if a single node is bootstrapped
+into a new rack, it will be considered a replica for the entire ring.  For this reason, many operators choose to
+configure all nodes on a single "rack".
+
+Tunable Consistency
+^^^^^^^^^^^^^^^^^^^
+
+Cassandra supports a per-operation tradeoff between consistency and availability through *Consistency Levels*.
+Essentially, an operation's consistency level specifies how many of the replicas need to respond to the coordinator in
+order to consider the operation a success.
+
+The following consistency levels are available:
+
+``ONE``
+  Only a single replica must respond.
+
+``TWO``
+  Two replicas must respond.
+
+``THREE``
+  Three replicas must respond.
+
+``QUORUM``
+  A majority (n/2 + 1) of the replicas must respond.
+
+``ALL``
+  All of the replicas must respond.
+
+``LOCAL_QUORUM``
+  A majority of the replicas in the local datacenter (whichever datacenter the coordinator is in) must respond.
+
+``EACH_QUORUM``
+  A majority of the replicas in each datacenter must respond.
+
+``LOCAL_ONE``
+  Only a single replica must respond.  In a multi-datacenter cluster, this also gaurantees that read requests are not
+  sent to replicas in a remote datacenter.
+
+``ANY``
+  A single replica may respond, or the coordinator may store a hint. If a hint is stored, the coordinator will later
+  attempt to replay the hint and deliver the mutation to the replicas.  This consistency level is only accepted for
+  write operations.
+
+Write operations are always sent to all replicas, regardless of consistency level. The consistency level simply
+controls how many responses the coordinator waits for before responding to the client.
+
+For read operations, the coordinator generally only issues read commands to enough replicas to satisfy the consistency
+level. There are a couple of exceptions to this:
+
+- Speculative retry may issue a redundant read request to an extra replica if the other replicas have not responded
+  within a specified time window.
+- Based on ``read_repair_chance`` and ``dclocal_read_repair_chance`` (part of a table's schema), read requests may be
+  randomly sent to all replicas in order to repair potentially inconsistent data.
+
+Picking Consistency Levels
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+It is common to pick read and write consistency levels that are high enough to overlap, resulting in "strong"
+consistency.  This is typically expressed as ``W + R > RF``, where ``W`` is the write consistency level, ``R`` is the
+read consistency level, and ``RF`` is the replication factor.  For example, if ``RF = 3``, a ``QUORUM`` request will
+require responses from at least two of the three replicas.  If ``QUORUM`` is used for both writes and reads, at least
+one of the replicas is guaranteed to participate in *both* the write and the read request, which in turn guarantees that
+the latest write will be read. In a multi-datacenter environment, ``LOCAL_QUORUM`` can be used to provide a weaker but
+still useful guarantee: reads are guaranteed to see the latest write from within the same datacenter.
+
+If this type of strong consistency isn't required, lower consistency levels like ``ONE`` may be used to improve
+throughput, latency, and availability.
diff --git a/src/doc/3.11.11/_sources/architecture/guarantees.rst.txt b/src/doc/3.11.11/_sources/architecture/guarantees.rst.txt
new file mode 100644
index 0000000..c0b58d8
--- /dev/null
+++ b/src/doc/3.11.11/_sources/architecture/guarantees.rst.txt
@@ -0,0 +1,20 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Guarantees
+----------
+
+.. todo:: todo
diff --git a/src/doc/3.11.11/_sources/architecture/index.rst.txt b/src/doc/3.11.11/_sources/architecture/index.rst.txt
new file mode 100644
index 0000000..58eda13
--- /dev/null
+++ b/src/doc/3.11.11/_sources/architecture/index.rst.txt
@@ -0,0 +1,29 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Architecture
+============
+
+This section describes the general architecture of Apache Cassandra.
+
+.. toctree::
+   :maxdepth: 2
+
+   overview
+   dynamo
+   storage_engine
+   guarantees
+
diff --git a/src/doc/3.11.11/_sources/architecture/overview.rst.txt b/src/doc/3.11.11/_sources/architecture/overview.rst.txt
new file mode 100644
index 0000000..005b15b
--- /dev/null
+++ b/src/doc/3.11.11/_sources/architecture/overview.rst.txt
@@ -0,0 +1,20 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Overview
+--------
+
+.. todo:: todo
diff --git a/src/doc/3.11.11/_sources/architecture/storage_engine.rst.txt b/src/doc/3.11.11/_sources/architecture/storage_engine.rst.txt
new file mode 100644
index 0000000..2bd429d
--- /dev/null
+++ b/src/doc/3.11.11/_sources/architecture/storage_engine.rst.txt
@@ -0,0 +1,129 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Storage Engine
+--------------
+
+.. _commit-log:
+
+CommitLog
+^^^^^^^^^
+
+Commitlogs are an append only log of all mutations local to a Cassandra node. Any data written to Cassandra will first be written to a commit log before being written to a memtable. This provides durability in the case of unexpected shutdown. On startup, any mutations in the commit log will be applied to memtables.
+
+All mutations write optimized by storing in commitlog segments, reducing the number of seeks needed to write to disk. Commitlog Segments are limited by the "commitlog_segment_size_in_mb" option, once the size is reached, a new commitlog segment is created. Commitlog segments can be archived, deleted, or recycled once all its data has been flushed to SSTables.  Commitlog segments are truncated when Cassandra has written data older than a certain point to the SSTables. Running "nodetool drain" before stopping Cassandra will write everything in the memtables to SSTables and remove the need to sync with the commitlogs on startup.
+
+- ``commitlog_segment_size_in_mb``: The default size is 32, which is almost always fine, but if you are archiving commitlog segments (see commitlog_archiving.properties), then you probably want a finer granularity of archiving; 8 or 16 MB is reasonable. Max mutation size is also configurable via max_mutation_size_in_kb setting in cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024.
+
+***NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must be set to at least twice the size of max_mutation_size_in_kb / 1024***
+
+*Default Value:* 32
+
+Commitlogs are an append only log of all mutations local to a Cassandra node. Any data written to Cassandra will first be written to a commit log before being written to a memtable. This provides durability in the case of unexpected shutdown. On startup, any mutations in the commit log will be applied.
+
+- ``commitlog_sync``: may be either “periodic” or “batch.”
+
+  - ``batch``: In batch mode, Cassandra won’t ack writes until the commit log has been fsynced to disk. It will wait "commitlog_sync_batch_window_in_ms" milliseconds between fsyncs. This window should be kept short because the writer threads will be unable to do extra work while waiting. You may need to increase concurrent_writes for the same reason.
+
+    - ``commitlog_sync_batch_window_in_ms``: Time to wait between "batch" fsyncs
+    *Default Value:* 2
+
+  - ``periodic``: In periodic mode, writes are immediately ack'ed, and the CommitLog is simply synced every "commitlog_sync_period_in_ms" milliseconds.
+
+    - ``commitlog_sync_period_in_ms``: Time to wait between "periodic" fsyncs
+    *Default Value:* 10000
+
+*Default Value:* periodic
+
+*** NOTE: In the event of an unexpected shutdown, Cassandra can lose up to the sync period or more if the sync is delayed. If using "batch" mode, it is recommended to store commitlogs in a separate, dedicated device.**
+
+
+- ``commitlog_directory``: This option is commented out by default When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $CASSANDRA_HOME/data/commitlog.
+
+*Default Value:* /var/lib/cassandra/commitlog
+
+- ``commitlog_compression``: Compression to apply to the commitlog. If omitted, the commit log will be written uncompressed. LZ4, Snappy, Deflate and Zstd compressors are supported.
+
+(Default Value: (complex option)::
+
+    #   - class_name: LZ4Compressor
+    #     parameters:
+    #         -
+
+- ``commitlog_total_space_in_mb``: Total space to use for commit logs on disk.
+
+If space gets above this value, Cassandra will flush every dirty CF in the oldest segment and remove it. So a small total commitlog space will tend to cause more flush activity on less-active columnfamilies.
+
+The default value is the smaller of 8192, and 1/4 of the total space of the commitlog volume.
+
+*Default Value:* 8192
+
+.. _memtables:
+
+Memtables
+^^^^^^^^^
+
+Memtables are in-memory structures where Cassandra buffers writes.  In general, there is one active memtable per table.
+Eventually, memtables are flushed onto disk and become immutable `SSTables`_.  This can be triggered in several
+ways:
+
+- The memory usage of the memtables exceeds the configured threshold  (see ``memtable_cleanup_threshold``)
+- The :ref:`commit-log` approaches its maximum size, and forces memtable flushes in order to allow commitlog segments to
+  be freed
+
+Memtables may be stored entirely on-heap or partially off-heap, depending on ``memtable_allocation_type``.
+
+SSTables
+^^^^^^^^
+
+SSTables are the immutable data files that Cassandra uses for persisting data on disk.
+
+As SSTables are flushed to disk from :ref:`memtables` or are streamed from other nodes, Cassandra triggers compactions
+which combine multiple SSTables into one.  Once the new SSTable has been written, the old SSTables can be removed.
+
+Each SSTable is comprised of multiple components stored in separate files:
+
+``Data.db``
+  The actual data, i.e. the contents of rows.
+
+``Index.db``
+  An index from partition keys to positions in the ``Data.db`` file.  For wide partitions, this may also include an
+  index to rows within a partition.
+
+``Summary.db``
+  A sampling of (by default) every 128th entry in the ``Index.db`` file.
+
+``Filter.db``
+  A Bloom Filter of the partition keys in the SSTable.
+
+``CompressionInfo.db``
+  Metadata about the offsets and lengths of compression chunks in the ``Data.db`` file.
+
+``Statistics.db``
+  Stores metadata about the SSTable, including information about timestamps, tombstones, clustering keys, compaction,
+  repair, compression, TTLs, and more.
+
+``Digest.crc32``
+  A CRC-32 digest of the ``Data.db`` file.
+
+``TOC.txt``
+  A plain text list of the component files for the SSTable.
+
+Within the ``Data.db`` file, rows are organized by partition.  These partitions are sorted in token order (i.e. by a
+hash of the partition key when the default partitioner, ``Murmur3Partition``, is used).  Within a partition, rows are
+stored in the order of their clustering keys.
+
+SSTables can be optionally compressed using block-based compression.
diff --git a/src/doc/3.11.11/_sources/bugs.rst.txt b/src/doc/3.11.11/_sources/bugs.rst.txt
new file mode 100644
index 0000000..240cfd4
--- /dev/null
+++ b/src/doc/3.11.11/_sources/bugs.rst.txt
@@ -0,0 +1,30 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Reporting Bugs and Contributing
+===============================
+
+If you encounter a problem with Cassandra, the first places to ask for help are the :ref:`user mailing list
+<mailing-lists>` and the ``#cassandra`` :ref:`IRC channel <irc-channels>`.
+
+If, after having asked for help, you suspect that you have found a bug in Cassandra, you should report it by opening a
+ticket through the `Apache Cassandra JIRA <https://issues.apache.org/jira/browse/CASSANDRA>`__. Please provide as much
+details as you can on your problem, and don't forget to indicate which version of Cassandra you are running and on which
+environment.
+
+Further details on how to contribute can be found at our :doc:`development/index` section. Please note that the source of
+this documentation is part of the Cassandra git repository and hence contributions to the documentation should follow the
+same path.
diff --git a/src/doc/3.11.11/_sources/configuration/cassandra_config_file.rst.txt b/src/doc/3.11.11/_sources/configuration/cassandra_config_file.rst.txt
new file mode 100644
index 0000000..e09f6d3
--- /dev/null
+++ b/src/doc/3.11.11/_sources/configuration/cassandra_config_file.rst.txt
@@ -0,0 +1,1921 @@
+.. _cassandra-yaml:
+
+Cassandra Configuration File
+============================
+
+``cluster_name``
+----------------
+
+The name of the cluster. This is mainly used to prevent machines in
+one logical cluster from joining another.
+
+*Default Value:* 'Test Cluster'
+
+``num_tokens``
+--------------
+
+This defines the number of tokens randomly assigned to this node on the ring
+The more tokens, relative to other nodes, the larger the proportion of data
+that this node will store. You probably want all nodes to have the same number
+of tokens assuming they have equal hardware capability.
+
+If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility,
+and will use the initial_token as described below.
+
+Specifying initial_token will override this setting on the node's initial start,
+on subsequent starts, this setting will apply even if initial token is set.
+
+If you already have a cluster with 1 token per node, and wish to migrate to 
+multiple tokens per node, see http://wiki.apache.org/cassandra/Operations
+
+*Default Value:* 256
+
+``allocate_tokens_for_keyspace``
+--------------------------------
+*This option is commented out by default.*
+
+Triggers automatic allocation of num_tokens tokens for this node. The allocation
+algorithm attempts to choose tokens in a way that optimizes replicated load over
+the nodes in the datacenter for the replication strategy used by the specified
+keyspace.
+
+The load assigned to each node will be close to proportional to its number of
+vnodes.
+
+Only supported with the Murmur3Partitioner.
+
+*Default Value:* KEYSPACE
+
+``initial_token``
+-----------------
+*This option is commented out by default.*
+
+initial_token allows you to specify tokens manually.  While you can use it with
+vnodes (num_tokens > 1, above) -- in which case you should provide a 
+comma-separated list -- it's primarily used when adding nodes to legacy clusters 
+that do not have vnodes enabled.
+
+``hinted_handoff_enabled``
+--------------------------
+
+See http://wiki.apache.org/cassandra/HintedHandoff
+May either be "true" or "false" to enable globally
+
+*Default Value:* true
+
+``hinted_handoff_disabled_datacenters``
+---------------------------------------
+*This option is commented out by default.*
+
+When hinted_handoff_enabled is true, a black list of data centers that will not
+perform hinted handoff
+
+*Default Value (complex option)*::
+
+    #    - DC1
+    #    - DC2
+
+``max_hint_window_in_ms``
+-------------------------
+this defines the maximum amount of time a dead host will have hints
+generated.  After it has been dead this long, new hints for it will not be
+created until it has been seen alive and gone down again.
+
+*Default Value:* 10800000 # 3 hours
+
+``hinted_handoff_throttle_in_kb``
+---------------------------------
+
+Maximum throttle in KBs per second, per delivery thread.  This will be
+reduced proportionally to the number of nodes in the cluster.  (If there
+are two nodes in the cluster, each delivery thread will use the maximum
+rate; if there are three, each will throttle to half of the maximum,
+since we expect two nodes to be delivering hints simultaneously.)
+
+*Default Value:* 1024
+
+``max_hints_delivery_threads``
+------------------------------
+
+Number of threads with which to deliver hints;
+Consider increasing this number when you have multi-dc deployments, since
+cross-dc handoff tends to be slower
+
+*Default Value:* 2
+
+``hints_directory``
+-------------------
+*This option is commented out by default.*
+
+Directory where Cassandra should store hints.
+If not set, the default directory is $CASSANDRA_HOME/data/hints.
+
+*Default Value:*  /var/lib/cassandra/hints
+
+``hints_flush_period_in_ms``
+----------------------------
+
+How often hints should be flushed from the internal buffers to disk.
+Will *not* trigger fsync.
+
+*Default Value:* 10000
+
+``max_hints_file_size_in_mb``
+-----------------------------
+
+Maximum size for a single hints file, in megabytes.
+
+*Default Value:* 128
+
+``hints_compression``
+---------------------
+*This option is commented out by default.*
+
+Compression to apply to the hint files. If omitted, hints files
+will be written uncompressed. LZ4, Snappy, and Deflate compressors
+are supported.
+
+*Default Value (complex option)*::
+
+    #   - class_name: LZ4Compressor
+    #     parameters:
+    #         -
+
+``batchlog_replay_throttle_in_kb``
+----------------------------------
+Maximum throttle in KBs per second, total. This will be
+reduced proportionally to the number of nodes in the cluster.
+
+*Default Value:* 1024
+
+``authenticator``
+-----------------
+
+Authentication backend, implementing IAuthenticator; used to identify users
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator,
+PasswordAuthenticator}.
+
+- AllowAllAuthenticator performs no checks - set it to disable authentication.
+- PasswordAuthenticator relies on username/password pairs to authenticate
+  users. It keeps usernames and hashed passwords in system_auth.roles table.
+  Please increase system_auth keyspace replication factor if you use this authenticator.
+  If using PasswordAuthenticator, CassandraRoleManager must also be used (see below)
+
+*Default Value:* AllowAllAuthenticator
+
+``authorizer``
+--------------
+
+Authorization backend, implementing IAuthorizer; used to limit access/provide permissions
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer,
+CassandraAuthorizer}.
+
+- AllowAllAuthorizer allows any action to any user - set it to disable authorization.
+- CassandraAuthorizer stores permissions in system_auth.role_permissions table. Please
+  increase system_auth keyspace replication factor if you use this authorizer.
+
+*Default Value:* AllowAllAuthorizer
+
+``role_manager``
+----------------
+
+Part of the Authentication & Authorization backend, implementing IRoleManager; used
+to maintain grants and memberships between roles.
+Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager,
+which stores role information in the system_auth keyspace. Most functions of the
+IRoleManager require an authenticated login, so unless the configured IAuthenticator
+actually implements authentication, most of this functionality will be unavailable.
+
+- CassandraRoleManager stores role data in the system_auth keyspace. Please
+  increase system_auth keyspace replication factor if you use this role manager.
+
+*Default Value:* CassandraRoleManager
+
+``roles_validity_in_ms``
+------------------------
+
+Validity period for roles cache (fetching granted roles can be an expensive
+operation depending on the role manager, CassandraRoleManager is one example)
+Granted roles are cached for authenticated sessions in AuthenticatedUser and
+after the period specified here, become eligible for (async) reload.
+Defaults to 2000, set to 0 to disable caching entirely.
+Will be disabled automatically for AllowAllAuthenticator.
+
+*Default Value:* 2000
+
+``roles_update_interval_in_ms``
+-------------------------------
+*This option is commented out by default.*
+
+Refresh interval for roles cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If roles_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as roles_validity_in_ms.
+
+*Default Value:* 2000
+
+``permissions_validity_in_ms``
+------------------------------
+
+Validity period for permissions cache (fetching permissions can be an
+expensive operation depending on the authorizer, CassandraAuthorizer is
+one example). Defaults to 2000, set to 0 to disable.
+Will be disabled automatically for AllowAllAuthorizer.
+
+*Default Value:* 2000
+
+``permissions_update_interval_in_ms``
+-------------------------------------
+*This option is commented out by default.*
+
+Refresh interval for permissions cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If permissions_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as permissions_validity_in_ms.
+
+*Default Value:* 2000
+
+``credentials_validity_in_ms``
+------------------------------
+
+Validity period for credentials cache. This cache is tightly coupled to
+the provided PasswordAuthenticator implementation of IAuthenticator. If
+another IAuthenticator implementation is configured, this cache will not
+be automatically used and so the following settings will have no effect.
+Please note, credentials are cached in their encrypted form, so while
+activating this cache may reduce the number of queries made to the
+underlying table, it may not  bring a significant reduction in the
+latency of individual authentication attempts.
+Defaults to 2000, set to 0 to disable credentials caching.
+
+*Default Value:* 2000
+
+``credentials_update_interval_in_ms``
+-------------------------------------
+*This option is commented out by default.*
+
+Refresh interval for credentials cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If credentials_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as credentials_validity_in_ms.
+
+*Default Value:* 2000
+
+``partitioner``
+---------------
+
+The partitioner is responsible for distributing groups of rows (by
+partition key) across nodes in the cluster.  You should leave this
+alone for new clusters.  The partitioner can NOT be changed without
+reloading all data, so when upgrading you should set this to the
+same partitioner you were already using.
+
+Besides Murmur3Partitioner, partitioners included for backwards
+compatibility include RandomPartitioner, ByteOrderedPartitioner, and
+OrderPreservingPartitioner.
+
+
+*Default Value:* org.apache.cassandra.dht.Murmur3Partitioner
+
+``data_file_directories``
+-------------------------
+*This option is commented out by default.*
+
+Directories where Cassandra should store data on disk.  Cassandra
+will spread data evenly across them, subject to the granularity of
+the configured compaction strategy.
+If not set, the default directory is $CASSANDRA_HOME/data/data.
+
+*Default Value (complex option)*::
+
+    #     - /var/lib/cassandra/data
+
+``commitlog_directory``
+-----------------------
+*This option is commented out by default.*
+commit log.  when running on magnetic HDD, this should be a
+separate spindle than the data directories.
+If not set, the default directory is $CASSANDRA_HOME/data/commitlog.
+
+*Default Value:*  /var/lib/cassandra/commitlog
+
+``cdc_enabled``
+---------------
+
+Enable / disable CDC functionality on a per-node basis. This modifies the logic used
+for write path allocation rejection (standard: never reject. cdc: reject Mutation
+containing a CDC-enabled table if at space limit in cdc_raw_directory).
+
+*Default Value:* false
+
+``cdc_raw_directory``
+---------------------
+*This option is commented out by default.*
+
+CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the
+segment contains mutations for a CDC-enabled table. This should be placed on a
+separate spindle than the data directories. If not set, the default directory is
+$CASSANDRA_HOME/data/cdc_raw.
+
+*Default Value:*  /var/lib/cassandra/cdc_raw
+
+``disk_failure_policy``
+-----------------------
+
+Policy for data disk failures:
+
+die
+  shut down gossip and client transports and kill the JVM for any fs errors or
+  single-sstable errors, so the node can be replaced.
+
+stop_paranoid
+  shut down gossip and client transports even for single-sstable errors,
+  kill the JVM for errors during startup.
+
+stop
+  shut down gossip and client transports, leaving the node effectively dead, but
+  can still be inspected via JMX, kill the JVM for errors during startup.
+
+best_effort
+   stop using the failed disk and respond to requests based on
+   remaining available sstables.  This means you WILL see obsolete
+   data at CL.ONE!
+
+ignore
+   ignore fatal errors and let requests fail, as in pre-1.2 Cassandra
+
+*Default Value:* stop
+
+``commit_failure_policy``
+-------------------------
+
+Policy for commit disk failures:
+
+die
+  shut down gossip and Thrift and kill the JVM, so the node can be replaced.
+
+stop
+  shut down gossip and Thrift, leaving the node effectively dead, but
+  can still be inspected via JMX.
+
+stop_commit
+  shutdown the commit log, letting writes collect but
+  continuing to service reads, as in pre-2.0.5 Cassandra
+
+ignore
+  ignore fatal errors and let the batches fail
+
+*Default Value:* stop
+
+``prepared_statements_cache_size_mb``
+-------------------------------------
+
+Maximum size of the native protocol prepared statement cache
+
+Valid values are either "auto" (omitting the value) or a value greater 0.
+
+Note that specifying a too large value will result in long running GCs and possbily
+out-of-memory errors. Keep the value at a small fraction of the heap.
+
+If you constantly see "prepared statements discarded in the last minute because
+cache limit reached" messages, the first step is to investigate the root cause
+of these messages and check whether prepared statements are used correctly -
+i.e. use bind markers for variable parts.
+
+Do only change the default value, if you really have more prepared statements than
+fit in the cache. In most cases it is not neccessary to change this value.
+Constantly re-preparing statements is a performance penalty.
+
+Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater
+
+``thrift_prepared_statements_cache_size_mb``
+--------------------------------------------
+
+Maximum size of the Thrift prepared statement cache
+
+If you do not use Thrift at all, it is safe to leave this value at "auto".
+
+See description of 'prepared_statements_cache_size_mb' above for more information.
+
+Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater
+
+``key_cache_size_in_mb``
+------------------------
+
+Maximum size of the key cache in memory.
+
+Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
+minimum, sometimes more. The key cache is fairly tiny for the amount of
+time it saves, so it's worthwhile to use it at large numbers.
+The row cache saves even more time, but must contain the entire row,
+so it is extremely space-intensive. It's best to only use the
+row cache if you have hot rows or static rows.
+
+NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
+
+Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache.
+
+``key_cache_save_period``
+-------------------------
+
+Duration in seconds after which Cassandra should
+save the key cache. Caches are saved to saved_caches_directory as
+specified in this configuration file.
+
+Saved caches greatly improve cold-start speeds, and is relatively cheap in
+terms of I/O for the key cache. Row cache saving is much more expensive and
+has limited use.
+
+Default is 14400 or 4 hours.
+
+*Default Value:* 14400
+
+``key_cache_keys_to_save``
+--------------------------
+*This option is commented out by default.*
+
+Number of keys from the key cache to save
+Disabled by default, meaning all keys are going to be saved
+
+*Default Value:* 100
+
+``row_cache_class_name``
+------------------------
+*This option is commented out by default.*
+
+Row cache implementation class name. Available implementations:
+
+org.apache.cassandra.cache.OHCProvider
+  Fully off-heap row cache implementation (default).
+
+org.apache.cassandra.cache.SerializingCacheProvider
+  This is the row cache implementation availabile
+  in previous releases of Cassandra.
+
+*Default Value:* org.apache.cassandra.cache.OHCProvider
+
+``row_cache_size_in_mb``
+------------------------
+
+Maximum size of the row cache in memory.
+Please note that OHC cache implementation requires some additional off-heap memory to manage
+the map structures and some in-flight memory during operations before/after cache entries can be
+accounted against the cache capacity. This overhead is usually small compared to the whole capacity.
+Do not specify more memory that the system can afford in the worst usual situation and leave some
+headroom for OS block level cache. Do never allow your system to swap.
+
+Default value is 0, to disable row caching.
+
+*Default Value:* 0
+
+``row_cache_save_period``
+-------------------------
+
+Duration in seconds after which Cassandra should save the row cache.
+Caches are saved to saved_caches_directory as specified in this configuration file.
+
+Saved caches greatly improve cold-start speeds, and is relatively cheap in
+terms of I/O for the key cache. Row cache saving is much more expensive and
+has limited use.
+
+Default is 0 to disable saving the row cache.
+
+*Default Value:* 0
+
+``row_cache_keys_to_save``
+--------------------------
+*This option is commented out by default.*
+
+Number of keys from the row cache to save.
+Specify 0 (which is the default), meaning all keys are going to be saved
+
+*Default Value:* 100
+
+``counter_cache_size_in_mb``
+----------------------------
+
+Maximum size of the counter cache in memory.
+
+Counter cache helps to reduce counter locks' contention for hot counter cells.
+In case of RF = 1 a counter cache hit will cause Cassandra to skip the read before
+write entirely. With RF > 1 a counter cache hit will still help to reduce the duration
+of the lock hold, helping with hot counter cell updates, but will not allow skipping
+the read entirely. Only the local (clock, count) tuple of a counter cell is kept
+in memory, not the whole counter, so it's relatively cheap.
+
+NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
+
+Default value is empty to make it "auto" (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache.
+NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache.
+
+``counter_cache_save_period``
+-----------------------------
+
+Duration in seconds after which Cassandra should
+save the counter cache (keys only). Caches are saved to saved_caches_directory as
+specified in this configuration file.
+
+Default is 7200 or 2 hours.
+
+*Default Value:* 7200
+
+``counter_cache_keys_to_save``
+------------------------------
+*This option is commented out by default.*
+
+Number of keys from the counter cache to save
+Disabled by default, meaning all keys are going to be saved
+
+*Default Value:* 100
+
+``saved_caches_directory``
+--------------------------
+*This option is commented out by default.*
+
+saved caches
+If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.
+
+*Default Value:*  /var/lib/cassandra/saved_caches
+
+``commitlog_sync``
+------------------
+*This option is commented out by default.*
+
+commitlog_sync may be either "periodic" or "batch." 
+
+When in batch mode, Cassandra won't ack writes until the commit log
+has been fsynced to disk.  It will wait
+commitlog_sync_batch_window_in_ms milliseconds between fsyncs.
+This window should be kept short because the writer threads will
+be unable to do extra work while waiting.  (You may need to increase
+concurrent_writes for the same reason.)
+
+
+*Default Value:* batch
+
+``commitlog_sync_batch_window_in_ms``
+-------------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 2
+
+``commitlog_sync``
+------------------
+
+the other option is "periodic" where writes may be acked immediately
+and the CommitLog is simply synced every commitlog_sync_period_in_ms
+milliseconds.
+
+*Default Value:* periodic
+
+``commitlog_sync_period_in_ms``
+-------------------------------
+
+*Default Value:* 10000
+
+``commitlog_segment_size_in_mb``
+--------------------------------
+
+The size of the individual commitlog file segments.  A commitlog
+segment may be archived, deleted, or recycled once all the data
+in it (potentially from each columnfamily in the system) has been
+flushed to sstables.
+
+The default size is 32, which is almost always fine, but if you are
+archiving commitlog segments (see commitlog_archiving.properties),
+then you probably want a finer granularity of archiving; 8 or 16 MB
+is reasonable.
+Max mutation size is also configurable via max_mutation_size_in_kb setting in
+cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024.
+This should be positive and less than 2048.
+
+NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must
+be set to at least twice the size of max_mutation_size_in_kb / 1024
+
+
+*Default Value:* 32
+
+``commitlog_compression``
+-------------------------
+*This option is commented out by default.*
+
+Compression to apply to the commit log. If omitted, the commit log
+will be written uncompressed.  LZ4, Snappy, and Deflate compressors
+are supported.
+
+*Default Value (complex option)*::
+
+    #   - class_name: LZ4Compressor
+    #     parameters:
+    #         -
+
+``seed_provider``
+-----------------
+any class that implements the SeedProvider interface and has a
+constructor that takes a Map<String, String> of parameters will do.
+
+*Default Value (complex option)*::
+
+        # Addresses of hosts that are deemed contact points. 
+        # Cassandra nodes use this list of hosts to find each other and learn
+        # the topology of the ring.  You must change this if you are running
+        # multiple nodes!
+        - class_name: org.apache.cassandra.locator.SimpleSeedProvider
+          parameters:
+              # seeds is actually a comma-delimited list of addresses.
+              # Ex: "<ip1>,<ip2>,<ip3>"
+              - seeds: "127.0.0.1"
+
+``concurrent_reads``
+--------------------
+For workloads with more data than can fit in memory, Cassandra's
+bottleneck will be reads that need to fetch data from
+disk. "concurrent_reads" should be set to (16 * number_of_drives) in
+order to allow the operations to enqueue low enough in the stack
+that the OS and drives can reorder them. Same applies to
+"concurrent_counter_writes", since counter writes read the current
+values before incrementing and writing them back.
+
+On the other hand, since writes are almost never IO bound, the ideal
+number of "concurrent_writes" is dependent on the number of cores in
+your system; (8 * number_of_cores) is a good rule of thumb.
+
+*Default Value:* 32
+
+``concurrent_writes``
+---------------------
+
+*Default Value:* 32
+
+``concurrent_counter_writes``
+-----------------------------
+
+*Default Value:* 32
+
+``concurrent_materialized_view_writes``
+---------------------------------------
+
+For materialized view writes, as there is a read involved, so this should
+be limited by the less of concurrent reads or concurrent writes.
+
+*Default Value:* 32
+
+``file_cache_size_in_mb``
+-------------------------
+*This option is commented out by default.*
+
+Maximum memory to use for sstable chunk cache and buffer pooling.
+32MB of this are reserved for pooling buffers, the rest is used as an
+cache that holds uncompressed sstable chunks.
+Defaults to the smaller of 1/4 of heap or 512MB. This pool is allocated off-heap,
+so is in addition to the memory allocated for heap. The cache also has on-heap
+overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size
+if the default 64k chunk size is used).
+Memory is only allocated when needed.
+
+*Default Value:* 512
+
+``buffer_pool_use_heap_if_exhausted``
+-------------------------------------
+*This option is commented out by default.*
+
+Flag indicating whether to allocate on or off heap when the sstable buffer
+pool is exhausted, that is when it has exceeded the maximum memory
+file_cache_size_in_mb, beyond which it will not cache buffers but allocate on request.
+
+
+*Default Value:* true
+
+``disk_optimization_strategy``
+------------------------------
+*This option is commented out by default.*
+
+The strategy for optimizing disk read
+Possible values are:
+ssd (for solid state disks, the default)
+spinning (for spinning disks)
+
+*Default Value:* ssd
+
+``memtable_heap_space_in_mb``
+-----------------------------
+*This option is commented out by default.*
+
+Total permitted memory to use for memtables. Cassandra will stop
+accepting writes when the limit is exceeded until a flush completes,
+and will trigger a flush based on memtable_cleanup_threshold
+If omitted, Cassandra will set both to 1/4 the size of the heap.
+
+*Default Value:* 2048
+
+``memtable_offheap_space_in_mb``
+--------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 2048
+
+``memtable_cleanup_threshold``
+------------------------------
+*This option is commented out by default.*
+
+memtable_cleanup_threshold is deprecated. The default calculation
+is the only reasonable choice. See the comments on  memtable_flush_writers
+for more information.
+
+Ratio of occupied non-flushing memtable size to total permitted size
+that will trigger a flush of the largest memtable. Larger mct will
+mean larger flushes and hence less compaction, but also less concurrent
+flush activity which can make it difficult to keep your disks fed
+under heavy write load.
+
+memtable_cleanup_threshold defaults to 1 / (memtable_flush_writers + 1)
+
+*Default Value:* 0.11
+
+``memtable_allocation_type``
+----------------------------
+
+Specify the way Cassandra allocates and manages memtable memory.
+Options are:
+
+heap_buffers
+  on heap nio buffers
+
+offheap_buffers
+  off heap (direct) nio buffers
+
+offheap_objects
+   off heap objects
+
+*Default Value:* heap_buffers
+
+``repair_session_max_tree_depth``
+---------------------------------
+*This option is commented out by default.*
+
+Limits the maximum Merkle tree depth to avoid consuming too much
+memory during repairs.
+
+The default setting of 18 generates trees of maximum size around
+50 MiB / tree. If you are running out of memory during repairs consider
+lowering this to 15 (~6 MiB / tree) or lower, but try not to lower it
+too much past that or you will lose too much resolution and stream
+too much redundant data during repair. Cannot be set lower than 10.
+
+For more details see https://issues.apache.org/jira/browse/CASSANDRA-14096.
+
+
+*Default Value:* 18
+
+``commitlog_total_space_in_mb``
+-------------------------------
+*This option is commented out by default.*
+
+Total space to use for commit logs on disk.
+
+If space gets above this value, Cassandra will flush every dirty CF
+in the oldest segment and remove it.  So a small total commitlog space
+will tend to cause more flush activity on less-active columnfamilies.
+
+The default value is the smaller of 8192, and 1/4 of the total space
+of the commitlog volume.
+
+
+*Default Value:* 8192
+
+``memtable_flush_writers``
+--------------------------
+*This option is commented out by default.*
+
+This sets the number of memtable flush writer threads per disk
+as well as the total number of memtables that can be flushed concurrently.
+These are generally a combination of compute and IO bound.
+
+Memtable flushing is more CPU efficient than memtable ingest and a single thread
+can keep up with the ingest rate of a whole server on a single fast disk
+until it temporarily becomes IO bound under contention typically with compaction.
+At that point you need multiple flush threads. At some point in the future
+it may become CPU bound all the time.
+
+You can tell if flushing is falling behind using the MemtablePool.BlockedOnAllocation
+metric which should be 0, but will be non-zero if threads are blocked waiting on flushing
+to free memory.
+
+memtable_flush_writers defaults to two for a single data directory.
+This means that two  memtables can be flushed concurrently to the single data directory.
+If you have multiple data directories the default is one memtable flushing at a time
+but the flush will use a thread per data directory so you will get two or more writers.
+
+Two is generally enough to flush on a fast disk [array] mounted as a single data directory.
+Adding more flush writers will result in smaller more frequent flushes that introduce more
+compaction overhead.
+
+There is a direct tradeoff between number of memtables that can be flushed concurrently
+and flush size and frequency. More is not better you just need enough flush writers
+to never stall waiting for flushing to free memory.
+
+
+*Default Value:* 2
+
+``cdc_total_space_in_mb``
+-------------------------
+*This option is commented out by default.*
+
+Total space to use for change-data-capture logs on disk.
+
+If space gets above this value, Cassandra will throw WriteTimeoutException
+on Mutations including tables with CDC enabled. A CDCCompactor is responsible
+for parsing the raw CDC logs and deleting them when parsing is completed.
+
+The default value is the min of 4096 mb and 1/8th of the total space
+of the drive where cdc_raw_directory resides.
+
+*Default Value:* 4096
+
+``cdc_free_space_check_interval_ms``
+------------------------------------
+*This option is commented out by default.*
+
+When we hit our cdc_raw limit and the CDCCompactor is either running behind
+or experiencing backpressure, we check at the following interval to see if any
+new space for cdc-tracked tables has been made available. Default to 250ms
+
+*Default Value:* 250
+
+``index_summary_capacity_in_mb``
+--------------------------------
+
+A fixed memory pool size in MB for for SSTable index summaries. If left
+empty, this will default to 5% of the heap size. If the memory usage of
+all index summaries exceeds this limit, SSTables with low read rates will
+shrink their index summaries in order to meet this limit.  However, this
+is a best-effort process. In extreme conditions Cassandra may need to use
+more than this amount of memory.
+
+``index_summary_resize_interval_in_minutes``
+--------------------------------------------
+
+How frequently index summaries should be resampled.  This is done
+periodically to redistribute memory from the fixed-size pool to sstables
+proportional their recent read rates.  Setting to -1 will disable this
+process, leaving existing index summaries at their current sampling level.
+
+*Default Value:* 60
+
+``trickle_fsync``
+-----------------
+
+Whether to, when doing sequential writing, fsync() at intervals in
+order to force the operating system to flush the dirty
+buffers. Enable this to avoid sudden dirty buffer flushing from
+impacting read latencies. Almost always a good idea on SSDs; not
+necessarily on platters.
+
+*Default Value:* false
+
+``trickle_fsync_interval_in_kb``
+--------------------------------
+
+*Default Value:* 10240
+
+``storage_port``
+----------------
+
+TCP port, for commands and data
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.
+
+*Default Value:* 7000
+
+``ssl_storage_port``
+--------------------
+
+SSL port, for encrypted communication.  Unused unless enabled in
+encryption_options
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.
+
+*Default Value:* 7001
+
+``listen_address``
+------------------
+
+Address or interface to bind to and tell other Cassandra nodes to connect to.
+You _must_ change this if you want multiple nodes to be able to communicate!
+
+Set listen_address OR listen_interface, not both.
+
+Leaving it blank leaves it up to InetAddress.getLocalHost(). This
+will always do the Right Thing _if_ the node is properly configured
+(hostname, name resolution, etc), and the Right Thing is to use the
+address associated with the hostname (it might not be).
+
+Setting listen_address to 0.0.0.0 is always wrong.
+
+
+*Default Value:* localhost
+
+``listen_interface``
+--------------------
+*This option is commented out by default.*
+
+Set listen_address OR listen_interface, not both. Interfaces must correspond
+to a single address, IP aliasing is not supported.
+
+*Default Value:* eth0
+
+``listen_interface_prefer_ipv6``
+--------------------------------
+*This option is commented out by default.*
+
+If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
+you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4
+address will be used. If true the first ipv6 address will be used. Defaults to false preferring
+ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.
+
+*Default Value:* false
+
+``broadcast_address``
+---------------------
+*This option is commented out by default.*
+
+Address to broadcast to other Cassandra nodes
+Leaving this blank will set it to the same value as listen_address
+
+*Default Value:* 1.2.3.4
+
+``listen_on_broadcast_address``
+-------------------------------
+*This option is commented out by default.*
+
+When using multiple physical network interfaces, set this
+to true to listen on broadcast_address in addition to
+the listen_address, allowing nodes to communicate in both
+interfaces.
+Ignore this property if the network configuration automatically
+routes  between the public and private networks such as EC2.
+
+*Default Value:* false
+
+``internode_authenticator``
+---------------------------
+*This option is commented out by default.*
+
+Internode authentication backend, implementing IInternodeAuthenticator;
+used to allow/disallow connections from peer nodes.
+
+*Default Value:* org.apache.cassandra.auth.AllowAllInternodeAuthenticator
+
+``start_native_transport``
+--------------------------
+
+Whether to start the native transport server.
+Please note that the address on which the native transport is bound is the
+same as the rpc_address. The port however is different and specified below.
+
+*Default Value:* true
+
+``native_transport_port``
+-------------------------
+port for the CQL native transport to listen for clients on
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.
+
+*Default Value:* 9042
+
+``native_transport_port_ssl``
+-----------------------------
+*This option is commented out by default.*
+Enabling native transport encryption in client_encryption_options allows you to either use
+encryption for the standard port or to use a dedicated, additional port along with the unencrypted
+standard native_transport_port.
+Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption
+for native_transport_port. Setting native_transport_port_ssl to a different value
+from native_transport_port will use encryption for native_transport_port_ssl while
+keeping native_transport_port unencrypted.
+
+*Default Value:* 9142
+
+``native_transport_max_threads``
+--------------------------------
+*This option is commented out by default.*
+The maximum threads for handling requests when the native transport is used.
+This is similar to rpc_max_threads though the default differs slightly (and
+there is no native_transport_min_threads, idle threads will always be stopped
+after 30 seconds).
+
+*Default Value:* 128
+
+``native_transport_max_frame_size_in_mb``
+-----------------------------------------
+*This option is commented out by default.*
+
+The maximum size of allowed frame. Frame (requests) larger than this will
+be rejected as invalid. The default is 256MB. If you're changing this parameter,
+you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048.
+
+*Default Value:* 256
+
+``native_transport_max_concurrent_connections``
+-----------------------------------------------
+*This option is commented out by default.*
+
+The maximum number of concurrent client connections.
+The default is -1, which means unlimited.
+
+*Default Value:* -1
+
+``native_transport_max_concurrent_connections_per_ip``
+------------------------------------------------------
+*This option is commented out by default.*
+
+The maximum number of concurrent client connections per source ip.
+The default is -1, which means unlimited.
+
+*Default Value:* -1
+
+``start_rpc``
+-------------
+
+Whether to start the thrift rpc server.
+
+*Default Value:* false
+
+``rpc_address``
+---------------
+
+The address or interface to bind the Thrift RPC service and native transport
+server to.
+
+Set rpc_address OR rpc_interface, not both.
+
+Leaving rpc_address blank has the same effect as on listen_address
+(i.e. it will be based on the configured hostname of the node).
+
+Note that unlike listen_address, you can specify 0.0.0.0, but you must also
+set broadcast_rpc_address to a value other than 0.0.0.0.
+
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.
+
+*Default Value:* localhost
+
+``rpc_interface``
+-----------------
+*This option is commented out by default.*
+
+Set rpc_address OR rpc_interface, not both. Interfaces must correspond
+to a single address, IP aliasing is not supported.
+
+*Default Value:* eth1
+
+``rpc_interface_prefer_ipv6``
+-----------------------------
+*This option is commented out by default.*
+
+If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
+you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4
+address will be used. If true the first ipv6 address will be used. Defaults to false preferring
+ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.
+
+*Default Value:* false
+
+``rpc_port``
+------------
+
+port for Thrift to listen for clients on
+
+*Default Value:* 9160
+
+``broadcast_rpc_address``
+-------------------------
+*This option is commented out by default.*
+
+RPC address to broadcast to drivers and other Cassandra nodes. This cannot
+be set to 0.0.0.0. If left blank, this will be set to the value of
+rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must
+be set.
+
+*Default Value:* 1.2.3.4
+
+``rpc_keepalive``
+-----------------
+
+enable or disable keepalive on rpc/native connections
+
+*Default Value:* true
+
+``rpc_server_type``
+-------------------
+
+Cassandra provides two out-of-the-box options for the RPC Server:
+
+sync
+  One thread per thrift connection. For a very large number of clients, memory
+  will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size
+  per thread, and that will correspond to your use of virtual memory (but physical memory
+  may be limited depending on use of stack space).
+
+hsha
+  Stands for "half synchronous, half asynchronous." All thrift clients are handled
+  asynchronously using a small number of threads that does not vary with the amount
+  of thrift clients (and thus scales well to many clients). The rpc requests are still
+  synchronous (one thread per active request). If hsha is selected then it is essential
+  that rpc_max_threads is changed from the default value of unlimited.
+
+The default is sync because on Windows hsha is about 30% slower.  On Linux,
+sync/hsha performance is about the same, with hsha of course using less memory.
+
+Alternatively,  can provide your own RPC server by providing the fully-qualified class name
+of an o.a.c.t.TServerFactory that can create an instance of it.
+
+*Default Value:* sync
+
+``rpc_min_threads``
+-------------------
+*This option is commented out by default.*
+
+Uncomment rpc_min|max_thread to set request pool size limits.
+
+Regardless of your choice of RPC server (see above), the number of maximum requests in the
+RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync
+RPC server, it also dictates the number of clients that can be connected at all).
+
+The default is unlimited and thus provides no protection against clients overwhelming the server. You are
+encouraged to set a maximum that makes sense for you in production, but do keep in mind that
+rpc_max_threads represents the maximum number of client requests this server may execute concurrently.
+
+
+*Default Value:* 16
+
+``rpc_max_threads``
+-------------------
+*This option is commented out by default.*
+
+*Default Value:* 2048
+
+``rpc_send_buff_size_in_bytes``
+-------------------------------
+*This option is commented out by default.*
+
+uncomment to set socket buffer sizes on rpc connections
+
+``rpc_recv_buff_size_in_bytes``
+-------------------------------
+*This option is commented out by default.*
+
+``internode_send_buff_size_in_bytes``
+-------------------------------------
+*This option is commented out by default.*
+
+Uncomment to set socket buffer size for internode communication
+Note that when setting this, the buffer size is limited by net.core.wmem_max
+and when not setting it it is defined by net.ipv4.tcp_wmem
+See also:
+/proc/sys/net/core/wmem_max
+/proc/sys/net/core/rmem_max
+/proc/sys/net/ipv4/tcp_wmem
+/proc/sys/net/ipv4/tcp_wmem
+and 'man tcp'
+
+``internode_recv_buff_size_in_bytes``
+-------------------------------------
+*This option is commented out by default.*
+
+Uncomment to set socket buffer size for internode communication
+Note that when setting this, the buffer size is limited by net.core.wmem_max
+and when not setting it it is defined by net.ipv4.tcp_wmem
+
+``thrift_framed_transport_size_in_mb``
+--------------------------------------
+
+Frame size for thrift (maximum message length).
+
+*Default Value:* 15
+
+``incremental_backups``
+-----------------------
+
+Set to true to have Cassandra create a hard link to each sstable
+flushed or streamed locally in a backups/ subdirectory of the
+keyspace data.  Removing these links is the operator's
+responsibility.
+
+*Default Value:* false
+
+``snapshot_before_compaction``
+------------------------------
+
+Whether or not to take a snapshot before each compaction.  Be
+careful using this option, since Cassandra won't clean up the
+snapshots for you.  Mostly useful if you're paranoid when there
+is a data format change.
+
+*Default Value:* false
+
+``auto_snapshot``
+-----------------
+
+Whether or not a snapshot is taken of the data before keyspace truncation
+or dropping of column families. The STRONGLY advised default of true 
+should be used to provide data safety. If you set this flag to false, you will
+lose data on truncation or drop.
+
+*Default Value:* true
+
+``column_index_size_in_kb``
+---------------------------
+
+Granularity of the collation index of rows within a partition.
+Increase if your rows are large, or if you have a very large
+number of rows per partition.  The competing goals are these:
+
+- a smaller granularity means more index entries are generated
+  and looking up rows withing the partition by collation column
+  is faster
+- but, Cassandra will keep the collation index in memory for hot
+  rows (as part of the key cache), so a larger granularity means
+  you can cache more hot rows
+
+*Default Value:* 64
+
+``column_index_cache_size_in_kb``
+---------------------------------
+
+Per sstable indexed key cache entries (the collation index in memory
+mentioned above) exceeding this size will not be held on heap.
+This means that only partition information is held on heap and the
+index entries are read from disk.
+
+Note that this size refers to the size of the
+serialized index information and not the size of the partition.
+
+*Default Value:* 2
+
+``concurrent_compactors``
+-------------------------
+*This option is commented out by default.*
+
+Number of simultaneous compactions to allow, NOT including
+validation "compactions" for anti-entropy repair.  Simultaneous
+compactions can help preserve read performance in a mixed read/write
+workload, by mitigating the tendency of small sstables to accumulate
+during a single long running compactions. The default is usually
+fine and if you experience problems with compaction running too
+slowly or too fast, you should look at
+compaction_throughput_mb_per_sec first.
+
+concurrent_compactors defaults to the smaller of (number of disks,
+number of cores), with a minimum of 2 and a maximum of 8.
+
+If your data directories are backed by SSD, you should increase this
+to the number of cores.
+
+*Default Value:* 1
+
+``compaction_throughput_mb_per_sec``
+------------------------------------
+
+Throttles compaction to the given total throughput across the entire
+system. The faster you insert data, the faster you need to compact in
+order to keep the sstable count down, but in general, setting this to
+16 to 32 times the rate you are inserting data is more than sufficient.
+Setting this to 0 disables throttling. Note that this account for all types
+of compaction, including validation compaction.
+
+*Default Value:* 16
+
+``sstable_preemptive_open_interval_in_mb``
+------------------------------------------
+
+When compacting, the replacement sstable(s) can be opened before they
+are completely written, and used in place of the prior sstables for
+any range that has been written. This helps to smoothly transfer reads 
+between the sstables, reducing page cache churn and keeping hot rows hot
+
+*Default Value:* 50
+
+``stream_throughput_outbound_megabits_per_sec``
+-----------------------------------------------
+*This option is commented out by default.*
+
+Throttles all outbound streaming file transfers on this node to the
+given total throughput in Mbps. This is necessary because Cassandra does
+mostly sequential IO when streaming data during bootstrap or repair, which
+can lead to saturating the network connection and degrading rpc performance.
+When unset, the default is 200 Mbps or 25 MB/s.
+
+*Default Value:* 200
+
+``inter_dc_stream_throughput_outbound_megabits_per_sec``
+--------------------------------------------------------
+*This option is commented out by default.*
+
+Throttles all streaming file transfer between the datacenters,
+this setting allows users to throttle inter dc stream throughput in addition
+to throttling all network stream traffic as configured with
+stream_throughput_outbound_megabits_per_sec
+When unset, the default is 200 Mbps or 25 MB/s
+
+*Default Value:* 200
+
+``read_request_timeout_in_ms``
+------------------------------
+
+How long the coordinator should wait for read operations to complete
+
+*Default Value:* 5000
+
+``range_request_timeout_in_ms``
+-------------------------------
+How long the coordinator should wait for seq or index scans to complete
+
+*Default Value:* 10000
+
+``write_request_timeout_in_ms``
+-------------------------------
+How long the coordinator should wait for writes to complete
+
+*Default Value:* 2000
+
+``counter_write_request_timeout_in_ms``
+---------------------------------------
+How long the coordinator should wait for counter writes to complete
+
+*Default Value:* 5000
+
+``cas_contention_timeout_in_ms``
+--------------------------------
+How long a coordinator should continue to retry a CAS operation
+that contends with other proposals for the same row
+
+*Default Value:* 1000
+
+``truncate_request_timeout_in_ms``
+----------------------------------
+How long the coordinator should wait for truncates to complete
+(This can be much longer, because unless auto_snapshot is disabled
+we need to flush first so we can snapshot before removing the data.)
+
+*Default Value:* 60000
+
+``request_timeout_in_ms``
+-------------------------
+The default timeout for other, miscellaneous operations
+
+*Default Value:* 10000
+
+``slow_query_log_timeout_in_ms``
+--------------------------------
+
+How long before a node logs slow queries. Select queries that take longer than
+this timeout to execute, will generate an aggregated log message, so that slow queries
+can be identified. Set this value to zero to disable slow query logging.
+
+*Default Value:* 500
+
+``cross_node_timeout``
+----------------------
+
+Enable operation timeout information exchange between nodes to accurately
+measure request timeouts.  If disabled, replicas will assume that requests
+were forwarded to them instantly by the coordinator, which means that
+under overload conditions we will waste that much extra time processing 
+already-timed-out requests.
+
+Warning: before enabling this property make sure to ntp is installed
+and the times are synchronized between the nodes.
+
+*Default Value:* false
+
+``streaming_keep_alive_period_in_secs``
+---------------------------------------
+*This option is commented out by default.*
+
+Set keep-alive period for streaming
+This node will send a keep-alive message periodically with this period.
+If the node does not receive a keep-alive message from the peer for
+2 keep-alive cycles the stream session times out and fail
+Default value is 300s (5 minutes), which means stalled stream
+times out in 10 minutes by default
+
+*Default Value:* 300
+
+``phi_convict_threshold``
+-------------------------
+*This option is commented out by default.*
+
+phi value that must be reached for a host to be marked down.
+most users should never need to adjust this.
+
+*Default Value:* 8
+
+``endpoint_snitch``
+-------------------
+
+endpoint_snitch -- Set this to a class that implements
+IEndpointSnitch.  The snitch has two functions:
+
+- it teaches Cassandra enough about your network topology to route
+  requests efficiently
+- it allows Cassandra to spread replicas around your cluster to avoid
+  correlated failures. It does this by grouping machines into
+  "datacenters" and "racks."  Cassandra will do its best not to have
+  more than one replica on the same "rack" (which may not actually
+  be a physical location)
+
+CASSANDRA WILL NOT ALLOW YOU TO SWITCH TO AN INCOMPATIBLE SNITCH
+ONCE DATA IS INSERTED INTO THE CLUSTER.  This would cause data loss.
+This means that if you start with the default SimpleSnitch, which
+locates every node on "rack1" in "datacenter1", your only options
+if you need to add another datacenter are GossipingPropertyFileSnitch
+(and the older PFS).  From there, if you want to migrate to an
+incompatible snitch like Ec2Snitch you can do it by adding new nodes
+under Ec2Snitch (which will locate them in a new "datacenter") and
+decommissioning the old ones.
+
+Out of the box, Cassandra provides:
+
+SimpleSnitch:
+   Treats Strategy order as proximity. This can improve cache
+   locality when disabling read repair.  Only appropriate for
+   single-datacenter deployments.
+
+GossipingPropertyFileSnitch
+   This should be your go-to snitch for production use.  The rack
+   and datacenter for the local node are defined in
+   cassandra-rackdc.properties and propagated to other nodes via
+   gossip.  If cassandra-topology.properties exists, it is used as a
+   fallback, allowing migration from the PropertyFileSnitch.
+
+PropertyFileSnitch:
+   Proximity is determined by rack and data center, which are
+   explicitly configured in cassandra-topology.properties.
+
+Ec2Snitch:
+   Appropriate for EC2 deployments in a single Region. Loads Region
+   and Availability Zone information from the EC2 API. The Region is
+   treated as the datacenter, and the Availability Zone as the rack.
+   Only private IPs are used, so this will not work across multiple
+   Regions.
+
+Ec2MultiRegionSnitch:
+   Uses public IPs as broadcast_address to allow cross-region
+   connectivity.  (Thus, you should set seed addresses to the public
+   IP as well.) You will need to open the storage_port or
+   ssl_storage_port on the public IP firewall.  (For intra-Region
+   traffic, Cassandra will switch to the private IP after
+   establishing a connection.)
+
+RackInferringSnitch:
+   Proximity is determined by rack and data center, which are
+   assumed to correspond to the 3rd and 2nd octet of each node's IP
+   address, respectively.  Unless this happens to match your
+   deployment conventions, this is best used as an example of
+   writing a custom Snitch class and is provided in that spirit.
+
+You can use a custom Snitch by setting this to the full class name
+of the snitch, which will be assumed to be on your classpath.
+
+*Default Value:* SimpleSnitch
+
+``dynamic_snitch_update_interval_in_ms``
+----------------------------------------
+
+controls how often to perform the more expensive part of host score
+calculation
+
+*Default Value:* 100 
+
+``dynamic_snitch_reset_interval_in_ms``
+---------------------------------------
+controls how often to reset all host scores, allowing a bad host to
+possibly recover
+
+*Default Value:* 600000
+
+``dynamic_snitch_badness_threshold``
+------------------------------------
+if set greater than zero and read_repair_chance is < 1.0, this will allow
+'pinning' of replicas to hosts in order to increase cache capacity.
+The badness threshold will control how much worse the pinned host has to be
+before the dynamic snitch will prefer other replicas over it.  This is
+expressed as a double which represents a percentage.  Thus, a value of
+0.2 means Cassandra would continue to prefer the static snitch values
+until the pinned host was 20% worse than the fastest.
+
+*Default Value:* 0.1
+
+``request_scheduler``
+---------------------
+
+request_scheduler -- Set this to a class that implements
+RequestScheduler, which will schedule incoming client requests
+according to the specific policy. This is useful for multi-tenancy
+with a single Cassandra cluster.
+NOTE: This is specifically for requests from the client and does
+not affect inter node communication.
+org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place
+org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of
+client requests to a node with a separate queue for each
+request_scheduler_id. The scheduler is further customized by
+request_scheduler_options as described below.
+
+*Default Value:* org.apache.cassandra.scheduler.NoScheduler
+
+``request_scheduler_options``
+-----------------------------
+*This option is commented out by default.*
+
+Scheduler Options vary based on the type of scheduler
+
+NoScheduler
+  Has no options
+
+RoundRobin
+  throttle_limit
+    The throttle_limit is the number of in-flight
+    requests per client.  Requests beyond 
+    that limit are queued up until
+    running requests can complete.
+    The value of 80 here is twice the number of
+    concurrent_reads + concurrent_writes.
+  default_weight
+    default_weight is optional and allows for
+    overriding the default which is 1.
+  weights
+    Weights are optional and will default to 1 or the
+    overridden default_weight. The weight translates into how
+    many requests are handled during each turn of the
+    RoundRobin, based on the scheduler id.
+
+
+*Default Value (complex option)*::
+
+    #    throttle_limit: 80
+    #    default_weight: 5
+    #    weights:
+    #      Keyspace1: 1
+    #      Keyspace2: 5
+
+``request_scheduler_id``
+------------------------
+*This option is commented out by default.*
+request_scheduler_id -- An identifier based on which to perform
+the request scheduling. Currently the only valid option is keyspace.
+
+*Default Value:* keyspace
+
+``server_encryption_options``
+-----------------------------
+
+Enable or disable inter-node encryption
+JVM defaults for supported SSL socket protocols and cipher suites can
+be replaced using custom encryption options. This is not recommended
+unless you have policies in place that dictate certain settings, or
+need to disable vulnerable ciphers or protocols in case the JVM cannot
+be updated.
+FIPS compliant settings can be configured at JVM level and should not
+involve changing encryption settings here:
+https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html
+*NOTE* No custom encryption options are enabled at the moment
+The available internode options are : all, none, dc, rack
+
+If set to dc cassandra will encrypt the traffic between the DCs
+If set to rack cassandra will encrypt the traffic between the racks
+
+The passwords used in these options must match the passwords used when generating
+the keystore and truststore.  For instructions on generating these files, see:
+http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore
+
+
+*Default Value (complex option)*::
+
+        internode_encryption: none
+        keystore: conf/.keystore
+        keystore_password: cassandra
+        truststore: conf/.truststore
+        truststore_password: cassandra
+        # More advanced defaults below:
+        # protocol: TLS
+        # algorithm: SunX509
+        # store_type: JKS
+        # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]
+        # require_client_auth: false
+        # require_endpoint_verification: false
+
+``client_encryption_options``
+-----------------------------
+enable or disable client/server encryption.
+
+*Default Value (complex option)*::
+
+        enabled: false
+        # If enabled and optional is set to true encrypted and unencrypted connections are handled.
+        optional: false
+        keystore: conf/.keystore
+        keystore_password: cassandra
+        # require_client_auth: false
+        # Set trustore and truststore_password if require_client_auth is true
+        # truststore: conf/.truststore
+        # truststore_password: cassandra
+        # More advanced defaults below:
+        # protocol: TLS
+        # algorithm: SunX509
+        # store_type: JKS
+        # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]
+
+``internode_compression``
+-------------------------
+internode_compression controls whether traffic between nodes is
+compressed.
+Can be:
+
+all
+  all traffic is compressed
+
+dc
+  traffic between different datacenters is compressed
+
+none
+  nothing is compressed.
+
+*Default Value:* dc
+
+``inter_dc_tcp_nodelay``
+------------------------
+
+Enable or disable tcp_nodelay for inter-dc communication.
+Disabling it will result in larger (but fewer) network packets being sent,
+reducing overhead from the TCP protocol itself, at the cost of increasing
+latency if you block for cross-datacenter responses.
+
+*Default Value:* false
+
+``tracetype_query_ttl``
+-----------------------
+
+TTL for different trace types used during logging of the repair process.
+
+*Default Value:* 86400
+
+``tracetype_repair_ttl``
+------------------------
+
+*Default Value:* 604800
+
+``gc_log_threshold_in_ms``
+--------------------------
+*This option is commented out by default.*
+
+By default, Cassandra logs GC Pauses greater than 200 ms at INFO level
+This threshold can be adjusted to minimize logging if necessary
+
+*Default Value:* 200
+
+``enable_user_defined_functions``
+---------------------------------
+
+If unset, all GC Pauses greater than gc_log_threshold_in_ms will log at
+INFO level
+UDFs (user defined functions) are disabled by default.
+As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code.
+
+*Default Value:* false
+
+``enable_scripted_user_defined_functions``
+------------------------------------------
+
+Enables scripted UDFs (JavaScript UDFs).
+Java UDFs are always enabled, if enable_user_defined_functions is true.
+Enable this option to be able to use UDFs with "language javascript" or any custom JSR-223 provider.
+This option has no effect, if enable_user_defined_functions is false.
+
+*Default Value:* false
+
+``windows_timer_interval``
+--------------------------
+
+The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation.
+Lowering this value on Windows can provide much tighter latency and better throughput, however
+some virtualized environments may see a negative performance impact from changing this setting
+below their system default. The sysinternals 'clockres' tool can confirm your system's default
+setting.
+
+*Default Value:* 1
+
+``transparent_data_encryption_options``
+---------------------------------------
+
+
+Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from
+a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by
+the "key_alias" is the only key that will be used for encrypt opertaions; previously used keys
+can still (and should!) be in the keystore and will be used on decrypt operations
+(to handle the case of key rotation).
+
+It is strongly recommended to download and install Java Cryptography Extension (JCE)
+Unlimited Strength Jurisdiction Policy Files for your version of the JDK.
+(current link: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)
+
+Currently, only the following file types are supported for transparent data encryption, although
+more are coming in future cassandra releases: commitlog, hints
+
+*Default Value (complex option)*::
+
+        enabled: false
+        chunk_length_kb: 64
+        cipher: AES/CBC/PKCS5Padding
+        key_alias: testing:1
+        # CBC IV length for AES needs to be 16 bytes (which is also the default size)
+        # iv_length: 16
+        key_provider: 
+          - class_name: org.apache.cassandra.security.JKSKeyProvider
+            parameters: 
+              - keystore: conf/.keystore
+                keystore_password: cassandra
+                store_type: JCEKS
+                key_password: cassandra
+
+``tombstone_warn_threshold``
+----------------------------
+
+####################
+SAFETY THRESHOLDS #
+####################
+
+When executing a scan, within or across a partition, we need to keep the
+tombstones seen in memory so we can return them to the coordinator, which
+will use them to make sure other replicas also know about the deleted rows.
+With workloads that generate a lot of tombstones, this can cause performance
+problems and even exaust the server heap.
+(http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets)
+Adjust the thresholds here if you understand the dangers and want to
+scan more tombstones anyway.  These thresholds may also be adjusted at runtime
+using the StorageService mbean.
+
+*Default Value:* 1000
+
+``tombstone_failure_threshold``
+-------------------------------
+
+*Default Value:* 100000
+
+``replica_filtering_protection``
+--------------------------------
+
+Filtering and secondary index queries at read consistency levels above ONE/LOCAL_ONE use a
+mechanism called replica filtering protection to ensure that results from stale replicas do
+not violate consistency. (See CASSANDRA-8272 and CASSANDRA-15907 for more details.) This
+mechanism materializes replica results by partition on-heap at the coordinator. The more possibly
+stale results returned by the replicas, the more rows materialized during the query.
+
+``batch_size_warn_threshold_in_kb``
+-----------------------------------
+
+Log WARN on any multiple-partition batch size exceeding this value. 5kb per batch by default.
+Caution should be taken on increasing the size of this threshold as it can lead to node instability.
+
+*Default Value:* 5
+
+``batch_size_fail_threshold_in_kb``
+-----------------------------------
+
+Fail any multiple-partition batch exceeding this value. 50kb (10x warn threshold) by default.
+
+*Default Value:* 50
+
+``unlogged_batch_across_partitions_warn_threshold``
+---------------------------------------------------
+
+Log WARN on any batches not of type LOGGED than span across more partitions than this limit
+
+*Default Value:* 10
+
+``compaction_large_partition_warning_threshold_mb``
+---------------------------------------------------
+
+Log a warning when compacting partitions larger than this value
+
+*Default Value:* 100
+
+``gc_warn_threshold_in_ms``
+---------------------------
+
+GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level
+Adjust the threshold based on your application throughput requirement
+By default, Cassandra logs GC Pauses greater than 200 ms at INFO level
+
+*Default Value:* 1000
+
+``max_value_size_in_mb``
+------------------------
+*This option is commented out by default.*
+
+Maximum size of any value in SSTables. Safety measure to detect SSTable corruption
+early. Any value size larger than this threshold will result into marking an SSTable
+as corrupted. This should be positive and less than 2048.
+
+*Default Value:* 256
+
+``back_pressure_enabled``
+-------------------------
+
+Back-pressure settings #
+If enabled, the coordinator will apply the back-pressure strategy specified below to each mutation
+sent to replicas, with the aim of reducing pressure on overloaded replicas.
+
+*Default Value:* false
+
+``back_pressure_strategy``
+--------------------------
+The back-pressure strategy applied.
+The default implementation, RateBasedBackPressure, takes three arguments:
+high ratio, factor, and flow type, and uses the ratio between incoming mutation responses and outgoing mutation requests.
+If below high ratio, outgoing mutations are rate limited according to the incoming rate decreased by the given factor;
+if above high ratio, the rate limiting is increased by the given factor;
+such factor is usually best configured between 1 and 10, use larger values for a faster recovery
+at the expense of potentially more dropped mutations;
+the rate limiting is applied according to the flow type: if FAST, it's rate limited at the speed of the fastest replica,
+if SLOW at the speed of the slowest one.
+New strategies can be added. Implementors need to implement org.apache.cassandra.net.BackpressureStrategy and
+provide a public constructor accepting a Map<String, Object>.
+
+``otc_coalescing_strategy``
+---------------------------
+*This option is commented out by default.*
+
+Coalescing Strategies #
+Coalescing multiples messages turns out to significantly boost message processing throughput (think doubling or more).
+On bare metal, the floor for packet processing throughput is high enough that many applications won't notice, but in
+virtualized environments, the point at which an application can be bound by network packet processing can be
+surprisingly low compared to the throughput of task processing that is possible inside a VM. It's not that bare metal
+doesn't benefit from coalescing messages, it's that the number of packets a bare metal network interface can process
+is sufficient for many applications such that no load starvation is experienced even without coalescing.
+There are other benefits to coalescing network messages that are harder to isolate with a simple metric like messages
+per second. By coalescing multiple tasks together, a network thread can process multiple messages for the cost of one
+trip to read from a socket, and all the task submission work can be done at the same time reducing context switching
+and increasing cache friendliness of network message processing.
+See CASSANDRA-8692 for details.
+
+Strategy to use for coalescing messages in OutboundTcpConnection.
+Can be fixed, movingaverage, timehorizon, disabled (default).
+You can also specify a subclass of CoalescingStrategies.CoalescingStrategy by name.
+
+*Default Value:* DISABLED
+
+``otc_coalescing_window_us``
+----------------------------
+*This option is commented out by default.*
+
+How many microseconds to wait for coalescing. For fixed strategy this is the amount of time after the first
+message is received before it will be sent with any accompanying messages. For moving average this is the
+maximum amount of time that will be waited as well as the interval at which messages must arrive on average
+for coalescing to be enabled.
+
+*Default Value:* 200
+
+``otc_coalescing_enough_coalesced_messages``
+--------------------------------------------
+*This option is commented out by default.*
+
+Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128.
+
+*Default Value:* 8
+
+``otc_backlog_expiration_interval_ms``
+--------------------------------------
+*This option is commented out by default.*
+
+How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection.
+Expiration is done if messages are piling up in the backlog. Droppable messages are expired to free the memory
+taken by expired messages. The interval should be between 0 and 1000, and in most installations the default value
+will be appropriate. A smaller value could potentially expire messages slightly sooner at the expense of more CPU
+time and queue contention while iterating the backlog of messages.
+An interval of 0 disables any wait time, which is the behavior of former Cassandra versions.
+
+
+*Default Value:* 200
+
+``enable_materialized_views``
+-----------------------------
+
+
+########################
+EXPERIMENTAL FEATURES #
+########################
+
+Enables materialized view creation on this node.
+Materialized views are considered experimental and are not recommended for production use.
+
+*Default Value:* true
+
+``enable_sasi_indexes``
+-----------------------
+
+Enables SASI index creation on this node.
+SASI indexes are considered experimental and are not recommended for production use.
+
+*Default Value:* true
diff --git a/src/doc/3.11.11/_sources/configuration/index.rst.txt b/src/doc/3.11.11/_sources/configuration/index.rst.txt
new file mode 100644
index 0000000..f774fda
--- /dev/null
+++ b/src/doc/3.11.11/_sources/configuration/index.rst.txt
@@ -0,0 +1,25 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Configuring Cassandra
+=====================
+
+This section describes how to configure Apache Cassandra.
+
+.. toctree::
+   :maxdepth: 1
+
+   cassandra_config_file
diff --git a/src/doc/3.11.11/_sources/contactus.rst.txt b/src/doc/3.11.11/_sources/contactus.rst.txt
new file mode 100644
index 0000000..8d0f5dd
--- /dev/null
+++ b/src/doc/3.11.11/_sources/contactus.rst.txt
@@ -0,0 +1,53 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Contact us
+==========
+
+You can get in touch with the Cassandra community either via the mailing lists or the freenode IRC channels.
+
+.. _mailing-lists:
+
+Mailing lists
+-------------
+
+The following mailing lists are available:
+
+- `Users <http://www.mail-archive.com/user@cassandra.apache.org/>`__ – General discussion list for users - `Subscribe
+  <user-subscribe@cassandra.apache.org>`__
+- `Developers <http://www.mail-archive.com/dev@cassandra.apache.org/>`__ – Development related discussion - `Subscribe
+  <dev-subscribe@cassandra.apache.org>`__
+- `Commits <http://www.mail-archive.com/commits@cassandra.apache.org/>`__ – Commit notification source repository -
+  `Subscribe <commits-subscribe@cassandra.apache.org>`__
+- `Client Libraries <http://www.mail-archive.com/client-dev@cassandra.apache.org/>`__ – Discussion related to the
+  development of idiomatic client APIs - `Subscribe <client-dev-subscribe@cassandra.apache.org>`__
+
+Subscribe by sending an email to the email address in the Subscribe links above. Follow the instructions in the welcome
+email to confirm your subscription. Make sure to keep the welcome email as it contains instructions on how to
+unsubscribe.
+
+.. _irc-channels:
+
+IRC
+---
+
+To chat with developers or users in real-time, join our channels on `IRC freenode <http://webchat.freenode.net/>`__. The
+following channels are available:
+
+- ``#cassandra`` - for user questions and general discussions.
+- ``#cassandra-dev`` - strictly for questions or discussions related to Cassandra development.
+- ``#cassandra-builds`` - results of automated test builds.
+
diff --git a/src/doc/3.11.11/_sources/cql/appendices.rst.txt b/src/doc/3.11.11/_sources/cql/appendices.rst.txt
new file mode 100644
index 0000000..456170d
--- /dev/null
+++ b/src/doc/3.11.11/_sources/cql/appendices.rst.txt
@@ -0,0 +1,333 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+Appendices
+----------
+
+.. _appendix-A:
+
+Appendix A: CQL Keywords
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+CQL distinguishes between *reserved* and *non-reserved* keywords.
+Reserved keywords cannot be used as identifier, they are truly reserved
+for the language (but one can enclose a reserved keyword by
+double-quotes to use it as an identifier). Non-reserved keywords however
+only have a specific meaning in certain context but can used as
+identifier otherwise. The only *raison d’être* of these non-reserved
+keywords is convenience: some keyword are non-reserved when it was
+always easy for the parser to decide whether they were used as keywords
+or not.
+
++--------------------+-------------+
+| Keyword            | Reserved?   |
++====================+=============+
+| ``ADD``            | yes         |
++--------------------+-------------+
+| ``AGGREGATE``      | no          |
++--------------------+-------------+
+| ``ALL``            | no          |
++--------------------+-------------+
+| ``ALLOW``          | yes         |
++--------------------+-------------+
+| ``ALTER``          | yes         |
++--------------------+-------------+
+| ``AND``            | yes         |
++--------------------+-------------+
+| ``APPLY``          | yes         |
++--------------------+-------------+
+| ``AS``             | no          |
++--------------------+-------------+
+| ``ASC``            | yes         |
++--------------------+-------------+
+| ``ASCII``          | no          |
++--------------------+-------------+
+| ``AUTHORIZE``      | yes         |
++--------------------+-------------+
+| ``BATCH``          | yes         |
++--------------------+-------------+
+| ``BEGIN``          | yes         |
++--------------------+-------------+
+| ``BIGINT``         | no          |
++--------------------+-------------+
+| ``BLOB``           | no          |
++--------------------+-------------+
+| ``BOOLEAN``        | no          |
++--------------------+-------------+
+| ``BY``             | yes         |
++--------------------+-------------+
+| ``CALLED``         | no          |
++--------------------+-------------+
+| ``CLUSTERING``     | no          |
++--------------------+-------------+
+| ``COLUMNFAMILY``   | yes         |
++--------------------+-------------+
+| ``COMPACT``        | no          |
++--------------------+-------------+
+| ``CONTAINS``       | no          |
++--------------------+-------------+
+| ``COUNT``          | no          |
++--------------------+-------------+
+| ``COUNTER``        | no          |
++--------------------+-------------+
+| ``CREATE``         | yes         |
++--------------------+-------------+
+| ``CUSTOM``         | no          |
++--------------------+-------------+
+| ``DATE``           | no          |
++--------------------+-------------+
+| ``DECIMAL``        | no          |
++--------------------+-------------+
+| ``DELETE``         | yes         |
++--------------------+-------------+
+| ``DESC``           | yes         |
++--------------------+-------------+
+| ``DESCRIBE``       | yes         |
++--------------------+-------------+
+| ``DISTINCT``       | no          |
++--------------------+-------------+
+| ``DOUBLE``         | no          |
++--------------------+-------------+
+| ``DROP``           | yes         |
++--------------------+-------------+
+| ``ENTRIES``        | yes         |
++--------------------+-------------+
+| ``EXECUTE``        | yes         |
++--------------------+-------------+
+| ``EXISTS``         | no          |
++--------------------+-------------+
+| ``FILTERING``      | no          |
++--------------------+-------------+
+| ``FINALFUNC``      | no          |
++--------------------+-------------+
+| ``FLOAT``          | no          |
++--------------------+-------------+
+| ``FROM``           | yes         |
++--------------------+-------------+
+| ``FROZEN``         | no          |
++--------------------+-------------+
+| ``FULL``           | yes         |
++--------------------+-------------+
+| ``FUNCTION``       | no          |
++--------------------+-------------+
+| ``FUNCTIONS``      | no          |
++--------------------+-------------+
+| ``GRANT``          | yes         |
++--------------------+-------------+
+| ``IF``             | yes         |
++--------------------+-------------+
+| ``IN``             | yes         |
++--------------------+-------------+
+| ``INDEX``          | yes         |
++--------------------+-------------+
+| ``INET``           | no          |
++--------------------+-------------+
+| ``INFINITY``       | yes         |
++--------------------+-------------+
+| ``INITCOND``       | no          |
++--------------------+-------------+
+| ``INPUT``          | no          |
++--------------------+-------------+
+| ``INSERT``         | yes         |
++--------------------+-------------+
+| ``INT``            | no          |
++--------------------+-------------+
+| ``INTO``           | yes         |
++--------------------+-------------+
+| ``JSON``           | no          |
++--------------------+-------------+
+| ``KEY``            | no          |
++--------------------+-------------+
+| ``KEYS``           | no          |
++--------------------+-------------+
+| ``KEYSPACE``       | yes         |
++--------------------+-------------+
+| ``KEYSPACES``      | no          |
++--------------------+-------------+
+| ``LANGUAGE``       | no          |
++--------------------+-------------+
+| ``LIMIT``          | yes         |
++--------------------+-------------+
+| ``LIST``           | no          |
++--------------------+-------------+
+| ``LOGIN``          | no          |
++--------------------+-------------+
+| ``MAP``            | no          |
++--------------------+-------------+
+| ``MODIFY``         | yes         |
++--------------------+-------------+
+| ``NAN``            | yes         |
++--------------------+-------------+
+| ``NOLOGIN``        | no          |
++--------------------+-------------+
+| ``NORECURSIVE``    | yes         |
++--------------------+-------------+
+| ``NOSUPERUSER``    | no          |
++--------------------+-------------+
+| ``NOT``            | yes         |
++--------------------+-------------+
+| ``NULL``           | yes         |
++--------------------+-------------+
+| ``OF``             | yes         |
++--------------------+-------------+
+| ``ON``             | yes         |
++--------------------+-------------+
+| ``OPTIONS``        | no          |
++--------------------+-------------+
+| ``OR``             | yes         |
++--------------------+-------------+
+| ``ORDER``          | yes         |
++--------------------+-------------+
+| ``PASSWORD``       | no          |
++--------------------+-------------+
+| ``PERMISSION``     | no          |
++--------------------+-------------+
+| ``PERMISSIONS``    | no          |
++--------------------+-------------+
+| ``PRIMARY``        | yes         |
++--------------------+-------------+
+| ``RENAME``         | yes         |
++--------------------+-------------+
+| ``REPLACE``        | yes         |
++--------------------+-------------+
+| ``RETURNS``        | no          |
++--------------------+-------------+
+| ``REVOKE``         | yes         |
++--------------------+-------------+
+| ``ROLE``           | no          |
++--------------------+-------------+
+| ``ROLES``          | no          |
++--------------------+-------------+
+| ``SCHEMA``         | yes         |
++--------------------+-------------+
+| ``SELECT``         | yes         |
++--------------------+-------------+
+| ``SET``            | yes         |
++--------------------+-------------+
+| ``SFUNC``          | no          |
++--------------------+-------------+
+| ``SMALLINT``       | no          |
++--------------------+-------------+
+| ``STATIC``         | no          |
++--------------------+-------------+
+| ``STORAGE``        | no          |
++--------------------+-------------+
+| ``STYPE``          | no          |
++--------------------+-------------+
+| ``SUPERUSER``      | no          |
++--------------------+-------------+
+| ``TABLE``          | yes         |
++--------------------+-------------+
+| ``TEXT``           | no          |
++--------------------+-------------+
+| ``TIME``           | no          |
++--------------------+-------------+
+| ``TIMESTAMP``      | no          |
++--------------------+-------------+
+| ``TIMEUUID``       | no          |
++--------------------+-------------+
+| ``TINYINT``        | no          |
++--------------------+-------------+
+| ``TO``             | yes         |
++--------------------+-------------+
+| ``TOKEN``          | yes         |
++--------------------+-------------+
+| ``TRIGGER``        | no          |
++--------------------+-------------+
+| ``TRUNCATE``       | yes         |
++--------------------+-------------+
+| ``TTL``            | no          |
++--------------------+-------------+
+| ``TUPLE``          | no          |
++--------------------+-------------+
+| ``TYPE``           | no          |
++--------------------+-------------+
+| ``UNLOGGED``       | yes         |
++--------------------+-------------+
+| ``UPDATE``         | yes         |
++--------------------+-------------+
+| ``USE``            | yes         |
++--------------------+-------------+
+| ``USER``           | no          |
++--------------------+-------------+
+| ``USERS``          | no          |
++--------------------+-------------+
+| ``USING``          | yes         |
++--------------------+-------------+
+| ``UUID``           | no          |
++--------------------+-------------+
+| ``VALUES``         | no          |
++--------------------+-------------+
+| ``VARCHAR``        | no          |
++--------------------+-------------+
+| ``VARINT``         | no          |
++--------------------+-------------+
+| ``WHERE``          | yes         |
++--------------------+-------------+
+| ``WITH``           | yes         |
++--------------------+-------------+
+| ``WRITETIME``      | no          |
++--------------------+-------------+
+
+Appendix B: CQL Reserved Types
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following type names are not currently used by CQL, but are reserved
+for potential future use. User-defined types may not use reserved type
+names as their name.
+
++-----------------+
+| type            |
++=================+
+| ``bitstring``   |
++-----------------+
+| ``byte``        |
++-----------------+
+| ``complex``     |
++-----------------+
+| ``enum``        |
++-----------------+
+| ``interval``    |
++-----------------+
+| ``macaddr``     |
++-----------------+
+
+
+Appendix C: Dropping Compact Storage
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+``ALTER ... DROP COMPACT STORAGE`` statement makes Compact Tables CQL-compatible,
+exposing internal structure of Thrift/Compact Tables:
+
+- CQL-created Compact Tables that have no clustering columns, will expose an
+  additional clustering column ``column1`` with ``UTF8Type``.
+- CQL-created Compact Tables that had no regular columns, will expose a
+  regular column ``value`` with ``BytesType``.
+- For CQL-Created Compact Tables, all columns originally defined as
+  ``regular`` will be come ``static``
+- CQL-created Compact Tables that have clustering but have no regular
+  columns will have an empty value column (of ``EmptyType``)
+- SuperColumn Tables (can only be created through Thrift) will expose
+  a compact value map with an empty name.
+- Thrift-created Compact Tables will have types corresponding to their
+  Thrift definition.
+- If a row was written while a table was still compact but it has no live
+  cells due to later row or cell deletions, it may continue to be simply 
+  left out of query results, as is the normal behavior for compact tables.
+  Rows written after a table is fully CQL-compatible, if they have no live
+  cells but a live primary key, may be present in query results with null values.
\ No newline at end of file
diff --git a/src/doc/3.11.11/_sources/cql/changes.rst.txt b/src/doc/3.11.11/_sources/cql/changes.rst.txt
new file mode 100644
index 0000000..1eee536
--- /dev/null
+++ b/src/doc/3.11.11/_sources/cql/changes.rst.txt
@@ -0,0 +1,204 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+Changes
+-------
+
+The following describes the changes in each version of CQL.
+
+3.4.4
+^^^^^
+
+- ``ALTER TABLE`` ``ALTER`` has been removed; a column's type may not be changed after creation (:jira:`12443`).
+- ``ALTER TYPE`` ``ALTER`` has been removed; a field's type may not be changed after creation (:jira:`12443`).
+
+3.4.3
+^^^^^
+
+- Adds a new ``duration `` :ref:`data types <data-types>` (:jira:`11873`).
+- Support for ``GROUP BY`` (:jira:`10707`).
+- Adds a ``DEFAULT UNSET`` option for ``INSERT JSON`` to ignore omitted columns (:jira:`11424`).
+- Allows ``null`` as a legal value for TTL on insert and update. It will be treated as equivalent to
+inserting a 0 (:jira:`12216`).
+
+3.4.2
+^^^^^
+
+- If a table has a non zero ``default_time_to_live``, then explicitly specifying a TTL of 0 in an ``INSERT`` or
+  ``UPDATE`` statement will result in the new writes not having any expiration (that is, an explicit TTL of 0 cancels
+  the ``default_time_to_live``). This wasn't the case before and the ``default_time_to_live`` was applied even though a
+  TTL had been explicitly set.
+- ``ALTER TABLE`` ``ADD`` and ``DROP`` now allow multiple columns to be added/removed.
+- New ``PER PARTITION LIMIT`` option for ``SELECT`` statements (see `CASSANDRA-7017
+  <https://issues.apache.org/jira/browse/CASSANDRA-7017)>`__.
+- :ref:`User-defined functions <cql-functions>` can now instantiate ``UDTValue`` and ``TupleValue`` instances via the
+  new ``UDFContext`` interface (see `CASSANDRA-10818 <https://issues.apache.org/jira/browse/CASSANDRA-10818)>`__.
+- :ref:`User-defined types <udts>` may now be stored in a non-frozen form, allowing individual fields to be updated and
+  deleted in ``UPDATE`` statements and ``DELETE`` statements, respectively. (`CASSANDRA-7423
+  <https://issues.apache.org/jira/browse/CASSANDRA-7423)>`__).
+
+3.4.1
+^^^^^
+
+- Adds ``CAST`` functions.
+
+3.4.0
+^^^^^
+
+- Support for :ref:`materialized views <materialized-views>`.
+- ``DELETE`` support for inequality expressions and ``IN`` restrictions on any primary key columns.
+- ``UPDATE`` support for ``IN`` restrictions on any primary key columns.
+
+3.3.1
+^^^^^
+
+- The syntax ``TRUNCATE TABLE X`` is now accepted as an alias for ``TRUNCATE X``.
+
+3.3.0
+^^^^^
+
+- :ref:`User-defined functions and aggregates <cql-functions>` are now supported.
+- Allows double-dollar enclosed strings literals as an alternative to single-quote enclosed strings.
+- Introduces Roles to supersede user based authentication and access control
+- New ``date``, ``time``, ``tinyint`` and ``smallint`` :ref:`data types <data-types>` have been added.
+- :ref:`JSON support <cql-json>` has been added
+- Adds new time conversion functions and deprecate ``dateOf`` and ``unixTimestampOf``.
+
+3.2.0
+^^^^^
+
+- :ref:`User-defined types <udts>` supported.
+- ``CREATE INDEX`` now supports indexing collection columns, including indexing the keys of map collections through the
+  ``keys()`` function
+- Indexes on collections may be queried using the new ``CONTAINS`` and ``CONTAINS KEY`` operators
+- :ref:`Tuple types <tuples>` were added to hold fixed-length sets of typed positional fields.
+- ``DROP INDEX`` now supports optionally specifying a keyspace.
+
+3.1.7
+^^^^^
+
+- ``SELECT`` statements now support selecting multiple rows in a single partition using an ``IN`` clause on combinations
+  of clustering columns.
+- ``IF NOT EXISTS`` and ``IF EXISTS`` syntax is now supported by ``CREATE USER`` and ``DROP USER`` statements,
+  respectively.
+
+3.1.6
+^^^^^
+
+- A new ``uuid()`` method has been added.
+- Support for ``DELETE ... IF EXISTS`` syntax.
+
+3.1.5
+^^^^^
+
+- It is now possible to group clustering columns in a relation, see :ref:`WHERE <where-clause>` clauses.
+- Added support for :ref:`static columns <static-columns>`.
+
+3.1.4
+^^^^^
+
+- ``CREATE INDEX`` now allows specifying options when creating CUSTOM indexes.
+
+3.1.3
+^^^^^
+
+- Millisecond precision formats have been added to the :ref:`timestamp <timestamps>` parser.
+
+3.1.2
+^^^^^
+
+- ``NaN`` and ``Infinity`` has been added as valid float constants. They are now reserved keywords. In the unlikely case
+  you we using them as a column identifier (or keyspace/table one), you will now need to double quote them.
+
+3.1.1
+^^^^^
+
+- ``SELECT`` statement now allows listing the partition keys (using the ``DISTINCT`` modifier). See `CASSANDRA-4536
+  <https://issues.apache.org/jira/browse/CASSANDRA-4536>`__.
+- The syntax ``c IN ?`` is now supported in ``WHERE`` clauses. In that case, the value expected for the bind variable
+  will be a list of whatever type ``c`` is.
+- It is now possible to use named bind variables (using ``:name`` instead of ``?``).
+
+3.1.0
+^^^^^
+
+- ``ALTER TABLE`` ``DROP`` option added.
+- ``SELECT`` statement now supports aliases in select clause. Aliases in WHERE and ORDER BY clauses are not supported.
+- ``CREATE`` statements for ``KEYSPACE``, ``TABLE`` and ``INDEX`` now supports an ``IF NOT EXISTS`` condition.
+  Similarly, ``DROP`` statements support a ``IF EXISTS`` condition.
+- ``INSERT`` statements optionally supports a ``IF NOT EXISTS`` condition and ``UPDATE`` supports ``IF`` conditions.
+
+3.0.5
+^^^^^
+
+- ``SELECT``, ``UPDATE``, and ``DELETE`` statements now allow empty ``IN`` relations (see `CASSANDRA-5626
+  <https://issues.apache.org/jira/browse/CASSANDRA-5626)>`__.
+
+3.0.4
+^^^^^
+
+- Updated the syntax for custom :ref:`secondary indexes <secondary-indexes>`.
+- Non-equal condition on the partition key are now never supported, even for ordering partitioner as this was not
+  correct (the order was **not** the one of the type of the partition key). Instead, the ``token`` method should always
+  be used for range queries on the partition key (see :ref:`WHERE clauses <where-clause>`).
+
+3.0.3
+^^^^^
+
+- Support for custom :ref:`secondary indexes <secondary-indexes>` has been added.
+
+3.0.2
+^^^^^
+
+- Type validation for the :ref:`constants <constants>` has been fixed. For instance, the implementation used to allow
+  ``'2'`` as a valid value for an ``int`` column (interpreting it has the equivalent of ``2``), or ``42`` as a valid
+  ``blob`` value (in which case ``42`` was interpreted as an hexadecimal representation of the blob). This is no longer
+  the case, type validation of constants is now more strict. See the :ref:`data types <data-types>` section for details
+  on which constant is allowed for which type.
+- The type validation fixed of the previous point has lead to the introduction of blobs constants to allow the input of
+  blobs. Do note that while the input of blobs as strings constant is still supported by this version (to allow smoother
+  transition to blob constant), it is now deprecated and will be removed by a future version. If you were using strings
+  as blobs, you should thus update your client code ASAP to switch blob constants.
+- A number of functions to convert native types to blobs have also been introduced. Furthermore the token function is
+  now also allowed in select clauses. See the :ref:`section on functions <cql-functions>` for details.
+
+3.0.1
+^^^^^
+
+- Date strings (and timestamps) are no longer accepted as valid ``timeuuid`` values. Doing so was a bug in the sense
+  that date string are not valid ``timeuuid``, and it was thus resulting in `confusing behaviors
+  <https://issues.apache.org/jira/browse/CASSANDRA-4936>`__. However, the following new methods have been added to help
+  working with ``timeuuid``: ``now``, ``minTimeuuid``, ``maxTimeuuid`` ,
+  ``dateOf`` and ``unixTimestampOf``.
+- Float constants now support the exponent notation. In other words, ``4.2E10`` is now a valid floating point value.
+
+Versioning
+^^^^^^^^^^
+
+Versioning of the CQL language adheres to the `Semantic Versioning <http://semver.org>`__ guidelines. Versions take the
+form X.Y.Z where X, Y, and Z are integer values representing major, minor, and patch level respectively. There is no
+correlation between Cassandra release versions and the CQL language version.
+
+========= =============================================================================================================
+ version   description
+========= =============================================================================================================
+ Major     The major version *must* be bumped when backward incompatible changes are introduced. This should rarely
+           occur.
+ Minor     Minor version increments occur when new, but backward compatible, functionality is introduced.
+ Patch     The patch version is incremented when bugs are fixed.
+========= =============================================================================================================
diff --git a/src/doc/3.11.11/_sources/cql/ddl.rst.txt b/src/doc/3.11.11/_sources/cql/ddl.rst.txt
new file mode 100644
index 0000000..3027775
--- /dev/null
+++ b/src/doc/3.11.11/_sources/cql/ddl.rst.txt
@@ -0,0 +1,649 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _data-definition:
+
+Data Definition
+---------------
+
+CQL stores data in *tables*, whose schema defines the layout of said data in the table, and those tables are grouped in
+*keyspaces*. A keyspace defines a number of options that applies to all the tables it contains, most prominently of
+which is the :ref:`replication strategy <replication-strategy>` used by the keyspace. It is generally encouraged to use
+one keyspace by *application*, and thus many cluster may define only one keyspace.
+
+This section describes the statements used to create, modify, and remove those keyspace and tables.
+
+Common definitions
+^^^^^^^^^^^^^^^^^^
+
+The names of the keyspaces and tables are defined by the following grammar:
+
+.. productionlist::
+   keyspace_name: `name`
+   table_name: [ `keyspace_name` '.' ] `name`
+   name: `unquoted_name` | `quoted_name`
+   unquoted_name: re('[a-zA-Z_0-9]{1, 48}')
+   quoted_name: '"' `unquoted_name` '"'
+
+Both keyspace and table name should be comprised of only alphanumeric characters, cannot be empty and are limited in
+size to 48 characters (that limit exists mostly to avoid filenames (which may include the keyspace and table name) to go
+over the limits of certain file systems). By default, keyspace and table names are case insensitive (``myTable`` is
+equivalent to ``mytable``) but case sensitivity can be forced by using double-quotes (``"myTable"`` is different from
+``mytable``).
+
+Further, a table is always part of a keyspace and a table name can be provided fully-qualified by the keyspace it is
+part of. If is is not fully-qualified, the table is assumed to be in the *current* keyspace (see :ref:`USE statement
+<use-statement>`).
+
+Further, the valid names for columns is simply defined as:
+
+.. productionlist::
+   column_name: `identifier`
+
+We also define the notion of statement options for use in the following section:
+
+.. productionlist::
+   options: `option` ( AND `option` )*
+   option: `identifier` '=' ( `identifier` | `constant` | `map_literal` )
+
+.. _create-keyspace-statement:
+
+CREATE KEYSPACE
+^^^^^^^^^^^^^^^
+
+A keyspace is created using a ``CREATE KEYSPACE`` statement:
+
+.. productionlist::
+   create_keyspace_statement: CREATE KEYSPACE [ IF NOT EXISTS ] `keyspace_name` WITH `options`
+
+For instance::
+
+    CREATE KEYSPACE Excelsior
+               WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
+
+    CREATE KEYSPACE Excalibur
+               WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 3}
+                AND durable_writes = false;
+
+
+The supported ``options`` are:
+
+=================== ========== =========== ========= ===================================================================
+name                 kind       mandatory   default   description
+=================== ========== =========== ========= ===================================================================
+``replication``      *map*      yes                   The replication strategy and options to use for the keyspace (see
+                                                      details below).
+``durable_writes``   *simple*   no          true      Whether to use the commit log for updates on this keyspace
+                                                      (disable this option at your own risk!).
+=================== ========== =========== ========= ===================================================================
+
+The ``replication`` property is mandatory and must at least contains the ``'class'`` sub-option which defines the
+:ref:`replication strategy <replication-strategy>` class to use. The rest of the sub-options depends on what replication
+strategy is used. By default, Cassandra support the following ``'class'``:
+
+- ``'SimpleStrategy'``: A simple strategy that defines a replication factor for the whole cluster. The only sub-options
+  supported is ``'replication_factor'`` to define that replication factor and is mandatory.
+- ``'NetworkTopologyStrategy'``: A replication strategy that allows to set the replication factor independently for
+  each data-center. The rest of the sub-options are key-value pairs where a key is a data-center name and its value is
+  the associated replication factor.
+
+Attempting to create a keyspace that already exists will return an error unless the ``IF NOT EXISTS`` option is used. If
+it is used, the statement will be a no-op if the keyspace already exists.
+
+.. _use-statement:
+
+USE
+^^^
+
+The ``USE`` statement allows to change the *current* keyspace (for the *connection* on which it is executed). A number
+of objects in CQL are bound to a keyspace (tables, user-defined types, functions, ...) and the current keyspace is the
+default keyspace used when those objects are referred without a fully-qualified name (that is, without being prefixed a
+keyspace name). A ``USE`` statement simply takes the keyspace to use as current as argument:
+
+.. productionlist::
+   use_statement: USE `keyspace_name`
+
+.. _alter-keyspace-statement:
+
+ALTER KEYSPACE
+^^^^^^^^^^^^^^
+
+An ``ALTER KEYSPACE`` statement allows to modify the options of a keyspace:
+
+.. productionlist::
+   alter_keyspace_statement: ALTER KEYSPACE `keyspace_name` WITH `options`
+
+For instance::
+
+    ALTER KEYSPACE Excelsior
+              WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 4};
+
+The supported options are the same than for :ref:`creating a keyspace <create-keyspace-statement>`.
+
+.. _drop-keyspace-statement:
+
+DROP KEYSPACE
+^^^^^^^^^^^^^
+
+Dropping a keyspace can be done using the ``DROP KEYSPACE`` statement:
+
+.. productionlist::
+   drop_keyspace_statement: DROP KEYSPACE [ IF EXISTS ] `keyspace_name`
+
+For instance::
+
+    DROP KEYSPACE Excelsior;
+
+Dropping a keyspace results in the immediate, irreversible removal of that keyspace, including all the tables, UTD and
+functions in it, and all the data contained in those tables.
+
+If the keyspace does not exists, the statement will return an error, unless ``IF EXISTS`` is used in which case the
+operation is a no-op.
+
+.. _create-table-statement:
+
+CREATE TABLE
+^^^^^^^^^^^^
+
+Creating a new table uses the ``CREATE TABLE`` statement:
+
+.. productionlist::
+   create_table_statement: CREATE TABLE [ IF NOT EXISTS ] `table_name`
+                         : '('
+                         :     `column_definition`
+                         :     ( ',' `column_definition` )*
+                         :     [ ',' PRIMARY KEY '(' `primary_key` ')' ]
+                         : ')' [ WITH `table_options` ]
+   column_definition: `column_name` `cql_type` [ STATIC ] [ PRIMARY KEY]
+   primary_key: `partition_key` [ ',' `clustering_columns` ]
+   partition_key: `column_name`
+                : | '(' `column_name` ( ',' `column_name` )* ')'
+   clustering_columns: `column_name` ( ',' `column_name` )*
+   table_options: COMPACT STORAGE [ AND `table_options` ]
+                   : | CLUSTERING ORDER BY '(' `clustering_order` ')' [ AND `table_options` ]
+                   : | `options`
+   clustering_order: `column_name` (ASC | DESC) ( ',' `column_name` (ASC | DESC) )*
+
+For instance::
+
+    CREATE TABLE monkeySpecies (
+        species text PRIMARY KEY,
+        common_name text,
+        population varint,
+        average_size int
+    ) WITH comment='Important biological records'
+       AND read_repair_chance = 1.0;
+
+    CREATE TABLE timeline (
+        userid uuid,
+        posted_month int,
+        posted_time uuid,
+        body text,
+        posted_by text,
+        PRIMARY KEY (userid, posted_month, posted_time)
+    ) WITH compaction = { 'class' : 'LeveledCompactionStrategy' };
+
+    CREATE TABLE loads (
+        machine inet,
+        cpu int,
+        mtime timeuuid,
+        load float,
+        PRIMARY KEY ((machine, cpu), mtime)
+    ) WITH CLUSTERING ORDER BY (mtime DESC);
+
+A CQL table has a name and is composed of a set of *rows*. Creating a table amounts to defining which :ref:`columns
+<column-definition>` the rows will be composed, which of those columns compose the :ref:`primary key <primary-key>`, as
+well as optional :ref:`options <create-table-options>` for the table.
+
+Attempting to create an already existing table will return an error unless the ``IF NOT EXISTS`` directive is used. If
+it is used, the statement will be a no-op if the table already exists.
+
+
+.. _column-definition:
+
+Column definitions
+~~~~~~~~~~~~~~~~~~
+
+Every rows in a CQL table has a set of predefined columns defined at the time of the table creation (or added later
+using an :ref:`alter statement<alter-table-statement>`).
+
+A :token:`column_definition` is primarily comprised of the name of the column defined and it's :ref:`type <data-types>`,
+which restrict which values are accepted for that column. Additionally, a column definition can have the following
+modifiers:
+
+``STATIC``
+    it declares the column as being a :ref:`static column <static-columns>`.
+
+``PRIMARY KEY``
+    it declares the column as being the sole component of the :ref:`primary key <primary-key>` of the table.
+
+.. _static-columns:
+
+Static columns
+``````````````
+Some columns can be declared as ``STATIC`` in a table definition. A column that is static will be “shared” by all the
+rows belonging to the same partition (having the same :ref:`partition key <partition-key>`). For instance::
+
+    CREATE TABLE t (
+        pk int,
+        t int,
+        v text,
+        s text static,
+        PRIMARY KEY (pk, t)
+    );
+
+    INSERT INTO t (pk, t, v, s) VALUES (0, 0, 'val0', 'static0');
+    INSERT INTO t (pk, t, v, s) VALUES (0, 1, 'val1', 'static1');
+
+    SELECT * FROM t;
+       pk | t | v      | s
+      ----+---+--------+-----------
+       0  | 0 | 'val0' | 'static1'
+       0  | 1 | 'val1' | 'static1'
+
+As can be seen, the ``s`` value is the same (``static1``) for both of the row in the partition (the partition key in
+that example being ``pk``, both rows are in that same partition): the 2nd insertion has overridden the value for ``s``.
+
+The use of static columns as the following restrictions:
+
+- tables with the ``COMPACT STORAGE`` option (see below) cannot use them.
+- a table without clustering columns cannot have static columns (in a table without clustering columns, every partition
+  has only one row, and so every column is inherently static).
+- only non ``PRIMARY KEY`` columns can be static.
+
+.. _primary-key:
+
+The Primary key
+~~~~~~~~~~~~~~~
+
+Within a table, a row is uniquely identified by its ``PRIMARY KEY``, and hence all table **must** define a PRIMARY KEY
+(and only one). A ``PRIMARY KEY`` definition is composed of one or more of the columns defined in the table.
+Syntactically, the primary key is defined the keywords ``PRIMARY KEY`` followed by comma-separated list of the column
+names composing it within parenthesis, but if the primary key has only one column, one can alternatively follow that
+column definition by the ``PRIMARY KEY`` keywords. The order of the columns in the primary key definition matter.
+
+A CQL primary key is composed of 2 parts:
+
+- the :ref:`partition key <partition-key>` part. It is the first component of the primary key definition. It can be a
+  single column or, using additional parenthesis, can be multiple columns. A table always have at least a partition key,
+  the smallest possible table definition is::
+
+      CREATE TABLE t (k text PRIMARY KEY);
+
+- the :ref:`clustering columns <clustering-columns>`. Those are the columns after the first component of the primary key
+  definition, and the order of those columns define the *clustering order*.
+
+Some example of primary key definition are:
+
+- ``PRIMARY KEY (a)``: ``a`` is the partition key and there is no clustering columns.
+- ``PRIMARY KEY (a, b, c)`` : ``a`` is the partition key and ``b`` and ``c`` are the clustering columns.
+- ``PRIMARY KEY ((a, b), c)`` : ``a`` and ``b`` compose the partition key (this is often called a *composite* partition
+  key) and ``c`` is the clustering column.
+
+
+.. _partition-key:
+
+The partition key
+`````````````````
+
+Within a table, CQL defines the notion of a *partition*. A partition is simply the set of rows that share the same value
+for their partition key. Note that if the partition key is composed of multiple columns, then rows belong to the same
+partition only they have the same values for all those partition key column. So for instance, given the following table
+definition and content::
+
+    CREATE TABLE t (
+        a int,
+        b int,
+        c int,
+        d int,
+        PRIMARY KEY ((a, b), c, d)
+    );
+
+    SELECT * FROM t;
+       a | b | c | d
+      ---+---+---+---
+       0 | 0 | 0 | 0    // row 1
+       0 | 0 | 1 | 1    // row 2
+       0 | 1 | 2 | 2    // row 3
+       0 | 1 | 3 | 3    // row 4
+       1 | 1 | 4 | 4    // row 5
+
+``row 1`` and ``row 2`` are in the same partition, ``row 3`` and ``row 4`` are also in the same partition (but a
+different one) and ``row 5`` is in yet another partition.
+
+Note that a table always has a partition key, and that if the table has no :ref:`clustering columns
+<clustering-columns>`, then every partition of that table is only comprised of a single row (since the primary key
+uniquely identifies rows and the primary key is equal to the partition key if there is no clustering columns).
+
+The most important property of partition is that all the rows belonging to the same partition are guarantee to be stored
+on the same set of replica nodes. In other words, the partition key of a table defines which of the rows will be
+localized together in the Cluster, and it is thus important to choose your partition key wisely so that rows that needs
+to be fetch together are in the same partition (so that querying those rows together require contacting a minimum of
+nodes).
+
+Please note however that there is a flip-side to this guarantee: as all rows sharing a partition key are guaranteed to
+be stored on the same set of replica node, a partition key that groups too much data can create a hotspot.
+
+Another useful property of a partition is that when writing data, all the updates belonging to a single partition are
+done *atomically* and in *isolation*, which is not the case across partitions.
+
+The proper choice of the partition key and clustering columns for a table is probably one of the most important aspect
+of data modeling in Cassandra, and it largely impact which queries can be performed, and how efficiently they are.
+
+
+.. _clustering-columns:
+
+The clustering columns
+``````````````````````
+
+The clustering columns of a table defines the clustering order for the partition of that table. For a given
+:ref:`partition <partition-key>`, all the rows are physically ordered inside Cassandra by that clustering order. For
+instance, given::
+
+    CREATE TABLE t (
+        a int,
+        b int,
+        c int,
+        PRIMARY KEY (a, c, d)
+    );
+
+    SELECT * FROM t;
+       a | b | c
+      ---+---+---
+       0 | 0 | 4     // row 1
+       0 | 1 | 9     // row 2
+       0 | 2 | 2     // row 3
+       0 | 3 | 3     // row 4
+
+then the rows (which all belong to the same partition) are all stored internally in the order of the values of their
+``b`` column (the order they are displayed above). So where the partition key of the table allows to group rows on the
+same replica set, the clustering columns controls how those rows are stored on the replica. That sorting allows the
+retrieval of a range of rows within a partition (for instance, in the example above, ``SELECT * FROM t WHERE a = 0 AND b
+> 1 and b <= 3``) to be very efficient.
+
+
+.. _create-table-options:
+
+Table options
+~~~~~~~~~~~~~
+
+A CQL table has a number of options that can be set at creation (and, for most of them, :ref:`altered
+<alter-table-statement>` later). These options are specified after the ``WITH`` keyword.
+
+Amongst those options, two important ones cannot be changed after creation and influence which queries can be done
+against the table: the ``COMPACT STORAGE`` option and the ``CLUSTERING ORDER`` option. Those, as well as the other
+options of a table are described in the following sections.
+
+.. _compact-tables:
+
+Compact tables
+``````````````
+
+.. warning:: Since Cassandra 3.0, compact tables have the exact same layout internally than non compact ones (for the
+   same schema obviously), and declaring a table compact **only** creates artificial limitations on the table definition
+   and usage that are necessary to ensure backward compatibility with the deprecated Thrift API. And as ``COMPACT
+   STORAGE`` cannot, as of Cassandra |version|, be removed, it is strongly discouraged to create new table with the
+   ``COMPACT STORAGE`` option.
+
+A *compact* table is one defined with the ``COMPACT STORAGE`` option. This option is mainly targeted towards backward
+compatibility for definitions created before CQL version 3 (see `www.datastax.com/dev/blog/thrift-to-cql3
+<http://www.datastax.com/dev/blog/thrift-to-cql3>`__ for more details) and shouldn't be used for new tables. Declaring a
+table with this option creates limitations for the table which are largely arbitrary but necessary for backward
+compatibility with the (deprecated) Thrift API. Amongst those limitation:
+
+- a compact table cannot use collections nor static columns.
+- if a compact table has at least one clustering column, then it must have *exactly* one column outside of the primary
+  key ones. This imply you cannot add or remove columns after creation in particular.
+- a compact table is limited in the indexes it can create, and no materialized view can be created on it.
+
+.. _clustering-order:
+
+Reversing the clustering order
+``````````````````````````````
+
+The clustering order of a table is defined by the :ref:`clustering columns <clustering-columns>` of that table. By
+default, that ordering is based on natural order of those clustering order, but the ``CLUSTERING ORDER`` allows to
+change that clustering order to use the *reverse* natural order for some (potentially all) of the columns.
+
+The ``CLUSTERING ORDER`` option takes the comma-separated list of the clustering column, each with a ``ASC`` (for
+*ascendant*, e.g. the natural order) or ``DESC`` (for *descendant*, e.g. the reverse natural order). Note in particular
+that the default (if the ``CLUSTERING ORDER`` option is not used) is strictly equivalent to using the option with all
+clustering columns using the ``ASC`` modifier.
+
+Note that this option is basically a hint for the storage engine to change the order in which it stores the row but it
+has 3 visible consequences:
+
+# it limits which ``ORDER BY`` clause are allowed for :ref:`selects <select-statement>` on that table. You can only
+  order results by the clustering order or the reverse clustering order. Meaning that if a table has 2 clustering column
+  ``a`` and ``b`` and you defined ``WITH CLUSTERING ORDER (a DESC, b ASC)``, then in queries you will be allowed to use
+  ``ORDER BY (a DESC, b ASC)`` and (reverse clustering order) ``ORDER BY (a ASC, b DESC)`` but **not** ``ORDER BY (a
+  ASC, b ASC)`` (nor ``ORDER BY (a DESC, b DESC)``).
+# it also change the default order of results when queried (if no ``ORDER BY`` is provided). Results are always returned
+  in clustering order (within a partition).
+# it has a small performance impact on some queries as queries in reverse clustering order are slower than the one in
+  forward clustering order. In practice, this means that if you plan on querying mostly in the reverse natural order of
+  your columns (which is common with time series for instance where you often want data from the newest to the oldest),
+  it is an optimization to declare a descending clustering order.
+
+.. _create-table-general-options:
+
+Other table options
+```````````````````
+
+.. todo:: review (misses cdc if nothing else) and link to proper categories when appropriate (compaction for instance)
+
+A table supports the following options:
+
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| option                         | kind     | default     | description                                               |
++================================+==========+=============+===========================================================+
+| ``comment``                    | *simple* | none        | A free-form, human-readable comment.                      |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``read_repair_chance``         | *simple* | 0.1         | The probability with which to query extra nodes (e.g.     |
+|                                |          |             | more nodes than required by the consistency level) for    |
+|                                |          |             | the purpose of read repairs.                              |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``dclocal_read_repair_chance`` | *simple* | 0           | The probability with which to query extra nodes (e.g.     |
+|                                |          |             | more nodes than required by the consistency level)        |
+|                                |          |             | belonging to the same data center than the read           |
+|                                |          |             | coordinator for the purpose of read repairs.              |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``gc_grace_seconds``           | *simple* | 864000      | Time to wait before garbage collecting tombstones         |
+|                                |          |             | (deletion markers).                                       |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``bloom_filter_fp_chance``     | *simple* | 0.00075     | The target probability of false positive of the sstable   |
+|                                |          |             | bloom filters. Said bloom filters will be sized to provide|
+|                                |          |             | the provided probability (thus lowering this value impact |
+|                                |          |             | the size of bloom filters in-memory and on-disk)          |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``default_time_to_live``       | *simple* | 0           | The default expiration time (“TTL”) in seconds for a      |
+|                                |          |             | table.                                                    |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``compaction``                 | *map*    | *see below* | :ref:`Compaction options <cql-compaction-options>`.       |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``compression``                | *map*    | *see below* | :ref:`Compression options <cql-compression-options>`.     |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``caching``                    | *map*    | *see below* | :ref:`Caching options <cql-caching-options>`.             |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+
+.. _cql-compaction-options:
+
+Compaction options
+##################
+
+The ``compaction`` options must at least define the ``'class'`` sub-option, that defines the compaction strategy class
+to use. The default supported class are ``'SizeTieredCompactionStrategy'`` (:ref:`STCS <STCS>`),
+``'LeveledCompactionStrategy'`` (:ref:`LCS <LCS>`) and ``'TimeWindowCompactionStrategy'`` (:ref:`TWCS <TWCS>`) (the
+``'DateTieredCompactionStrategy'`` is also supported but is deprecated and ``'TimeWindowCompactionStrategy'`` should be
+preferred instead). Custom strategy can be provided by specifying the full class name as a :ref:`string constant
+<constants>`.
+
+All default strategies support a number of :ref:`common options <compaction-options>`, as well as options specific to
+the strategy chosen (see the section corresponding to your strategy for details: :ref:`STCS <stcs-options>`, :ref:`LCS
+<lcs-options>` and :ref:`TWCS <TWCS>`).
+
+.. _cql-compression-options:
+
+Compression options
+###################
+
+The ``compression`` options define if and how the sstables of the table are compressed. The following sub-options are
+available:
+
+========================= =============== =============================================================================
+ Option                    Default         Description
+========================= =============== =============================================================================
+ ``class``                 LZ4Compressor   The compression algorithm to use. Default compressor are: LZ4Compressor,
+                                           SnappyCompressor and DeflateCompressor. Use ``'enabled' : false`` to disable
+                                           compression. Custom compressor can be provided by specifying the full class
+                                           name as a “string constant”:#constants.
+ ``enabled``               true            Enable/disable sstable compression.
+ ``chunk_length_in_kb``    64              On disk SSTables are compressed by block (to allow random reads). This
+                                           defines the size (in KB) of said block. Bigger values may improve the
+                                           compression rate, but increases the minimum size of data to be read from disk
+                                           for a read
+ ``crc_check_chance``      1.0             When compression is enabled, each compressed block includes a checksum of
+                                           that block for the purpose of detecting disk bitrot and avoiding the
+                                           propagation of corruption to other replica. This option defines the
+                                           probability with which those checksums are checked during read. By default
+                                           they are always checked. Set to 0 to disable checksum checking and to 0.5 for
+                                           instance to check them every other read   |
+========================= =============== =============================================================================
+
+
+For instance, to create a table with LZ4Compressor and a chunk_lenth_in_kb of 4KB::
+
+   CREATE TABLE simple (
+      id int,
+      key text,
+      value text,
+      PRIMARY KEY (key, value)
+   ) with compression = {'class': 'LZ4Compressor', 'chunk_length_in_kb': 4};
+
+
+.. _cql-caching-options:
+
+Caching options
+###############
+
+The ``caching`` options allows to configure both the *key cache* and the *row cache* for the table. The following
+sub-options are available:
+
+======================== ========= ====================================================================================
+ Option                   Default   Description
+======================== ========= ====================================================================================
+ ``keys``                 ALL       Whether to cache keys (“key cache”) for this table. Valid values are: ``ALL`` and
+                                    ``NONE``.
+ ``rows_per_partition``   NONE      The amount of rows to cache per partition (“row cache”). If an integer ``n`` is
+                                    specified, the first ``n`` queried rows of a partition will be cached. Other
+                                    possible options are ``ALL``, to cache all rows of a queried partition, or ``NONE``
+                                    to disable row caching.
+======================== ========= ====================================================================================
+
+
+For instance, to create a table with both a key cache and 10 rows per partition::
+
+    CREATE TABLE simple (
+    id int,
+    key text,
+    value text,
+    PRIMARY KEY (key, value)
+    ) WITH caching = {'keys': 'ALL', 'rows_per_partition': 10};
+
+
+Other considerations:
+#####################
+
+- Adding new columns (see ``ALTER TABLE`` below) is a constant time operation. There is thus no need to try to
+  anticipate future usage when creating a table.
+
+.. _alter-table-statement:
+
+ALTER TABLE
+^^^^^^^^^^^
+
+Altering an existing table uses the ``ALTER TABLE`` statement:
+
+.. productionlist::
+   alter_table_statement: ALTER TABLE `table_name` `alter_table_instruction`
+   alter_table_instruction: ADD `column_name` `cql_type` ( ',' `column_name` `cql_type` )*
+                          : | DROP `column_name` ( `column_name` )*
+                          : | WITH `options`
+
+For instance::
+
+    ALTER TABLE addamsFamily ADD gravesite varchar;
+
+    ALTER TABLE addamsFamily
+           WITH comment = 'A most excellent and useful table'
+           AND read_repair_chance = 0.2;
+
+The ``ALTER TABLE`` statement can:
+
+- Add new column(s) to the table (through the ``ADD`` instruction). Note that the primary key of a table cannot be
+  changed and thus newly added column will, by extension, never be part of the primary key. Also note that :ref:`compact
+  tables <compact-tables>` have restrictions regarding column addition. Note that this is constant (in the amount of
+  data the cluster contains) time operation.
+- Remove column(s) from the table. This drops both the column and all its content, but note that while the column
+  becomes immediately unavailable, its content is only removed lazily during compaction. Please also see the warnings
+  below. Due to lazy removal, the altering itself is a constant (in the amount of data removed or contained in the
+  cluster) time operation.
+- Change some of the table options (through the ``WITH`` instruction). The :ref:`supported options
+  <create-table-options>` are the same that when creating a table (outside of ``COMPACT STORAGE`` and ``CLUSTERING
+  ORDER`` that cannot be changed after creation). Note that setting any ``compaction`` sub-options has the effect of
+  erasing all previous ``compaction`` options, so you need to re-specify all the sub-options if you want to keep them.
+  The same note applies to the set of ``compression`` sub-options.
+
+.. warning:: Dropping a column assumes that the timestamps used for the value of this column are "real" timestamp in
+   microseconds. Using "real" timestamps in microseconds is the default is and is **strongly** recommended but as
+   Cassandra allows the client to provide any timestamp on any table it is theoretically possible to use another
+   convention. Please be aware that if you do so, dropping a column will not work correctly.
+
+.. warning:: Once a column is dropped, it is allowed to re-add a column with the same name than the dropped one
+   **unless** the type of the dropped column was a (non-frozen) column (due to an internal technical limitation).
+
+
+.. _drop-table-statement:
+
+DROP TABLE
+^^^^^^^^^^
+
+Dropping a table uses the ``DROP TABLE`` statement:
+
+.. productionlist::
+   drop_table_statement: DROP TABLE [ IF EXISTS ] `table_name`
+
+Dropping a table results in the immediate, irreversible removal of the table, including all data it contains.
+
+If the table does not exist, the statement will return an error, unless ``IF EXISTS`` is used in which case the
+operation is a no-op.
+
+.. _truncate-statement:
+
+TRUNCATE
+^^^^^^^^
+
+A table can be truncated using the ``TRUNCATE`` statement:
+
+.. productionlist::
+   truncate_statement: TRUNCATE [ TABLE ] `table_name`
+
+Note that ``TRUNCATE TABLE foo`` is allowed for consistency with other DDL statements but tables are the only object
+that can be truncated currently and so the ``TABLE`` keyword can be omitted.
+
+Truncating a table permanently removes all existing data from the table, but without removing the table itself.
diff --git a/src/doc/3.11.11/_sources/cql/definitions.rst.txt b/src/doc/3.11.11/_sources/cql/definitions.rst.txt
new file mode 100644
index 0000000..d4a5b59
--- /dev/null
+++ b/src/doc/3.11.11/_sources/cql/definitions.rst.txt
@@ -0,0 +1,232 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. _UUID: https://en.wikipedia.org/wiki/Universally_unique_identifier
+
+.. highlight:: cql
+
+Definitions
+-----------
+
+.. _conventions:
+
+Conventions
+^^^^^^^^^^^
+
+To aid in specifying the CQL syntax, we will use the following conventions in this document:
+
+- Language rules will be given in an informal `BNF variant
+  <http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form#Variants>`_ notation. In particular, we'll use square brakets
+  (``[ item ]``) for optional items, ``*`` and ``+`` for repeated items (where ``+`` imply at least one).
+- The grammar will also use the following convention for convenience: non-terminal term will be lowercase (and link to
+  their definition) while terminal keywords will be provided "all caps". Note however that keywords are
+  :ref:`identifiers` and are thus case insensitive in practice. We will also define some early construction using
+  regexp, which we'll indicate with ``re(<some regular expression>)``.
+- The grammar is provided for documentation purposes and leave some minor details out.  For instance, the comma on the
+  last column definition in a ``CREATE TABLE`` statement is optional but supported if present even though the grammar in
+  this document suggests otherwise. Also, not everything accepted by the grammar is necessarily valid CQL.
+- References to keywords or pieces of CQL code in running text will be shown in a ``fixed-width font``.
+
+
+.. _identifiers:
+
+Identifiers and keywords
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+The CQL language uses *identifiers* (or *names*) to identify tables, columns and other objects. An identifier is a token
+matching the regular expression ``[a-zA-Z][a-zA-Z0-9_]*``.
+
+A number of such identifiers, like ``SELECT`` or ``WITH``, are *keywords*. They have a fixed meaning for the language
+and most are reserved. The list of those keywords can be found in :ref:`appendix-A`.
+
+Identifiers and (unquoted) keywords are case insensitive. Thus ``SELECT`` is the same than ``select`` or ``sElEcT``, and
+``myId`` is the same than ``myid`` or ``MYID``. A convention often used (in particular by the samples of this
+documentation) is to use upper case for keywords and lower case for other identifiers.
+
+There is a second kind of identifiers called *quoted identifiers* defined by enclosing an arbitrary sequence of
+characters (non empty) in double-quotes(``"``). Quoted identifiers are never keywords. Thus ``"select"`` is not a
+reserved keyword and can be used to refer to a column (note that using this is particularly advised), while ``select``
+would raise a parsing error. Also, contrarily to unquoted identifiers and keywords, quoted identifiers are case
+sensitive (``"My Quoted Id"`` is *different* from ``"my quoted id"``). A fully lowercase quoted identifier that matches
+``[a-zA-Z][a-zA-Z0-9_]*`` is however *equivalent* to the unquoted identifier obtained by removing the double-quote (so
+``"myid"`` is equivalent to ``myid`` and to ``myId`` but different from ``"myId"``).  Inside a quoted identifier, the
+double-quote character can be repeated to escape it, so ``"foo "" bar"`` is a valid identifier.
+
+.. note:: *quoted identifiers* allows to declare columns with arbitrary names, and those can sometime clash with
+   specific names used by the server. For instance, when using conditional update, the server will respond with a
+   result-set containing a special result named ``"[applied]"``. If you’ve declared a column with such a name, this
+   could potentially confuse some tools and should be avoided. In general, unquoted identifiers should be preferred but
+   if you use quoted identifiers, it is strongly advised to avoid any name enclosed by squared brackets (like
+   ``"[applied]"``) and any name that looks like a function call (like ``"f(x)"``).
+
+More formally, we have:
+
+.. productionlist::
+   identifier: `unquoted_identifier` | `quoted_identifier`
+   unquoted_identifier: re('[a-zA-Z][a-zA-Z0-9_]*')
+   quoted_identifier: '"' (any character where " can appear if doubled)+ '"'
+
+.. _constants:
+
+Constants
+^^^^^^^^^
+
+CQL defines the following kind of *constants*:
+
+.. productionlist::
+   constant: `string` | `integer` | `float` | `boolean` | `uuid` | `blob` | NULL
+   string: '\'' (any character where ' can appear if doubled)+ '\''
+         : '$$' (any character other than '$$') '$$'
+   integer: re('-?[0-9]+')
+   float: re('-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9+])?') | NAN | INFINITY
+   boolean: TRUE | FALSE
+   uuid: `hex`{8}-`hex`{4}-`hex`{4}-`hex`{4}-`hex`{12}
+   hex: re("[0-9a-fA-F]")
+   blob: '0' ('x' | 'X') `hex`+
+
+In other words:
+
+- A string constant is an arbitrary sequence of characters enclosed by single-quote(``'``). A single-quote
+  can be included by repeating it, e.g. ``'It''s raining today'``. Those are not to be confused with quoted
+  :ref:`identifiers` that use double-quotes. Alternatively, a string can be defined by enclosing the arbitrary sequence
+  of characters by two dollar characters, in which case single-quote can be used without escaping (``$$It's raining
+  today$$``). That latter form is often used when defining :ref:`user-defined functions <udfs>` to avoid having to
+  escape single-quote characters in function body (as they are more likely to occur than ``$$``).
+- Integer, float and boolean constant are defined as expected. Note however than float allows the special ``NaN`` and
+  ``Infinity`` constants.
+- CQL supports UUID_ constants.
+- Blobs content are provided in hexadecimal and prefixed by ``0x``.
+- The special ``NULL`` constant denotes the absence of value.
+
+For how these constants are typed, see the :ref:`data-types` section.
+
+Terms
+^^^^^
+
+CQL has the notion of a *term*, which denotes the kind of values that CQL support. Terms are defined by:
+
+.. productionlist::
+   term: `constant` | `literal` | `function_call` | `type_hint` | `bind_marker`
+   literal: `collection_literal` | `udt_literal` | `tuple_literal`
+   function_call: `identifier` '(' [ `term` (',' `term`)* ] ')'
+   type_hint: '(' `cql_type` `)` term
+   bind_marker: '?' | ':' `identifier`
+
+A term is thus one of:
+
+- A :ref:`constant <constants>`.
+- A literal for either :ref:`a collection <collections>`, :ref:`a user-defined type <udts>` or :ref:`a tuple <tuples>`
+  (see the linked sections for details).
+- A function call: see :ref:`the section on functions <cql-functions>` for details on which :ref:`native function
+  <native-functions>` exists and how to define your own :ref:`user-defined ones <udfs>`.
+- A *type hint*: see the :ref:`related section <type-hints>` for details.
+- A bind marker, which denotes a variable to be bound at execution time. See the section on :ref:`prepared-statements`
+  for details. A bind marker can be either anonymous (``?``) or named (``:some_name``). The latter form provides a more
+  convenient way to refer to the variable for binding it and should generally be preferred.
+
+
+Comments
+^^^^^^^^
+
+A comment in CQL is a line beginning by either double dashes (``--``) or double slash (``//``).
+
+Multi-line comments are also supported through enclosure within ``/*`` and ``*/`` (but nesting is not supported).
+
+::
+
+    -- This is a comment
+    // This is a comment too
+    /* This is
+       a multi-line comment */
+
+Statements
+^^^^^^^^^^
+
+CQL consists of statements that can be divided in the following categories:
+
+- :ref:`data-definition` statements, to define and change how the data is stored (keyspaces and tables).
+- :ref:`data-manipulation` statements, for selecting, inserting and deleting data.
+- :ref:`secondary-indexes` statements.
+- :ref:`materialized-views` statements.
+- :ref:`cql-roles` statements.
+- :ref:`cql-permissions` statements.
+- :ref:`User-Defined Functions <udfs>` statements.
+- :ref:`udts` statements.
+- :ref:`cql-triggers` statements.
+
+All the statements are listed below and are described in the rest of this documentation (see links above):
+
+.. productionlist::
+   cql_statement: `statement` [ ';' ]
+   statement: `ddl_statement`
+            : | `dml_statement`
+            : | `secondary_index_statement`
+            : | `materialized_view_statement`
+            : | `role_or_permission_statement`
+            : | `udf_statement`
+            : | `udt_statement`
+            : | `trigger_statement`
+   ddl_statement: `use_statement`
+                : | `create_keyspace_statement`
+                : | `alter_keyspace_statement`
+                : | `drop_keyspace_statement`
+                : | `create_table_statement`
+                : | `alter_table_statement`
+                : | `drop_table_statement`
+                : | `truncate_statement`
+    dml_statement: `select_statement`
+                 : | `insert_statement`
+                 : | `update_statement`
+                 : | `delete_statement`
+                 : | `batch_statement`
+    secondary_index_statement: `create_index_statement`
+                             : | `drop_index_statement`
+    materialized_view_statement: `create_materialized_view_statement`
+                               : | `drop_materialized_view_statement`
+    role_or_permission_statement: `create_role_statement`
+                                : | `alter_role_statement`
+                                : | `drop_role_statement`
+                                : | `grant_role_statement`
+                                : | `revoke_role_statement`
+                                : | `list_roles_statement`
+                                : | `grant_permission_statement`
+                                : | `revoke_permission_statement`
+                                : | `list_permissions_statement`
+                                : | `create_user_statement`
+                                : | `alter_user_statement`
+                                : | `drop_user_statement`
+                                : | `list_users_statement`
+    udf_statement: `create_function_statement`
+                 : | `drop_function_statement`
+                 : | `create_aggregate_statement`
+                 : | `drop_aggregate_statement`
+    udt_statement: `create_type_statement`
+                 : | `alter_type_statement`
+                 : | `drop_type_statement`
+    trigger_statement: `create_trigger_statement`
+                     : | `drop_trigger_statement`
+
+.. _prepared-statements:
+
+Prepared Statements
+^^^^^^^^^^^^^^^^^^^
+
+CQL supports *prepared statements*. Prepared statements are an optimization that allows to parse a query only once but
+execute it multiple times with different concrete values.
+
+Any statement that uses at least one bind marker (see :token:`bind_marker`) will need to be *prepared*. After which the statement
+can be *executed* by provided concrete values for each of its marker. The exact details of how a statement is prepared
+and then executed depends on the CQL driver used and you should refer to your driver documentation.
diff --git a/src/doc/3.11.11/_sources/cql/dml.rst.txt b/src/doc/3.11.11/_sources/cql/dml.rst.txt
new file mode 100644
index 0000000..1308de5
--- /dev/null
+++ b/src/doc/3.11.11/_sources/cql/dml.rst.txt
@@ -0,0 +1,522 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _data-manipulation:
+
+Data Manipulation
+-----------------
+
+This section describes the statements supported by CQL to insert, update, delete and query data.
+
+.. _select-statement:
+
+SELECT
+^^^^^^
+
+Querying data from data is done using a ``SELECT`` statement:
+
+.. productionlist::
+   select_statement: SELECT [ JSON | DISTINCT ] ( `select_clause` | '*' )
+                   : FROM `table_name`
+                   : [ WHERE `where_clause` ]
+                   : [ GROUP BY `group_by_clause` ]
+                   : [ ORDER BY `ordering_clause` ]
+                   : [ PER PARTITION LIMIT (`integer` | `bind_marker`) ]
+                   : [ LIMIT (`integer` | `bind_marker`) ]
+                   : [ ALLOW FILTERING ]
+   select_clause: `selector` [ AS `identifier` ] ( ',' `selector` [ AS `identifier` ] )
+   selector: `column_name`
+           : | `term`
+           : | CAST '(' `selector` AS `cql_type` ')'
+           : | `function_name` '(' [ `selector` ( ',' `selector` )* ] ')'
+           : | COUNT '(' '*' ')'
+   where_clause: `relation` ( AND `relation` )*
+   relation: `column_name` `operator` `term`
+           : '(' `column_name` ( ',' `column_name` )* ')' `operator` `tuple_literal`
+           : TOKEN '(' `column_name` ( ',' `column_name` )* ')' `operator` `term`
+   operator: '=' | '<' | '>' | '<=' | '>=' | '!=' | IN | CONTAINS | CONTAINS KEY
+   group_by_clause: `column_name` ( ',' `column_name` )*
+   ordering_clause: `column_name` [ ASC | DESC ] ( ',' `column_name` [ ASC | DESC ] )*
+
+For instance::
+
+    SELECT name, occupation FROM users WHERE userid IN (199, 200, 207);
+    SELECT JSON name, occupation FROM users WHERE userid = 199;
+    SELECT name AS user_name, occupation AS user_occupation FROM users;
+
+    SELECT time, value
+    FROM events
+    WHERE event_type = 'myEvent'
+      AND time > '2011-02-03'
+      AND time <= '2012-01-01'
+
+    SELECT COUNT (*) AS user_count FROM users;
+
+The ``SELECT`` statements reads one or more columns for one or more rows in a table. It returns a result-set of the rows
+matching the request, where each row contains the values for the selection corresponding to the query. Additionally,
+:ref:`functions <cql-functions>` including :ref:`aggregation <aggregate-functions>` ones can be applied to the result.
+
+A ``SELECT`` statement contains at least a :ref:`selection clause <selection-clause>` and the name of the table on which
+the selection is on (note that CQL does **not** joins or sub-queries and thus a select statement only apply to a single
+table). In most case, a select will also have a :ref:`where clause <where-clause>` and it can optionally have additional
+clauses to :ref:`order <ordering-clause>` or :ref:`limit <limit-clause>` the results. Lastly, :ref:`queries that require
+filtering <allow-filtering>` can be allowed if the ``ALLOW FILTERING`` flag is provided.
+
+.. _selection-clause:
+
+Selection clause
+~~~~~~~~~~~~~~~~
+
+The :token:`select_clause` determines which columns needs to be queried and returned in the result-set, as well as any
+transformation to apply to this result before returning. It consists of a comma-separated list of *selectors* or,
+alternatively, of the wildcard character (``*``) to select all the columns defined in the table.
+
+Selectors
+`````````
+
+A :token:`selector` can be one of:
+
+- A column name of the table selected, to retrieve the values for that column.
+- A term, which is usually used nested inside other selectors like functions (if a term is selected directly, then the
+  corresponding column of the result-set will simply have the value of this term for every row returned).
+- A casting, which allows to convert a nested selector to a (compatible) type.
+- A function call, where the arguments are selector themselves. See the section on :ref:`functions <cql-functions>` for
+  more details.
+- The special call ``COUNT(*)`` to the :ref:`COUNT function <count-function>`, which counts all non-null results.
+
+Aliases
+```````
+
+Every *top-level* selector can also be aliased (using `AS`). If so, the name of the corresponding column in the result
+set will be that of the alias. For instance::
+
+    // Without alias
+    SELECT intAsBlob(4) FROM t;
+
+    //  intAsBlob(4)
+    // --------------
+    //  0x00000004
+
+    // With alias
+    SELECT intAsBlob(4) AS four FROM t;
+
+    //  four
+    // ------------
+    //  0x00000004
+
+.. note:: Currently, aliases aren't recognized anywhere else in the statement where they are used (not in the ``WHERE``
+   clause, not in the ``ORDER BY`` clause, ...). You must use the orignal column name instead.
+
+
+``WRITETIME`` and ``TTL`` function
+```````````````````````````````````
+
+Selection supports two special functions (that aren't allowed anywhere else): ``WRITETIME`` and ``TTL``. Both function
+take only one argument and that argument *must* be a column name (so for instance ``TTL(3)`` is invalid).
+
+Those functions allow to retrieve meta-information that are stored internally for each column, namely:
+
+- the timestamp of the value of the column for ``WRITETIME``.
+- the remaining time to live (in seconds) for the value of the column if it set to expire (and ``null`` otherwise).
+
+.. _where-clause:
+
+The ``WHERE`` clause
+~~~~~~~~~~~~~~~~~~~~
+
+The ``WHERE`` clause specifies which rows must be queried. It is composed of relations on the columns that are part of
+the ``PRIMARY KEY`` and/or have a `secondary index <#createIndexStmt>`__ defined on them.
+
+Not all relations are allowed in a query. For instance, non-equal relations (where ``IN`` is considered as an equal
+relation) on a partition key are not supported (but see the use of the ``TOKEN`` method below to do non-equal queries on
+the partition key). Moreover, for a given partition key, the clustering columns induce an ordering of rows and relations
+on them is restricted to the relations that allow to select a **contiguous** (for the ordering) set of rows. For
+instance, given::
+
+    CREATE TABLE posts (
+        userid text,
+        blog_title text,
+        posted_at timestamp,
+        entry_title text,
+        content text,
+        category int,
+        PRIMARY KEY (userid, blog_title, posted_at)
+    )
+
+The following query is allowed::
+
+    SELECT entry_title, content FROM posts
+     WHERE userid = 'john doe'
+       AND blog_title='John''s Blog'
+       AND posted_at >= '2012-01-01' AND posted_at < '2012-01-31'
+
+But the following one is not, as it does not select a contiguous set of rows (and we suppose no secondary indexes are
+set)::
+
+    // Needs a blog_title to be set to select ranges of posted_at
+    SELECT entry_title, content FROM posts
+     WHERE userid = 'john doe'
+       AND posted_at >= '2012-01-01' AND posted_at < '2012-01-31'
+
+When specifying relations, the ``TOKEN`` function can be used on the ``PARTITION KEY`` column to query. In that case,
+rows will be selected based on the token of their ``PARTITION_KEY`` rather than on the value. Note that the token of a
+key depends on the partitioner in use, and that in particular the RandomPartitioner won't yield a meaningful order. Also
+note that ordering partitioners always order token values by bytes (so even if the partition key is of type int,
+``token(-1) > token(0)`` in particular). Example::
+
+    SELECT * FROM posts
+     WHERE token(userid) > token('tom') AND token(userid) < token('bob')
+
+Moreover, the ``IN`` relation is only allowed on the last column of the partition key and on the last column of the full
+primary key.
+
+It is also possible to “group” ``CLUSTERING COLUMNS`` together in a relation using the tuple notation. For instance::
+
+    SELECT * FROM posts
+     WHERE userid = 'john doe'
+       AND (blog_title, posted_at) > ('John''s Blog', '2012-01-01')
+
+will request all rows that sorts after the one having “John's Blog” as ``blog_tile`` and '2012-01-01' for ``posted_at``
+in the clustering order. In particular, rows having a ``post_at <= '2012-01-01'`` will be returned as long as their
+``blog_title > 'John''s Blog'``, which would not be the case for::
+
+    SELECT * FROM posts
+     WHERE userid = 'john doe'
+       AND blog_title > 'John''s Blog'
+       AND posted_at > '2012-01-01'
+
+The tuple notation may also be used for ``IN`` clauses on clustering columns::
+
+    SELECT * FROM posts
+     WHERE userid = 'john doe'
+       AND (blog_title, posted_at) IN (('John''s Blog', '2012-01-01'), ('Extreme Chess', '2014-06-01'))
+
+The ``CONTAINS`` operator may only be used on collection columns (lists, sets, and maps). In the case of maps,
+``CONTAINS`` applies to the map values. The ``CONTAINS KEY`` operator may only be used on map columns and applies to the
+map keys.
+
+.. _group-by-clause:
+
+Grouping results
+~~~~~~~~~~~~~~~~
+
+The ``GROUP BY`` option allows to condense into a single row all selected rows that share the same values for a set
+of columns.
+
+Using the ``GROUP BY`` option, it is only possible to group rows at the partition key level or at a clustering column
+level. By consequence, the ``GROUP BY`` option only accept as arguments primary key column names in the primary key
+order. If a primary key column is restricted by an equality restriction it is not required to be present in the
+``GROUP BY`` clause.
+
+Aggregate functions will produce a separate value for each group. If no ``GROUP BY`` clause is specified,
+aggregates functions will produce a single value for all the rows.
+
+If a column is selected without an aggregate function, in a statement with a ``GROUP BY``, the first value encounter
+in each group will be returned.
+
+.. _ordering-clause:
+
+Ordering results
+~~~~~~~~~~~~~~~~
+
+The ``ORDER BY`` clause allows to select the order of the returned results. It takes as argument a list of column names
+along with the order for the column (``ASC`` for ascendant and ``DESC`` for descendant, omitting the order being
+equivalent to ``ASC``). Currently the possible orderings are limited by the :ref:`clustering order <clustering-order>`
+defined on the table:
+
+- if the table has been defined without any specific ``CLUSTERING ORDER``, then then allowed orderings are the order
+  induced by the clustering columns and the reverse of that one.
+- otherwise, the orderings allowed are the order of the ``CLUSTERING ORDER`` option and the reversed one.
+
+.. _limit-clause:
+
+Limiting results
+~~~~~~~~~~~~~~~~
+
+The ``LIMIT`` option to a ``SELECT`` statement limits the number of rows returned by a query, while the ``PER PARTITION
+LIMIT`` option limits the number of rows returned for a given partition by the query. Note that both type of limit can
+used in the same statement.
+
+.. _allow-filtering:
+
+Allowing filtering
+~~~~~~~~~~~~~~~~~~
+
+By default, CQL only allows select queries that don't involve “filtering” server side, i.e. queries where we know that
+all (live) record read will be returned (maybe partly) in the result set. The reasoning is that those “non filtering”
+queries have predictable performance in the sense that they will execute in a time that is proportional to the amount of
+data **returned** by the query (which can be controlled through ``LIMIT``).
+
+The ``ALLOW FILTERING`` option allows to explicitly allow (some) queries that require filtering. Please note that a
+query using ``ALLOW FILTERING`` may thus have unpredictable performance (for the definition above), i.e. even a query
+that selects a handful of records **may** exhibit performance that depends on the total amount of data stored in the
+cluster.
+
+For instance, considering the following table holding user profiles with their year of birth (with a secondary index on
+it) and country of residence::
+
+    CREATE TABLE users (
+        username text PRIMARY KEY,
+        firstname text,
+        lastname text,
+        birth_year int,
+        country text
+    )
+
+    CREATE INDEX ON users(birth_year);
+
+Then the following queries are valid::
+
+    SELECT * FROM users;
+    SELECT * FROM users WHERE birth_year = 1981;
+
+because in both case, Cassandra guarantees that these queries performance will be proportional to the amount of data
+returned. In particular, if no users are born in 1981, then the second query performance will not depend of the number
+of user profile stored in the database (not directly at least: due to secondary index implementation consideration, this
+query may still depend on the number of node in the cluster, which indirectly depends on the amount of data stored.
+Nevertheless, the number of nodes will always be multiple number of magnitude lower than the number of user profile
+stored). Of course, both query may return very large result set in practice, but the amount of data returned can always
+be controlled by adding a ``LIMIT``.
+
+However, the following query will be rejected::
+
+    SELECT * FROM users WHERE birth_year = 1981 AND country = 'FR';
+
+because Cassandra cannot guarantee that it won't have to scan large amount of data even if the result to those query is
+small. Typically, it will scan all the index entries for users born in 1981 even if only a handful are actually from
+France. However, if you “know what you are doing”, you can force the execution of this query by using ``ALLOW
+FILTERING`` and so the following query is valid::
+
+    SELECT * FROM users WHERE birth_year = 1981 AND country = 'FR' ALLOW FILTERING;
+
+.. _insert-statement:
+
+INSERT
+^^^^^^
+
+Inserting data for a row is done using an ``INSERT`` statement:
+
+.. productionlist::
+   insert_statement: INSERT INTO `table_name` ( `names_values` | `json_clause` )
+                   : [ IF NOT EXISTS ]
+                   : [ USING `update_parameter` ( AND `update_parameter` )* ]
+   names_values: `names` VALUES `tuple_literal`
+   json_clause: JSON `string` [ DEFAULT ( NULL | UNSET ) ]
+   names: '(' `column_name` ( ',' `column_name` )* ')'
+
+For instance::
+
+    INSERT INTO NerdMovies (movie, director, main_actor, year)
+                    VALUES ('Serenity', 'Joss Whedon', 'Nathan Fillion', 2005)
+          USING TTL 86400;
+
+    INSERT INTO NerdMovies JSON '{"movie": "Serenity",
+                                  "director": "Joss Whedon",
+                                  "year": 2005}';
+
+The ``INSERT`` statement writes one or more columns for a given row in a table. Note that since a row is identified by
+its ``PRIMARY KEY``, at least the columns composing it must be specified. The list of columns to insert to must be
+supplied when using the ``VALUES`` syntax. When using the ``JSON`` syntax, they are optional. See the
+section on :ref:`JSON support <cql-json>` for more detail.
+
+Note that unlike in SQL, ``INSERT`` does not check the prior existence of the row by default: the row is created if none
+existed before, and updated otherwise. Furthermore, there is no mean to know which of creation or update happened.
+
+It is however possible to use the ``IF NOT EXISTS`` condition to only insert if the row does not exist prior to the
+insertion. But please note that using ``IF NOT EXISTS`` will incur a non negligible performance cost (internally, Paxos
+will be used) so this should be used sparingly.
+
+All updates for an ``INSERT`` are applied atomically and in isolation.
+
+Please refer to the :ref:`UPDATE <update-parameters>` section for informations on the :token:`update_parameter`.
+
+Also note that ``INSERT`` does not support counters, while ``UPDATE`` does.
+
+.. _update-statement:
+
+UPDATE
+^^^^^^
+
+Updating a row is done using an ``UPDATE`` statement:
+
+.. productionlist::
+   update_statement: UPDATE `table_name`
+                   : [ USING `update_parameter` ( AND `update_parameter` )* ]
+                   : SET `assignment` ( ',' `assignment` )*
+                   : WHERE `where_clause`
+                   : [ IF ( EXISTS | `condition` ( AND `condition` )*) ]
+   update_parameter: ( TIMESTAMP | TTL ) ( `integer` | `bind_marker` )
+   assignment: `simple_selection` '=' `term`
+             :| `column_name` '=' `column_name` ( '+' | '-' ) `term`
+             :| `column_name` '=' `list_literal` '+' `column_name`
+   simple_selection: `column_name`
+                   :| `column_name` '[' `term` ']'
+                   :| `column_name` '.' `field_name
+   condition: `simple_selection` `operator` `term`
+
+For instance::
+
+    UPDATE NerdMovies USING TTL 400
+       SET director   = 'Joss Whedon',
+           main_actor = 'Nathan Fillion',
+           year       = 2005
+     WHERE movie = 'Serenity';
+
+    UPDATE UserActions
+       SET total = total + 2
+       WHERE user = B70DE1D0-9908-4AE3-BE34-5573E5B09F14
+         AND action = 'click';
+
+The ``UPDATE`` statement writes one or more columns for a given row in a table. The :token:`where_clause` is used to
+select the row to update and must include all columns composing the ``PRIMARY KEY``. Non primary key columns are then
+set using the ``SET`` keyword.
+
+Note that unlike in SQL, ``UPDATE`` does not check the prior existence of the row by default (except through ``IF``, see
+below): the row is created if none existed before, and updated otherwise. Furthermore, there are no means to know
+whether a creation or update occurred.
+
+It is however possible to use the conditions on some columns through ``IF``, in which case the row will not be updated
+unless the conditions are met. But, please note that using ``IF`` conditions will incur a non-negligible performance
+cost (internally, Paxos will be used) so this should be used sparingly.
+
+In an ``UPDATE`` statement, all updates within the same partition key are applied atomically and in isolation.
+
+Regarding the :token:`assignment`:
+
+- ``c = c + 3`` is used to increment/decrement counters. The column name after the '=' sign **must** be the same than
+  the one before the '=' sign. Note that increment/decrement is only allowed on counters, and are the *only* update
+  operations allowed on counters. See the section on :ref:`counters <counters>` for details.
+- ``id = id + <some-collection>`` and ``id[value1] = value2`` are for collections, see the :ref:`relevant section
+  <collections>` for details.
+- ``id.field = 3`` is for setting the value of a field on a non-frozen user-defined types. see the :ref:`relevant section
+  <udts>` for details.
+
+.. _update-parameters:
+
+Update parameters
+~~~~~~~~~~~~~~~~~
+
+The ``UPDATE``, ``INSERT`` (and ``DELETE`` and ``BATCH`` for the ``TIMESTAMP``) statements support the following
+parameters:
+
+- ``TIMESTAMP``: sets the timestamp for the operation. If not specified, the coordinator will use the current time (in
+  microseconds) at the start of statement execution as the timestamp. This is usually a suitable default.
+- ``TTL``: specifies an optional Time To Live (in seconds) for the inserted values. If set, the inserted values are
+  automatically removed from the database after the specified time. Note that the TTL concerns the inserted values, not
+  the columns themselves. This means that any subsequent update of the column will also reset the TTL (to whatever TTL
+  is specified in that update). By default, values never expire. A TTL of 0 is equivalent to no TTL. If the table has a
+  default_time_to_live, a TTL of 0 will remove the TTL for the inserted or updated values. A TTL of ``null`` is equivalent
+  to inserting with a TTL of 0.
+
+.. _delete_statement:
+
+DELETE
+^^^^^^
+
+Deleting rows or parts of rows uses the ``DELETE`` statement:
+
+.. productionlist::
+   delete_statement: DELETE [ `simple_selection` ( ',' `simple_selection` ) ]
+                   : FROM `table_name`
+                   : [ USING `update_parameter` ( AND `update_parameter` )* ]
+                   : WHERE `where_clause`
+                   : [ IF ( EXISTS | `condition` ( AND `condition` )*) ]
+
+For instance::
+
+    DELETE FROM NerdMovies USING TIMESTAMP 1240003134
+     WHERE movie = 'Serenity';
+
+    DELETE phone FROM Users
+     WHERE userid IN (C73DE1D3-AF08-40F3-B124-3FF3E5109F22, B70DE1D0-9908-4AE3-BE34-5573E5B09F14);
+
+The ``DELETE`` statement deletes columns and rows. If column names are provided directly after the ``DELETE`` keyword,
+only those columns are deleted from the row indicated by the ``WHERE`` clause. Otherwise, whole rows are removed.
+
+The ``WHERE`` clause specifies which rows are to be deleted. Multiple rows may be deleted with one statement by using an
+``IN`` operator. A range of rows may be deleted using an inequality operator (such as ``>=``).
+
+``DELETE`` supports the ``TIMESTAMP`` option with the same semantics as in :ref:`updates <update-parameters>`.
+
+In a ``DELETE`` statement, all deletions within the same partition key are applied atomically and in isolation.
+
+A ``DELETE`` operation can be conditional through the use of an ``IF`` clause, similar to ``UPDATE`` and ``INSERT``
+statements. However, as with ``INSERT`` and ``UPDATE`` statements, this will incur a non-negligible performance cost
+(internally, Paxos will be used) and so should be used sparingly.
+
+.. _batch_statement:
+
+BATCH
+^^^^^
+
+Multiple ``INSERT``, ``UPDATE`` and ``DELETE`` can be executed in a single statement by grouping them through a
+``BATCH`` statement:
+
+.. productionlist::
+   batch_statement: BEGIN [ UNLOGGED | COUNTER ] BATCH
+                   : [ USING `update_parameter` ( AND `update_parameter` )* ]
+                   : `modification_statement` ( ';' `modification_statement` )*
+                   : APPLY BATCH
+   modification_statement: `insert_statement` | `update_statement` | `delete_statement`
+
+For instance::
+
+    BEGIN BATCH
+       INSERT INTO users (userid, password, name) VALUES ('user2', 'ch@ngem3b', 'second user');
+       UPDATE users SET password = 'ps22dhds' WHERE userid = 'user3';
+       INSERT INTO users (userid, password) VALUES ('user4', 'ch@ngem3c');
+       DELETE name FROM users WHERE userid = 'user1';
+    APPLY BATCH;
+
+The ``BATCH`` statement group multiple modification statements (insertions/updates and deletions) into a single
+statement. It serves several purposes:
+
+- It saves network round-trips between the client and the server (and sometimes between the server coordinator and the
+  replicas) when batching multiple updates.
+- All updates in a ``BATCH`` belonging to a given partition key are performed in isolation.
+- By default, all operations in the batch are performed as *logged*, to ensure all mutations eventually complete (or
+  none will). See the notes on :ref:`UNLOGGED batches <unlogged-batches>` for more details.
+
+Note that:
+
+- ``BATCH`` statements may only contain ``UPDATE``, ``INSERT`` and ``DELETE`` statements (not other batches for instance).
+- Batches are *not* a full analogue for SQL transactions.
+- If a timestamp is not specified for each operation, then all operations will be applied with the same timestamp
+  (either one generated automatically, or the timestamp provided at the batch level). Due to Cassandra's conflict
+  resolution procedure in the case of `timestamp ties <http://wiki.apache.org/cassandra/FAQ#clocktie>`__, operations may
+  be applied in an order that is different from the order they are listed in the ``BATCH`` statement. To force a
+  particular operation ordering, you must specify per-operation timestamps.
+- A LOGGED batch to a single partition will be converted to an UNLOGGED batch as an optimization.
+
+.. _unlogged-batches:
+
+``UNLOGGED`` batches
+~~~~~~~~~~~~~~~~~~~~
+
+By default, Cassandra uses a batch log to ensure all operations in a batch eventually complete or none will (note
+however that operations are only isolated within a single partition).
+
+There is a performance penalty for batch atomicity when a batch spans multiple partitions. If you do not want to incur
+this penalty, you can tell Cassandra to skip the batchlog with the ``UNLOGGED`` option. If the ``UNLOGGED`` option is
+used, a failed batch might leave the patch only partly applied.
+
+``COUNTER`` batches
+~~~~~~~~~~~~~~~~~~~
+
+Use the ``COUNTER`` option for batched counter updates. Unlike other
+updates in Cassandra, counter updates are not idempotent.
diff --git a/src/doc/3.11.11/_sources/cql/functions.rst.txt b/src/doc/3.11.11/_sources/cql/functions.rst.txt
new file mode 100644
index 0000000..47026cd
--- /dev/null
+++ b/src/doc/3.11.11/_sources/cql/functions.rst.txt
@@ -0,0 +1,558 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _cql-functions:
+
+.. Need some intro for UDF and native functions in general and point those to it.
+.. _udfs:
+.. _native-functions:
+
+Functions
+---------
+
+CQL supports 2 main categories of functions:
+
+- the :ref:`scalar functions <scalar-functions>`, which simply take a number of values and produce an output with it.
+- the :ref:`aggregate functions <aggregate-functions>`, which are used to aggregate multiple rows results from a
+  ``SELECT`` statement.
+
+In both cases, CQL provides a number of native "hard-coded" functions as well as the ability to create new user-defined
+functions.
+
+.. note:: By default, the use of user-defined functions is disabled by default for security concerns (even when
+   enabled, the execution of user-defined functions is sandboxed and a "rogue" function should not be allowed to do
+   evil, but no sandbox is perfect so using user-defined functions is opt-in). See the ``enable_user_defined_functions``
+   in ``cassandra.yaml`` to enable them.
+
+A function is identifier by its name:
+
+.. productionlist::
+   function_name: [ `keyspace_name` '.' ] `name`
+
+.. _scalar-functions:
+
+Scalar functions
+^^^^^^^^^^^^^^^^
+
+.. _scalar-native-functions:
+
+Native functions
+~~~~~~~~~~~~~~~~
+
+Cast
+````
+
+The ``cast`` function can be used to converts one native datatype to another.
+
+The following table describes the conversions supported by the ``cast`` function. Cassandra will silently ignore any
+cast converting a datatype into its own datatype.
+
+=============== =======================================================================================================
+ From            To
+=============== =======================================================================================================
+ ``ascii``       ``text``, ``varchar``
+ ``bigint``      ``tinyint``, ``smallint``, ``int``, ``float``, ``double``, ``decimal``, ``varint``, ``text``,
+                 ``varchar``
+ ``boolean``     ``text``, ``varchar``
+ ``counter``     ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``double``, ``decimal``, ``varint``,
+                 ``text``, ``varchar``
+ ``date``        ``timestamp``
+ ``decimal``     ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``double``, ``varint``, ``text``,
+                 ``varchar``
+ ``double``      ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``decimal``, ``varint``, ``text``,
+                 ``varchar``
+ ``float``       ``tinyint``, ``smallint``, ``int``, ``bigint``, ``double``, ``decimal``, ``varint``, ``text``,
+                 ``varchar``
+ ``inet``        ``text``, ``varchar``
+ ``int``         ``tinyint``, ``smallint``, ``bigint``, ``float``, ``double``, ``decimal``, ``varint``, ``text``,
+                 ``varchar``
+ ``smallint``    ``tinyint``, ``int``, ``bigint``, ``float``, ``double``, ``decimal``, ``varint``, ``text``,
+                 ``varchar``
+ ``time``        ``text``, ``varchar``
+ ``timestamp``   ``date``, ``text``, ``varchar``
+ ``timeuuid``    ``timestamp``, ``date``, ``text``, ``varchar``
+ ``tinyint``     ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``double``, ``decimal``, ``varint``,
+                 ``text``, ``varchar``
+ ``uuid``        ``text``, ``varchar``
+ ``varint``      ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``double``, ``decimal``, ``text``,
+                 ``varchar``
+=============== =======================================================================================================
+
+The conversions rely strictly on Java's semantics. For example, the double value 1 will be converted to the text value
+'1.0'. For instance::
+
+    SELECT avg(cast(count as double)) FROM myTable
+
+Token
+`````
+
+The ``token`` function allows to compute the token for a given partition key. The exact signature of the token function
+depends on the table concerned and of the partitioner used by the cluster.
+
+The type of the arguments of the ``token`` depend on the type of the partition key columns. The return type depend on
+the partitioner in use:
+
+- For Murmur3Partitioner, the return type is ``bigint``.
+- For RandomPartitioner, the return type is ``varint``.
+- For ByteOrderedPartitioner, the return type is ``blob``.
+
+For instance, in a cluster using the default Murmur3Partitioner, if a table is defined by::
+
+    CREATE TABLE users (
+        userid text PRIMARY KEY,
+        username text,
+    )
+
+then the ``token`` function will take a single argument of type ``text`` (in that case, the partition key is ``userid``
+(there is no clustering columns so the partition key is the same than the primary key)), and the return type will be
+``bigint``.
+
+Uuid
+````
+The ``uuid`` function takes no parameters and generates a random type 4 uuid suitable for use in ``INSERT`` or
+``UPDATE`` statements.
+
+.. _timeuuid-functions:
+
+Timeuuid functions
+``````````````````
+
+``now``
+#######
+
+The ``now`` function takes no arguments and generates, on the coordinator node, a new unique timeuuid (at the time where
+the statement using it is executed). Note that this method is useful for insertion but is largely non-sensical in
+``WHERE`` clauses. For instance, a query of the form::
+
+    SELECT * FROM myTable WHERE t = now()
+
+will never return any result by design, since the value returned by ``now()`` is guaranteed to be unique.
+
+``minTimeuuid`` and ``maxTimeuuid``
+###################################
+
+The ``minTimeuuid`` (resp. ``maxTimeuuid``) function takes a ``timestamp`` value ``t`` (which can be `either a timestamp
+or a date string <timestamps>`) and return a *fake* ``timeuuid`` corresponding to the *smallest* (resp. *biggest*)
+possible ``timeuuid`` having for timestamp ``t``. So for instance::
+
+    SELECT * FROM myTable
+     WHERE t > maxTimeuuid('2013-01-01 00:05+0000')
+       AND t < minTimeuuid('2013-02-02 10:00+0000')
+
+will select all rows where the ``timeuuid`` column ``t`` is strictly older than ``'2013-01-01 00:05+0000'`` but strictly
+younger than ``'2013-02-02 10:00+0000'``. Please note that ``t >= maxTimeuuid('2013-01-01 00:05+0000')`` would still
+*not* select a ``timeuuid`` generated exactly at '2013-01-01 00:05+0000' and is essentially equivalent to ``t >
+maxTimeuuid('2013-01-01 00:05+0000')``.
+
+.. note:: We called the values generated by ``minTimeuuid`` and ``maxTimeuuid`` *fake* UUID because they do no respect
+   the Time-Based UUID generation process specified by the `RFC 4122 <http://www.ietf.org/rfc/rfc4122.txt>`__. In
+   particular, the value returned by these 2 methods will not be unique. This means you should only use those methods
+   for querying (as in the example above). Inserting the result of those methods is almost certainly *a bad idea*.
+
+Time conversion functions
+`````````````````````````
+
+A number of functions are provided to “convert” a ``timeuuid``, a ``timestamp`` or a ``date`` into another ``native``
+type.
+
+===================== =============== ===================================================================
+ Function name         Input type      Description
+===================== =============== ===================================================================
+ ``toDate``            ``timeuuid``    Converts the ``timeuuid`` argument into a ``date`` type
+ ``toDate``            ``timestamp``   Converts the ``timestamp`` argument into a ``date`` type
+ ``toTimestamp``       ``timeuuid``    Converts the ``timeuuid`` argument into a ``timestamp`` type
+ ``toTimestamp``       ``date``        Converts the ``date`` argument into a ``timestamp`` type
+ ``toUnixTimestamp``   ``timeuuid``    Converts the ``timeuuid`` argument into a ``bigInt`` raw value
+ ``toUnixTimestamp``   ``timestamp``   Converts the ``timestamp`` argument into a ``bigInt`` raw value
+ ``toUnixTimestamp``   ``date``        Converts the ``date`` argument into a ``bigInt`` raw value
+ ``dateOf``            ``timeuuid``    Similar to ``toTimestamp(timeuuid)`` (DEPRECATED)
+ ``unixTimestampOf``   ``timeuuid``    Similar to ``toUnixTimestamp(timeuuid)`` (DEPRECATED)
+===================== =============== ===================================================================
+
+Blob conversion functions
+`````````````````````````
+A number of functions are provided to “convert” the native types into binary data (``blob``). For every
+``<native-type>`` ``type`` supported by CQL (a notable exceptions is ``blob``, for obvious reasons), the function
+``typeAsBlob`` takes a argument of type ``type`` and return it as a ``blob``. Conversely, the function ``blobAsType``
+takes a 64-bit ``blob`` argument and convert it to a ``bigint`` value. And so for instance, ``bigintAsBlob(3)`` is
+``0x0000000000000003`` and ``blobAsBigint(0x0000000000000003)`` is ``3``.
+
+.. _user-defined-scalar-functions:
+
+User-defined functions
+~~~~~~~~~~~~~~~~~~~~~~
+
+User-defined functions allow execution of user-provided code in Cassandra. By default, Cassandra supports defining
+functions in *Java* and *JavaScript*. Support for other JSR 223 compliant scripting languages (such as Python, Ruby, and
+Scala) can be added by adding a JAR to the classpath.
+
+UDFs are part of the Cassandra schema. As such, they are automatically propagated to all nodes in the cluster.
+
+UDFs can be *overloaded* - i.e. multiple UDFs with different argument types but the same function name. Example::
+
+    CREATE FUNCTION sample ( arg int ) ...;
+    CREATE FUNCTION sample ( arg text ) ...;
+
+User-defined functions are susceptible to all of the normal problems with the chosen programming language. Accordingly,
+implementations should be safe against null pointer exceptions, illegal arguments, or any other potential source of
+exceptions. An exception during function execution will result in the entire statement failing.
+
+It is valid to use *complex* types like collections, tuple types and user-defined types as argument and return types.
+Tuple types and user-defined types are handled by the conversion functions of the DataStax Java Driver. Please see the
+documentation of the Java Driver for details on handling tuple types and user-defined types.
+
+Arguments for functions can be literals or terms. Prepared statement placeholders can be used, too.
+
+Note that you can use the double-quoted string syntax to enclose the UDF source code. For example::
+
+    CREATE FUNCTION some_function ( arg int )
+        RETURNS NULL ON NULL INPUT
+        RETURNS int
+        LANGUAGE java
+        AS $$ return arg; $$;
+
+    SELECT some_function(column) FROM atable ...;
+    UPDATE atable SET col = some_function(?) ...;
+
+    CREATE TYPE custom_type (txt text, i int);
+    CREATE FUNCTION fct_using_udt ( udtarg frozen )
+        RETURNS NULL ON NULL INPUT
+        RETURNS text
+        LANGUAGE java
+        AS $$ return udtarg.getString("txt"); $$;
+
+User-defined functions can be used in ``SELECT``, ``INSERT`` and ``UPDATE`` statements.
+
+The implicitly available ``udfContext`` field (or binding for script UDFs) provides the necessary functionality to
+create new UDT and tuple values::
+
+    CREATE TYPE custom_type (txt text, i int);
+    CREATE FUNCTION fct\_using\_udt ( somearg int )
+        RETURNS NULL ON NULL INPUT
+        RETURNS custom_type
+        LANGUAGE java
+        AS $$
+            UDTValue udt = udfContext.newReturnUDTValue();
+            udt.setString("txt", "some string");
+            udt.setInt("i", 42);
+            return udt;
+        $$;
+
+The definition of the ``UDFContext`` interface can be found in the Apache Cassandra source code for
+``org.apache.cassandra.cql3.functions.UDFContext``.
+
+.. code-block:: java
+
+    public interface UDFContext
+    {
+        UDTValue newArgUDTValue(String argName);
+        UDTValue newArgUDTValue(int argNum);
+        UDTValue newReturnUDTValue();
+        UDTValue newUDTValue(String udtName);
+        TupleValue newArgTupleValue(String argName);
+        TupleValue newArgTupleValue(int argNum);
+        TupleValue newReturnTupleValue();
+        TupleValue newTupleValue(String cqlDefinition);
+    }
+
+Java UDFs already have some imports for common interfaces and classes defined. These imports are:
+
+.. code-block:: java
+
+    import java.nio.ByteBuffer;
+    import java.util.List;
+    import java.util.Map;
+    import java.util.Set;
+    import org.apache.cassandra.cql3.functions.UDFContext;
+    import com.datastax.driver.core.TypeCodec;
+    import com.datastax.driver.core.TupleValue;
+    import com.datastax.driver.core.UDTValue;
+
+Please note, that these convenience imports are not available for script UDFs.
+
+.. _create-function-statement:
+
+CREATE FUNCTION
+```````````````
+
+Creating a new user-defined function uses the ``CREATE FUNCTION`` statement:
+
+.. productionlist::
+   create_function_statement: CREATE [ OR REPLACE ] FUNCTION [ IF NOT EXISTS]
+                            :     `function_name` '(' `arguments_declaration` ')'
+                            :     [ CALLED | RETURNS NULL ] ON NULL INPUT
+                            :     RETURNS `cql_type`
+                            :     LANGUAGE `identifier`
+                            :     AS `string`
+   arguments_declaration: `identifier` `cql_type` ( ',' `identifier` `cql_type` )*
+
+For instance::
+
+    CREATE OR REPLACE FUNCTION somefunction(somearg int, anotherarg text, complexarg frozen<someUDT>, listarg list)
+        RETURNS NULL ON NULL INPUT
+        RETURNS text
+        LANGUAGE java
+        AS $$
+            // some Java code
+        $$;
+
+    CREATE FUNCTION IF NOT EXISTS akeyspace.fname(someArg int)
+        CALLED ON NULL INPUT
+        RETURNS text
+        LANGUAGE java
+        AS $$
+            // some Java code
+        $$;
+
+``CREATE FUNCTION`` with the optional ``OR REPLACE`` keywords either creates a function or replaces an existing one with
+the same signature. A ``CREATE FUNCTION`` without ``OR REPLACE`` fails if a function with the same signature already
+exists.
+
+If the optional ``IF NOT EXISTS`` keywords are used, the function will
+only be created if another function with the same signature does not
+exist.
+
+``OR REPLACE`` and ``IF NOT EXISTS`` cannot be used together.
+
+Behavior on invocation with ``null`` values must be defined for each
+function. There are two options:
+
+#. ``RETURNS NULL ON NULL INPUT`` declares that the function will always
+   return ``null`` if any of the input arguments is ``null``.
+#. ``CALLED ON NULL INPUT`` declares that the function will always be
+   executed.
+
+Function Signature
+##################
+
+Signatures are used to distinguish individual functions. The signature consists of:
+
+#. The fully qualified function name - i.e *keyspace* plus *function-name*
+#. The concatenated list of all argument types
+
+Note that keyspace names, function names and argument types are subject to the default naming conventions and
+case-sensitivity rules.
+
+Functions belong to a keyspace. If no keyspace is specified in ``<function-name>``, the current keyspace is used (i.e.
+the keyspace specified using the ``USE`` statement). It is not possible to create a user-defined function in one of the
+system keyspaces.
+
+.. _drop-function-statement:
+
+DROP FUNCTION
+`````````````
+
+Dropping a function uses the ``DROP FUNCTION`` statement:
+
+.. productionlist::
+   drop_function_statement: DROP FUNCTION [ IF EXISTS ] `function_name` [ '(' `arguments_signature` ')' ]
+   arguments_signature: `cql_type` ( ',' `cql_type` )*
+
+For instance::
+
+    DROP FUNCTION myfunction;
+    DROP FUNCTION mykeyspace.afunction;
+    DROP FUNCTION afunction ( int );
+    DROP FUNCTION afunction ( text );
+
+You must specify the argument types (:token:`arguments_signature`) of the function to drop if there are multiple
+functions with the same name but a different signature (overloaded functions).
+
+``DROP FUNCTION`` with the optional ``IF EXISTS`` keywords drops a function if it exists, but does not throw an error if
+it doesn't
+
+.. _aggregate-functions:
+
+Aggregate functions
+^^^^^^^^^^^^^^^^^^^
+
+Aggregate functions work on a set of rows. They receive values for each row and returns one value for the whole set.
+
+If ``normal`` columns, ``scalar functions``, ``UDT`` fields, ``writetime`` or ``ttl`` are selected together with
+aggregate functions, the values returned for them will be the ones of the first row matching the query.
+
+Native aggregates
+~~~~~~~~~~~~~~~~~
+
+.. _count-function:
+
+Count
+`````
+
+The ``count`` function can be used to count the rows returned by a query. Example::
+
+    SELECT COUNT (*) FROM plays;
+    SELECT COUNT (1) FROM plays;
+
+It also can be used to count the non null value of a given column::
+
+    SELECT COUNT (scores) FROM plays;
+
+Max and Min
+```````````
+
+The ``max`` and ``min`` functions can be used to compute the maximum and the minimum value returned by a query for a
+given column. For instance::
+
+    SELECT MIN (players), MAX (players) FROM plays WHERE game = 'quake';
+
+Sum
+```
+
+The ``sum`` function can be used to sum up all the values returned by a query for a given column. For instance::
+
+    SELECT SUM (players) FROM plays;
+
+Avg
+```
+
+The ``avg`` function can be used to compute the average of all the values returned by a query for a given column. For
+instance::
+
+    SELECT AVG (players) FROM plays;
+
+.. _user-defined-aggregates-functions:
+
+User-Defined Aggregates
+~~~~~~~~~~~~~~~~~~~~~~~
+
+User-defined aggregates allow the creation of custom aggregate functions. Common examples of aggregate functions are
+*count*, *min*, and *max*.
+
+Each aggregate requires an *initial state* (``INITCOND``, which defaults to ``null``) of type ``STYPE``. The first
+argument of the state function must have type ``STYPE``. The remaining arguments of the state function must match the
+types of the user-defined aggregate arguments. The state function is called once for each row, and the value returned by
+the state function becomes the new state. After all rows are processed, the optional ``FINALFUNC`` is executed with last
+state value as its argument.
+
+``STYPE`` is mandatory in order to be able to distinguish possibly overloaded versions of the state and/or final
+function (since the overload can appear after creation of the aggregate).
+
+User-defined aggregates can be used in ``SELECT`` statement.
+
+A complete working example for user-defined aggregates (assuming that a keyspace has been selected using the ``USE``
+statement)::
+
+    CREATE OR REPLACE FUNCTION averageState(state tuple<int,bigint>, val int)
+        CALLED ON NULL INPUT
+        RETURNS tuple
+        LANGUAGE java
+        AS $$
+            if (val != null) {
+                state.setInt(0, state.getInt(0)+1);
+                state.setLong(1, state.getLong(1)+val.intValue());
+            }
+            return state;
+        $$;
+
+    CREATE OR REPLACE FUNCTION averageFinal (state tuple<int,bigint>)
+        CALLED ON NULL INPUT
+        RETURNS double
+        LANGUAGE java
+        AS $$
+            double r = 0;
+            if (state.getInt(0) == 0) return null;
+            r = state.getLong(1);
+            r /= state.getInt(0);
+            return Double.valueOf(r);
+        $$;
+
+    CREATE OR REPLACE AGGREGATE average(int)
+        SFUNC averageState
+        STYPE tuple
+        FINALFUNC averageFinal
+        INITCOND (0, 0);
+
+    CREATE TABLE atable (
+        pk int PRIMARY KEY,
+        val int
+    );
+
+    INSERT INTO atable (pk, val) VALUES (1,1);
+    INSERT INTO atable (pk, val) VALUES (2,2);
+    INSERT INTO atable (pk, val) VALUES (3,3);
+    INSERT INTO atable (pk, val) VALUES (4,4);
+
+    SELECT average(val) FROM atable;
+
+.. _create-aggregate-statement:
+
+CREATE AGGREGATE
+````````````````
+
+Creating (or replacing) a user-defined aggregate function uses the ``CREATE AGGREGATE`` statement:
+
+.. productionlist::
+   create_aggregate_statement: CREATE [ OR REPLACE ] AGGREGATE [ IF NOT EXISTS ]
+                             :     `function_name` '(' `arguments_signature` ')'
+                             :     SFUNC `function_name`
+                             :     STYPE `cql_type`
+                             :     [ FINALFUNC `function_name` ]
+                             :     [ INITCOND `term` ]
+
+See above for a complete example.
+
+``CREATE AGGREGATE`` with the optional ``OR REPLACE`` keywords either creates an aggregate or replaces an existing one
+with the same signature. A ``CREATE AGGREGATE`` without ``OR REPLACE`` fails if an aggregate with the same signature
+already exists.
+
+``CREATE AGGREGATE`` with the optional ``IF NOT EXISTS`` keywords either creates an aggregate if it does not already
+exist.
+
+``OR REPLACE`` and ``IF NOT EXISTS`` cannot be used together.
+
+``STYPE`` defines the type of the state value and must be specified.
+
+The optional ``INITCOND`` defines the initial state value for the aggregate. It defaults to ``null``. A non-\ ``null``
+``INITCOND`` must be specified for state functions that are declared with ``RETURNS NULL ON NULL INPUT``.
+
+``SFUNC`` references an existing function to be used as the state modifying function. The type of first argument of the
+state function must match ``STYPE``. The remaining argument types of the state function must match the argument types of
+the aggregate function. State is not updated for state functions declared with ``RETURNS NULL ON NULL INPUT`` and called
+with ``null``.
+
+The optional ``FINALFUNC`` is called just before the aggregate result is returned. It must take only one argument with
+type ``STYPE``. The return type of the ``FINALFUNC`` may be a different type. A final function declared with ``RETURNS
+NULL ON NULL INPUT`` means that the aggregate's return value will be ``null``, if the last state is ``null``.
+
+If no ``FINALFUNC`` is defined, the overall return type of the aggregate function is ``STYPE``. If a ``FINALFUNC`` is
+defined, it is the return type of that function.
+
+.. _drop-aggregate-statement:
+
+DROP AGGREGATE
+``````````````
+
+Dropping an user-defined aggregate function uses the ``DROP AGGREGATE`` statement:
+
+.. productionlist::
+   drop_aggregate_statement: DROP AGGREGATE [ IF EXISTS ] `function_name` [ '(' `arguments_signature` ')' ]
+
+For instance::
+
+    DROP AGGREGATE myAggregate;
+    DROP AGGREGATE myKeyspace.anAggregate;
+    DROP AGGREGATE someAggregate ( int );
+    DROP AGGREGATE someAggregate ( text );
+
+The ``DROP AGGREGATE`` statement removes an aggregate created using ``CREATE AGGREGATE``. You must specify the argument
+types of the aggregate to drop if there are multiple aggregates with the same name but a different signature (overloaded
+aggregates).
+
+``DROP AGGREGATE`` with the optional ``IF EXISTS`` keywords drops an aggregate if it exists, and does nothing if a
+function with the signature does not exist.
diff --git a/src/doc/3.11.11/_sources/cql/index.rst.txt b/src/doc/3.11.11/_sources/cql/index.rst.txt
new file mode 100644
index 0000000..00d90e4
--- /dev/null
+++ b/src/doc/3.11.11/_sources/cql/index.rst.txt
@@ -0,0 +1,47 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. _cql:
+
+The Cassandra Query Language (CQL)
+==================================
+
+This document describes the Cassandra Query Language (CQL) [#]_. Note that this document describes the last version of
+the languages. However, the `changes <#changes>`_ section provides the diff between the different versions of CQL.
+
+CQL offers a model close to SQL in the sense that data is put in *tables* containing *rows* of *columns*. For
+that reason, when used in this document, these terms (tables, rows and columns) have the same definition than they have
+in SQL. But please note that as such, they do **not** refer to the concept of rows and columns found in the deprecated
+thrift API (and earlier version 1 and 2 of CQL).
+
+.. toctree::
+   :maxdepth: 2
+
+   definitions
+   types
+   ddl
+   dml
+   indexes
+   mvs
+   security
+   functions
+   json
+   triggers
+   appendices
+   changes
+
+.. [#] Technically, this document CQL version 3, which is not backward compatible with CQL version 1 and 2 (which have
+   been deprecated and remove) and differs from it in numerous ways.
diff --git a/src/doc/3.11.11/_sources/cql/indexes.rst.txt b/src/doc/3.11.11/_sources/cql/indexes.rst.txt
new file mode 100644
index 0000000..81fe429
--- /dev/null
+++ b/src/doc/3.11.11/_sources/cql/indexes.rst.txt
@@ -0,0 +1,83 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _secondary-indexes:
+
+Secondary Indexes
+-----------------
+
+CQL supports creating secondary indexes on tables, allowing queries on the table to use those indexes. A secondary index
+is identified by a name defined by:
+
+.. productionlist::
+   index_name: re('[a-zA-Z_0-9]+')
+
+
+
+.. _create-index-statement:
+
+CREATE INDEX
+^^^^^^^^^^^^
+
+Creating a secondary index on a table uses the ``CREATE INDEX`` statement:
+
+.. productionlist::
+   create_index_statement: CREATE [ CUSTOM ] INDEX [ IF NOT EXISTS ] [ `index_name` ]
+                         :     ON `table_name` '(' `index_identifier` ')'
+                         :     [ USING `string` [ WITH OPTIONS = `map_literal` ] ]
+   index_identifier: `column_name`
+                   :| ( KEYS | VALUES | ENTRIES | FULL ) '(' `column_name` ')'
+
+For instance::
+
+    CREATE INDEX userIndex ON NerdMovies (user);
+    CREATE INDEX ON Mutants (abilityId);
+    CREATE INDEX ON users (keys(favs));
+    CREATE CUSTOM INDEX ON users (email) USING 'path.to.the.IndexClass';
+    CREATE CUSTOM INDEX ON users (email) USING 'path.to.the.IndexClass' WITH OPTIONS = {'storage': '/mnt/ssd/indexes/'};
+
+The ``CREATE INDEX`` statement is used to create a new (automatic) secondary index for a given (existing) column in a
+given table. A name for the index itself can be specified before the ``ON`` keyword, if desired. If data already exists
+for the column, it will be indexed asynchronously. After the index is created, new data for the column is indexed
+automatically at insertion time.
+
+Attempting to create an already existing index will return an error unless the ``IF NOT EXISTS`` option is used. If it
+is used, the statement will be a no-op if the index already exists.
+
+Indexes on Map Keys
+~~~~~~~~~~~~~~~~~~~
+
+When creating an index on a :ref:`maps <maps>`, you may index either the keys or the values. If the column identifier is
+placed within the ``keys()`` function, the index will be on the map keys, allowing you to use ``CONTAINS KEY`` in
+``WHERE`` clauses. Otherwise, the index will be on the map values.
+
+.. _drop-index-statement:
+
+DROP INDEX
+^^^^^^^^^^
+
+Dropping a secondary index uses the ``DROP INDEX`` statement:
+
+.. productionlist::
+   drop_index_statement: DROP INDEX [ IF EXISTS ] `index_name`
+
+The ``DROP INDEX`` statement is used to drop an existing secondary index. The argument of the statement is the index
+name, which may optionally specify the keyspace of the index.
+
+If the index does not exists, the statement will return an error, unless ``IF EXISTS`` is used in which case the
+operation is a no-op.
diff --git a/src/doc/3.11.11/_sources/cql/json.rst.txt b/src/doc/3.11.11/_sources/cql/json.rst.txt
new file mode 100644
index 0000000..539180a
--- /dev/null
+++ b/src/doc/3.11.11/_sources/cql/json.rst.txt
@@ -0,0 +1,115 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _cql-json:
+
+JSON Support
+------------
+
+Cassandra 2.2 introduces JSON support to :ref:`SELECT <select-statement>` and :ref:`INSERT <insert-statement>`
+statements. This support does not fundamentally alter the CQL API (for example, the schema is still enforced), it simply
+provides a convenient way to work with JSON documents.
+
+SELECT JSON
+^^^^^^^^^^^
+
+With ``SELECT`` statements, the ``JSON`` keyword can be used to return each row as a single ``JSON`` encoded map. The
+remainder of the ``SELECT`` statement behavior is the same.
+
+The result map keys are the same as the column names in a normal result set. For example, a statement like ``SELECT JSON
+a, ttl(b) FROM ...`` would result in a map with keys ``"a"`` and ``"ttl(b)"``. However, this is one notable exception:
+for symmetry with ``INSERT JSON`` behavior, case-sensitive column names with upper-case letters will be surrounded with
+double quotes. For example, ``SELECT JSON myColumn FROM ...`` would result in a map key ``"\"myColumn\""`` (note the
+escaped quotes).
+
+The map values will ``JSON``-encoded representations (as described below) of the result set values.
+
+INSERT JSON
+^^^^^^^^^^^
+
+With ``INSERT`` statements, the new ``JSON`` keyword can be used to enable inserting a ``JSON`` encoded map as a single
+row. The format of the ``JSON`` map should generally match that returned by a ``SELECT JSON`` statement on the same
+table. In particular, case-sensitive column names should be surrounded with double quotes. For example, to insert into a
+table with two columns named "myKey" and "value", you would do the following::
+
+    INSERT INTO mytable JSON '{ "\"myKey\"": 0, "value": 0}'
+
+By default (or if ``DEFAULT NULL`` is explicitly used), a column omitted from the ``JSON`` map will be set to ``NULL``,
+meaning that any pre-existing value for that column will be removed (resulting in a tombstone being created).
+Alternatively, if the ``DEFAULT UNSET`` directive is used after the value, omitted column values will be left unset,
+meaning that pre-existing values for those column will be preserved.
+
+
+JSON Encoding of Cassandra Data Types
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Where possible, Cassandra will represent and accept data types in their native ``JSON`` representation. Cassandra will
+also accept string representations matching the CQL literal format for all single-field types. For example, floats,
+ints, UUIDs, and dates can be represented by CQL literal strings. However, compound types, such as collections, tuples,
+and user-defined types must be represented by native ``JSON`` collections (maps and lists) or a JSON-encoded string
+representation of the collection.
+
+The following table describes the encodings that Cassandra will accept in ``INSERT JSON`` values (and ``fromJson()``
+arguments) as well as the format Cassandra will use when returning data for ``SELECT JSON`` statements (and
+``fromJson()``):
+
+=============== ======================== =============== ==============================================================
+ Type            Formats accepted         Return format   Notes
+=============== ======================== =============== ==============================================================
+ ``ascii``       string                   string          Uses JSON's ``\u`` character escape
+ ``bigint``      integer, string          integer         String must be valid 64 bit integer
+ ``blob``        string                   string          String should be 0x followed by an even number of hex digits
+ ``boolean``     boolean, string          boolean         String must be "true" or "false"
+ ``date``        string                   string          Date in format ``YYYY-MM-DD``, timezone UTC
+ ``decimal``     integer, float, string   float           May exceed 32 or 64-bit IEEE-754 floating point precision in
+                                                          client-side decoder
+ ``double``      integer, float, string   float           String must be valid integer or float
+ ``float``       integer, float, string   float           String must be valid integer or float
+ ``inet``        string                   string          IPv4 or IPv6 address
+ ``int``         integer, string          integer         String must be valid 32 bit integer
+ ``list``        list, string             list            Uses JSON's native list representation
+ ``map``         map, string              map             Uses JSON's native map representation
+ ``smallint``    integer, string          integer         String must be valid 16 bit integer
+ ``set``         list, string             list            Uses JSON's native list representation
+ ``text``        string                   string          Uses JSON's ``\u`` character escape
+ ``time``        string                   string          Time of day in format ``HH-MM-SS[.fffffffff]``
+ ``timestamp``   integer, string          string          A timestamp. Strings constant allows to input :ref:`timestamps
+                                                          as dates <timestamps>`. Datestamps with format ``YYYY-MM-DD
+                                                          HH:MM:SS.SSS`` are returned.
+ ``timeuuid``    string                   string          Type 1 UUID. See :token:`constant` for the UUID format
+ ``tinyint``     integer, string          integer         String must be valid 8 bit integer
+ ``tuple``       list, string             list            Uses JSON's native list representation
+ ``UDT``         map, string              map             Uses JSON's native map representation with field names as keys
+ ``uuid``        string                   string          See :token:`constant` for the UUID format
+ ``varchar``     string                   string          Uses JSON's ``\u`` character escape
+ ``varint``      integer, string          integer         Variable length; may overflow 32 or 64 bit integers in
+                                                          client-side decoder
+=============== ======================== =============== ==============================================================
+
+The fromJson() Function
+^^^^^^^^^^^^^^^^^^^^^^^
+
+The ``fromJson()`` function may be used similarly to ``INSERT JSON``, but for a single column value. It may only be used
+in the ``VALUES`` clause of an ``INSERT`` statement or as one of the column values in an ``UPDATE``, ``DELETE``, or
+``SELECT`` statement. For example, it cannot be used in the selection clause of a ``SELECT`` statement.
+
+The toJson() Function
+^^^^^^^^^^^^^^^^^^^^^
+
+The ``toJson()`` function may be used similarly to ``SELECT JSON``, but for a single column value. It may only be used
+in the selection clause of a ``SELECT`` statement.
diff --git a/src/doc/3.11.11/_sources/cql/mvs.rst.txt b/src/doc/3.11.11/_sources/cql/mvs.rst.txt
new file mode 100644
index 0000000..aabea10
--- /dev/null
+++ b/src/doc/3.11.11/_sources/cql/mvs.rst.txt
@@ -0,0 +1,166 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _materialized-views:
+
+Materialized Views
+------------------
+
+Materialized views names are defined by:
+
+.. productionlist::
+   view_name: re('[a-zA-Z_0-9]+')
+
+
+.. _create-materialized-view-statement:
+
+CREATE MATERIALIZED VIEW
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+You can create a materialized view on a table using a ``CREATE MATERIALIZED VIEW`` statement:
+
+.. productionlist::
+   create_materialized_view_statement: CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] `view_name` AS
+                                     :     `select_statement`
+                                     :     PRIMARY KEY '(' `primary_key` ')'
+                                     :     WITH `table_options`
+
+For instance::
+
+    CREATE MATERIALIZED VIEW monkeySpecies_by_population AS
+        SELECT * FROM monkeySpecies
+        WHERE population IS NOT NULL AND species IS NOT NULL
+        PRIMARY KEY (population, species)
+        WITH comment='Allow query by population instead of species';
+
+The ``CREATE MATERIALIZED VIEW`` statement creates a new materialized view. Each such view is a set of *rows* which
+corresponds to rows which are present in the underlying, or base, table specified in the ``SELECT`` statement. A
+materialized view cannot be directly updated, but updates to the base table will cause corresponding updates in the
+view.
+
+Creating a materialized view has 3 main parts:
+
+- The :ref:`select statement <mv-select>` that restrict the data included in the view.
+- The :ref:`primary key <mv-primary-key>` definition for the view.
+- The :ref:`options <mv-options>` for the view.
+
+Attempting to create an already existing materialized view will return an error unless the ``IF NOT EXISTS`` option is
+used. If it is used, the statement will be a no-op if the materialized view already exists.
+
+.. _mv-select:
+
+MV select statement
+```````````````````
+
+The select statement of a materialized view creation defines which of the base table is included in the view. That
+statement is limited in a number of ways:
+
+- the :ref:`selection <selection-clause>` is limited to those that only select columns of the base table. In other
+  words, you can't use any function (aggregate or not), casting, term, etc. Aliases are also not supported. You can
+  however use `*` as a shortcut of selecting all columns. Further, :ref:`static columns <static-columns>` cannot be
+  included in a materialized view (which means ``SELECT *`` isn't allowed if the base table has static columns).
+- the ``WHERE`` clause have the following restrictions:
+
+  - it cannot include any :token:`bind_marker`.
+  - the columns that are not part of the *base table* primary key can only be restricted by an ``IS NOT NULL``
+    restriction. No other restriction is allowed.
+  - as the columns that are part of the *view* primary key cannot be null, they must always be at least restricted by a
+    ``IS NOT NULL`` restriction (or any other restriction, but they must have one).
+
+- it cannot have neither an :ref:`ordering clause <ordering-clause>`, nor a :ref:`limit <limit-clause>`, nor :ref:`ALLOW
+  FILTERING <allow-filtering>`.
+
+.. _mv-primary-key:
+
+MV primary key
+``````````````
+
+A view must have a primary key and that primary key must conform to the following restrictions:
+
+- it must contain all the primary key columns of the base table. This ensures that every row of the view correspond to
+  exactly one row of the base table.
+- it can only contain a single column that is not a primary key column in the base table.
+
+So for instance, give the following base table definition::
+
+    CREATE TABLE t (
+        k int,
+        c1 int,
+        c2 int,
+        v1 int,
+        v2 int,
+        PRIMARY KEY (k, c1, c2)
+    )
+
+then the following view definitions are allowed::
+
+    CREATE MATERIALIZED VIEW mv1 AS
+        SELECT * FROM t WHERE k IS NOT NULL AND c1 IS NOT NULL AND c2 IS NOT NULL
+        PRIMARY KEY (c1, k, c2)
+
+    CREATE MATERIALIZED VIEW mv1 AS
+        SELECT * FROM t WHERE k IS NOT NULL AND c1 IS NOT NULL AND c2 IS NOT NULL
+        PRIMARY KEY (v1, k, c1, c2)
+
+but the following ones are **not** allowed::
+
+    // Error: cannot include both v1 and v2 in the primary key as both are not in the base table primary key
+    CREATE MATERIALIZED VIEW mv1 AS
+        SELECT * FROM t WHERE k IS NOT NULL AND c1 IS NOT NULL AND c2 IS NOT NULL AND v1 IS NOT NULL
+        PRIMARY KEY (v1, v2, k, c1, c2)
+
+    // Error: must include k in the primary as it's a base table primary key column
+    CREATE MATERIALIZED VIEW mv1 AS
+        SELECT * FROM t WHERE c1 IS NOT NULL AND c2 IS NOT NULL
+        PRIMARY KEY (c1, c2)
+
+
+.. _mv-options:
+
+MV options
+``````````
+
+A materialized view is internally implemented by a table and as such, creating a MV allows the :ref:`same options than
+creating a table <create-table-options>`.
+
+
+.. _alter-materialized-view-statement:
+
+ALTER MATERIALIZED VIEW
+^^^^^^^^^^^^^^^^^^^^^^^
+
+After creation, you can alter the options of a materialized view using the ``ALTER MATERIALIZED VIEW`` statement:
+
+.. productionlist::
+   alter_materialized_view_statement: ALTER MATERIALIZED VIEW `view_name` WITH `table_options`
+
+The options that can be updated are the same than at creation time and thus the :ref:`same than for tables
+<create-table-options>`.
+
+.. _drop-materialized-view-statement:
+
+DROP MATERIALIZED VIEW
+^^^^^^^^^^^^^^^^^^^^^^
+
+Dropping a materialized view users the ``DROP MATERIALIZED VIEW`` statement:
+
+.. productionlist::
+   drop_materialized_view_statement: DROP MATERIALIZED VIEW [ IF EXISTS ] `view_name`;
+
+If the materialized view does not exists, the statement will return an error, unless ``IF EXISTS`` is used in which case
+the operation is a no-op.
diff --git a/src/doc/3.11.11/_sources/cql/security.rst.txt b/src/doc/3.11.11/_sources/cql/security.rst.txt
new file mode 100644
index 0000000..099fcc4
--- /dev/null
+++ b/src/doc/3.11.11/_sources/cql/security.rst.txt
@@ -0,0 +1,502 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _cql-security:
+
+Security
+--------
+
+.. _cql-roles:
+
+Database Roles
+^^^^^^^^^^^^^^
+
+CQL uses database roles to represent users and group of users. Syntactically, a role is defined by:
+
+.. productionlist::
+   role_name: `identifier` | `string`
+
+.. _create-role-statement:
+
+CREATE ROLE
+~~~~~~~~~~~
+
+Creating a role uses the ``CREATE ROLE`` statement:
+
+.. productionlist::
+   create_role_statement: CREATE ROLE [ IF NOT EXISTS ] `role_name`
+                        :     [ WITH `role_options` ]
+   role_options: `role_option` ( AND `role_option` )*
+   role_option: PASSWORD '=' `string`
+              :| LOGIN '=' `boolean`
+              :| SUPERUSER '=' `boolean`
+              :| OPTIONS '=' `map_literal`
+
+For instance::
+
+    CREATE ROLE new_role;
+    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true;
+    CREATE ROLE bob WITH PASSWORD = 'password_b' AND LOGIN = true AND SUPERUSER = true;
+    CREATE ROLE carlos WITH OPTIONS = { 'custom_option1' : 'option1_value', 'custom_option2' : 99 };
+
+By default roles do not possess ``LOGIN`` privileges or ``SUPERUSER`` status.
+
+:ref:`Permissions <cql-permissions>` on database resources are granted to roles; types of resources include keyspaces,
+tables, functions and roles themselves. Roles may be granted to other roles to create hierarchical permissions
+structures; in these hierarchies, permissions and ``SUPERUSER`` status are inherited, but the ``LOGIN`` privilege is
+not.
+
+If a role has the ``LOGIN`` privilege, clients may identify as that role when connecting. For the duration of that
+connection, the client will acquire any roles and privileges granted to that role.
+
+Only a client with with the ``CREATE`` permission on the database roles resource may issue ``CREATE ROLE`` requests (see
+the :ref:`relevant section <cql-permissions>` below), unless the client is a ``SUPERUSER``. Role management in Cassandra
+is pluggable and custom implementations may support only a subset of the listed options.
+
+Role names should be quoted if they contain non-alphanumeric characters.
+
+.. _setting-credentials-for-internal-authentication:
+
+Setting credentials for internal authentication
+```````````````````````````````````````````````
+
+Use the ``WITH PASSWORD`` clause to set a password for internal authentication, enclosing the password in single
+quotation marks.
+
+If internal authentication has not been set up or the role does not have ``LOGIN`` privileges, the ``WITH PASSWORD``
+clause is not necessary.
+
+Creating a role conditionally
+`````````````````````````````
+
+Attempting to create an existing role results in an invalid query condition unless the ``IF NOT EXISTS`` option is used.
+If the option is used and the role exists, the statement is a no-op::
+
+    CREATE ROLE other_role;
+    CREATE ROLE IF NOT EXISTS other_role;
+
+
+.. _alter-role-statement:
+
+ALTER ROLE
+~~~~~~~~~~
+
+Altering a role options uses the ``ALTER ROLE`` statement:
+
+.. productionlist::
+   alter_role_statement: ALTER ROLE `role_name` WITH `role_options`
+
+For instance::
+
+    ALTER ROLE bob WITH PASSWORD = 'PASSWORD_B' AND SUPERUSER = false;
+
+Conditions on executing ``ALTER ROLE`` statements:
+
+-  A client must have ``SUPERUSER`` status to alter the ``SUPERUSER`` status of another role
+-  A client cannot alter the ``SUPERUSER`` status of any role it currently holds
+-  A client can only modify certain properties of the role with which it identified at login (e.g. ``PASSWORD``)
+-  To modify properties of a role, the client must be granted ``ALTER`` :ref:`permission <cql-permissions>` on that role
+
+.. _drop-role-statement:
+
+DROP ROLE
+~~~~~~~~~
+
+Dropping a role uses the ``DROP ROLE`` statement:
+
+.. productionlist::
+   drop_role_statement: DROP ROLE [ IF EXISTS ] `role_name`
+
+``DROP ROLE`` requires the client to have ``DROP`` :ref:`permission <cql-permissions>` on the role in question. In
+addition, client may not ``DROP`` the role with which it identified at login. Finally, only a client with ``SUPERUSER``
+status may ``DROP`` another ``SUPERUSER`` role.
+
+Attempting to drop a role which does not exist results in an invalid query condition unless the ``IF EXISTS`` option is
+used. If the option is used and the role does not exist the statement is a no-op.
+
+.. _grant-role-statement:
+
+GRANT ROLE
+~~~~~~~~~~
+
+Granting a role to another uses the ``GRANT ROLE`` statement:
+
+.. productionlist::
+   grant_role_statement: GRANT `role_name` TO `role_name`
+
+For instance::
+
+    GRANT report_writer TO alice;
+
+This statement grants the ``report_writer`` role to ``alice``. Any permissions granted to ``report_writer`` are also
+acquired by ``alice``.
+
+Roles are modelled as a directed acyclic graph, so circular grants are not permitted. The following examples result in
+error conditions::
+
+    GRANT role_a TO role_b;
+    GRANT role_b TO role_a;
+
+    GRANT role_a TO role_b;
+    GRANT role_b TO role_c;
+    GRANT role_c TO role_a;
+
+.. _revoke-role-statement:
+
+REVOKE ROLE
+~~~~~~~~~~~
+
+Revoking a role uses the ``REVOKE ROLE`` statement:
+
+.. productionlist::
+   revoke_role_statement: REVOKE `role_name` FROM `role_name`
+
+For instance::
+
+    REVOKE report_writer FROM alice;
+
+This statement revokes the ``report_writer`` role from ``alice``. Any permissions that ``alice`` has acquired via the
+``report_writer`` role are also revoked.
+
+.. _list-roles-statement:
+
+LIST ROLES
+~~~~~~~~~~
+
+All the known roles (in the system or granted to specific role) can be listed using the ``LIST ROLES`` statement:
+
+.. productionlist::
+   list_roles_statement: LIST ROLES [ OF `role_name` ] [ NORECURSIVE ]
+
+For instance::
+
+    LIST ROLES;
+
+returns all known roles in the system, this requires ``DESCRIBE`` permission on the database roles resource. And::
+
+    LIST ROLES OF alice;
+
+enumerates all roles granted to ``alice``, including those transitively acquired. But::
+
+    LIST ROLES OF bob NORECURSIVE
+
+lists all roles directly granted to ``bob`` without including any of the transitively acquired ones.
+
+Users
+^^^^^
+
+Prior to the introduction of roles in Cassandra 2.2, authentication and authorization were based around the concept of a
+``USER``. For backward compatibility, the legacy syntax has been preserved with ``USER`` centric statements becoming
+synonyms for the ``ROLE`` based equivalents. In other words, creating/updating a user is just a different syntax for
+creating/updating a role.
+
+.. _create-user-statement:
+
+CREATE USER
+~~~~~~~~~~~
+
+Creating a user uses the ``CREATE USER`` statement:
+
+.. productionlist::
+   create_user_statement: CREATE USER [ IF NOT EXISTS ] `role_name` [ WITH PASSWORD `string` ] [ `user_option` ]
+   user_option: SUPERUSER | NOSUPERUSER
+
+For instance::
+
+    CREATE USER alice WITH PASSWORD 'password_a' SUPERUSER;
+    CREATE USER bob WITH PASSWORD 'password_b' NOSUPERUSER;
+
+``CREATE USER`` is equivalent to ``CREATE ROLE`` where the ``LOGIN`` option is ``true``. So, the following pairs of
+statements are equivalent::
+
+    CREATE USER alice WITH PASSWORD 'password_a' SUPERUSER;
+    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true AND SUPERUSER = true;
+
+    CREATE USER IF NOT EXISTS alice WITH PASSWORD 'password_a' SUPERUSER;
+    CREATE ROLE IF NOT EXISTS alice WITH PASSWORD = 'password_a' AND LOGIN = true AND SUPERUSER = true;
+
+    CREATE USER alice WITH PASSWORD 'password_a' NOSUPERUSER;
+    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true AND SUPERUSER = false;
+
+    CREATE USER alice WITH PASSWORD 'password_a' NOSUPERUSER;
+    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true;
+
+    CREATE USER alice WITH PASSWORD 'password_a';
+    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true;
+
+.. _alter-user-statement:
+
+ALTER USER
+~~~~~~~~~~
+
+Altering the options of a user uses the ``ALTER USER`` statement:
+
+.. productionlist::
+   alter_user_statement: ALTER USER `role_name` [ WITH PASSWORD `string` ] [ `user_option` ]
+
+For instance::
+
+    ALTER USER alice WITH PASSWORD 'PASSWORD_A';
+    ALTER USER bob SUPERUSER;
+
+.. _drop-user-statement:
+
+DROP USER
+~~~~~~~~~
+
+Dropping a user uses the ``DROP USER`` statement:
+
+.. productionlist::
+   drop_user_statement: DROP USER [ IF EXISTS ] `role_name`
+
+.. _list-users-statement:
+
+LIST USERS
+~~~~~~~~~~
+
+Existing users can be listed using the ``LIST USERS`` statement:
+
+.. productionlist::
+   list_users_statement: LIST USERS
+
+Note that this statement is equivalent to::
+
+    LIST ROLES;
+
+but only roles with the ``LOGIN`` privilege are included in the output.
+
+Data Control
+^^^^^^^^^^^^
+
+.. _cql-permissions:
+
+Permissions
+~~~~~~~~~~~
+
+Permissions on resources are granted to roles; there are several different types of resources in Cassandra and each type
+is modelled hierarchically:
+
+- The hierarchy of Data resources, Keyspaces and Tables has the structure ``ALL KEYSPACES`` -> ``KEYSPACE`` ->
+  ``TABLE``.
+- Function resources have the structure ``ALL FUNCTIONS`` -> ``KEYSPACE`` -> ``FUNCTION``
+- Resources representing roles have the structure ``ALL ROLES`` -> ``ROLE``
+- Resources representing JMX ObjectNames, which map to sets of MBeans/MXBeans, have the structure ``ALL MBEANS`` ->
+  ``MBEAN``
+
+Permissions can be granted at any level of these hierarchies and they flow downwards. So granting a permission on a
+resource higher up the chain automatically grants that same permission on all resources lower down. For example,
+granting ``SELECT`` on a ``KEYSPACE`` automatically grants it on all ``TABLES`` in that ``KEYSPACE``. Likewise, granting
+a permission on ``ALL FUNCTIONS`` grants it on every defined function, regardless of which keyspace it is scoped in. It
+is also possible to grant permissions on all functions scoped to a particular keyspace.
+
+Modifications to permissions are visible to existing client sessions; that is, connections need not be re-established
+following permissions changes.
+
+The full set of available permissions is:
+
+- ``CREATE``
+- ``ALTER``
+- ``DROP``
+- ``SELECT``
+- ``MODIFY``
+- ``AUTHORIZE``
+- ``DESCRIBE``
+- ``EXECUTE``
+
+Not all permissions are applicable to every type of resource. For instance, ``EXECUTE`` is only relevant in the context
+of functions or mbeans; granting ``EXECUTE`` on a resource representing a table is nonsensical. Attempting to ``GRANT``
+a permission on resource to which it cannot be applied results in an error response. The following illustrates which
+permissions can be granted on which types of resource, and which statements are enabled by that permission.
+
+=============== =============================== =======================================================================
+ Permission      Resource                        Operations
+=============== =============================== =======================================================================
+ ``CREATE``      ``ALL KEYSPACES``               ``CREATE KEYSPACE`` and ``CREATE TABLE`` in any keyspace
+ ``CREATE``      ``KEYSPACE``                    ``CREATE TABLE`` in specified keyspace
+ ``CREATE``      ``ALL FUNCTIONS``               ``CREATE FUNCTION`` in any keyspace and ``CREATE AGGREGATE`` in any
+                                                 keyspace
+ ``CREATE``      ``ALL FUNCTIONS IN KEYSPACE``   ``CREATE FUNCTION`` and ``CREATE AGGREGATE`` in specified keyspace
+ ``CREATE``      ``ALL ROLES``                   ``CREATE ROLE``
+ ``ALTER``       ``ALL KEYSPACES``               ``ALTER KEYSPACE`` and ``ALTER TABLE`` in any keyspace
+ ``ALTER``       ``KEYSPACE``                    ``ALTER KEYSPACE`` and ``ALTER TABLE`` in specified keyspace
+ ``ALTER``       ``TABLE``                       ``ALTER TABLE``
+ ``ALTER``       ``ALL FUNCTIONS``               ``CREATE FUNCTION`` and ``CREATE AGGREGATE``: replacing any existing
+ ``ALTER``       ``ALL FUNCTIONS IN KEYSPACE``   ``CREATE FUNCTION`` and ``CREATE AGGREGATE``: replacing existing in
+                                                 specified keyspace
+ ``ALTER``       ``FUNCTION``                    ``CREATE FUNCTION`` and ``CREATE AGGREGATE``: replacing existing
+ ``ALTER``       ``ALL ROLES``                   ``ALTER ROLE`` on any role
+ ``ALTER``       ``ROLE``                        ``ALTER ROLE``
+ ``DROP``        ``ALL KEYSPACES``               ``DROP KEYSPACE`` and ``DROP TABLE`` in any keyspace
+ ``DROP``        ``KEYSPACE``                    ``DROP TABLE`` in specified keyspace
+ ``DROP``        ``TABLE``                       ``DROP TABLE``
+ ``DROP``        ``ALL FUNCTIONS``               ``DROP FUNCTION`` and ``DROP AGGREGATE`` in any keyspace
+ ``DROP``        ``ALL FUNCTIONS IN KEYSPACE``   ``DROP FUNCTION`` and ``DROP AGGREGATE`` in specified keyspace
+ ``DROP``        ``FUNCTION``                    ``DROP FUNCTION``
+ ``DROP``        ``ALL ROLES``                   ``DROP ROLE`` on any role
+ ``DROP``        ``ROLE``                        ``DROP ROLE``
+ ``SELECT``      ``ALL KEYSPACES``               ``SELECT`` on any table
+ ``SELECT``      ``KEYSPACE``                    ``SELECT`` on any table in specified keyspace
+ ``SELECT``      ``TABLE``                       ``SELECT`` on specified table
+ ``SELECT``      ``ALL MBEANS``                  Call getter methods on any mbean
+ ``SELECT``      ``MBEANS``                      Call getter methods on any mbean matching a wildcard pattern
+ ``SELECT``      ``MBEAN``                       Call getter methods on named mbean
+ ``MODIFY``      ``ALL KEYSPACES``               ``INSERT``, ``UPDATE``, ``DELETE`` and ``TRUNCATE`` on any table
+ ``MODIFY``      ``KEYSPACE``                    ``INSERT``, ``UPDATE``, ``DELETE`` and ``TRUNCATE`` on any table in
+                                                 specified keyspace
+ ``MODIFY``      ``TABLE``                       ``INSERT``, ``UPDATE``, ``DELETE`` and ``TRUNCATE`` on specified table
+ ``MODIFY``      ``ALL MBEANS``                  Call setter methods on any mbean
+ ``MODIFY``      ``MBEANS``                      Call setter methods on any mbean matching a wildcard pattern
+ ``MODIFY``      ``MBEAN``                       Call setter methods on named mbean
+ ``AUTHORIZE``   ``ALL KEYSPACES``               ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any table
+ ``AUTHORIZE``   ``KEYSPACE``                    ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any table in
+                                                 specified keyspace
+ ``AUTHORIZE``   ``TABLE``                       ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on specified table
+ ``AUTHORIZE``   ``ALL FUNCTIONS``               ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any function
+ ``AUTHORIZE``   ``ALL FUNCTIONS IN KEYSPACE``   ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` in specified keyspace
+ ``AUTHORIZE``   ``FUNCTION``                    ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on specified function
+ ``AUTHORIZE``   ``ALL MBEANS``                  ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any mbean
+ ``AUTHORIZE``   ``MBEANS``                      ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any mbean matching
+                                                 a wildcard pattern
+ ``AUTHORIZE``   ``MBEAN``                       ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on named mbean
+ ``AUTHORIZE``   ``ALL ROLES``                   ``GRANT ROLE`` and ``REVOKE ROLE`` on any role
+ ``AUTHORIZE``   ``ROLES``                       ``GRANT ROLE`` and ``REVOKE ROLE`` on specified roles
+ ``DESCRIBE``    ``ALL ROLES``                   ``LIST ROLES`` on all roles or only roles granted to another,
+                                                 specified role
+ ``DESCRIBE``    ``ALL MBEANS``                  Retrieve metadata about any mbean from the platform's MBeanServer
+ ``DESCRIBE``    ``MBEANS``                      Retrieve metadata about any mbean matching a wildcard patter from the
+                                                 platform's MBeanServer
+ ``DESCRIBE``    ``MBEAN``                       Retrieve metadata about a named mbean from the platform's MBeanServer
+ ``EXECUTE``     ``ALL FUNCTIONS``               ``SELECT``, ``INSERT`` and ``UPDATE`` using any function, and use of
+                                                 any function in ``CREATE AGGREGATE``
+ ``EXECUTE``     ``ALL FUNCTIONS IN KEYSPACE``   ``SELECT``, ``INSERT`` and ``UPDATE`` using any function in specified
+                                                 keyspace and use of any function in keyspace in ``CREATE AGGREGATE``
+ ``EXECUTE``     ``FUNCTION``                    ``SELECT``, ``INSERT`` and ``UPDATE`` using specified function and use
+                                                 of the function in ``CREATE AGGREGATE``
+ ``EXECUTE``     ``ALL MBEANS``                  Execute operations on any mbean
+ ``EXECUTE``     ``MBEANS``                      Execute operations on any mbean matching a wildcard pattern
+ ``EXECUTE``     ``MBEAN``                       Execute operations on named mbean
+=============== =============================== =======================================================================
+
+.. _grant-permission-statement:
+
+GRANT PERMISSION
+~~~~~~~~~~~~~~~~
+
+Granting a permission uses the ``GRANT PERMISSION`` statement:
+
+.. productionlist::
+   grant_permission_statement: GRANT `permissions` ON `resource` TO `role_name`
+   permissions: ALL [ PERMISSIONS ] | `permission` [ PERMISSION ]
+   permission: CREATE | ALTER | DROP | SELECT | MODIFY | AUTHORIZE | DESCRIBE | EXECUTE
+   resource: ALL KEYSPACES
+           :| KEYSPACE `keyspace_name`
+           :| [ TABLE ] `table_name`
+           :| ALL ROLES
+           :| ROLE `role_name`
+           :| ALL FUNCTIONS [ IN KEYSPACE `keyspace_name` ]
+           :| FUNCTION `function_name` '(' [ `cql_type` ( ',' `cql_type` )* ] ')'
+           :| ALL MBEANS
+           :| ( MBEAN | MBEANS ) `string`
+
+For instance::
+
+    GRANT SELECT ON ALL KEYSPACES TO data_reader;
+
+This gives any user with the role ``data_reader`` permission to execute ``SELECT`` statements on any table across all
+keyspaces::
+
+    GRANT MODIFY ON KEYSPACE keyspace1 TO data_writer;
+
+This give any user with the role ``data_writer`` permission to perform ``UPDATE``, ``INSERT``, ``UPDATE``, ``DELETE``
+and ``TRUNCATE`` queries on all tables in the ``keyspace1`` keyspace::
+
+    GRANT DROP ON keyspace1.table1 TO schema_owner;
+
+This gives any user with the ``schema_owner`` role permissions to ``DROP`` ``keyspace1.table1``::
+
+    GRANT EXECUTE ON FUNCTION keyspace1.user_function( int ) TO report_writer;
+
+This grants any user with the ``report_writer`` role permission to execute ``SELECT``, ``INSERT`` and ``UPDATE`` queries
+which use the function ``keyspace1.user_function( int )``::
+
+    GRANT DESCRIBE ON ALL ROLES TO role_admin;
+
+This grants any user with the ``role_admin`` role permission to view any and all roles in the system with a ``LIST
+ROLES`` statement
+
+.. _grant-all:
+
+GRANT ALL
+`````````
+
+When the ``GRANT ALL`` form is used, the appropriate set of permissions is determined automatically based on the target
+resource.
+
+Automatic Granting
+``````````````````
+
+When a resource is created, via a ``CREATE KEYSPACE``, ``CREATE TABLE``, ``CREATE FUNCTION``, ``CREATE AGGREGATE`` or
+``CREATE ROLE`` statement, the creator (the role the database user who issues the statement is identified as), is
+automatically granted all applicable permissions on the new resource.
+
+.. _revoke-permission-statement:
+
+REVOKE PERMISSION
+~~~~~~~~~~~~~~~~~
+
+Revoking a permission from a role uses the ``REVOKE PERMISSION`` statement:
+
+.. productionlist::
+   revoke_permission_statement: REVOKE `permissions` ON `resource` FROM `role_name`
+
+For instance::
+
+    REVOKE SELECT ON ALL KEYSPACES FROM data_reader;
+    REVOKE MODIFY ON KEYSPACE keyspace1 FROM data_writer;
+    REVOKE DROP ON keyspace1.table1 FROM schema_owner;
+    REVOKE EXECUTE ON FUNCTION keyspace1.user_function( int ) FROM report_writer;
+    REVOKE DESCRIBE ON ALL ROLES FROM role_admin;
+
+.. _list-permissions-statement:
+
+LIST PERMISSIONS
+~~~~~~~~~~~~~~~~
+
+Listing granted permissions uses the ``LIST PERMISSIONS`` statement:
+
+.. productionlist::
+   list_permissions_statement: LIST `permissions` [ ON `resource` ] [ OF `role_name` [ NORECURSIVE ] ]
+
+For instance::
+
+    LIST ALL PERMISSIONS OF alice;
+
+Show all permissions granted to ``alice``, including those acquired transitively from any other roles::
+
+    LIST ALL PERMISSIONS ON keyspace1.table1 OF bob;
+
+Show all permissions on ``keyspace1.table1`` granted to ``bob``, including those acquired transitively from any other
+roles. This also includes any permissions higher up the resource hierarchy which can be applied to ``keyspace1.table1``.
+For example, should ``bob`` have ``ALTER`` permission on ``keyspace1``, that would be included in the results of this
+query. Adding the ``NORECURSIVE`` switch restricts the results to only those permissions which were directly granted to
+``bob`` or one of ``bob``'s roles::
+
+    LIST SELECT PERMISSIONS OF carlos;
+
+Show any permissions granted to ``carlos`` or any of ``carlos``'s roles, limited to ``SELECT`` permissions on any
+resource.
diff --git a/src/doc/3.11.11/_sources/cql/triggers.rst.txt b/src/doc/3.11.11/_sources/cql/triggers.rst.txt
new file mode 100644
index 0000000..db3f53e
--- /dev/null
+++ b/src/doc/3.11.11/_sources/cql/triggers.rst.txt
@@ -0,0 +1,63 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _cql-triggers:
+
+Triggers
+--------
+
+Triggers are identified by a name defined by:
+
+.. productionlist::
+   trigger_name: `identifier`
+
+
+.. _create-trigger-statement:
+
+CREATE TRIGGER
+^^^^^^^^^^^^^^
+
+Creating a new trigger uses the ``CREATE TRIGGER`` statement:
+
+.. productionlist::
+   create_trigger_statement: CREATE TRIGGER [ IF NOT EXISTS ] `trigger_name`
+                           :     ON `table_name`
+                           :     USING `string`
+
+For instance::
+
+    CREATE TRIGGER myTrigger ON myTable USING 'org.apache.cassandra.triggers.InvertedIndex';
+
+The actual logic that makes up the trigger can be written in any Java (JVM) language and exists outside the database.
+You place the trigger code in a ``lib/triggers`` subdirectory of the Cassandra installation directory, it loads during
+cluster startup, and exists on every node that participates in a cluster. The trigger defined on a table fires before a
+requested DML statement occurs, which ensures the atomicity of the transaction.
+
+.. _drop-trigger-statement:
+
+DROP TRIGGER
+^^^^^^^^^^^^
+
+Dropping a trigger uses the ``DROP TRIGGER`` statement:
+
+.. productionlist::
+   drop_trigger_statement: DROP TRIGGER [ IF EXISTS ] `trigger_name` ON `table_name`
+
+For instance::
+
+    DROP TRIGGER myTrigger ON myTable;
diff --git a/src/doc/3.11.11/_sources/cql/types.rst.txt b/src/doc/3.11.11/_sources/cql/types.rst.txt
new file mode 100644
index 0000000..509a756
--- /dev/null
+++ b/src/doc/3.11.11/_sources/cql/types.rst.txt
@@ -0,0 +1,559 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _UUID: https://en.wikipedia.org/wiki/Universally_unique_identifier
+
+.. _data-types:
+
+Data Types
+----------
+
+CQL is a typed language and supports a rich set of data types, including :ref:`native types <native-types>`,
+:ref:`collection types <collections>`, :ref:`user-defined types <udts>`, :ref:`tuple types <tuples>` and :ref:`custom
+types <custom-types>`:
+
+.. productionlist::
+   cql_type: `native_type` | `collection_type` | `user_defined_type` | `tuple_type` | `custom_type`
+
+
+.. _native-types:
+
+Native Types
+^^^^^^^^^^^^
+
+The native types supported by CQL are:
+
+.. productionlist::
+   native_type: ASCII
+              : | BIGINT
+              : | BLOB
+              : | BOOLEAN
+              : | COUNTER
+              : | DATE
+              : | DECIMAL
+              : | DOUBLE
+              : | DURATION
+              : | FLOAT
+              : | INET
+              : | INT
+              : | SMALLINT
+              : | TEXT
+              : | TIME
+              : | TIMESTAMP
+              : | TIMEUUID
+              : | TINYINT
+              : | UUID
+              : | VARCHAR
+              : | VARINT
+
+The following table gives additional informations on the native data types, and on which kind of :ref:`constants
+<constants>` each type supports:
+
+=============== ===================== ==================================================================================
+ type            constants supported   description
+=============== ===================== ==================================================================================
+ ``ascii``       :token:`string`       ASCII character string
+ ``bigint``      :token:`integer`      64-bit signed long
+ ``blob``        :token:`blob`         Arbitrary bytes (no validation)
+ ``boolean``     :token:`boolean`      Either ``true`` or ``false``
+ ``counter``     :token:`integer`      Counter column (64-bit signed value). See :ref:`counters` for details
+ ``date``        :token:`integer`,     A date (with no corresponding time value). See :ref:`dates` below for details
+                 :token:`string`
+ ``decimal``     :token:`integer`,     Variable-precision decimal
+                 :token:`float`
+ ``double``      :token:`integer`      64-bit IEEE-754 floating point
+                 :token:`float`
+ ``duration``    :token:`duration`,    A duration with nanosecond precision. See :ref:`durations` below for details
+ ``float``       :token:`integer`,     32-bit IEEE-754 floating point
+                 :token:`float`
+ ``inet``        :token:`string`       An IP address, either IPv4 (4 bytes long) or IPv6 (16 bytes long). Note that
+                                       there is no ``inet`` constant, IP address should be input as strings
+ ``int``         :token:`integer`      32-bit signed int
+ ``smallint``    :token:`integer`      16-bit signed int
+ ``text``        :token:`string`       UTF8 encoded string
+ ``time``        :token:`integer`,     A time (with no corresponding date value) with nanosecond precision. See
+                 :token:`string`       :ref:`times` below for details
+ ``timestamp``   :token:`integer`,     A timestamp (date and time) with millisecond precision. See :ref:`timestamps`
+                 :token:`string`       below for details
+ ``timeuuid``    :token:`uuid`         Version 1 UUID_, generally used as a “conflict-free” timestamp. Also see
+                                       :ref:`timeuuid-functions`
+ ``tinyint``     :token:`integer`      8-bit signed int
+ ``uuid``        :token:`uuid`         A UUID_ (of any version)
+ ``varchar``     :token:`string`       UTF8 encoded string
+ ``varint``      :token:`integer`      Arbitrary-precision integer
+=============== ===================== ==================================================================================
+
+.. _counters:
+
+Counters
+~~~~~~~~
+
+The ``counter`` type is used to define *counter columns*. A counter column is a column whose value is a 64-bit signed
+integer and on which 2 operations are supported: incrementing and decrementing (see the :ref:`UPDATE statement
+<update-statement>` for syntax). Note that the value of a counter cannot be set: a counter does not exist until first
+incremented/decremented, and that first increment/decrement is made as if the prior value was 0.
+
+.. _counter-limitations:
+
+Counters have a number of important limitations:
+
+- They cannot be used for columns part of the ``PRIMARY KEY`` of a table.
+- A table that contains a counter can only contain counters. In other words, either all the columns of a table outside
+  the ``PRIMARY KEY`` have the ``counter`` type, or none of them have it.
+- Counters do not support :ref:`expiration <ttls>`.
+- The deletion of counters is supported, but is only guaranteed to work the first time you delete a counter. In other
+  words, you should not re-update a counter that you have deleted (if you do, proper behavior is not guaranteed).
+- Counter updates are, by nature, not `idemptotent <https://en.wikipedia.org/wiki/Idempotence>`__. An important
+  consequence is that if a counter update fails unexpectedly (timeout or loss of connection to the coordinator node),
+  the client has no way to know if the update has been applied or not. In particular, replaying the update may or may
+  not lead to an over count.
+
+.. _timestamps:
+
+Working with timestamps
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Values of the ``timestamp`` type are encoded as 64-bit signed integers representing a number of milliseconds since the
+standard base time known as `the epoch <https://en.wikipedia.org/wiki/Unix_time>`__: January 1 1970 at 00:00:00 GMT.
+
+Timestamps can be input in CQL either using their value as an :token:`integer`, or using a :token:`string` that
+represents an `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`__ date. For instance, all of the values below are
+valid ``timestamp`` values for  Mar 2, 2011, at 04:05:00 AM, GMT:
+
+- ``1299038700000``
+- ``'2011-02-03 04:05+0000'``
+- ``'2011-02-03 04:05:00+0000'``
+- ``'2011-02-03 04:05:00.000+0000'``
+- ``'2011-02-03T04:05+0000'``
+- ``'2011-02-03T04:05:00+0000'``
+- ``'2011-02-03T04:05:00.000+0000'``
+
+The ``+0000`` above is an RFC 822 4-digit time zone specification; ``+0000`` refers to GMT. US Pacific Standard Time is
+``-0800``. The time zone may be omitted if desired (``'2011-02-03 04:05:00'``), and if so, the date will be interpreted
+as being in the time zone under which the coordinating Cassandra node is configured. There are however difficulties
+inherent in relying on the time zone configuration being as expected, so it is recommended that the time zone always be
+specified for timestamps when feasible.
+
+The time of day may also be omitted (``'2011-02-03'`` or ``'2011-02-03+0000'``), in which case the time of day will
+default to 00:00:00 in the specified or default time zone. However, if only the date part is relevant, consider using
+the :ref:`date <dates>` type.
+
+.. _dates:
+
+Working with dates
+^^^^^^^^^^^^^^^^^^
+
+Values of the ``date`` type are encoded as 32-bit unsigned integers representing a number of days with “the epoch” at
+the center of the range (2^31). Epoch is January 1st, 1970
+
+As for :ref:`timestamp <timestamps>`, a date can be input either as an :token:`integer` or using a date
+:token:`string`. In the later case, the format should be ``yyyy-mm-dd`` (so ``'2011-02-03'`` for instance).
+
+.. _times:
+
+Working with times
+^^^^^^^^^^^^^^^^^^
+
+Values of the ``time`` type are encoded as 64-bit signed integers representing the number of nanoseconds since midnight.
+
+As for :ref:`timestamp <timestamps>`, a time can be input either as an :token:`integer` or using a :token:`string`
+representing the time. In the later case, the format should be ``hh:mm:ss[.fffffffff]`` (where the sub-second precision
+is optional and if provided, can be less than the nanosecond). So for instance, the following are valid inputs for a
+time:
+
+-  ``'08:12:54'``
+-  ``'08:12:54.123'``
+-  ``'08:12:54.123456'``
+-  ``'08:12:54.123456789'``
+
+.. _durations:
+
+Working with durations
+^^^^^^^^^^^^^^^^^^^^^^
+
+Values of the ``duration`` type are encoded as 3 signed integer of variable lengths. The first integer represents the
+number of months, the second the number of days and the third the number of nanoseconds. This is due to the fact that
+the number of days in a month can change, and a day can have 23 or 25 hours depending on the daylight saving.
+Internally, the number of months and days are decoded as 32 bits integers whereas the number of nanoseconds is decoded
+as a 64 bits integer.
+
+A duration can be input as:
+
+    #. ``(quantity unit)+`` like ``12h30m`` where the unit can be:
+
+         * ``y``: years (12 months)
+         * ``mo``: months (1 month)
+         * ``w``: weeks (7 days)
+         * ``d``: days (1 day)
+         * ``h``: hours (3,600,000,000,000 nanoseconds)
+         * ``m``: minutes (60,000,000,000 nanoseconds)
+         * ``s``: seconds (1,000,000,000 nanoseconds)
+         * ``ms``: milliseconds (1,000,000 nanoseconds)
+         * ``us`` or ``µs`` : microseconds (1000 nanoseconds)
+         * ``ns``: nanoseconds (1 nanosecond)
+    #. ISO 8601 format:  ``P[n]Y[n]M[n]DT[n]H[n]M[n]S or P[n]W``
+    #. ISO 8601 alternative format: ``P[YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]``
+
+For example::
+
+    INSERT INTO RiderResults (rider, race, result) VALUES ('Christopher Froome', 'Tour de France', 89h4m48s);
+    INSERT INTO RiderResults (rider, race, result) VALUES ('BARDET Romain', 'Tour de France', PT89H8M53S);
+    INSERT INTO RiderResults (rider, race, result) VALUES ('QUINTANA Nairo', 'Tour de France', P0000-00-00T89:09:09);
+
+.. _duration-limitation:
+
+Duration columns cannot be used in a table's ``PRIMARY KEY``. This limitation is due to the fact that
+durations cannot be ordered. It is effectively not possible to know if ``1mo`` is greater than ``29d`` without a date
+context.
+
+A ``1d`` duration is not equals to a ``24h`` one as the duration type has been created to be able to support daylight
+saving.
+
+.. _collections:
+
+Collections
+^^^^^^^^^^^
+
+CQL supports 3 kind of collections: :ref:`maps`, :ref:`sets` and :ref:`lists`. The types of those collections is defined
+by:
+
+.. productionlist::
+   collection_type: MAP '<' `cql_type` ',' `cql_type` '>'
+                  : | SET '<' `cql_type` '>'
+                  : | LIST '<' `cql_type` '>'
+
+and their values can be inputd using collection literals:
+
+.. productionlist::
+   collection_literal: `map_literal` | `set_literal` | `list_literal`
+   map_literal: '{' [ `term` ':' `term` (',' `term` : `term`)* ] '}'
+   set_literal: '{' [ `term` (',' `term`)* ] '}'
+   list_literal: '[' [ `term` (',' `term`)* ] ']'
+
+Note however that neither :token:`bind_marker` nor ``NULL`` are supported inside collection literals.
+
+Noteworthy characteristics
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Collections are meant for storing/denormalizing relatively small amount of data. They work well for things like “the
+phone numbers of a given user”, “labels applied to an email”, etc. But when items are expected to grow unbounded (“all
+messages sent by a user”, “events registered by a sensor”...), then collections are not appropriate and a specific table
+(with clustering columns) should be used. Concretely, (non-frozen) collections have the following noteworthy
+characteristics and limitations:
+
+- Individual collections are not indexed internally. Which means that even to access a single element of a collection,
+  the while collection has to be read (and reading one is not paged internally).
+- While insertion operations on sets and maps never incur a read-before-write internally, some operations on lists do.
+  Further, some lists operations are not idempotent by nature (see the section on :ref:`lists <lists>` below for
+  details), making their retry in case of timeout problematic. It is thus advised to prefer sets over lists when
+  possible.
+
+Please note that while some of those limitations may or may not be removed/improved upon in the future, it is a
+anti-pattern to use a (single) collection to store large amounts of data.
+
+.. _maps:
+
+Maps
+~~~~
+
+A ``map`` is a (sorted) set of key-value pairs, where keys are unique and the map is sorted by its keys. You can define
+and insert a map with::
+
+    CREATE TABLE users (
+        id text PRIMARY KEY,
+        name text,
+        favs map<text, text> // A map of text keys, and text values
+    );
+
+    INSERT INTO users (id, name, favs)
+               VALUES ('jsmith', 'John Smith', { 'fruit' : 'Apple', 'band' : 'Beatles' });
+
+    // Replace the existing map entirely.
+    UPDATE users SET favs = { 'fruit' : 'Banana' } WHERE id = 'jsmith';
+
+Further, maps support:
+
+- Updating or inserting one or more elements::
+
+    UPDATE users SET favs['author'] = 'Ed Poe' WHERE id = 'jsmith';
+    UPDATE users SET favs = favs + { 'movie' : 'Cassablanca', 'band' : 'ZZ Top' } WHERE id = 'jsmith';
+
+- Removing one or more element (if an element doesn't exist, removing it is a no-op but no error is thrown)::
+
+    DELETE favs['author'] FROM users WHERE id = 'jsmith';
+    UPDATE users SET favs = favs - { 'movie', 'band'} WHERE id = 'jsmith';
+
+  Note that for removing multiple elements in a ``map``, you remove from it a ``set`` of keys.
+
+Lastly, TTLs are allowed for both ``INSERT`` and ``UPDATE``, but in both case the TTL set only apply to the newly
+inserted/updated elements. In other words::
+
+    UPDATE users USING TTL 10 SET favs['color'] = 'green' WHERE id = 'jsmith';
+
+will only apply the TTL to the ``{ 'color' : 'green' }`` record, the rest of the map remaining unaffected.
+
+
+.. _sets:
+
+Sets
+~~~~
+
+A ``set`` is a (sorted) collection of unique values. You can define and insert a map with::
+
+    CREATE TABLE images (
+        name text PRIMARY KEY,
+        owner text,
+        tags set<text> // A set of text values
+    );
+
+    INSERT INTO images (name, owner, tags)
+                VALUES ('cat.jpg', 'jsmith', { 'pet', 'cute' });
+
+    // Replace the existing set entirely
+    UPDATE images SET tags = { 'kitten', 'cat', 'lol' } WHERE name = 'cat.jpg';
+
+Further, sets support:
+
+- Adding one or multiple elements (as this is a set, inserting an already existing element is a no-op)::
+
+    UPDATE images SET tags = tags + { 'gray', 'cuddly' } WHERE name = 'cat.jpg';
+
+- Removing one or multiple elements (if an element doesn't exist, removing it is a no-op but no error is thrown)::
+
+    UPDATE images SET tags = tags - { 'cat' } WHERE name = 'cat.jpg';
+
+Lastly, as for :ref:`maps <maps>`, TTLs if used only apply to the newly inserted values.
+
+.. _lists:
+
+Lists
+~~~~~
+
+.. note:: As mentioned above and further discussed at the end of this section, lists have limitations and specific
+   performance considerations that you should take into account before using them. In general, if you can use a
+   :ref:`set <sets>` instead of list, always prefer a set.
+
+A ``list`` is a (sorted) collection of non-unique values where elements are ordered by there position in the list. You
+can define and insert a list with::
+
+    CREATE TABLE plays (
+        id text PRIMARY KEY,
+        game text,
+        players int,
+        scores list<int> // A list of integers
+    )
+
+    INSERT INTO plays (id, game, players, scores)
+               VALUES ('123-afde', 'quake', 3, [17, 4, 2]);
+
+    // Replace the existing list entirely
+    UPDATE plays SET scores = [ 3, 9, 4] WHERE id = '123-afde';
+
+Further, lists support:
+
+- Appending and prepending values to a list::
+
+    UPDATE plays SET players = 5, scores = scores + [ 14, 21 ] WHERE id = '123-afde';
+    UPDATE plays SET players = 6, scores = [ 3 ] + scores WHERE id = '123-afde';
+
+- Setting the value at a particular position in the list. This imply that the list has a pre-existing element for that
+  position or an error will be thrown that the list is too small::
+
+    UPDATE plays SET scores[1] = 7 WHERE id = '123-afde';
+
+- Removing an element by its position in the list. This imply that the list has a pre-existing element for that position
+  or an error will be thrown that the list is too small. Further, as the operation removes an element from the list, the
+  list size will be diminished by 1, shifting the position of all the elements following the one deleted::
+
+    DELETE scores[1] FROM plays WHERE id = '123-afde';
+
+- Deleting *all* the occurrences of particular values in the list (if a particular element doesn't occur at all in the
+  list, it is simply ignored and no error is thrown)::
+
+    UPDATE plays SET scores = scores - [ 12, 21 ] WHERE id = '123-afde';
+
+.. warning:: The append and prepend operations are not idempotent by nature. So in particular, if one of these operation
+   timeout, then retrying the operation is not safe and it may (or may not) lead to appending/prepending the value
+   twice.
+
+.. warning:: Setting and removing an element by position and removing occurences of particular values incur an internal
+   *read-before-write*. They will thus run more slowly and take more ressources than usual updates (with the exclusion
+   of conditional write that have their own cost).
+
+Lastly, as for :ref:`maps <maps>`, TTLs when used only apply to the newly inserted values.
+
+.. _udts:
+
+User-Defined Types
+^^^^^^^^^^^^^^^^^^
+
+CQL support the definition of user-defined types (UDT for short). Such a type can be created, modified and removed using
+the :token:`create_type_statement`, :token:`alter_type_statement` and :token:`drop_type_statement` described below. But
+once created, a UDT is simply referred to by its name:
+
+.. productionlist::
+   user_defined_type: `udt_name`
+   udt_name: [ `keyspace_name` '.' ] `identifier`
+
+
+Creating a UDT
+~~~~~~~~~~~~~~
+
+Creating a new user-defined type is done using a ``CREATE TYPE`` statement defined by:
+
+.. productionlist::
+   create_type_statement: CREATE TYPE [ IF NOT EXISTS ] `udt_name`
+                        :     '(' `field_definition` ( ',' `field_definition` )* ')'
+   field_definition: `identifier` `cql_type`
+
+A UDT has a name (used to declared columns of that type) and is a set of named and typed fields. Fields name can be any
+type, including collections or other UDT. For instance::
+
+    CREATE TYPE phone (
+        country_code int,
+        number text,
+    )
+
+    CREATE TYPE address (
+        street text,
+        city text,
+        zip text,
+        phones map<text, phone>
+    )
+
+    CREATE TABLE user (
+        name text PRIMARY KEY,
+        addresses map<text, frozen<address>>
+    )
+
+Note that:
+
+- Attempting to create an already existing type will result in an error unless the ``IF NOT EXISTS`` option is used. If
+  it is used, the statement will be a no-op if the type already exists.
+- A type is intrinsically bound to the keyspace in which it is created, and can only be used in that keyspace. At
+  creation, if the type name is prefixed by a keyspace name, it is created in that keyspace. Otherwise, it is created in
+  the current keyspace.
+- As of Cassandra |version|, UDT have to be frozen in most cases, hence the ``frozen<address>`` in the table definition
+  above. Please see the section on :ref:`frozen <frozen>` for more details.
+
+UDT literals
+~~~~~~~~~~~~
+
+Once a used-defined type has been created, value can be input using a UDT literal:
+
+.. productionlist::
+   udt_literal: '{' `identifier` ':' `term` ( ',' `identifier` ':' `term` )* '}'
+
+In other words, a UDT literal is like a :ref:`map <maps>` literal but its keys are the names of the fields of the type.
+For instance, one could insert into the table define in the previous section using::
+
+    INSERT INTO user (name, addresses)
+              VALUES ('z3 Pr3z1den7', {
+                  'home' : {
+                      street: '1600 Pennsylvania Ave NW',
+                      city: 'Washington',
+                      zip: '20500',
+                      phones: { 'cell' : { country_code: 1, number: '202 456-1111' },
+                                'landline' : { country_code: 1, number: '...' } }
+                  },
+                  'work' : {
+                      street: '1600 Pennsylvania Ave NW',
+                      city: 'Washington',
+                      zip: '20500',
+                      phones: { 'fax' : { country_code: 1, number: '...' } }
+                  }
+              })
+
+To be valid, a UDT literal should only include fields defined by the type it is a literal of, but it can omit some field
+(in which case those will be ``null``).
+
+Altering a UDT
+~~~~~~~~~~~~~~
+
+An existing user-defined type can be modified using an ``ALTER TYPE`` statement:
+
+.. productionlist::
+   alter_type_statement: ALTER TYPE `udt_name` `alter_type_modification`
+   alter_type_modification: ADD `field_definition`
+                          : | RENAME `identifier` TO `identifier` ( `identifier` TO `identifier` )*
+
+You can:
+
+- add a new field to the type (``ALTER TYPE address ADD country text``). That new field will be ``null`` for any values
+  of the type created before the addition.
+- rename the fields of the type (``ALTER TYPE address RENAME zip TO zipcode``).
+
+Dropping a UDT
+~~~~~~~~~~~~~~
+
+You can drop an existing user-defined type using a ``DROP TYPE`` statement:
+
+.. productionlist::
+   drop_type_statement: DROP TYPE [ IF EXISTS ] `udt_name`
+
+Dropping a type results in the immediate, irreversible removal of that type. However, attempting to drop a type that is
+still in use by another type, table or function will result in an error.
+
+If the type dropped does not exist, an error will be returned unless ``IF EXISTS`` is used, in which case the operation
+is a no-op.
+
+.. _tuples:
+
+Tuples
+^^^^^^
+
+CQL also support tuples and tuple types (where the elements can be of different types). Functionally, tuples can be
+though as anonymous UDT with anonymous fields. Tuple types and tuple literals are defined by:
+
+.. productionlist::
+   tuple_type: TUPLE '<' `cql_type` ( ',' `cql_type` )* '>'
+   tuple_literal: '(' `term` ( ',' `term` )* ')'
+
+and can be used thusly::
+
+    CREATE TABLE durations (
+        event text,
+        duration tuple<int, text>,
+    )
+
+    INSERT INTO durations (event, duration) VALUES ('ev1', (3, 'hours'));
+
+Unlike other "composed" types (collections and UDT), a tuple is always :ref:`frozen <frozen>` (without the need of the
+`frozen` keyword) and it is not possible to update only some elements of a tuple (without updating the whole tuple).
+Also, a tuple literal should always have the same number of value than declared in the type it is a tuple of (some of
+those values can be null but they need to be explicitly declared as so).
+
+.. _custom-types:
+
+Custom Types
+^^^^^^^^^^^^
+
+.. note:: Custom types exists mostly for backward compatiliby purposes and their usage is discouraged. Their usage is
+   complex, not user friendly and the other provided types, particularly :ref:`user-defined types <udts>`, should almost
+   always be enough.
+
+A custom type is defined by:
+
+.. productionlist::
+   custom_type: `string`
+
+A custom type is a :token:`string` that contains the name of Java class that extends the server side ``AbstractType``
+class and that can be loaded by Cassandra (it should thus be in the ``CLASSPATH`` of every node running Cassandra). That
+class will define what values are valid for the type and how the time sorts when used for a clustering column. For any
+other purpose, a value of a custom type is the same than that of a ``blob``, and can in particular be input using the
+:token:`blob` literal syntax.
diff --git a/src/doc/3.11.11/_sources/data_modeling/index.rst.txt b/src/doc/3.11.11/_sources/data_modeling/index.rst.txt
new file mode 100644
index 0000000..dde031a
--- /dev/null
+++ b/src/doc/3.11.11/_sources/data_modeling/index.rst.txt
@@ -0,0 +1,20 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Data Modeling
+=============
+
+.. todo:: TODO
diff --git a/src/doc/3.11.11/_sources/development/code_style.rst.txt b/src/doc/3.11.11/_sources/development/code_style.rst.txt
new file mode 100644
index 0000000..5a486a4
--- /dev/null
+++ b/src/doc/3.11.11/_sources/development/code_style.rst.txt
@@ -0,0 +1,94 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Code Style
+==========
+
+General Code Conventions
+------------------------
+
+ - The Cassandra project follows `Sun's Java coding conventions <http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html>`_ with an important exception: ``{`` and ``}`` are always placed on a new line
+
+Exception handling
+------------------
+
+ - Never ever write ``catch (...) {}`` or ``catch (...) { logger.error() }`` merely to satisfy Java's compile-time exception checking. Always propagate the exception up or throw ``RuntimeException`` (or, if it "can't happen," ``AssertionError``). This makes the exceptions visible to automated tests.
+ - Avoid propagating up checked exceptions that no caller handles. Rethrow as ``RuntimeException`` (or ``IOError``, if that is more applicable).
+ - Similarly, logger.warn() is often a cop-out: is this an error or not? If it is don't hide it behind a warn; if it isn't, no need for the warning.
+ - If you genuinely know an exception indicates an expected condition, it's okay to ignore it BUT this must be explicitly explained in a comment.
+
+Boilerplate
+-----------
+
+ - Avoid redundant ``@Override`` annotations when implementing abstract or interface methods.
+ - Do not implement equals or hashcode methods unless they are actually needed.
+ - Prefer public final fields to private fields with getters. (But prefer encapsulating behavior in "real" methods to either.)
+ - Prefer requiring initialization in the constructor to setters.
+ - Avoid redundant ``this`` references to member fields or methods.
+ - Do not extract interfaces (or abstract classes) unless you actually need multiple implementations of it.
+ - Always include braces for nested levels of conditionals and loops. Only avoid braces for single level.
+
+Multiline statements
+--------------------
+
+ - Try to keep lines under 120 characters, but use good judgement -- it's better to exceed 120 by a little, than split a line that has no natural splitting points.
+ - When splitting inside a method call, use one line per parameter and align them, like this:
+
+ ::
+
+   SSTableWriter writer = new SSTableWriter(cfs.getTempSSTablePath(),
+                                            columnFamilies.size(),
+                                            StorageService.getPartitioner());
+
+ - When splitting a ternary, use one line per clause, carry the operator, and align like this:
+
+ ::
+
+   var = bar == null
+       ? doFoo()
+       : doBar();
+
+Whitespace
+----------
+
+ - Please make sure to use 4 spaces instead of the tab character for all your indentation.
+ - Many lines in many files have a bunch of trailing whitespace... Please either clean these up in a separate patch, or leave them alone, so that reviewers now and anyone reading code history later doesn't have to pay attention to whitespace diffs.
+
+Imports
+-------
+
+Please observe the following order for your imports::
+
+   java
+   [blank line]
+   com.google.common
+   org.apache.commons
+   org.junit
+   org.slf4j
+   [blank line]
+   everything else alphabetically
+
+Format files for IDEs
+---------------------
+
+ - IntelliJ: `intellij-codestyle.jar <https://wiki.apache.org/cassandra/CodeStyle?action=AttachFile&do=view&target=intellij-codestyle.jar>`_
+ - IntelliJ 13: `gist for IntelliJ 13 <https://gist.github.com/jdsumsion/9ab750a05c2a567c6afc>`_ (this is a work in progress, still working on javadoc, ternary style, line continuations, etc)
+ - Eclipse (https://github.com/tjake/cassandra-style-eclipse)
+
+
+
diff --git a/src/doc/3.11.11/_sources/development/how_to_commit.rst.txt b/src/doc/3.11.11/_sources/development/how_to_commit.rst.txt
new file mode 100644
index 0000000..d956c72
--- /dev/null
+++ b/src/doc/3.11.11/_sources/development/how_to_commit.rst.txt
@@ -0,0 +1,75 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+How-to Commit
+=============
+
+If you are a committer, feel free to pick any process that works for you - so long as you are planning to commit the work yourself.
+
+Here is how committing and merging will usually look for merging and pushing for tickets that follow the convention (if patch-based):
+
+Hypothetical CASSANDRA-12345 ticket is a cassandra-3.0 based bug fix that requires different code for cassandra-3.3, and trunk. Contributor Jackie supplied a patch for the root branch (12345-3.0.patch), and patches for the remaining branches (12345-3.3.patch, 12345-trunk.patch).
+
+On cassandra-3.0:
+   #. ``git am -3 12345-3.0.patch`` (if we have a problem b/c of CHANGES.txt not merging anymore, we fix  it ourselves, in place)
+
+On cassandra-3.3:
+   #. ``git merge cassandra-3.0 -s ours``
+   #. ``git apply -3 12345-3.3.patch`` (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)
+   #. ``git commit —amend``
+
+On trunk:
+   #. ``git merge cassandra-3.3 -s ours``
+   #. ``git apply -3 12345-trunk.patch`` (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)
+   #. ``git commit —amend``
+
+On any branch:
+   #. ``git push origin cassandra-3.0 cassandra-3.3 trunk —atomic``
+
+Same scenario, but a branch-based contribution:
+
+On cassandra-3.0:
+   #. ``git cherry-pick <sha-of-3.0-commit>`` (if we have a problem b/c of CHANGES.txt not merging anymore, we fix it ourselves, in place)
+
+On cassandra-3.3:
+   #. ``git merge cassandra-3.0 -s ours``
+   #. ``git format-patch -1 <sha-of-3.3-commit>``
+   #. ``git apply -3 <sha-of-3.3-commit>.patch`` (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)
+   #. ``git commit —amend``
+
+On trunk:
+   #. ``git merge cassandra-3.3 -s ours``
+   #. ``git format-patch -1 <sha-of-trunk-commit>``
+   #. ``git apply -3 <sha-of-trunk-commit>.patch`` (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)
+   #. ``git commit —amend``
+
+On any branch:
+   #. ``git push origin cassandra-3.0 cassandra-3.3 trunk —atomic``
+
+.. tip::
+
+   Notes on git flags:
+   ``-3`` flag to am and apply will instruct git to perform a 3-way merge for you. If a conflict is detected, you can either resolve it manually or invoke git mergetool - for both am and apply.
+
+   ``—atomic`` flag to git push does the obvious thing: pushes all or nothing. Without the flag, the command is equivalent to running git push once per each branch. This is nifty in case a race condition happens - you won’t push half the branches, blocking other committers’ progress while you are resolving the issue.
+
+.. tip::
+
+   The fastest way to get a patch from someone’s commit in a branch on GH - if you don’t have their repo in remotes -  is to append .patch to the commit url, e.g.
+   curl -O https://github.com/apache/cassandra/commit/7374e9b5ab08c1f1e612bf72293ea14c959b0c3c.patch
+
diff --git a/src/doc/3.11.11/_sources/development/how_to_review.rst.txt b/src/doc/3.11.11/_sources/development/how_to_review.rst.txt
new file mode 100644
index 0000000..dc97743
--- /dev/null
+++ b/src/doc/3.11.11/_sources/development/how_to_review.rst.txt
@@ -0,0 +1,71 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Review Checklist
+****************
+
+When reviewing tickets in Apache JIRA, the following items should be covered as part of the review process:
+
+**General**
+
+ * Does it conform to the :doc:`code_style` guidelines?
+ * Is there any redundant or duplicate code?
+ * Is the code as modular as possible?
+ * Can any singletons be avoided?
+ * Can any of the code be replaced with library functions?
+ * Are units of measurement used in the code consistent, both internally and with the rest of the ecosystem?
+
+**Error-Handling**
+
+ * Are all data inputs and outputs checked (for the correct type, length, format, and range) and encoded?
+ * Where third-party utilities are used, are returning errors being caught?
+ * Are invalid parameter values handled?
+ * Are any Throwable/Exceptions passed to the JVMStabilityInspector?
+ * Are errors well-documented? Does the error message tell the user how to proceed?
+ * Do exceptions propagate to the appropriate level in the code?
+
+**Documentation**
+
+ * Do comments exist and describe the intent of the code (the "why", not the "how")?
+ * Are javadocs added where appropriate?
+ * Is any unusual behavior or edge-case handling described?
+ * Are data structures and units of measurement explained?
+ * Is there any incomplete code? If so, should it be removed or flagged with a suitable marker like ‘TODO’?
+ * Does the code self-document via clear naming, abstractions, and flow control?
+ * Have NEWS.txt, the cql3 docs, and the native protocol spec been updated if needed?
+ * Is the ticket tagged with "client-impacting" and "doc-impacting", where appropriate?
+ * Has lib/licences been updated for third-party libs? Are they Apache License compatible?
+ * Is the Component on the JIRA ticket set appropriately?
+
+**Testing**
+
+ * Is the code testable? i.e. don’t add too many or hide dependencies, unable to initialize objects, test frameworks can use methods etc.
+ * Do tests exist and are they comprehensive?
+ * Do unit tests actually test that the code is performing the intended functionality?
+ * Could any test code use common functionality (e.g. ccm, dtest, or CqlTester methods) or abstract it there for reuse?
+ * If the code may be affected by multi-node clusters, are there dtests?
+ * If the code may take a long time to test properly, are there CVH tests?
+ * Is the test passing on CI for all affected branches (up to trunk, if applicable)? Are there any regressions?
+ * If patch affects read/write path, did we test for performance regressions w/multiple workloads?
+ * If adding a new feature, were tests added and performed confirming it meets the expected SLA/use-case requirements for the feature?
+
+**Logging**
+
+ * Are logging statements logged at the correct level?
+ * Are there logs in the critical path that could affect performance?
+ * Is there any log that could be added to communicate status or troubleshoot potential problems in this feature?
+ * Can any unnecessary logging statement be removed?
+
diff --git a/src/doc/3.11.11/_sources/development/ide.rst.txt b/src/doc/3.11.11/_sources/development/ide.rst.txt
new file mode 100644
index 0000000..2986495
--- /dev/null
+++ b/src/doc/3.11.11/_sources/development/ide.rst.txt
@@ -0,0 +1,161 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Building and IDE Integration
+****************************
+
+Building From Source
+====================
+
+Getting started with Cassandra and IntelliJ IDEA or Eclipse is simple, once you manage to build Cassandra from source using `Java 8 <http://www.oracle.com/technetwork/java/javase/downloads/index.html>`_, `Git <https://git-scm.com/>`_ and `Ant <http://ant.apache.org/>`_.
+
+The source code for Cassandra is shared through the central Apache Git repository and organized by different branches. You can access the code for the current development branch through git as follows::
+
+   git clone http://git-wip-us.apache.org/repos/asf/cassandra.git cassandra-trunk
+
+Other branches will point to different versions of Cassandra. Switching to a different branch requires checking out the branch by its name::
+
+   git checkout cassandra-3.0
+
+You can get a list of available branches with ``git branch``.
+
+Finally build Cassandra using ant::
+
+   ant
+
+This may take a significant amount of time depending on whether artifacts have to be downloaded and the number of classes that need to be compiled.
+
+.. hint::
+
+   You can setup multiple working trees for different Cassandra versions from the same repository using `git-worktree <https://git-scm.com/docs/git-worktree>`_.
+
+.. note::
+
+   `Bleeding edge development snapshots <http://cassci.datastax.com/job/trunk/lastSuccessfulBuild/>`_ of Cassandra are available from Jenkins continuous integration.
+
+Setting up Cassandra in IntelliJ IDEA
+=====================================
+
+`IntelliJ IDEA <https://www.jetbrains.com/idea/>`_ by JetBrains is one of the most popular IDEs for Cassandra and Java development in general. The Community Edition is provided as a free download with all features needed to get started developing Cassandra.
+
+Setup Cassandra as a Project (C* 2.1 and newer)
+-----------------------------------------------
+
+Since 2.1.5, there is a new ant target: ``generate-idea-files``. Please see our `wiki <https://wiki.apache.org/cassandra/RunningCassandraInIDEA>`_ for instructions for older Cassandra versions.
+
+Please clone and build Cassandra as described above and execute the following steps:
+
+1. Once Cassandra is built, generate the IDEA files using ant:
+
+::
+
+   ant generate-idea-files
+
+2. Start IDEA
+
+3. Open the IDEA project from the checked out Cassandra directory using the menu item Open in IDEA's File menu
+
+The project generated by the ant task ``generate-idea-files`` contains nearly everything you need to debug Cassandra and execute unit tests.
+
+ * Run/debug defaults for JUnit
+ * Run/debug configuration for Cassandra daemon
+ * License header for Java source files
+ * Cassandra code style
+ * Inspections
+
+Setting up Cassandra in Eclipse
+===============================
+
+Eclipse is a popular open source IDE that can be used for Cassandra development. Various Eclipse environments are available from the `download page <https://www.eclipse.org/downloads/eclipse-packages/>`_. The following guide was created with "Eclipse IDE for Java Developers".
+
+These instructions were tested on Ubuntu 16.04 with Eclipse Neon (4.6) using Cassandra 2.1, 2.2 and 3.x.
+
+Project Settings
+----------------
+
+**It is important that you generate the Eclipse files with Ant before trying to set up the Eclipse project.**
+
+ * Clone and build Cassandra as described above.
+ * Run ``ant generate-eclipse-files`` to create the Eclipse settings.
+ * Start Eclipse.
+ * Select ``File->Import->Existing Projects into Workspace->Select git directory``.
+ * Make sure "cassandra-trunk" is recognized and selected as a project (assuming you checked the code out into the folder cassandra-trunk as described above).
+ * Confirm "Finish" to have your project imported.
+
+You should now be able to find the project as part of the "Package Explorer" or "Project Explorer" without having Eclipse complain about any errors after building the project automatically.
+
+Unit Tests
+----------
+
+Unit tests can be run from Eclipse by simply right-clicking the class file or method and selecting ``Run As->JUnit Test``. Tests can be debugged this way as well by defining breakpoints (double-click line number) and selecting ``Debug As->JUnit Test``.
+
+Alternatively all unit tests can be run from the command line as described in :doc:`testing`
+
+Debugging Cassandra Using Eclipse
+---------------------------------
+
+There are two ways how to start and debug a local Cassandra instance with Eclipse. You can either start Cassandra just as you normally would by using the ``./bin/cassandra`` script and connect to the JVM through `remotely <https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/introclientissues005.html>`_ from Eclipse or start Cassandra from Eclipse right away.
+
+Starting Cassandra From Command Line
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ * Set environment variable to define remote debugging options for the JVM:
+   ``export JVM_EXTRA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1414"``
+ * Start Cassandra by executing the ``./bin/cassandra``
+
+Afterwards you should be able to connect to the running Cassandra process through the following steps:
+
+From the menu, select ``Run->Debug Configurations..``
+
+.. image:: images/eclipse_debug0.png
+
+Create new remote application
+
+.. image:: images/eclipse_debug1.png
+
+Configure connection settings by specifying a name and port 1414
+
+.. image:: images/eclipse_debug2.png
+
+Afterwards confirm "Debug" to connect to the JVM and start debugging Cassandra!
+
+Starting Cassandra From Eclipse
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Cassandra can also be started directly from Eclipse if you don't want to use the command line.
+
+From the menu, select ``Run->Run Configurations..``
+
+.. image:: images/eclipse_debug3.png
+
+Create new application
+
+.. image:: images/eclipse_debug4.png
+
+Specify name, project and main class ``org.apache.cassandra.service.CassandraDaemon``
+
+.. image:: images/eclipse_debug5.png
+
+Configure additional JVM specific parameters that will start Cassandra with some of the settings created by the regular startup script. Change heap related values as needed.
+
+::
+
+   -Xms1024M -Xmx1024M -Xmn220M -Xss256k -ea -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCondCardMark -javaagent:./lib/jamm-0.3.0.jar -Djava.net.preferIPv4Stack=true
+
+.. image:: images/eclipse_debug6.png
+
+Now just confirm "Debug" and you should see the output of Cassandra starting up in the Eclipse console and should be able to set breakpoints and start debugging!
+
diff --git a/src/doc/3.11.11/_sources/development/index.rst.txt b/src/doc/3.11.11/_sources/development/index.rst.txt
new file mode 100644
index 0000000..be3d254
--- /dev/null
+++ b/src/doc/3.11.11/_sources/development/index.rst.txt
@@ -0,0 +1,29 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Cassandra Development
+*********************
+
+.. toctree::
+   :maxdepth: 2
+
+   ide
+   testing
+   patches
+   code_style
+   license_compliance
+   how_to_review
+   how_to_commit
diff --git a/src/doc/3.11.11/_sources/development/license_compliance.rst.txt b/src/doc/3.11.11/_sources/development/license_compliance.rst.txt
new file mode 100644
index 0000000..e2eba2a
--- /dev/null
+++ b/src/doc/3.11.11/_sources/development/license_compliance.rst.txt
@@ -0,0 +1,37 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+..  _license_compliance:
+
+License Compliance
+******************
+
+
+The target of this document is to provide an overview and guidance how the Apache Cassandra project's source code and
+artifacts maintain compliance with the `ASF Licensing policy <http://www.apache.org/legal/release-policy.html#licensing>`.
+
+The repository contains a LICENSE file, and a NOTICE file.
+
+The Apache Cassandra project enforces and verifies ASF License header conformance on all source files using the Apache RAT tool.
+
+With a few exceptions, source files consisting of works submitted directly to the ASF by the copyright owner or owner's
+agent must contain the appropriate ASF license header. Files without any degree of creativity don't require a license header.
+
+Currently, RAT checks all .bat, .btm, .cql, .css, .g, .hmtl, .iml, .java, .jflex, .jks, .md, .mod, .name, .pom, .py, .sh, .spec, .textile, .yml, .yaml, .xml files for a LICENSE header.
+
+If there is an incompliance, the build will fail with the following warning:
+
+    Some files have missing or incorrect license information. Check RAT report in build/rat.txt for more details!
diff --git a/src/doc/3.11.11/_sources/development/patches.rst.txt b/src/doc/3.11.11/_sources/development/patches.rst.txt
new file mode 100644
index 0000000..e3d968f
--- /dev/null
+++ b/src/doc/3.11.11/_sources/development/patches.rst.txt
@@ -0,0 +1,125 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Contributing Code Changes
+*************************
+
+Choosing What to Work on
+========================
+
+Submitted patches can include bug fixes, changes to the Java code base, improvements for tooling (both Java or Python), documentation, testing or any other changes that requires changing the code base. Although the process of contributing code is always the same, the amount of work and time it takes to get a patch accepted also depends on the kind of issue you're addressing.
+
+As a general rule of thumb:
+ * Major new features and significant changes to the code based will likely not going to be accepted without deeper discussion within the `developer community <http://cassandra.apache.org/community/>`_
+ * Bug fixes take higher priority compared to features
+ * The extend to which tests are required depend on how likely your changes will effect the stability of Cassandra in production. Tooling changes requires fewer tests than storage engine changes.
+ * Less complex patches will be faster to review: consider breaking up an issue into individual tasks and contributions that can be reviewed separately
+
+.. hint::
+
+   Not sure what to work? Just pick an issue tagged with the `low hanging fruit label <https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&jqlQuery=project+=+12310865+AND+labels+=+lhf+AND+status+!=+resolved>`_ in JIRA, which we use to flag issues that could turn out to be good starter tasks for beginners.
+
+Before You Start Coding
+=======================
+
+Although contributions are highly appreciated, we do not guarantee that each contribution will become a part of Cassandra. Therefor it's generally a good idea to first get some feedback on the things you plan to work on, especially about any new features or major changes to the code base. You can reach out to other developers on the mailing list or IRC channel listed on our `community page <http://cassandra.apache.org/community/>`_.
+
+You should also
+ * Avoid redundant work by searching for already reported issues in `JIRA <https://issues.apache.org/jira/browse/CASSANDRA>`_
+ * Create a new issue early in the process describing what you're working on - not just after finishing your patch
+ * Link related JIRA issues with your own ticket to provide a better context
+ * Update your ticket from time to time by giving feedback on your progress and link a GitHub WIP branch with your current code
+ * Ping people who you actively like to ask for advice on JIRA by `mentioning users <https://confluence.atlassian.com/conf54/confluence-user-s-guide/sharing-content/using-mentions>`_
+
+There are also some fixed rules that you need to be aware:
+ * Patches will only be applied to branches by following the release model
+ * Code must be testable
+ * Code must follow the :doc:`code_style` convention
+ * Changes must not break compatibility between different Cassandra versions
+ * Contributions must be covered by the Apache License
+
+Choosing the Right Branches to Work on
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+There are currently multiple Cassandra versions maintained in individual branches:
+
+======= ======
+Version Policy
+======= ======
+3.x     Tick-tock (see below)
+3.0     Bug fixes only
+2.2     Bug fixes only
+2.1     Critical bug fixes only
+======= ======
+
+Corresponding branches in git are easy to recognize as they are named ``cassandra-<release>`` (e.g. ``cassandra-3.0``). The ``trunk`` branch is an exception, as it contains the most recent commits from all other branches and is used for creating new branches for future tick-tock releases.
+
+Tick-Tock Releases
+""""""""""""""""""
+
+New releases created as part of the `tick-tock release process <http://www.planetcassandra.org/blog/cassandra-2-2-3-0-and-beyond/>`_ will either focus on stability (odd version numbers) or introduce new features (even version numbers). Any code for new Cassandra features you should be based on the latest, unreleased 3.x branch with even version number or based on trunk.
+
+Bug Fixes
+"""""""""
+
+Creating patches for bug fixes is a bit more complicated as this will depend on how many different versions of Cassandra are affected. In each case, the order for merging such changes will be ``cassandra-2.1`` -> ``cassandra-2.2`` -> ``cassandra-3.0`` -> ``cassandra-3.x`` -> ``trunk``. But don't worry, merging from 2.1 would be the worst case for bugs that affect all currently supported versions, which isn't very common. As a contributor, you're also not expected to provide a single patch for each version. What you need to do however is:
+
+ * Be clear about which versions you could verify to be affected by the bug
+ * For 2.x: ask if a bug qualifies to be fixed in this release line, as this may be handled on case by case bases
+ * If possible, create a patch against the lowest version in the branches listed above (e.g. if you found the bug in 3.9 you should try to fix it already in 3.0)
+ * Test if the patch can be merged cleanly across branches in the direction listed above
+ * Be clear which branches may need attention by the committer or even create custom patches for those if you can
+
+Creating a Patch
+================
+
+So you've finished coding and the great moment arrives: it's time to submit your patch!
+
+ 1. Create a branch for your changes if you haven't done already. Many contributors name their branches based on ticket number and Cassandra version, e.g. ``git checkout -b 12345-3.0``
+ 2. Verify that you follow Cassandra's :doc:`code_style`
+ 3. Make sure all tests (including yours) pass using ant as described in :doc:`testing`. If you suspect a test failure is unrelated to your change, it may be useful to check the test's status by searching the issue tracker or looking at `CI <https://cassci.datastax.com/>`_ results for the relevant upstream version.  Note that the full test suites take many hours to complete, so it is common to only run specific relevant tests locally before uploading a patch.  Once a patch has been uploaded, the reviewer or committer can help setup CI jobs to run the full test suites.
+ 4. Consider going through the :doc:`how_to_review` for your code. This will help you to understand how others will consider your change for inclusion.
+ 5. Don’t make the committer squash commits for you in the root branch either. Multiple commits are fine - and often preferable - during review stage, especially for incremental review, but once +1d, do either:
+
+   a. Attach a patch to JIRA with a single squashed commit in it (per branch), or
+   b. Squash the commits in-place in your branches into one
+
+ 6. Include a CHANGES.txt entry (put it at the top of the list), and format the commit message appropriately in your patch ending with the following statement on the last line: ``patch by X; reviewed by Y for CASSANDRA-ZZZZZ``
+ 7. When you're happy with the result, create a patch:
+
+   ::
+
+      git add <any new or modified file>
+      git commit -m '<message>'
+      git format-patch HEAD~1
+      mv <patch-file> <ticket-branchname.txt> (e.g. 12345-trunk.txt, 12345-3.0.txt)
+
+   Alternatively, many contributors prefer to make their branch available on GitHub. In this case, fork the Cassandra repository on GitHub and push your branch:
+
+   ::
+
+      git push --set-upstream origin 12345-3.0
+
+ 8. To make life easier for your reviewer/committer, you may want to make sure your patch applies cleanly to later branches and create additional patches/branches for later Cassandra versions to which your original patch does not apply cleanly. That said, this is not critical, and you will receive feedback on your patch regardless.
+ 9. Attach the newly generated patch to the ticket/add a link to your branch and click "Submit Patch" at the top of the ticket. This will move the ticket into "Patch Available" status, indicating that your submission is ready for review.
+ 10. Wait for other developers or committers to review it and hopefully +1 the ticket (see :doc:`how_to_review`). If your change does not receive a +1, do not be discouraged. If possible, the reviewer will give suggestions to improve your patch or explain why it is not suitable.
+ 11. If the reviewer has given feedback to improve the patch, make the necessary changes and move the ticket into "Patch Available" once again.
+
+Once the review process is complete, you will receive a +1. Wait for a committer to commit it. Do not delete your branches immediately after they’ve been committed - keep them on GitHub for a while. Alternatively, attach a patch to JIRA for historical record. It’s not that uncommon for a committer to mess up a merge. In case of that happening, access to the original code is required, or else you’ll have to redo some of the work.
+
+
diff --git a/src/doc/3.11.11/_sources/development/testing.rst.txt b/src/doc/3.11.11/_sources/development/testing.rst.txt
new file mode 100644
index 0000000..3c84d8e
--- /dev/null
+++ b/src/doc/3.11.11/_sources/development/testing.rst.txt
@@ -0,0 +1,89 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Testing
+*******
+
+Creating tests is one of the most important and also most difficult parts of developing Cassandra. There are different ways to test your code depending on what you're working on.
+
+
+Unit Testing
+============
+
+The most simple way to test code in Cassandra is probably by writing a unit test. Cassandra uses JUnit as a testing framework and test cases can be found in the ``test/unit`` directory. Ideally you’d be able to create a unit test for your implementation that would exclusively cover the class you created (the unit under test). Unfortunately this is not always possible and Cassandra doesn’t have a very mock friendly code base. Often you’ll find yourself in a situation where you have to make use of an embedded Cassandra instance that you’ll be able to interact with in your test. If you want to make use of CQL in your test, you can simply extend CQLTester and use some of the convenient helper methods such as in the following example.
+
+.. code-block:: java
+
+  @Test
+  public void testBatchAndList() throws Throwable
+  {
+     createTable("CREATE TABLE %s (k int PRIMARY KEY, l list<int>)");
+     execute("BEGIN BATCH " +
+             "UPDATE %1$s SET l = l +[ 1 ] WHERE k = 0; " +
+             "UPDATE %1$s SET l = l + [ 2 ] WHERE k = 0; " +
+             "UPDATE %1$s SET l = l + [ 3 ] WHERE k = 0; " +
+             "APPLY BATCH");
+
+     assertRows(execute("SELECT l FROM %s WHERE k = 0"),
+                row(list(1, 2, 3)));
+  }
+
+Unit tests can be run from the command line using the ``ant test`` command, ``ant test -Dtest.name=<simple_classname>`` to execute a test suite or ``ant testsome -Dtest.name=<FQCN> -Dtest.methods=<testmethod1>[,testmethod2]`` for individual tests.  For example, to run all test methods in the ``org.apache.cassandra.cql3.SimpleQueryTest`` class, you would run::
+
+    ant test -Dtest.name=SimpleQueryTest
+
+To run only the ``testStaticCompactTables()`` test method from that class, you would run::
+
+    ant testsome -Dtest.name=org.apache.cassandra.cql3.SimpleQueryTest -Dtest.methods=testStaticCompactTables
+
+Long running tests
+------------------
+
+Test that consume a significant amount of time during execution can be found in the ``test/long`` directory and executed as a regular JUnit test or standalone program. Except for the execution time, there’s nothing really special about them. However, ant will execute tests under ``test/long`` only when using the ``ant long-test`` target.
+
+DTests
+======
+
+One way of doing integration or system testing at larger scale is by using `dtest <https://github.com/riptano/cassandra-dtest>`_, which stands for “Cassandra Distributed Tests”. The idea is to automatically setup Cassandra clusters using various configurations and simulate certain use cases you want to test. This is done using Python scripts and ``ccmlib`` from the `ccm <https://github.com/pcmanus/ccm>`_ project. Dtests will setup clusters using this library just as you do running ad-hoc ``ccm`` commands on your local machine. Afterwards dtests will use the `Python driver <http://datastax.github.io/python-driver/installation.html>`_ to interact with the nodes, manipulate the file system, analyze logs or mess with individual nodes.
+
+Using dtests helps us to prevent regression bugs by continually executing tests on the `CI server <http://cassci.datastax.com/>`_ against new patches. For frequent contributors, this Jenkins is set up to build branches from their GitHub repositories. It is likely that your reviewer will use this Jenkins instance to run tests for your patch. Read more on the motivation behind the CI server `here <http://www.datastax.com/dev/blog/cassandra-testing-improvements-for-developer-convenience-and-confidence>`_.
+
+The best way to learn how to write dtests is probably by reading the introduction "`How to Write a Dtest <http://www.datastax.com/dev/blog/how-to-write-a-dtest>`_" and by looking at existing, recently updated tests in the project. New tests must follow certain `style conventions <https://github.com/apache/cassandra-dtest/blob/trunk/CONTRIBUTING.md>`_ that are being checked before accepting contributions. In contrast to Cassandra, dtest issues and pull-requests are managed on github, therefor you should make sure to link any created dtests in your Cassandra ticket and also refer to the ticket number in your dtest PR.
+
+Creating a good dtest can be tough, but it should not prevent you from submitting patches! Please ask in the corresponding JIRA ticket how to write a good dtest for the patch. In most cases a reviewer or committer will able to support you, and in some cases they may offer to write a dtest for you.
+
+Performance Testing
+===================
+
+Performance tests for Cassandra are a special breed of tests that are not part of the usual patch contribution process. In fact you can contribute tons of patches to Cassandra without ever running performance tests. They are important however when working on performance improvements, as such improvements must be measurable.
+
+Cassandra Stress Tool
+---------------------
+
+TODO: `CASSANDRA-12365 <https://issues.apache.org/jira/browse/CASSANDRA-12365>`_
+
+cstar_perf
+----------
+
+Another tool available on github is `cstar_perf <https://github.com/datastax/cstar_perf>`_ that can be used for intensive performance testing in large clusters or locally. Please refer to the project page on how to set it up and how to use it.
+
+CircleCI
+--------
+Cassandra ships with a default `CircleCI <https://circleci.com>`_ configuration, to enable running tests on your branches, you need to go the CircleCI website, click "Login" and log in with your github account. Then you need to give CircleCI permission to watch your repositories. Once you have done that, you can optionally configure CircleCI to run tests in parallel - click "Projects", then your github account and then click the settings for the project. If you leave the parallelism at 1 for Cassandra, only ``ant eclipse-warnings`` and ``ant test`` will be run. If you up the parallelism to 4, it also runs ``ant long-test``, ``ant test-compression`` and ``ant stress-test``
+
+
diff --git a/src/doc/3.11.11/_sources/faq/index.rst.txt b/src/doc/3.11.11/_sources/faq/index.rst.txt
new file mode 100644
index 0000000..d985e37
--- /dev/null
+++ b/src/doc/3.11.11/_sources/faq/index.rst.txt
@@ -0,0 +1,298 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Frequently Asked Questions
+==========================
+
+- :ref:`why-cant-list-all`
+- :ref:`what-ports`
+- :ref:`what-happens-on-joins`
+- :ref:`asynch-deletes`
+- :ref:`one-entry-ring`
+- :ref:`can-large-blob`
+- :ref:`nodetool-connection-refused`
+- :ref:`to-batch-or-not-to-batch`
+- :ref:`selinux`
+- :ref:`how-to-unsubscribe`
+- :ref:`cassandra-eats-all-my-memory`
+- :ref:`what-are-seeds`
+- :ref:`are-seeds-SPOF`
+- :ref:`why-message-dropped`
+- :ref:`oom-map-failed`
+- :ref:`what-on-same-timestamp-update`
+- :ref:`why-bootstrapping-stream-error`
+
+.. _why-cant-list-all:
+
+Why can't I set ``listen_address`` to listen on 0.0.0.0 (all my addresses)?
+---------------------------------------------------------------------------
+
+Cassandra is a gossip-based distributed system and ``listen_address`` is the address a node tells other nodes to reach
+it at. Telling other nodes "contact me on any of my addresses" is a bad idea; if different nodes in the cluster pick
+different addresses for you, Bad Things happen.
+
+If you don't want to manually specify an IP to ``listen_address`` for each node in your cluster (understandable!), leave
+it blank and Cassandra will use ``InetAddress.getLocalHost()`` to pick an address. Then it's up to you or your ops team
+to make things resolve correctly (``/etc/hosts/``, dns, etc).
+
+One exception to this process is JMX, which by default binds to 0.0.0.0 (Java bug 6425769).
+
+See :jira:`256` and :jira:`43` for more gory details.
+
+.. _what-ports:
+
+What ports does Cassandra use?
+------------------------------
+
+By default, Cassandra uses 7000 for cluster communication (7001 if SSL is enabled),  9042 for native protocol clients,
+and 7199 for JMX (and 9160 for the deprecated Thrift interface). The internode communication and native protocol ports
+are configurable in the :ref:`cassandra-yaml`. The JMX port is configurable in ``cassandra-env.sh`` (through JVM
+options). All ports are TCP.
+
+.. _what-happens-on-joins:
+
+What happens to existing data in my cluster when I add new nodes?
+-----------------------------------------------------------------
+
+When a new nodes joins a cluster, it will automatically contact the other nodes in the cluster and copy the right data
+to itself. See :ref:`topology-changes`.
+
+.. _asynch-deletes:
+
+I delete data from Cassandra, but disk usage stays the same. What gives?
+------------------------------------------------------------------------
+
+Data you write to Cassandra gets persisted to SSTables. Since SSTables are immutable, the data can't actually be removed
+when you perform a delete, instead, a marker (also called a "tombstone") is written to indicate the value's new status.
+Never fear though, on the first compaction that occurs between the data and the tombstone, the data will be expunged
+completely and the corresponding disk space recovered. See :ref:`compaction` for more detail.
+
+.. _one-entry-ring:
+
+Why does nodetool ring only show one entry, even though my nodes logged that they see each other joining the ring?
+------------------------------------------------------------------------------------------------------------------
+
+This happens when you have the same token assigned to each node. Don't do that.
+
+Most often this bites people who deploy by installing Cassandra on a VM (especially when using the Debian package, which
+auto-starts Cassandra after installation, thus generating and saving a token), then cloning that VM to other nodes.
+
+The easiest fix is to wipe the data and commitlog directories, thus making sure that each node will generate a random
+token on the next restart.
+
+.. _change-replication-factor:
+
+Can I change the replication factor (a a keyspace) on a live cluster?
+---------------------------------------------------------------------
+
+Yes, but it will require running repair (or cleanup) to change the replica count of existing data:
+
+- :ref:`Alter <alter-keyspace-statement>` the replication factor for desired keyspace (using cqlsh for instance).
+- If you're reducing the replication factor, run ``nodetool cleanup`` on the cluster to remove surplus replicated data.
+  Cleanup runs on a per-node basis.
+- If you're increasing the replication factor, run ``nodetool repair`` to ensure data is replicated according to the new
+  configuration. Repair runs on a per-replica set basis. This is an intensive process that may result in adverse cluster
+  performance. It's highly recommended to do rolling repairs, as an attempt to repair the entire cluster at once will
+  most likely swamp it.
+
+.. _can-large-blob:
+
+Can I Store (large) BLOBs in Cassandra?
+---------------------------------------
+
+Cassandra isn't optimized for large file or BLOB storage and a single ``blob`` value is always read and send to the
+client entirely. As such, storing small blobs (less than single digit MB) should not be a problem, but it is advised to
+manually split large blobs into smaller chunks.
+
+Please note in particular that by default, any value greater than 16MB will be rejected by Cassandra due the
+``max_mutation_size_in_kb`` configuration of the :ref:`cassandra-yaml` file (which default to half of
+``commitlog_segment_size_in_mb``, which itself default to 32MB).
+
+.. _nodetool-connection-refused:
+
+Nodetool says "Connection refused to host: 127.0.1.1" for any remote host. What gives?
+--------------------------------------------------------------------------------------
+
+Nodetool relies on JMX, which in turn relies on RMI, which in turn sets up its own listeners and connectors as needed on
+each end of the exchange. Normally all of this happens behind the scenes transparently, but incorrect name resolution
+for either the host connecting, or the one being connected to, can result in crossed wires and confusing exceptions.
+
+If you are not using DNS, then make sure that your ``/etc/hosts`` files are accurate on both ends. If that fails, try
+setting the ``-Djava.rmi.server.hostname=<public name>`` JVM option near the bottom of ``cassandra-env.sh`` to an
+interface that you can reach from the remote machine.
+
+.. _to-batch-or-not-to-batch:
+
+Will batching my operations speed up my bulk load?
+--------------------------------------------------
+
+No. Using batches to load data will generally just add "spikes" of latency. Use asynchronous INSERTs instead, or use
+true :ref:`bulk-loading`.
+
+An exception is batching updates to a single partition, which can be a Good Thing (as long as the size of a single batch
+stay reasonable). But never ever blindly batch everything!
+
+.. _selinux:
+
+On RHEL nodes are unable to join the ring
+-----------------------------------------
+
+Check if `SELinux <https://en.wikipedia.org/wiki/Security-Enhanced_Linux>`__ is on; if it is, turn it off.
+
+.. _how-to-unsubscribe:
+
+How do I unsubscribe from the email list?
+-----------------------------------------
+
+Send an email to ``user-unsubscribe@cassandra.apache.org``.
+
+.. _cassandra-eats-all-my-memory:
+
+Why does top report that Cassandra is using a lot more memory than the Java heap max?
+-------------------------------------------------------------------------------------
+
+Cassandra uses `Memory Mapped Files <https://en.wikipedia.org/wiki/Memory-mapped_file>`__ (mmap) internally. That is, we
+use the operating system's virtual memory system to map a number of on-disk files into the Cassandra process' address
+space. This will "use" virtual memory; i.e. address space, and will be reported by tools like top accordingly, but on 64
+bit systems virtual address space is effectively unlimited so you should not worry about that.
+
+What matters from the perspective of "memory use" in the sense as it is normally meant, is the amount of data allocated
+on brk() or mmap'd /dev/zero, which represent real memory used. The key issue is that for a mmap'd file, there is never
+a need to retain the data resident in physical memory. Thus, whatever you do keep resident in physical memory is
+essentially just there as a cache, in the same way as normal I/O will cause the kernel page cache to retain data that
+you read/write.
+
+The difference between normal I/O and mmap() is that in the mmap() case the memory is actually mapped to the process,
+thus affecting the virtual size as reported by top. The main argument for using mmap() instead of standard I/O is the
+fact that reading entails just touching memory - in the case of the memory being resident, you just read it - you don't
+even take a page fault (so no overhead in entering the kernel and doing a semi-context switch). This is covered in more
+detail `here <http://www.varnish-cache.org/trac/wiki/ArchitectNotes>`__.
+
+.. _what-are-seeds:
+
+What are seeds?
+---------------
+
+Seeds are used during startup to discover the cluster.
+
+If you configure your nodes to refer some node as seed, nodes in your ring tend to send Gossip message to seeds more
+often (also see the :ref:`section on gossip <gossip>`) than to non-seeds. In other words, seeds are worked as hubs of
+Gossip network. With seeds, each node can detect status changes of other nodes quickly.
+
+Seeds are also referred by new nodes on bootstrap to learn other nodes in ring. When you add a new node to ring, you
+need to specify at least one live seed to contact. Once a node join the ring, it learns about the other nodes, so it
+doesn't need seed on subsequent boot.
+
+You can make a seed a node at any time. There is nothing special about seed nodes. If you list the node in seed list it
+is a seed
+
+Seeds do not auto bootstrap (i.e. if a node has itself in its seed list it will not automatically transfer data to itself)
+If you want a node to do that, bootstrap it first and then add it to seeds later. If you have no data (new install) you
+do not have to worry about bootstrap at all.
+
+Recommended usage of seeds:
+
+- pick two (or more) nodes per data center as seed nodes.
+- sync the seed list to all your nodes
+
+.. _are-seeds-SPOF:
+
+Does single seed mean single point of failure?
+----------------------------------------------
+
+The ring can operate or boot without a seed; however, you will not be able to add new nodes to the cluster. It is
+recommended to configure multiple seeds in production system.
+
+.. _cant-call-jmx-method:
+
+Why can't I call jmx method X on jconsole?
+------------------------------------------
+
+Some of JMX operations use array argument and as jconsole doesn't support array argument, those operations can't be
+called with jconsole (the buttons are inactive for them). You need to write a JMX client to call such operations or need
+array-capable JMX monitoring tool.
+
+.. _why-message-dropped:
+
+Why do I see "... messages dropped ..." in the logs?
+----------------------------------------------------
+
+This is a symptom of load shedding -- Cassandra defending itself against more requests than it can handle.
+
+Internode messages which are received by a node, but do not get not to be processed within their proper timeout (see
+``read_request_timeout``, ``write_request_timeout``, ... in the :ref:`cassandra-yaml`), are dropped rather than
+processed (since the as the coordinator node will no longer be waiting for a response).
+
+For writes, this means that the mutation was not applied to all replicas it was sent to. The inconsistency will be
+repaired by read repair, hints or a manual repair. The write operation may also have timeouted as a result.
+
+For reads, this means a read request may not have completed.
+
+Load shedding is part of the Cassandra architecture, if this is a persistent issue it is generally a sign of an
+overloaded node or cluster.
+
+.. _oom-map-failed:
+
+Cassandra dies with ``java.lang.OutOfMemoryError: Map failed``
+--------------------------------------------------------------
+
+If Cassandra is dying **specifically** with the "Map failed" message, it means the OS is denying java the ability to
+lock more memory. In linux, this typically means memlock is limited. Check ``/proc/<pid of cassandra>/limits`` to verify
+this and raise it (eg, via ulimit in bash). You may also need to increase ``vm.max_map_count.`` Note that the debian
+package handles this for you automatically.
+
+
+.. _what-on-same-timestamp-update:
+
+What happens if two updates are made with the same timestamp?
+-------------------------------------------------------------
+
+Updates must be commutative, since they may arrive in different orders on different replicas. As long as Cassandra has a
+deterministic way to pick the winner (in a timestamp tie), the one selected is as valid as any other, and the specifics
+should be treated as an implementation detail. That said, in the case of a timestamp tie, Cassandra follows two rules:
+first, deletes take precedence over inserts/updates. Second, if there are two updates, the one with the lexically larger
+value is selected.
+
+.. _why-bootstrapping-stream-error:
+
+Why bootstrapping a new node fails with a "Stream failed" error?
+----------------------------------------------------------------
+
+Two main possibilities:
+
+#. the GC may be creating long pauses disrupting the streaming process
+#. compactions happening in the background hold streaming long enough that the TCP connection fails
+
+In the first case, regular GC tuning advices apply. In the second case, you need to set TCP keepalive to a lower value
+(default is very high on Linux). Try to just run the following::
+
+    $ sudo /sbin/sysctl -w net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_intvl=60 net.ipv4.tcp_keepalive_probes=5
+
+To make those settings permanent, add them to your ``/etc/sysctl.conf`` file.
+
+Note: `GCE <https://cloud.google.com/compute/>`__'s firewall will always interrupt TCP connections that are inactive for
+more than 10 min. Running the above command is highly recommended in that environment.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/doc/3.11.11/_sources/getting_started/configuring.rst.txt b/src/doc/3.11.11/_sources/getting_started/configuring.rst.txt
new file mode 100644
index 0000000..27fac78
--- /dev/null
+++ b/src/doc/3.11.11/_sources/getting_started/configuring.rst.txt
@@ -0,0 +1,67 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Configuring Cassandra
+---------------------
+
+For running Cassandra on a single node, the steps above are enough, you don't really need to change any configuration.
+However, when you deploy a cluster of nodes, or use clients that are not on the same host, then there are some
+parameters that must be changed.
+
+The Cassandra configuration files can be found in the ``conf`` directory of tarballs. For packages, the configuration
+files will be located in ``/etc/cassandra``.
+
+Main runtime properties
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Most of configuration in Cassandra is done via yaml properties that can be set in ``cassandra.yaml``. At a minimum you
+should consider setting the following properties:
+
+- ``cluster_name``: the name of your cluster.
+- ``seeds``: a comma separated list of the IP addresses of your cluster seeds.
+- ``storage_port``: you don't necessarily need to change this but make sure that there are no firewalls blocking this
+  port.
+- ``listen_address``: the IP address of your node, this is what allows other nodes to communicate with this node so it
+  is important that you change it. Alternatively, you can set ``listen_interface`` to tell Cassandra which interface to
+  use, and consecutively which address to use. Set only one, not both.
+- ``native_transport_port``: as for storage\_port, make sure this port is not blocked by firewalls as clients will
+  communicate with Cassandra on this port.
+
+Changing the location of directories
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The following yaml properties control the location of directories:
+
+- ``data_file_directories``: one or more directories where data files are located.
+- ``commitlog_directory``: the directory where commitlog files are located.
+- ``saved_caches_directory``: the directory where saved caches are located.
+- ``hints_directory``: the directory where hints are located.
+
+For performance reasons, if you have multiple disks, consider putting commitlog and data files on different disks.
+
+Environment variables
+^^^^^^^^^^^^^^^^^^^^^
+
+JVM-level settings such as heap size can be set in ``cassandra-env.sh``.  You can add any additional JVM command line
+argument to the ``JVM_OPTS`` environment variable; when Cassandra starts these arguments will be passed to the JVM.
+
+Logging
+^^^^^^^
+
+The logger in use is logback. You can change logging properties by editing ``logback.xml``. By default it will log at
+INFO level into a file called ``system.log`` and at debug level into a file called ``debug.log``. When running in the
+foreground, it will also log at INFO level to the console.
+
diff --git a/src/doc/3.11.11/_sources/getting_started/drivers.rst.txt b/src/doc/3.11.11/_sources/getting_started/drivers.rst.txt
new file mode 100644
index 0000000..baec823
--- /dev/null
+++ b/src/doc/3.11.11/_sources/getting_started/drivers.rst.txt
@@ -0,0 +1,107 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. _client-drivers:
+
+Client drivers
+--------------
+
+Here are known Cassandra client drivers organized by language. Before choosing a driver, you should verify the Cassandra
+version and functionality supported by a specific driver.
+
+Java
+^^^^
+
+- `Achilles <http://achilles.archinnov.info/>`__
+- `Astyanax <https://github.com/Netflix/astyanax/wiki/Getting-Started>`__
+- `Casser <https://github.com/noorq/casser>`__
+- `Datastax Java driver <https://github.com/datastax/java-driver>`__
+- `Kundera <https://github.com/impetus-opensource/Kundera>`__
+- `PlayORM <https://github.com/deanhiller/playorm>`__
+
+Python
+^^^^^^
+
+- `Datastax Python driver <https://github.com/datastax/python-driver>`__
+
+Ruby
+^^^^
+
+- `Datastax Ruby driver <https://github.com/datastax/ruby-driver>`__
+
+C# / .NET
+^^^^^^^^^
+
+- `Cassandra Sharp <https://github.com/pchalamet/cassandra-sharp>`__
+- `Datastax C# driver <https://github.com/datastax/csharp-driver>`__
+- `Fluent Cassandra <https://github.com/managedfusion/fluentcassandra>`__
+
+Nodejs
+^^^^^^
+
+- `Datastax Nodejs driver <https://github.com/datastax/nodejs-driver>`__
+- `Node-Cassandra-CQL <https://github.com/jorgebay/node-cassandra-cql>`__
+
+PHP
+^^^
+
+- `CQL \| PHP <http://code.google.com/a/apache-extras.org/p/cassandra-pdo>`__
+- `Datastax PHP driver <https://github.com/datastax/php-driver/>`__
+- `PHP-Cassandra <https://github.com/aparkhomenko/php-cassandra>`__
+- `PHP Library for Cassandra <http://evseevnn.github.io/php-cassandra-binary/>`__
+
+C++
+^^^
+
+- `Datastax C++ driver <https://github.com/datastax/cpp-driver>`__
+- `libQTCassandra <http://sourceforge.net/projects/libqtcassandra>`__
+
+Scala
+^^^^^
+
+- `Datastax Spark connector <https://github.com/datastax/spark-cassandra-connector>`__
+- `Phantom <https://github.com/newzly/phantom>`__
+- `Quill <https://github.com/getquill/quill>`__
+
+Clojure
+^^^^^^^
+
+- `Alia <https://github.com/mpenet/alia>`__
+- `Cassaforte <https://github.com/clojurewerkz/cassaforte>`__
+- `Hayt <https://github.com/mpenet/hayt>`__
+
+Erlang
+^^^^^^
+
+- `CQerl <https://github.com/matehat/cqerl>`__
+- `Erlcass <https://github.com/silviucpp/erlcass>`__
+
+Go
+^^
+
+- `CQLc <http://relops.com/cqlc/>`__
+- `Gocassa <https://github.com/hailocab/gocassa>`__
+- `GoCQL <https://github.com/gocql/gocql>`__
+
+Haskell
+^^^^^^^
+
+- `Cassy <https://github.com/ozataman/cassy>`__
+
+Rust
+^^^^
+
+- `Rust CQL <https://github.com/neich/rust-cql>`__
diff --git a/src/doc/3.11.11/_sources/getting_started/index.rst.txt b/src/doc/3.11.11/_sources/getting_started/index.rst.txt
new file mode 100644
index 0000000..4ca9c4d
--- /dev/null
+++ b/src/doc/3.11.11/_sources/getting_started/index.rst.txt
@@ -0,0 +1,33 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Getting Started
+===============
+
+This section covers how to get started using Apache Cassandra and should be the first thing to read if you are new to
+Cassandra.
+
+.. toctree::
+   :maxdepth: 2
+
+   installing
+   configuring
+   querying
+   drivers
+
+
diff --git a/src/doc/3.11.11/_sources/getting_started/installing.rst.txt b/src/doc/3.11.11/_sources/getting_started/installing.rst.txt
new file mode 100644
index 0000000..9be85e5
--- /dev/null
+++ b/src/doc/3.11.11/_sources/getting_started/installing.rst.txt
@@ -0,0 +1,106 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Installing Cassandra
+--------------------
+
+Prerequisites
+^^^^^^^^^^^^^
+
+- The latest version of Java 8, either the `Oracle Java Standard Edition 8
+  <http://www.oracle.com/technetwork/java/javase/downloads/index.html>`__ or `OpenJDK 8 <http://openjdk.java.net/>`__. To
+  verify that you have the correct version of java installed, type ``java -version``.
+
+- For using cqlsh, the latest version of `Python 2.7 <https://www.python.org/downloads/>`__. To verify that you have
+  the correct version of Python installed, type ``python --version``.
+
+Installation from binary tarball files
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Download the latest stable release from the `Apache Cassandra downloads website <http://cassandra.apache.org/download/>`__.
+
+- Untar the file somewhere, for example:
+
+::
+
+    tar -xvf apache-cassandra-3.6-bin.tar.gz cassandra
+
+The files will be extracted into ``apache-cassandra-3.6``, you need to substitute 3.6 with the release number that you
+have downloaded.
+
+- Optionally add ``apache-cassandra-3.6\bin`` to your path.
+- Start Cassandra in the foreground by invoking ``bin/cassandra -f`` from the command line. Press "Control-C" to stop
+  Cassandra. Start Cassandra in the background by invoking ``bin/cassandra`` from the command line. Invoke ``kill pid``
+  or ``pkill -f CassandraDaemon`` to stop Cassandra, where pid is the Cassandra process id, which you can find for
+  example by invoking ``pgrep -f CassandraDaemon``.
+- Verify that Cassandra is running by invoking ``bin/nodetool status`` from the command line.
+- Configuration files are located in the ``conf`` sub-directory.
+- Since Cassandra 2.1, log and data directories are located in the ``logs`` and ``data`` sub-directories respectively.
+  Older versions defaulted to ``/var/log/cassandra`` and ``/var/lib/cassandra``. Due to this, it is necessary to either
+  start Cassandra with root privileges or change ``conf/cassandra.yaml`` to use directories owned by the current user,
+  as explained below in the section on changing the location of directories.
+
+Installation from Debian packages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Add the Apache repository of Cassandra to ``/etc/apt/sources.list.d/cassandra.sources.list``, for example for version
+  3.6:
+
+::
+
+    echo "deb https://downloads.apache.org/cassandra/debian 36x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
+
+- Add the Apache Cassandra repository keys:
+
+::
+
+    curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
+
+- Update the repositories:
+
+::
+
+    sudo apt-get update
+
+- If you encounter this error:
+
+::
+
+    GPG error: http://www.apache.org 36x InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A278B781FE4B2BDA
+
+Then add the public key A278B781FE4B2BDA as follows:
+
+::
+
+    sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-key A278B781FE4B2BDA
+
+and repeat ``sudo apt-get update``. The actual key may be different, you get it from the error message itself. For a
+full list of Apache contributors public keys, you can refer to `this link <https://downloads.apache.org/cassandra/KEYS>`__.
+
+- Install Cassandra:
+
+::
+
+    sudo apt-get install cassandra
+
+- You can start Cassandra with ``sudo service cassandra start`` and stop it with ``sudo service cassandra stop``.
+  However, normally the service will start automatically. For this reason be sure to stop it if you need to make any
+  configuration changes.
+- Verify that Cassandra is running by invoking ``nodetool status`` from the command line.
+- The default location of configuration files is ``/etc/cassandra``.
+- The default location of log and data directories is ``/var/log/cassandra/`` and ``/var/lib/cassandra``.
diff --git a/src/doc/3.11.11/_sources/getting_started/querying.rst.txt b/src/doc/3.11.11/_sources/getting_started/querying.rst.txt
new file mode 100644
index 0000000..55b162b
--- /dev/null
+++ b/src/doc/3.11.11/_sources/getting_started/querying.rst.txt
@@ -0,0 +1,52 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Inserting and querying
+----------------------
+
+The API to Cassandra is :ref:`CQL <cql>`, the Cassandra Query Language. To use CQL, you will need to connect to the
+cluster, which can be done:
+
+- either using cqlsh,
+- or through a client driver for Cassandra.
+
+CQLSH
+^^^^^
+
+cqlsh is a command line shell for interacting with Cassandra through CQL. It is shipped with every Cassandra package,
+and can be found in the bin/ directory alongside the cassandra executable. It connects to the single node specified on
+the command line. For example::
+
+    $ bin/cqlsh localhost
+    Connected to Test Cluster at localhost:9042.
+    [cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
+    Use HELP for help.
+    cqlsh> SELECT cluster_name, listen_address FROM system.local;
+
+     cluster_name | listen_address
+    --------------+----------------
+     Test Cluster |      127.0.0.1
+
+    (1 rows)
+    cqlsh>
+
+See the :ref:`cqlsh section <cqlsh>` for full documentation.
+
+Client drivers
+^^^^^^^^^^^^^^
+
+A lot of client drivers are provided by the Community and a list of known drivers is provided in :ref:`the next section
+<client-drivers>`. You should refer to the documentation of each drivers for more information on how to use them.
diff --git a/src/doc/3.11.11/_sources/index.rst.txt b/src/doc/3.11.11/_sources/index.rst.txt
new file mode 100644
index 0000000..562603d
--- /dev/null
+++ b/src/doc/3.11.11/_sources/index.rst.txt
@@ -0,0 +1,41 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Welcome to Apache Cassandra's documentation!
+============================================
+
+This is the official documentation for `Apache Cassandra <http://cassandra.apache.org>`__ |version|.  If you would like
+to contribute to this documentation, you are welcome to do so by submitting your contribution like any other patch
+following `these instructions <https://wiki.apache.org/cassandra/HowToContribute>`__.
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   getting_started/index
+   architecture/index
+   data_modeling/index
+   cql/index
+   configuration/index
+   operating/index
+   tools/index
+   troubleshooting/index
+   development/index
+   faq/index
+
+   bugs
+   contactus
diff --git a/src/doc/3.11.11/_sources/operating/backups.rst.txt b/src/doc/3.11.11/_sources/operating/backups.rst.txt
new file mode 100644
index 0000000..c071e83
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/backups.rst.txt
@@ -0,0 +1,22 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Backups
+=======
+
+.. todo:: TODO
diff --git a/src/doc/3.11.11/_sources/operating/bloom_filters.rst.txt b/src/doc/3.11.11/_sources/operating/bloom_filters.rst.txt
new file mode 100644
index 0000000..0b37c18
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/bloom_filters.rst.txt
@@ -0,0 +1,65 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Bloom Filters
+-------------
+
+In the read path, Cassandra merges data on disk (in SSTables) with data in RAM (in memtables). To avoid checking every
+SSTable data file for the partition being requested, Cassandra employs a data structure known as a bloom filter.
+
+Bloom filters are a probabilistic data structure that allows Cassandra to determine one of two possible states: - The
+data definitely does not exist in the given file, or - The data probably exists in the given file.
+
+While bloom filters can not guarantee that the data exists in a given SSTable, bloom filters can be made more accurate
+by allowing them to consume more RAM. Operators have the opportunity to tune this behavior per table by adjusting the
+the ``bloom_filter_fp_chance`` to a float between 0 and 1.
+
+The default value for ``bloom_filter_fp_chance`` is 0.1 for tables using LeveledCompactionStrategy and 0.01 for all
+other cases.
+
+Bloom filters are stored in RAM, but are stored offheap, so operators should not consider bloom filters when selecting
+the maximum heap size.  As accuracy improves (as the ``bloom_filter_fp_chance`` gets closer to 0), memory usage
+increases non-linearly - the bloom filter for ``bloom_filter_fp_chance = 0.01`` will require about three times as much
+memory as the same table with ``bloom_filter_fp_chance = 0.1``.
+
+Typical values for ``bloom_filter_fp_chance`` are usually between 0.01 (1%) to 0.1 (10%) false-positive chance, where
+Cassandra may scan an SSTable for a row, only to find that it does not exist on the disk. The parameter should be tuned
+by use case:
+
+- Users with more RAM and slower disks may benefit from setting the ``bloom_filter_fp_chance`` to a numerically lower
+  number (such as 0.01) to avoid excess IO operations
+- Users with less RAM, more dense nodes, or very fast disks may tolerate a higher ``bloom_filter_fp_chance`` in order to
+  save RAM at the expense of excess IO operations
+- In workloads that rarely read, or that only perform reads by scanning the entire data set (such as analytics
+  workloads), setting the ``bloom_filter_fp_chance`` to a much higher number is acceptable.
+
+Changing
+^^^^^^^^
+
+The bloom filter false positive chance is visible in the ``DESCRIBE TABLE`` output as the field
+``bloom_filter_fp_chance``. Operators can change the value with an ``ALTER TABLE`` statement:
+::
+
+    ALTER TABLE keyspace.table WITH bloom_filter_fp_chance=0.01
+
+Operators should be aware, however, that this change is not immediate: the bloom filter is calculated when the file is
+written, and persisted on disk as the Filter component of the SSTable. Upon issuing an ``ALTER TABLE`` statement, new
+files on disk will be written with the new ``bloom_filter_fp_chance``, but existing sstables will not be modified until
+they are compacted - if an operator needs a change to ``bloom_filter_fp_chance`` to take effect, they can trigger an
+SSTable rewrite using ``nodetool scrub`` or ``nodetool upgradesstables -a``, both of which will rebuild the sstables on
+disk, regenerating the bloom filters in the progress.
diff --git a/src/doc/3.11.11/_sources/operating/bulk_loading.rst.txt b/src/doc/3.11.11/_sources/operating/bulk_loading.rst.txt
new file mode 100644
index 0000000..c8224d5
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/bulk_loading.rst.txt
@@ -0,0 +1,24 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+.. _bulk-loading:
+
+Bulk Loading
+------------
+
+.. todo:: TODO
diff --git a/src/doc/3.11.11/_sources/operating/cdc.rst.txt b/src/doc/3.11.11/_sources/operating/cdc.rst.txt
new file mode 100644
index 0000000..192f62a
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/cdc.rst.txt
@@ -0,0 +1,89 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Change Data Capture
+-------------------
+
+Overview
+^^^^^^^^
+
+Change data capture (CDC) provides a mechanism to flag specific tables for archival as well as rejecting writes to those
+tables once a configurable size-on-disk for the combined flushed and unflushed CDC-log is reached. An operator can
+enable CDC on a table by setting the table property ``cdc=true`` (either when :ref:`creating the table
+<create-table-statement>` or :ref:`altering it <alter-table-statement>`), after which any CommitLogSegments containing
+data for a CDC-enabled table are moved to the directory specified in ``cassandra.yaml`` on segment discard. A threshold
+of total disk space allowed is specified in the yaml at which time newly allocated CommitLogSegments will not allow CDC
+data until a consumer parses and removes data from the destination archival directory.
+
+Configuration
+^^^^^^^^^^^^^
+
+Enabling or disable CDC on a table
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+CDC is enable or disable through the `cdc` table property, for instance::
+
+    CREATE TABLE foo (a int, b text, PRIMARY KEY(a)) WITH cdc=true;
+
+    ALTER TABLE foo WITH cdc=true;
+
+    ALTER TABLE foo WITH cdc=false;
+
+cassandra.yaml parameters
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following `cassandra.yaml` are available for CDC:
+
+``cdc_enabled`` (default: false)
+   Enable or disable CDC operations node-wide.
+``cdc_raw_directory`` (default: ``$CASSANDRA_HOME/data/cdc_raw``)
+   Destination for CommitLogSegments to be moved after all corresponding memtables are flushed.
+``cdc_free_space_in_mb``: (default: min of 4096 and 1/8th volume space)
+   Calculated as sum of all active CommitLogSegments that permit CDC + all flushed CDC segments in
+   ``cdc_raw_directory``.
+``cdc_free_space_check_interval_ms`` (default: 250)
+   When at capacity, we limit the frequency with which we re-calculate the space taken up by ``cdc_raw_directory`` to
+   prevent burning CPU cycles unnecessarily. Default is to check 4 times per second.
+
+.. _reading-commitlogsegments:
+
+Reading CommitLogSegments
+^^^^^^^^^^^^^^^^^^^^^^^^^
+This implementation included a refactor of CommitLogReplayer into `CommitLogReader.java
+<https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java>`__.
+Usage is `fairly straightforward
+<https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java#L132-L140>`__
+with a `variety of signatures
+<https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java#L71-L103>`__
+available for use. In order to handle mutations read from disk, implement `CommitLogReadHandler
+<https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReadHandler.java>`__.
+
+Warnings
+^^^^^^^^
+
+**Do not enable CDC without some kind of consumption process in-place.**
+
+The initial implementation of Change Data Capture does not include a parser (see :ref:`reading-commitlogsegments` above)
+so, if CDC is enabled on a node and then on a table, the ``cdc_free_space_in_mb`` will fill up and then writes to
+CDC-enabled tables will be rejected unless some consumption process is in place.
+
+Further Reading
+^^^^^^^^^^^^^^^
+
+- `Design doc <https://docs.google.com/document/d/1ZxCWYkeZTquxsvf5hdPc0fiUnUHna8POvgt6TIzML4Y/edit>`__
+- `JIRA ticket <https://issues.apache.org/jira/browse/CASSANDRA-8844>`__
diff --git a/src/doc/3.11.11/_sources/operating/compaction.rst.txt b/src/doc/3.11.11/_sources/operating/compaction.rst.txt
new file mode 100644
index 0000000..0f39000
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/compaction.rst.txt
@@ -0,0 +1,442 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+.. _compaction:
+
+Compaction
+----------
+
+Types of compaction
+^^^^^^^^^^^^^^^^^^^
+
+The concept of compaction is used for different kinds of operations in Cassandra, the common thing about these
+operations is that it takes one or more sstables and output new sstables. The types of compactions are;
+
+Minor compaction
+    triggered automatically in Cassandra.
+Major compaction
+    a user executes a compaction over all sstables on the node.
+User defined compaction
+    a user triggers a compaction on a given set of sstables.
+Scrub
+    try to fix any broken sstables. This can actually remove valid data if that data is corrupted, if that happens you
+    will need to run a full repair on the node.
+Upgradesstables
+    upgrade sstables to the latest version. Run this after upgrading to a new major version.
+Cleanup
+    remove any ranges this node does not own anymore, typically triggered on neighbouring nodes after a node has been
+    bootstrapped since that node will take ownership of some ranges from those nodes.
+Secondary index rebuild
+    rebuild the secondary indexes on the node.
+Anticompaction
+    after repair the ranges that were actually repaired are split out of the sstables that existed when repair started.
+Sub range compaction
+    It is possible to only compact a given sub range - this could be useful if you know a token that has been
+    misbehaving - either gathering many updates or many deletes. (``nodetool compact -st x -et y``) will pick
+    all sstables containing the range between x and y and issue a compaction for those sstables. For STCS this will
+    most likely include all sstables but with LCS it can issue the compaction for a subset of the sstables. With LCS
+    the resulting sstable will end up in L0.
+
+When is a minor compaction triggered?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+#  When an sstable is added to the node through flushing/streaming etc.
+#  When autocompaction is enabled after being disabled (``nodetool enableautocompaction``)
+#  When compaction adds new sstables.
+#  A check for new minor compactions every 5 minutes.
+
+Merging sstables
+^^^^^^^^^^^^^^^^
+
+Compaction is about merging sstables, since partitions in sstables are sorted based on the hash of the partition key it
+is possible to efficiently merge separate sstables. Content of each partition is also sorted so each partition can be
+merged efficiently.
+
+Tombstones and Garbage Collection (GC) Grace
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Why Tombstones
+~~~~~~~~~~~~~~
+
+When a delete request is received by Cassandra it does not actually remove the data from the underlying store. Instead
+it writes a special piece of data known as a tombstone. The Tombstone represents the delete and causes all values which
+occurred before the tombstone to not appear in queries to the database. This approach is used instead of removing values
+because of the distributed nature of Cassandra.
+
+Deletes without tombstones
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Imagine a three node cluster which has the value [A] replicated to every node.::
+
+    [A], [A], [A]
+
+If one of the nodes fails and and our delete operation only removes existing values we can end up with a cluster that
+looks like::
+
+    [], [], [A]
+
+Then a repair operation would replace the value of [A] back onto the two
+nodes which are missing the value.::
+
+    [A], [A], [A]
+
+This would cause our data to be resurrected even though it had been
+deleted.
+
+Deletes with Tombstones
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Starting again with a three node cluster which has the value [A] replicated to every node.::
+
+    [A], [A], [A]
+
+If instead of removing data we add a tombstone record, our single node failure situation will look like this.::
+
+    [A, Tombstone[A]], [A, Tombstone[A]], [A]
+
+Now when we issue a repair the Tombstone will be copied to the replica, rather than the deleted data being
+resurrected.::
+
+    [A, Tombstone[A]], [A, Tombstone[A]], [A, Tombstone[A]]
+
+Our repair operation will correctly put the state of the system to what we expect with the record [A] marked as deleted
+on all nodes. This does mean we will end up accruing Tombstones which will permanently accumulate disk space. To avoid
+keeping tombstones forever we have a parameter known as ``gc_grace_seconds`` for every table in Cassandra.
+
+The gc_grace_seconds parameter and Tombstone Removal
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The table level ``gc_grace_seconds`` parameter controls how long Cassandra will retain tombstones through compaction
+events before finally removing them. This duration should directly reflect the amount of time a user expects to allow
+before recovering a failed node. After ``gc_grace_seconds`` has expired the tombstone may be removed (meaning there will
+no longer be any record that a certain piece of data was deleted), but as a tombstone can live in one sstable and the
+data it covers in another, a compaction must also include both sstable for a tombstone to be removed. More precisely, to
+be able to drop an actual tombstone the following needs to be true;
+
+- The tombstone must be older than ``gc_grace_seconds``
+- If partition X contains the tombstone, the sstable containing the partition plus all sstables containing data older
+  than the tombstone containing X must be included in the same compaction. We don't need to care if the partition is in
+  an sstable if we can guarantee that all data in that sstable is newer than the tombstone. If the tombstone is older
+  than the data it cannot shadow that data.
+- If the option ``only_purge_repaired_tombstones`` is enabled, tombstones are only removed if the data has also been
+  repaired.
+
+If a node remains down or disconnected for longer than ``gc_grace_seconds`` it's deleted data will be repaired back to
+the other nodes and re-appear in the cluster. This is basically the same as in the "Deletes without Tombstones" section.
+Note that tombstones will not be removed until a compaction event even if ``gc_grace_seconds`` has elapsed.
+
+The default value for ``gc_grace_seconds`` is 864000 which is equivalent to 10 days. This can be set when creating or
+altering a table using ``WITH gc_grace_seconds``.
+
+TTL
+^^^
+
+Data in Cassandra can have an additional property called time to live - this is used to automatically drop data that has
+expired once the time is reached. Once the TTL has expired the data is converted to a tombstone which stays around for
+at least ``gc_grace_seconds``. Note that if you mix data with TTL and data without TTL (or just different length of the
+TTL) Cassandra will have a hard time dropping the tombstones created since the partition might span many sstables and
+not all are compacted at once.
+
+Fully expired sstables
+^^^^^^^^^^^^^^^^^^^^^^
+
+If an sstable contains only tombstones and it is guaranteed that that sstable is not shadowing data in any other sstable
+compaction can drop that sstable. If you see sstables with only tombstones (note that TTL:ed data is considered
+tombstones once the time to live has expired) but it is not being dropped by compaction, it is likely that other
+sstables contain older data. There is a tool called ``sstableexpiredblockers`` that will list which sstables are
+droppable and which are blocking them from being dropped. This is especially useful for time series compaction with
+``TimeWindowCompactionStrategy`` (and the deprecated ``DateTieredCompactionStrategy``).
+
+Repaired/unrepaired data
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+With incremental repairs Cassandra must keep track of what data is repaired and what data is unrepaired. With
+anticompaction repaired data is split out into repaired and unrepaired sstables. To avoid mixing up the data again
+separate compaction strategy instances are run on the two sets of data, each instance only knowing about either the
+repaired or the unrepaired sstables. This means that if you only run incremental repair once and then never again, you
+might have very old data in the repaired sstables that block compaction from dropping tombstones in the unrepaired
+(probably newer) sstables.
+
+Data directories
+^^^^^^^^^^^^^^^^
+
+Since tombstones and data can live in different sstables it is important to realize that losing an sstable might lead to
+data becoming live again - the most common way of losing sstables is to have a hard drive break down. To avoid making
+data live tombstones and actual data are always in the same data directory. This way, if a disk is lost, all versions of
+a partition are lost and no data can get undeleted. To achieve this a compaction strategy instance per data directory is
+run in addition to the compaction strategy instances containing repaired/unrepaired data, this means that if you have 4
+data directories there will be 8 compaction strategy instances running. This has a few more benefits than just avoiding
+data getting undeleted:
+
+- It is possible to run more compactions in parallel - leveled compaction will have several totally separate levelings
+  and each one can run compactions independently from the others.
+- Users can backup and restore a single data directory.
+- Note though that currently all data directories are considered equal, so if you have a tiny disk and a big disk
+  backing two data directories, the big one will be limited the by the small one. One work around to this is to create
+  more data directories backed by the big disk.
+
+Single sstable tombstone compaction
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+When an sstable is written a histogram with the tombstone expiry times is created and this is used to try to find
+sstables with very many tombstones and run single sstable compaction on that sstable in hope of being able to drop
+tombstones in that sstable. Before starting this it is also checked how likely it is that any tombstones will actually
+will be able to be dropped how much this sstable overlaps with other sstables. To avoid most of these checks the
+compaction option ``unchecked_tombstone_compaction`` can be enabled.
+
+.. _compaction-options:
+
+Common options
+^^^^^^^^^^^^^^
+
+There is a number of common options for all the compaction strategies;
+
+``enabled`` (default: true)
+    Whether minor compactions should run. Note that you can have 'enabled': true as a compaction option and then do
+    'nodetool enableautocompaction' to start running compactions.
+``tombstone_threshold`` (default: 0.2)
+    How much of the sstable should be tombstones for us to consider doing a single sstable compaction of that sstable.
+``tombstone_compaction_interval`` (default: 86400s (1 day))
+    Since it might not be possible to drop any tombstones when doing a single sstable compaction we need to make sure
+    that one sstable is not constantly getting recompacted - this option states how often we should try for a given
+    sstable. 
+``log_all`` (default: false)
+    New detailed compaction logging, see :ref:`below <detailed-compaction-logging>`.
+``unchecked_tombstone_compaction`` (default: false)
+    The single sstable compaction has quite strict checks for whether it should be started, this option disables those
+    checks and for some usecases this might be needed.  Note that this does not change anything for the actual
+    compaction, tombstones are only dropped if it is safe to do so - it might just rewrite an sstable without being able
+    to drop any tombstones.
+``only_purge_repaired_tombstone`` (default: false)
+    Option to enable the extra safety of making sure that tombstones are only dropped if the data has been repaired.
+``min_threshold`` (default: 4)
+    Lower limit of number of sstables before a compaction is triggered. Not used for ``LeveledCompactionStrategy``.
+``max_threshold`` (default: 32)
+    Upper limit of number of sstables before a compaction is triggered. Not used for ``LeveledCompactionStrategy``.
+
+Further, see the section on each strategy for specific additional options.
+
+Compaction nodetool commands
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The :ref:`nodetool <nodetool>` utility provides a number of commands related to compaction:
+
+``enableautocompaction``
+    Enable compaction.
+``disableautocompaction``
+    Disable compaction.
+``setcompactionthroughput``
+    How fast compaction should run at most - defaults to 16MB/s, but note that it is likely not possible to reach this
+    throughput.
+``compactionstats``
+    Statistics about current and pending compactions.
+``compactionhistory``
+    List details about the last compactions.
+``setcompactionthreshold``
+    Set the min/max sstable count for when to trigger compaction, defaults to 4/32.
+
+Switching the compaction strategy and options using JMX
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+It is possible to switch compaction strategies and its options on just a single node using JMX, this is a great way to
+experiment with settings without affecting the whole cluster. The mbean is::
+
+    org.apache.cassandra.db:type=ColumnFamilies,keyspace=<keyspace_name>,columnfamily=<table_name>
+
+and the attribute to change is ``CompactionParameters`` or ``CompactionParametersJson`` if you use jconsole or jmc. The
+syntax for the json version is the same as you would use in an :ref:`ALTER TABLE <alter-table-statement>` statement -
+for example::
+
+    { 'class': 'LeveledCompactionStrategy', 'sstable_size_in_mb': 123, 'fanout_size': 10}
+
+The setting is kept until someone executes an :ref:`ALTER TABLE <alter-table-statement>` that touches the compaction
+settings or restarts the node.
+
+.. _detailed-compaction-logging:
+
+More detailed compaction logging
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Enable with the compaction option ``log_all`` and a more detailed compaction log file will be produced in your log
+directory.
+
+.. _STCS:
+
+Size Tiered Compaction Strategy
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The basic idea of ``SizeTieredCompactionStrategy`` (STCS) is to merge sstables of approximately the same size. All
+sstables are put in different buckets depending on their size. An sstable is added to the bucket if size of the sstable
+is within ``bucket_low`` and ``bucket_high`` of the current average size of the sstables already in the bucket. This
+will create several buckets and the most interesting of those buckets will be compacted. The most interesting one is
+decided by figuring out which bucket's sstables takes the most reads.
+
+Major compaction
+~~~~~~~~~~~~~~~~
+
+When running a major compaction with STCS you will end up with two sstables per data directory (one for repaired data
+and one for unrepaired data). There is also an option (-s) to do a major compaction that splits the output into several
+sstables. The sizes of the sstables are approximately 50%, 25%, 12.5%... of the total size.
+
+.. _stcs-options:
+
+STCS options
+~~~~~~~~~~~~
+
+``min_sstable_size`` (default: 50MB)
+    Sstables smaller than this are put in the same bucket.
+``bucket_low`` (default: 0.5)
+    How much smaller than the average size of a bucket a sstable should be before not being included in the bucket. That
+    is, if ``bucket_low * avg_bucket_size < sstable_size`` (and the ``bucket_high`` condition holds, see below), then
+    the sstable is added to the bucket.
+``bucket_high`` (default: 1.5)
+    How much bigger than the average size of a bucket a sstable should be before not being included in the bucket. That
+    is, if ``sstable_size < bucket_high * avg_bucket_size`` (and the ``bucket_low`` condition holds, see above), then
+    the sstable is added to the bucket.
+
+Defragmentation
+~~~~~~~~~~~~~~~
+
+Defragmentation is done when many sstables are touched during a read.  The result of the read is put in to the memtable
+so that the next read will not have to touch as many sstables. This can cause writes on a read-only-cluster.
+
+.. _LCS:
+
+Leveled Compaction Strategy
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The idea of ``LeveledCompactionStrategy`` (LCS) is that all sstables are put into different levels where we guarantee
+that no overlapping sstables are in the same level. By overlapping we mean that the first/last token of a single sstable
+are never overlapping with other sstables. This means that for a SELECT we will only have to look for the partition key
+in a single sstable per level. Each level is 10x the size of the previous one and each sstable is 160MB by default. L0
+is where sstables are streamed/flushed - no overlap guarantees are given here.
+
+When picking compaction candidates we have to make sure that the compaction does not create overlap in the target level.
+This is done by always including all overlapping sstables in the next level. For example if we select an sstable in L3,
+we need to guarantee that we pick all overlapping sstables in L4 and make sure that no currently ongoing compactions
+will create overlap if we start that compaction. We can start many parallel compactions in a level if we guarantee that
+we wont create overlap. For L0 -> L1 compactions we almost always need to include all L1 sstables since most L0 sstables
+cover the full range. We also can't compact all L0 sstables with all L1 sstables in a single compaction since that can
+use too much memory.
+
+When deciding which level to compact LCS checks the higher levels first (with LCS, a "higher" level is one with a higher
+number, L0 being the lowest one) and if the level is behind a compaction will be started in that level.
+
+Major compaction
+~~~~~~~~~~~~~~~~
+
+It is possible to do a major compaction with LCS - it will currently start by filling out L1 and then once L1 is full,
+it continues with L2 etc. This is sub optimal and will change to create all the sstables in a high level instead,
+CASSANDRA-11817.
+
+Bootstrapping
+~~~~~~~~~~~~~
+
+During bootstrap sstables are streamed from other nodes. The level of the remote sstable is kept to avoid many
+compactions after the bootstrap is done. During bootstrap the new node also takes writes while it is streaming the data
+from a remote node - these writes are flushed to L0 like all other writes and to avoid those sstables blocking the
+remote sstables from going to the correct level, we only do STCS in L0 until the bootstrap is done.
+
+STCS in L0
+~~~~~~~~~~
+
+If LCS gets very many L0 sstables reads are going to hit all (or most) of the L0 sstables since they are likely to be
+overlapping. To more quickly remedy this LCS does STCS compactions in L0 if there are more than 32 sstables there. This
+should improve read performance more quickly compared to letting LCS do its L0 -> L1 compactions. If you keep getting
+too many sstables in L0 it is likely that LCS is not the best fit for your workload and STCS could work out better.
+
+Starved sstables
+~~~~~~~~~~~~~~~~
+
+If a node ends up with a leveling where there are a few very high level sstables that are not getting compacted they
+might make it impossible for lower levels to drop tombstones etc. For example, if there are sstables in L6 but there is
+only enough data to actually get a L4 on the node the left over sstables in L6 will get starved and not compacted.  This
+can happen if a user changes sstable\_size\_in\_mb from 5MB to 160MB for example. To avoid this LCS tries to include
+those starved high level sstables in other compactions if there has been 25 compaction rounds where the highest level
+has not been involved.
+
+.. _lcs-options:
+
+LCS options
+~~~~~~~~~~~
+
+``sstable_size_in_mb`` (default: 160MB)
+    The target compressed (if using compression) sstable size - the sstables can end up being larger if there are very
+    large partitions on the node.
+
+``fanout_size`` (default: 10)
+    The target size of levels increases by this fanout_size multiplier. You can reduce the space amplification by tuning
+    this option.
+
+LCS also support the ``cassandra.disable_stcs_in_l0`` startup option (``-Dcassandra.disable_stcs_in_l0=true``) to avoid
+doing STCS in L0.
+
+.. _TWCS:
+
+Time Window CompactionStrategy
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+``TimeWindowCompactionStrategy`` (TWCS) is designed specifically for workloads where it's beneficial to have data on
+disk grouped by the timestamp of the data, a common goal when the workload is time-series in nature or when all data is
+written with a TTL. In an expiring/TTL workload, the contents of an entire SSTable likely expire at approximately the
+same time, allowing them to be dropped completely, and space reclaimed much more reliably than when using
+``SizeTieredCompactionStrategy`` or ``LeveledCompactionStrategy``. The basic concept is that
+``TimeWindowCompactionStrategy`` will create 1 sstable per file for a given window, where a window is simply calculated
+as the combination of two primary options:
+
+``compaction_window_unit`` (default: DAYS)
+    A Java TimeUnit (MINUTES, HOURS, or DAYS).
+``compaction_window_size`` (default: 1)
+    The number of units that make up a window.
+
+Taken together, the operator can specify windows of virtually any size, and `TimeWindowCompactionStrategy` will work to
+create a single sstable for writes within that window. For efficiency during writing, the newest window will be
+compacted using `SizeTieredCompactionStrategy`.
+
+Ideally, operators should select a ``compaction_window_unit`` and ``compaction_window_size`` pair that produces
+approximately 20-30 windows - if writing with a 90 day TTL, for example, a 3 Day window would be a reasonable choice
+(``'compaction_window_unit':'DAYS','compaction_window_size':3``).
+
+TimeWindowCompactionStrategy Operational Concerns
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The primary motivation for TWCS is to separate data on disk by timestamp and to allow fully expired SSTables to drop
+more efficiently. One potential way this optimal behavior can be subverted is if data is written to SSTables out of
+order, with new data and old data in the same SSTable. Out of order data can appear in two ways:
+
+- If the user mixes old data and new data in the traditional write path, the data will be comingled in the memtables
+  and flushed into the same SSTable, where it will remain comingled.
+- If the user's read requests for old data cause read repairs that pull old data into the current memtable, that data
+  will be comingled and flushed into the same SSTable.
+
+While TWCS tries to minimize the impact of comingled data, users should attempt to avoid this behavior.  Specifically,
+users should avoid queries that explicitly set the timestamp via CQL ``USING TIMESTAMP``. Additionally, users should run
+frequent repairs (which streams data in such a way that it does not become comingled), and disable background read
+repair by setting the table's ``read_repair_chance`` and ``dclocal_read_repair_chance`` to 0.
+
+Changing TimeWindowCompactionStrategy Options
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Operators wishing to enable ``TimeWindowCompactionStrategy`` on existing data should consider running a major compaction
+first, placing all existing data into a single (old) window. Subsequent newer writes will then create typical SSTables
+as expected.
+
+Operators wishing to change ``compaction_window_unit`` or ``compaction_window_size`` can do so, but may trigger
+additional compactions as adjacent windows are joined together. If the window size is decrease d (for example, from 24
+hours to 12 hours), then the existing SSTables will not be modified - TWCS can not split existing SSTables into multiple
+windows.
diff --git a/src/doc/3.11.11/_sources/operating/compression.rst.txt b/src/doc/3.11.11/_sources/operating/compression.rst.txt
new file mode 100644
index 0000000..01da34b
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/compression.rst.txt
@@ -0,0 +1,94 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Compression
+-----------
+
+Cassandra offers operators the ability to configure compression on a per-table basis. Compression reduces the size of
+data on disk by compressing the SSTable in user-configurable compression ``chunk_length_in_kb``. Because Cassandra
+SSTables are immutable, the CPU cost of compressing is only necessary when the SSTable is written - subsequent updates
+to data will land in different SSTables, so Cassandra will not need to decompress, overwrite, and recompress data when
+UPDATE commands are issued. On reads, Cassandra will locate the relevant compressed chunks on disk, decompress the full
+chunk, and then proceed with the remainder of the read path (merging data from disks and memtables, read repair, and so
+on).
+
+Configuring Compression
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Compression is configured on a per-table basis as an optional argument to ``CREATE TABLE`` or ``ALTER TABLE``. By
+default, three options are relevant:
+
+- ``class`` specifies the compression class - Cassandra provides three classes (``LZ4Compressor``,
+  ``SnappyCompressor``, and ``DeflateCompressor`` ). The default is ``LZ4Compressor``.
+- ``chunk_length_in_kb`` specifies the number of kilobytes of data per compression chunk. The default is 64KB.
+- ``crc_check_chance`` determines how likely Cassandra is to verify the checksum on each compression chunk during
+  reads. The default is 1.0.
+
+Users can set compression using the following syntax:
+
+::
+
+    CREATE TABLE keyspace.table (id int PRIMARY KEY) WITH compression = {'class': 'LZ4Compressor'};
+
+Or
+
+::
+
+    ALTER TABLE keyspace.table WITH compression = {'class': 'SnappyCompressor', 'chunk_length_in_kb': 128, 'crc_check_chance': 0.5};
+
+Once enabled, compression can be disabled with ``ALTER TABLE`` setting ``enabled`` to ``false``:
+
+::
+
+    ALTER TABLE keyspace.table WITH compression = {'enabled':'false'};
+
+Operators should be aware, however, that changing compression is not immediate. The data is compressed when the SSTable
+is written, and as SSTables are immutable, the compression will not be modified until the table is compacted. Upon
+issuing a change to the compression options via ``ALTER TABLE``, the existing SSTables will not be modified until they
+are compacted - if an operator needs compression changes to take effect immediately, the operator can trigger an SSTable
+rewrite using ``nodetool scrub`` or ``nodetool upgradesstables -a``, both of which will rebuild the SSTables on disk,
+re-compressing the data in the process.
+
+Benefits and Uses
+^^^^^^^^^^^^^^^^^
+
+Compression's primary benefit is that it reduces the amount of data written to disk. Not only does the reduced size save
+in storage requirements, it often increases read and write throughput, as the CPU overhead of compressing data is faster
+than the time it would take to read or write the larger volume of uncompressed data from disk.
+
+Compression is most useful in tables comprised of many rows, where the rows are similar in nature. Tables containing
+similar text columns (such as repeated JSON blobs) often compress very well.
+
+Operational Impact
+^^^^^^^^^^^^^^^^^^
+
+- Compression metadata is stored off-heap and scales with data on disk.  This often requires 1-3GB of off-heap RAM per
+  terabyte of data on disk, though the exact usage varies with ``chunk_length_in_kb`` and compression ratios.
+
+- Streaming operations involve compressing and decompressing data on compressed tables - in some code paths (such as
+  non-vnode bootstrap), the CPU overhead of compression can be a limiting factor.
+
+- The compression path checksums data to ensure correctness - while the traditional Cassandra read path does not have a
+  way to ensure correctness of data on disk, compressed tables allow the user to set ``crc_check_chance`` (a float from
+  0.0 to 1.0) to allow Cassandra to probabilistically validate chunks on read to verify bits on disk are not corrupt.
+
+Advanced Use
+^^^^^^^^^^^^
+
+Advanced users can provide their own compression class by implementing the interface at
+``org.apache.cassandra.io.compress.ICompressor``.
diff --git a/src/doc/3.11.11/_sources/operating/hardware.rst.txt b/src/doc/3.11.11/_sources/operating/hardware.rst.txt
new file mode 100644
index 0000000..ad3aa8d
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/hardware.rst.txt
@@ -0,0 +1,87 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Hardware Choices
+----------------
+
+Like most databases, Cassandra throughput improves with more CPU cores, more RAM, and faster disks. While Cassandra can
+be made to run on small servers for testing or development environments (including Raspberry Pis), a minimal production
+server requires at least 2 cores, and at least 8GB of RAM. Typical production servers have 8 or more cores and at least
+32GB of RAM.
+
+CPU
+^^^
+Cassandra is highly concurrent, handling many simultaneous requests (both read and write) using multiple threads running
+on as many CPU cores as possible. The Cassandra write path tends to be heavily optimized (writing to the commitlog and
+then inserting the data into the memtable), so writes, in particular, tend to be CPU bound. Consequently, adding
+additional CPU cores often increases throughput of both reads and writes.
+
+Memory
+^^^^^^
+Cassandra runs within a Java VM, which will pre-allocate a fixed size heap (java's Xmx system parameter). In addition to
+the heap, Cassandra will use significant amounts of RAM offheap for compression metadata, bloom filters, row, key, and
+counter caches, and an in process page cache. Finally, Cassandra will take advantage of the operating system's page
+cache, storing recently accessed portions files in RAM for rapid re-use.
+
+For optimal performance, operators should benchmark and tune their clusters based on their individual workload. However,
+basic guidelines suggest:
+
+-  ECC RAM should always be used, as Cassandra has few internal safeguards to protect against bit level corruption
+-  The Cassandra heap should be no less than 2GB, and no more than 50% of your system RAM
+-  Heaps smaller than 12GB should consider ParNew/ConcurrentMarkSweep garbage collection
+-  Heaps larger than 12GB should consider G1GC
+
+Disks
+^^^^^
+Cassandra persists data to disk for two very different purposes. The first is to the commitlog when a new write is made
+so that it can be replayed after a crash or system shutdown. The second is to the data directory when thresholds are
+exceeded and memtables are flushed to disk as SSTables.
+
+Commitlogs receive every write made to a Cassandra node and have the potential to block client operations, but they are
+only ever read on node start-up. SSTable (data file) writes on the other hand occur asynchronously, but are read to
+satisfy client look-ups. SSTables are also periodically merged and rewritten in a process called compaction.  The data
+held in the commitlog directory is data that has not been permanently saved to the SSTable data directories - it will be
+periodically purged once it is flushed to the SSTable data files.
+
+Cassandra performs very well on both spinning hard drives and solid state disks. In both cases, Cassandra's sorted
+immutable SSTables allow for linear reads, few seeks, and few overwrites, maximizing throughput for HDDs and lifespan of
+SSDs by avoiding write amplification. However, when using spinning disks, it's important that the commitlog
+(``commitlog_directory``) be on one physical disk (not simply a partition, but a physical disk), and the data files
+(``data_file_directories``) be set to a separate physical disk. By separating the commitlog from the data directory,
+writes can benefit from sequential appends to the commitlog without having to seek around the platter as reads request
+data from various SSTables on disk.
+
+In most cases, Cassandra is designed to provide redundancy via multiple independent, inexpensive servers. For this
+reason, using NFS or a SAN for data directories is an antipattern and should typically be avoided.  Similarly, servers
+with multiple disks are often better served by using RAID0 or JBOD than RAID1 or RAID5 - replication provided by
+Cassandra obsoletes the need for replication at the disk layer, so it's typically recommended that operators take
+advantage of the additional throughput of RAID0 rather than protecting against failures with RAID1 or RAID5.
+
+Common Cloud Choices
+^^^^^^^^^^^^^^^^^^^^
+
+Many large users of Cassandra run in various clouds, including AWS, Azure, and GCE - Cassandra will happily run in any
+of these environments. Users should choose similar hardware to what would be needed in physical space. In EC2, popular
+options include:
+
+- m1.xlarge instances, which provide 1.6TB of local ephemeral spinning storage and sufficient RAM to run moderate
+  workloads
+- i2 instances, which provide both a high RAM:CPU ratio and local ephemeral SSDs
+- m4.2xlarge / c4.4xlarge instances, which provide modern CPUs, enhanced networking and work well with EBS GP2 (SSD)
+  storage
+
+Generally, disk and network performance increases with instance size and generation, so newer generations of instances
+and larger instance types within each family often perform better than their smaller or older alternatives.
diff --git a/src/doc/3.11.11/_sources/operating/hints.rst.txt b/src/doc/3.11.11/_sources/operating/hints.rst.txt
new file mode 100644
index 0000000..f79f18a
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/hints.rst.txt
@@ -0,0 +1,22 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Hints
+-----
+
+.. todo:: todo
diff --git a/src/doc/3.11.11/_sources/operating/index.rst.txt b/src/doc/3.11.11/_sources/operating/index.rst.txt
new file mode 100644
index 0000000..e2cead2
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/index.rst.txt
@@ -0,0 +1,39 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Operating Cassandra
+===================
+
+.. toctree::
+   :maxdepth: 2
+
+   snitch
+   topo_changes
+   repair
+   read_repair
+   hints
+   compaction
+   bloom_filters
+   compression
+   cdc
+   backups
+   bulk_loading
+   metrics
+   security
+   hardware
+
diff --git a/src/doc/3.11.11/_sources/operating/metrics.rst.txt b/src/doc/3.11.11/_sources/operating/metrics.rst.txt
new file mode 100644
index 0000000..4bd0c08
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/metrics.rst.txt
@@ -0,0 +1,710 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Monitoring
+----------
+
+Metrics in Cassandra are managed using the `Dropwizard Metrics <http://metrics.dropwizard.io>`__ library. These metrics
+can be queried via JMX or pushed to external monitoring systems using a number of `built in
+<http://metrics.dropwizard.io/3.1.0/getting-started/#other-reporting>`__ and `third party
+<http://metrics.dropwizard.io/3.1.0/manual/third-party/>`__ reporter plugins.
+
+Metrics are collected for a single node. It's up to the operator to use an external monitoring system to aggregate them.
+
+Metric Types
+^^^^^^^^^^^^
+All metrics reported by cassandra fit into one of the following types.
+
+``Gauge``
+    An instantaneous measurement of a value.
+
+``Counter``
+    A gauge for an ``AtomicLong`` instance. Typically this is consumed by monitoring the change since the last call to
+    see if there is a large increase compared to the norm.
+
+``Histogram``
+    Measures the statistical distribution of values in a stream of data.
+
+    In addition to minimum, maximum, mean, etc., it also measures median, 75th, 90th, 95th, 98th, 99th, and 99.9th
+    percentiles.
+
+``Timer``
+    Measures both the rate that a particular piece of code is called and the histogram of its duration.
+
+``Latency``
+    Special type that tracks latency (in microseconds) with a ``Timer`` plus a ``Counter`` that tracks the total latency
+    accrued since starting. The former is useful if you track the change in total latency since the last check. Each
+    metric name of this type will have 'Latency' and 'TotalLatency' appended to it.
+
+``Meter``
+    A meter metric which measures mean throughput and one-, five-, and fifteen-minute exponentially-weighted moving
+    average throughputs.
+
+Table Metrics
+^^^^^^^^^^^^^
+
+Each table in Cassandra has metrics responsible for tracking its state and performance.
+
+The metric names are all appended with the specific ``Keyspace`` and ``Table`` name.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Table.<MetricName>.<Keyspace>.<Table>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Table keyspace=<Keyspace> scope=<Table> name=<MetricName>``
+
+.. NOTE::
+    There is a special table called '``all``' without a keyspace. This represents the aggregation of metrics across
+    **all** tables and keyspaces on the node.
+
+
+=============================================== ============== ===========
+Name                                            Type           Description
+=============================================== ============== ===========
+MemtableOnHeapSize                              Gauge<Long>    Total amount of data stored in the memtable that resides **on**-heap, including column related overhead and partitions overwritten.
+MemtableOffHeapSize                             Gauge<Long>    Total amount of data stored in the memtable that resides **off**-heap, including column related overhead and partitions overwritten.
+MemtableLiveDataSize                            Gauge<Long>    Total amount of live data stored in the memtable, excluding any data structure overhead.
+AllMemtablesOnHeapSize                          Gauge<Long>    Total amount of data stored in the memtables (2i and pending flush memtables included) that resides **on**-heap.
+AllMemtablesOffHeapSize                         Gauge<Long>    Total amount of data stored in the memtables (2i and pending flush memtables included) that resides **off**-heap.
+AllMemtablesLiveDataSize                        Gauge<Long>    Total amount of live data stored in the memtables (2i and pending flush memtables included) that resides off-heap, excluding any data structure overhead.
+MemtableColumnsCount                            Gauge<Long>    Total number of columns present in the memtable.
+MemtableSwitchCount                             Counter        Number of times flush has resulted in the memtable being switched out.
+CompressionRatio                                Gauge<Double>  Current compression ratio for all SSTables.
+EstimatedPartitionSizeHistogram                 Gauge<long[]>  Histogram of estimated partition size (in bytes).
+EstimatedPartitionCount                         Gauge<Long>    Approximate number of keys in table.
+EstimatedColumnCountHistogram                   Gauge<long[]>  Histogram of estimated number of columns.
+SSTablesPerReadHistogram                        Histogram      Histogram of the number of sstable data files accessed per single partition read. SSTables skipped due to Bloom Filters, min-max key or partition index lookup are not taken into acoount.
+ReadLatency                                     Latency        Local read latency for this table.
+RangeLatency                                    Latency        Local range scan latency for this table.
+WriteLatency                                    Latency        Local write latency for this table.
+CoordinatorReadLatency                          Timer          Coordinator read latency for this table.
+CoordinatorScanLatency                          Timer          Coordinator range scan latency for this table.
+PendingFlushes                                  Counter        Estimated number of flush tasks pending for this table.
+BytesFlushed                                    Counter        Total number of bytes flushed since server [re]start.
+CompactionBytesWritten                          Counter        Total number of bytes written by compaction since server [re]start.
+PendingCompactions                              Gauge<Integer> Estimate of number of pending compactions for this table.
+LiveSSTableCount                                Gauge<Integer> Number of SSTables on disk for this table.
+LiveDiskSpaceUsed                               Counter        Disk space used by SSTables belonging to this table (in bytes).
+TotalDiskSpaceUsed                              Counter        Total disk space used by SSTables belonging to this table, including obsolete ones waiting to be GC'd.
+MinPartitionSize                                Gauge<Long>    Size of the smallest compacted partition (in bytes).
+MaxPartitionSize                                Gauge<Long>    Size of the largest compacted partition (in bytes).
+MeanPartitionSize                               Gauge<Long>    Size of the average compacted partition (in bytes).
+BloomFilterFalsePositives                       Gauge<Long>    Number of false positives on table's bloom filter.
+BloomFilterFalseRatio                           Gauge<Double>  False positive ratio of table's bloom filter.
+BloomFilterDiskSpaceUsed                        Gauge<Long>    Disk space used by bloom filter (in bytes).
+BloomFilterOffHeapMemoryUsed                    Gauge<Long>    Off-heap memory used by bloom filter.
+IndexSummaryOffHeapMemoryUsed                   Gauge<Long>    Off-heap memory used by index summary.
+CompressionMetadataOffHeapMemoryUsed            Gauge<Long>    Off-heap memory used by compression meta data.
+KeyCacheHitRate                                 Gauge<Double>  Key cache hit rate for this table.
+TombstoneScannedHistogram                       Histogram      Histogram of tombstones scanned in queries on this table.
+LiveScannedHistogram                            Histogram      Histogram of live cells scanned in queries on this table.
+ColUpdateTimeDeltaHistogram                     Histogram      Histogram of column update time delta on this table.
+ViewLockAcquireTime                             Timer          Time taken acquiring a partition lock for materialized view updates on this table.
+ViewReadTime                                    Timer          Time taken during the local read of a materialized view update.
+TrueSnapshotsSize                               Gauge<Long>    Disk space used by snapshots of this table including all SSTable components.
+RowCacheHitOutOfRange                           Counter        Number of table row cache hits that do not satisfy the query filter, thus went to disk.
+RowCacheHit                                     Counter        Number of table row cache hits.
+RowCacheMiss                                    Counter        Number of table row cache misses.
+CasPrepare                                      Latency        Latency of paxos prepare round.
+CasPropose                                      Latency        Latency of paxos propose round.
+CasCommit                                       Latency        Latency of paxos commit round.
+PercentRepaired                                 Gauge<Double>  Percent of table data that is repaired on disk.
+SpeculativeRetries                              Counter        Number of times speculative retries were sent for this table.
+WaitingOnFreeMemtableSpace                      Histogram      Histogram of time spent waiting for free memtable space, either on- or off-heap.
+DroppedMutations                                Counter        Number of dropped mutations on this table.
+ReadRepairRequests                              Meter          Throughput for mutations generated by read-repair.
+ShortReadProtectionRequests                     Meter          Throughput for requests to get extra rows during short read protection.
+ReplicaFilteringProtectionRequests              Meter          Throughput for row completion requests during replica filtering protection.
+ReplicaFilteringProtectionRowsCachedPerQuery    Histogram      Histogram of the number of rows cached per query when replica filtering protection is engaged.
+============================================    ============== ===========
+
+Keyspace Metrics
+^^^^^^^^^^^^^^^^
+Each keyspace in Cassandra has metrics responsible for tracking its state and performance.
+
+These metrics are the same as the ``Table Metrics`` above, only they are aggregated at the Keyspace level.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.keyspace.<MetricName>.<Keyspace>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Keyspace scope=<Keyspace> name=<MetricName>``
+
+ThreadPool Metrics
+^^^^^^^^^^^^^^^^^^
+
+Cassandra splits work of a particular type into its own thread pool.  This provides back-pressure and asynchrony for
+requests on a node.  It's important to monitor the state of these thread pools since they can tell you how saturated a
+node is.
+
+The metric names are all appended with the specific ``ThreadPool`` name.  The thread pools are also categorized under a
+specific type.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.ThreadPools.<MetricName>.<Path>.<ThreadPoolName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=ThreadPools scope=<ThreadPoolName> type=<Type> name=<MetricName>``
+
+===================== ============== ===========
+Name                  Type           Description
+===================== ============== ===========
+ActiveTasks           Gauge<Integer> Number of tasks being actively worked on by this pool.
+PendingTasks          Gauge<Integer> Number of queued tasks queued up on this pool.
+CompletedTasks        Counter        Number of tasks completed.
+TotalBlockedTasks     Counter        Number of tasks that were blocked due to queue saturation.
+CurrentlyBlockedTask  Counter        Number of tasks that are currently blocked due to queue saturation but on retry will become unblocked.
+MaxPoolSize           Gauge<Integer> The maximum number of threads in this pool.
+===================== ============== ===========
+
+The following thread pools can be monitored.
+
+============================ ============== ===========
+Name                         Type           Description
+============================ ============== ===========
+Native-Transport-Requests    transport      Handles client CQL requests
+CounterMutationStage         request        Responsible for counter writes
+ViewMutationStage            request        Responsible for materialized view writes
+MutationStage                request        Responsible for all other writes
+ReadRepairStage              request        ReadRepair happens on this thread pool
+ReadStage                    request        Local reads run on this thread pool
+RequestResponseStage         request        Coordinator requests to the cluster run on this thread pool
+AntiEntropyStage             internal       Builds merkle tree for repairs
+CacheCleanupExecutor         internal       Cache maintenance performed on this thread pool
+CompactionExecutor           internal       Compactions are run on these threads
+GossipStage                  internal       Handles gossip requests
+HintsDispatcher              internal       Performs hinted handoff
+InternalResponseStage        internal       Responsible for intra-cluster callbacks
+MemtableFlushWriter          internal       Writes memtables to disk
+MemtablePostFlush            internal       Cleans up commit log after memtable is written to disk
+MemtableReclaimMemory        internal       Memtable recycling
+MigrationStage               internal       Runs schema migrations
+MiscStage                    internal       Misceleneous tasks run here
+PendingRangeCalculator       internal       Calculates token range
+PerDiskMemtableFlushWriter_0 internal       Responsible for writing a spec (there is one of these per disk 0-N)
+Sampler                      internal       Responsible for re-sampling the index summaries of SStables
+SecondaryIndexManagement     internal       Performs updates to secondary indexes
+ValidationExecutor           internal       Performs validation compaction or scrubbing
+============================ ============== ===========
+
+.. |nbsp| unicode:: 0xA0 .. nonbreaking space
+
+Client Request Metrics
+^^^^^^^^^^^^^^^^^^^^^^
+
+Client requests have their own set of metrics that encapsulate the work happening at coordinator level.
+
+Different types of client requests are broken down by ``RequestType``.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.ClientRequest.<MetricName>.<RequestType>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=ClientRequest scope=<RequestType> name=<MetricName>``
+
+
+:RequestType: CASRead
+:Description: Metrics related to transactional read requests.
+:Metrics:
+    ===================== ============== =============================================================
+    Name                  Type           Description
+    ===================== ============== =============================================================
+    Timeouts              Counter        Number of timeouts encountered.
+    Failures              Counter        Number of transaction failures encountered.
+    |nbsp|                Latency        Transaction read latency.
+    Unavailables          Counter        Number of unavailable exceptions encountered.
+    UnfinishedCommit      Counter        Number of transactions that were committed on read.
+    ConditionNotMet       Counter        Number of transaction preconditions did not match current values.
+    ContentionHistogram   Histogram      How many contended reads were encountered
+    ===================== ============== =============================================================
+
+:RequestType: CASWrite
+:Description: Metrics related to transactional write requests.
+:Metrics:
+    ===================== ============== =============================================================
+    Name                  Type           Description
+    ===================== ============== =============================================================
+    Timeouts              Counter        Number of timeouts encountered.
+    Failures              Counter        Number of transaction failures encountered.
+    |nbsp|                Latency        Transaction write latency.
+    UnfinishedCommit      Counter        Number of transactions that were committed on write.
+    ConditionNotMet       Counter        Number of transaction preconditions did not match current values.
+    ContentionHistogram   Histogram      How many contended writes were encountered
+    ===================== ============== =============================================================
+
+
+:RequestType: Read
+:Description: Metrics related to standard read requests.
+:Metrics:
+    ===================== ============== =============================================================
+    Name                  Type           Description
+    ===================== ============== =============================================================
+    Timeouts              Counter        Number of timeouts encountered.
+    Failures              Counter        Number of read failures encountered.
+    |nbsp|                Latency        Read latency.
+    Unavailables          Counter        Number of unavailable exceptions encountered.
+    ===================== ============== =============================================================
+
+:RequestType: RangeSlice
+:Description: Metrics related to token range read requests.
+:Metrics:
+    ===================== ============== =============================================================
+    Name                  Type           Description
+    ===================== ============== =============================================================
+    Timeouts              Counter        Number of timeouts encountered.
+    Failures              Counter        Number of range query failures encountered.
+    |nbsp|                Latency        Range query latency.
+    Unavailables          Counter        Number of unavailable exceptions encountered.
+    ===================== ============== =============================================================
+
+:RequestType: Write
+:Description: Metrics related to regular write requests.
+:Metrics:
+    ===================== ============== =============================================================
+    Name                  Type           Description
+    ===================== ============== =============================================================
+    Timeouts              Counter        Number of timeouts encountered.
+    Failures              Counter        Number of write failures encountered.
+    |nbsp|                Latency        Write latency.
+    Unavailables          Counter        Number of unavailable exceptions encountered.
+    ===================== ============== =============================================================
+
+
+:RequestType: ViewWrite
+:Description: Metrics related to materialized view write wrtes.
+:Metrics:
+    ===================== ============== =============================================================
+    Timeouts              Counter        Number of timeouts encountered.
+    Failures              Counter        Number of transaction failures encountered.
+    Unavailables          Counter        Number of unavailable exceptions encountered.
+    ViewReplicasAttempted Counter        Total number of attempted view replica writes.
+    ViewReplicasSuccess   Counter        Total number of succeded view replica writes.
+    ViewPendingMutations  Gauge<Long>    ViewReplicasAttempted - ViewReplicasSuccess.
+    ViewWriteLatency      Timer          Time between when mutation is applied to base table and when CL.ONE is achieved on view.
+    ===================== ============== =============================================================
+
+Cache Metrics
+^^^^^^^^^^^^^
+
+Cassandra caches have metrics to track the effectivness of the caches. Though the ``Table Metrics`` might be more useful.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Cache.<MetricName>.<CacheName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Cache scope=<CacheName> name=<MetricName>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+Capacity                   Gauge<Long>    Cache capacity in bytes.
+Entries                    Gauge<Integer> Total number of cache entries.
+FifteenMinuteCacheHitRate  Gauge<Double>  15m cache hit rate.
+FiveMinuteCacheHitRate     Gauge<Double>  5m cache hit rate.
+OneMinuteCacheHitRate      Gauge<Double>  1m cache hit rate.
+HitRate                    Gauge<Double>  All time cache hit rate.
+Hits                       Meter          Total number of cache hits.
+Misses                     Meter          Total number of cache misses.
+MissLatency                Timer          Latency of misses.
+Requests                   Gauge<Long>    Total number of cache requests.
+Size                       Gauge<Long>    Total size of occupied cache, in bytes.
+========================== ============== ===========
+
+The following caches are covered:
+
+============================ ===========
+Name                         Description
+============================ ===========
+CounterCache                 Keeps hot counters in memory for performance.
+ChunkCache                   In process uncompressed page cache.
+KeyCache                     Cache for partition to sstable offsets.
+RowCache                     Cache for rows kept in memory.
+============================ ===========
+
+.. NOTE::
+    Misses and MissLatency are only defined for the ChunkCache
+
+CQL Metrics
+^^^^^^^^^^^
+
+Metrics specific to CQL prepared statement caching.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.CQL.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=CQL name=<MetricName>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+PreparedStatementsCount    Gauge<Integer> Number of cached prepared statements.
+PreparedStatementsEvicted  Counter        Number of prepared statements evicted from the prepared statement cache
+PreparedStatementsExecuted Counter        Number of prepared statements executed.
+RegularStatementsExecuted  Counter        Number of **non** prepared statements executed.
+PreparedStatementsRatio    Gauge<Double>  Percentage of statements that are prepared vs unprepared.
+========================== ============== ===========
+
+
+DroppedMessage Metrics
+^^^^^^^^^^^^^^^^^^^^^^
+
+Metrics specific to tracking dropped messages for different types of requests.
+Dropped writes are stored and retried by ``Hinted Handoff``
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.DroppedMessages.<MetricName>.<Type>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=DroppedMetrics scope=<Type> name=<MetricName>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+CrossNodeDroppedLatency    Timer          The dropped latency across nodes.
+InternalDroppedLatency     Timer          The dropped latency within node.
+Dropped                    Meter          Number of dropped messages.
+========================== ============== ===========
+
+The different types of messages tracked are:
+
+============================ ===========
+Name                         Description
+============================ ===========
+BATCH_STORE                  Batchlog write
+BATCH_REMOVE                 Batchlog cleanup (after succesfully applied)
+COUNTER_MUTATION             Counter writes
+HINT                         Hint replay
+MUTATION                     Regular writes
+READ                         Regular reads
+READ_REPAIR                  Read repair
+PAGED_SLICE                  Paged read
+RANGE_SLICE                  Token range read
+REQUEST_RESPONSE             RPC Callbacks
+_TRACE                       Tracing writes
+============================ ===========
+
+Streaming Metrics
+^^^^^^^^^^^^^^^^^
+
+Metrics reported during ``Streaming`` operations, such as repair, bootstrap, rebuild.
+
+These metrics are specific to a peer endpoint, with the source node being the node you are pulling the metrics from.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Streaming.<MetricName>.<PeerIP>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Streaming scope=<PeerIP> name=<MetricName>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+IncomingBytes              Counter        Number of bytes streamed to this node from the peer.
+OutgoingBytes              Counter        Number of bytes streamed to the peer endpoint from this node.
+========================== ============== ===========
+
+
+Compaction Metrics
+^^^^^^^^^^^^^^^^^^
+
+Metrics specific to ``Compaction`` work.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Compaction.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Compaction name=<MetricName>``
+
+========================== ======================================== ===============================================
+Name                       Type                                     Description
+========================== ======================================== ===============================================
+BytesCompacted             Counter                                  Total number of bytes compacted since server [re]start.
+PendingTasks               Gauge<Integer>                           Estimated number of compactions remaining to perform.
+CompletedTasks             Gauge<Long>                              Number of completed compactions since server [re]start.
+TotalCompactionsCompleted  Meter                                    Throughput of completed compactions since server [re]start.
+PendingTasksByTableName    Gauge<Map<String, Map<String, Integer>>> Estimated number of compactions remaining to perform, grouped by keyspace and then table name. This info is also kept in ``Table Metrics``.
+========================== ======================================== ===============================================
+
+CommitLog Metrics
+^^^^^^^^^^^^^^^^^
+
+Metrics specific to the ``CommitLog``
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.CommitLog.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=CommitLog name=<MetricName>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+CompletedTasks             Gauge<Long>    Total number of commit log messages written since [re]start.
+PendingTasks               Gauge<Long>    Number of commit log messages written but yet to be fsync'd.
+TotalCommitLogSize         Gauge<Long>    Current size, in bytes, used by all the commit log segments.
+WaitingOnSegmentAllocation Timer          Time spent waiting for a CommitLogSegment to be allocated - under normal conditions this should be zero.
+WaitingOnCommit            Timer          The time spent waiting on CL fsync; for Periodic this is only occurs when the sync is lagging its sync interval.
+========================== ============== ===========
+
+Storage Metrics
+^^^^^^^^^^^^^^^
+
+Metrics specific to the storage engine.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Storage.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Storage name=<MetricName>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+Exceptions                 Counter        Number of internal exceptions caught. Under normal exceptions this should be zero.
+Load                       Counter        Size, in bytes, of the on disk data size this node manages.
+TotalHints                 Counter        Number of hint messages written to this node since [re]start. Includes one entry for each host to be hinted per hint.
+TotalHintsInProgress       Counter        Number of hints attemping to be sent currently.
+========================== ============== ===========
+
+HintedHandoff Metrics
+^^^^^^^^^^^^^^^^^^^^^
+
+Metrics specific to Hinted Handoff.  There are also some metrics related to hints tracked in ``Storage Metrics``
+
+These metrics include the peer endpoint **in the metric name**
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.HintedHandOffManager.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=HintedHandOffManager name=<MetricName>``
+
+=========================== ============== ===========
+Name                        Type           Description
+=========================== ============== ===========
+Hints_created-<PeerIP>       Counter        Number of hints on disk for this peer.
+Hints_not_stored-<PeerIP>    Counter        Number of hints not stored for this peer, due to being down past the configured hint window.
+=========================== ============== ===========
+
+SSTable Index Metrics
+^^^^^^^^^^^^^^^^^^^^^
+
+Metrics specific to the SSTable index metadata.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Index.<MetricName>.RowIndexEntry``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Index scope=RowIndexEntry name=<MetricName>``
+
+=========================== ============== ===========
+Name                        Type           Description
+=========================== ============== ===========
+IndexedEntrySize            Histogram      Histogram of the on-heap size, in bytes, of the index across all SSTables.
+IndexInfoCount              Histogram      Histogram of the number of on-heap index entries managed across all SSTables.
+IndexInfoGets               Histogram      Histogram of the number index seeks performed per SSTable.
+=========================== ============== ===========
+
+BufferPool Metrics
+^^^^^^^^^^^^^^^^^^
+
+Metrics specific to the internal recycled buffer pool Cassandra manages.  This pool is meant to keep allocations and GC
+lower by recycling on and off heap buffers.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.BufferPool.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=BufferPool name=<MetricName>``
+
+=========================== ============== ===========
+Name                        Type           Description
+=========================== ============== ===========
+Size                        Gauge<Long>    Size, in bytes, of the managed buffer pool
+Misses                      Meter           The rate of misses in the pool. The higher this is the more allocations incurred.
+=========================== ============== ===========
+
+
+Client Metrics
+^^^^^^^^^^^^^^
+
+Metrics specifc to client managment.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Client.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Client name=<MetricName>``
+
+=========================== ============== ===========
+Name                        Type           Description
+=========================== ============== ===========
+connectedNativeClients      Counter        Number of clients connected to this nodes native protocol server
+connectedThriftClients      Counter        Number of clients connected to this nodes thrift protocol server
+=========================== ============== ===========
+
+JVM Metrics
+^^^^^^^^^^^
+
+JVM metrics such as memory and garbage collection statistics can either be accessed by connecting to the JVM using JMX or can be exported using `Metric Reporters`_.
+
+BufferPool
+++++++++++
+
+**Metric Name**
+    ``jvm.buffers.<direct|mapped>.<MetricName>``
+
+**JMX MBean**
+    ``java.nio:type=BufferPool name=<direct|mapped>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+Capacity                   Gauge<Long>    Estimated total capacity of the buffers in this pool
+Count                      Gauge<Long>    Estimated number of buffers in the pool
+Used                       Gauge<Long>    Estimated memory that the Java virtual machine is using for this buffer pool
+========================== ============== ===========
+
+FileDescriptorRatio
++++++++++++++++++++
+
+**Metric Name**
+    ``jvm.fd.<MetricName>``
+
+**JMX MBean**
+    ``java.lang:type=OperatingSystem name=<OpenFileDescriptorCount|MaxFileDescriptorCount>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+Usage                      Ratio          Ratio of used to total file descriptors
+========================== ============== ===========
+
+GarbageCollector
+++++++++++++++++
+
+**Metric Name**
+    ``jvm.gc.<gc_type>.<MetricName>``
+
+**JMX MBean**
+    ``java.lang:type=GarbageCollector name=<gc_type>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+Count                      Gauge<Long>    Total number of collections that have occurred
+Time                       Gauge<Long>    Approximate accumulated collection elapsed time in milliseconds
+========================== ============== ===========
+
+Memory
+++++++
+
+**Metric Name**
+    ``jvm.memory.<heap/non-heap/total>.<MetricName>``
+
+**JMX MBean**
+    ``java.lang:type=Memory``
+
+========================== ============== ===========
+Committed                  Gauge<Long>    Amount of memory in bytes that is committed for the JVM to use
+Init                       Gauge<Long>    Amount of memory in bytes that the JVM initially requests from the OS
+Max                        Gauge<Long>    Maximum amount of memory in bytes that can be used for memory management
+Usage                      Ratio          Ratio of used to maximum memory
+Used                       Gauge<Long>    Amount of used memory in bytes
+========================== ============== ===========
+
+MemoryPool
+++++++++++
+
+**Metric Name**
+    ``jvm.memory.pools.<memory_pool>.<MetricName>``
+
+**JMX MBean**
+    ``java.lang:type=MemoryPool name=<memory_pool>``
+
+========================== ============== ===========
+Committed                  Gauge<Long>    Amount of memory in bytes that is committed for the JVM to use
+Init                       Gauge<Long>    Amount of memory in bytes that the JVM initially requests from the OS
+Max                        Gauge<Long>    Maximum amount of memory in bytes that can be used for memory management
+Usage                      Ratio          Ratio of used to maximum memory
+Used                       Gauge<Long>    Amount of used memory in bytes
+========================== ============== ===========
+
+JMX
+^^^
+
+Any JMX based client can access metrics from cassandra.
+
+If you wish to access JMX metrics over http it's possible to download `Mx4jTool <http://mx4j.sourceforge.net/>`__ and
+place ``mx4j-tools.jar`` into the classpath.  On startup you will see in the log::
+
+    HttpAdaptor version 3.0.2 started on port 8081
+
+To choose a different port (8081 is the default) or a different listen address (0.0.0.0 is not the default) edit
+``conf/cassandra-env.sh`` and uncomment::
+
+    #MX4J_ADDRESS="-Dmx4jaddress=0.0.0.0"
+
+    #MX4J_PORT="-Dmx4jport=8081"
+
+
+Metric Reporters
+^^^^^^^^^^^^^^^^
+
+As mentioned at the top of this section on monitoring the Cassandra metrics can be exported to a number of monitoring
+system a number of `built in <http://metrics.dropwizard.io/3.1.0/getting-started/#other-reporting>`__ and `third party
+<http://metrics.dropwizard.io/3.1.0/manual/third-party/>`__ reporter plugins.
+
+The configuration of these plugins is managed by the `metrics reporter config project
+<https://github.com/addthis/metrics-reporter-config>`__. There is a sample configuration file located at
+``conf/metrics-reporter-config-sample.yaml``.
+
+Once configured, you simply start cassandra with the flag
+``-Dcassandra.metricsReporterConfigFile=metrics-reporter-config.yaml``. The specified .yaml file plus any 3rd party
+reporter jars must all be in Cassandra's classpath.
diff --git a/src/doc/3.11.11/_sources/operating/read_repair.rst.txt b/src/doc/3.11.11/_sources/operating/read_repair.rst.txt
new file mode 100644
index 0000000..0e52bf5
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/read_repair.rst.txt
@@ -0,0 +1,22 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Read repair
+-----------
+
+.. todo:: todo
diff --git a/src/doc/3.11.11/_sources/operating/repair.rst.txt b/src/doc/3.11.11/_sources/operating/repair.rst.txt
new file mode 100644
index 0000000..97d8ce8
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/repair.rst.txt
@@ -0,0 +1,22 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Repair
+------
+
+.. todo:: todo
diff --git a/src/doc/3.11.11/_sources/operating/security.rst.txt b/src/doc/3.11.11/_sources/operating/security.rst.txt
new file mode 100644
index 0000000..dfcd9e6
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/security.rst.txt
@@ -0,0 +1,410 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Security
+--------
+
+There are three main components to the security features provided by Cassandra:
+
+- TLS/SSL encryption for client and inter-node communication
+- Client authentication
+- Authorization
+
+TLS/SSL Encryption
+^^^^^^^^^^^^^^^^^^
+Cassandra provides secure communication between a client machine and a database cluster and between nodes within a
+cluster. Enabling encryption ensures that data in flight is not compromised and is transferred securely. The options for
+client-to-node and node-to-node encryption are managed separately and may be configured independently.
+
+In both cases, the JVM defaults for supported protocols and cipher suites are used when encryption is enabled. These can
+be overidden using the settings in ``cassandra.yaml``, but this is not recommended unless there are policies in place
+which dictate certain settings or a need to disable vulnerable ciphers or protocols in cases where the JVM cannot be
+updated.
+
+FIPS compliant settings can be configured at the JVM level and should not involve changing encryption settings in
+cassandra.yaml. See `the java document on FIPS <https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html>`__
+for more details.
+
+For information on generating the keystore and truststore files used in SSL communications, see the
+`java documentation on creating keystores <http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore>`__
+
+Inter-node Encryption
+~~~~~~~~~~~~~~~~~~~~~
+
+The settings for managing inter-node encryption are found in ``cassandra.yaml`` in the ``server_encryption_options``
+section. To enable inter-node encryption, change the ``internode_encryption`` setting from its default value of ``none``
+to one value from: ``rack``, ``dc`` or ``all``.
+
+Client to Node Encryption
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The settings for managing client to node encryption are found in ``cassandra.yaml`` in the ``client_encryption_options``
+section. There are two primary toggles here for enabling encryption, ``enabled`` and ``optional``.
+
+- If neither is set to ``true``, client connections are entirely unencrypted.
+- If ``enabled`` is set to ``true`` and ``optional`` is set to ``false``, all client connections must be secured.
+- If both options are set to ``true``, both encrypted and unencrypted connections are supported using the same port.
+  Client connections using encryption with this configuration will be automatically detected and handled by the server.
+
+As an alternative to the ``optional`` setting, separate ports can also be configured for secure and unsecure connections
+where operational requirements demand it. To do so, set ``optional`` to false and use the ``native_transport_port_ssl``
+setting in ``cassandra.yaml`` to specify the port to be used for secure client communication.
+
+.. _operation-roles:
+
+Roles
+^^^^^
+
+Cassandra uses database roles, which may represent either a single user or a group of users, in both authentication and
+permissions management. Role management is an extension point in Cassandra and may be configured using the
+``role_manager`` setting in ``cassandra.yaml``. The default setting uses ``CassandraRoleManager``, an implementation
+which stores role information in the tables of the ``system_auth`` keyspace.
+
+See also the :ref:`CQL documentation on roles <cql-roles>`.
+
+Authentication
+^^^^^^^^^^^^^^
+
+Authentication is pluggable in Cassandra and is configured using the ``authenticator`` setting in ``cassandra.yaml``.
+Cassandra ships with two options included in the default distribution.
+
+By default, Cassandra is configured with ``AllowAllAuthenticator`` which performs no authentication checks and therefore
+requires no credentials. It is used to disable authentication completely. Note that authentication is a necessary
+condition of Cassandra's permissions subsystem, so if authentication is disabled, effectively so are permissions.
+
+The default distribution also includes ``PasswordAuthenticator``, which stores encrypted credentials in a system table.
+This can be used to enable simple username/password authentication.
+
+.. _password-authentication:
+
+Enabling Password Authentication
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Before enabling client authentication on the cluster, client applications should be pre-configured with their intended
+credentials. When a connection is initiated, the server will only ask for credentials once authentication is
+enabled, so setting up the client side config in advance is safe. In contrast, as soon as a server has authentication
+enabled, any connection attempt without proper credentials will be rejected which may cause availability problems for
+client applications. Once clients are setup and ready for authentication to be enabled, follow this procedure to enable
+it on the cluster.
+
+Pick a single node in the cluster on which to perform the initial configuration. Ideally, no clients should connect
+to this node during the setup process, so you may want to remove it from client config, block it at the network level
+or possibly add a new temporary node to the cluster for this purpose. On that node, perform the following steps:
+
+1. Open a ``cqlsh`` session and change the replication factor of the ``system_auth`` keyspace. By default, this keyspace
+   uses ``SimpleReplicationStrategy`` and a ``replication_factor`` of 1. It is recommended to change this for any
+   non-trivial deployment to ensure that should nodes become unavailable, login is still possible. Best practice is to
+   configure a replication factor of 3 to 5 per-DC.
+
+::
+
+    ALTER KEYSPACE system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': 3, 'DC2': 3};
+
+2. Edit ``cassandra.yaml`` to change the ``authenticator`` option like so:
+
+::
+
+    authenticator: PasswordAuthenticator
+
+3. Restart the node.
+
+4. Open a new ``cqlsh`` session using the credentials of the default superuser:
+
+::
+
+    cqlsh -u cassandra -p cassandra
+
+5. During login, the credentials for the default superuser are read with a consistency level of ``QUORUM``, whereas
+   those for all other users (including superusers) are read at ``LOCAL_ONE``. In the interests of performance and
+   availability, as well as security, operators should create another superuser and disable the default one. This step
+   is optional, but highly recommended. While logged in as the default superuser, create another superuser role which
+   can be used to bootstrap further configuration.
+
+::
+
+    # create a new superuser
+    CREATE ROLE dba WITH SUPERUSER = true AND LOGIN = true AND PASSWORD = 'super';
+
+6. Start a new cqlsh session, this time logging in as the new_superuser and disable the default superuser.
+
+::
+
+    ALTER ROLE cassandra WITH SUPERUSER = false AND LOGIN = false;
+
+7. Finally, set up the roles and credentials for your application users with :ref:`CREATE ROLE <create-role-statement>`
+   statements.
+
+At the end of these steps, the one node is configured to use password authentication. To roll that out across the
+cluster, repeat steps 2 and 3 on each node in the cluster. Once all nodes have been restarted, authentication will be
+fully enabled throughout the cluster.
+
+Note that using ``PasswordAuthenticator`` also requires the use of :ref:`CassandraRoleManager <operation-roles>`.
+
+See also: :ref:`setting-credentials-for-internal-authentication`, :ref:`CREATE ROLE <create-role-statement>`,
+:ref:`ALTER ROLE <alter-role-statement>`, :ref:`ALTER KEYSPACE <alter-keyspace-statement>` and :ref:`GRANT PERMISSION
+<grant-permission-statement>`,
+
+Authorization
+^^^^^^^^^^^^^
+
+Authorization is pluggable in Cassandra and is configured using the ``authorizer`` setting in ``cassandra.yaml``.
+Cassandra ships with two options included in the default distribution.
+
+By default, Cassandra is configured with ``AllowAllAuthorizer`` which performs no checking and so effectively grants all
+permissions to all roles. This must be used if ``AllowAllAuthenticator`` is the configured authenticator.
+
+The default distribution also includes ``CassandraAuthorizer``, which does implement full permissions management
+functionality and stores its data in Cassandra system tables.
+
+Enabling Internal Authorization
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Permissions are modelled as a whitelist, with the default assumption that a given role has no access to any database
+resources. The implication of this is that once authorization is enabled on a node, all requests will be rejected until
+the required permissions have been granted. For this reason, it is strongly recommended to perform the initial setup on
+a node which is not processing client requests.
+
+The following assumes that authentication has already been enabled via the process outlined in
+:ref:`password-authentication`. Perform these steps to enable internal authorization across the cluster:
+
+1. On the selected node, edit ``cassandra.yaml`` to change the ``authorizer`` option like so:
+
+::
+
+    authorizer: CassandraAuthorizer
+
+2. Restart the node.
+
+3. Open a new ``cqlsh`` session using the credentials of a role with superuser credentials:
+
+::
+
+    cqlsh -u dba -p super
+
+4. Configure the appropriate access privileges for your clients using `GRANT PERMISSION <cql.html#grant-permission>`_
+   statements. On the other nodes, until configuration is updated and the node restarted, this will have no effect so
+   disruption to clients is avoided.
+
+::
+
+    GRANT SELECT ON ks.t1 TO db_user;
+
+5. Once all the necessary permissions have been granted, repeat steps 1 and 2 for each node in turn. As each node
+   restarts and clients reconnect, the enforcement of the granted permissions will begin.
+
+See also: :ref:`GRANT PERMISSION <grant-permission-statement>`, `GRANT ALL <grant-all>` and :ref:`REVOKE PERMISSION
+<revoke-permission-statement>`
+
+Caching
+^^^^^^^
+
+Enabling authentication and authorization places additional load on the cluster by frequently reading from the
+``system_auth`` tables. Furthermore, these reads are in the critical paths of many client operations, and so has the
+potential to severely impact quality of service. To mitigate this, auth data such as credentials, permissions and role
+details are cached for a configurable period. The caching can be configured (and even disabled) from ``cassandra.yaml``
+or using a JMX client. The JMX interface also supports invalidation of the various caches, but any changes made via JMX
+are not persistent and will be re-read from ``cassandra.yaml`` when the node is restarted.
+
+Each cache has 3 options which can be set:
+
+Validity Period
+    Controls the expiration of cache entries. After this period, entries are invalidated and removed from the cache.
+Refresh Rate
+    Controls the rate at which background reads are performed to pick up any changes to the underlying data. While these
+    async refreshes are performed, caches will continue to serve (possibly) stale data. Typically, this will be set to a
+    shorter time than the validity period.
+Max Entries
+    Controls the upper bound on cache size.
+
+The naming for these options in ``cassandra.yaml`` follows the convention:
+
+* ``<type>_validity_in_ms``
+* ``<type>_update_interval_in_ms``
+* ``<type>_cache_max_entries``
+
+Where ``<type>`` is one of ``credentials``, ``permissions``, or ``roles``.
+
+As mentioned, these are also exposed via JMX in the mbeans under the ``org.apache.cassandra.auth`` domain.
+
+JMX access
+^^^^^^^^^^
+
+Access control for JMX clients is configured separately to that for CQL. For both authentication and authorization, two
+providers are available; the first based on standard JMX security and the second which integrates more closely with
+Cassandra's own auth subsystem.
+
+The default settings for Cassandra make JMX accessible only from localhost. To enable remote JMX connections, edit
+``cassandra-env.sh`` (or ``cassandra-env.ps1`` on Windows) to change the ``LOCAL_JMX`` setting to ``yes``. Under the
+standard configuration, when remote JMX connections are enabled, :ref:`standard JMX authentication <standard-jmx-auth>`
+is also switched on.
+
+Note that by default, local-only connections are not subject to authentication, but this can be enabled.
+
+If enabling remote connections, it is recommended to also use :ref:`SSL <jmx-with-ssl>` connections.
+
+Finally, after enabling auth and/or SSL, ensure that tools which use JMX, such as :ref:`nodetool <nodetool>`, are
+correctly configured and working as expected.
+
+.. _standard-jmx-auth:
+
+Standard JMX Auth
+~~~~~~~~~~~~~~~~~
+
+Users permitted to connect to the JMX server are specified in a simple text file. The location of this file is set in
+``cassandra-env.sh`` by the line:
+
+::
+
+    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
+
+Edit the password file to add username/password pairs:
+
+::
+
+    jmx_user jmx_password
+
+Secure the credentials file so that only the user running the Cassandra process can read it :
+
+::
+
+    $ chown cassandra:cassandra /etc/cassandra/jmxremote.password
+    $ chmod 400 /etc/cassandra/jmxremote.password
+
+Optionally, enable access control to limit the scope of what defined users can do via JMX. Note that this is a fairly
+blunt instrument in this context as most operational tools in Cassandra require full read/write access. To configure a
+simple access file, uncomment this line in ``cassandra-env.sh``:
+
+::
+
+    #JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access"
+
+Then edit the access file to grant your JMX user readwrite permission:
+
+::
+
+    jmx_user readwrite
+
+Cassandra must be restarted to pick up the new settings.
+
+See also : `Using File-Based Password Authentication In JMX
+<http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdenv>`__
+
+
+Cassandra Integrated Auth
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+An alternative to the out-of-the-box JMX auth is to useeCassandra's own authentication and/or authorization providers
+for JMX clients. This is potentially more flexible and secure but it come with one major caveat. Namely that it is not
+available until `after` a node has joined the ring, because the auth subsystem is not fully configured until that point
+However, it is often critical for monitoring purposes to have JMX access particularly during bootstrap. So it is
+recommended, where possible, to use local only JMX auth during bootstrap and then, if remote connectivity is required,
+to switch to integrated auth once the node has joined the ring and initial setup is complete.
+
+With this option, the same database roles used for CQL authentication can be used to control access to JMX, so updates
+can be managed centrally using just ``cqlsh``. Furthermore, fine grained control over exactly which operations are
+permitted on particular MBeans can be acheived via :ref:`GRANT PERMISSION <grant-permission-statement>`.
+
+To enable integrated authentication, edit ``cassandra-env.sh`` to uncomment these lines:
+
+::
+
+    #JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.remote.login.config=CassandraLogin"
+    #JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config=$CASSANDRA_HOME/conf/cassandra-jaas.config"
+
+And disable the JMX standard auth by commenting this line:
+
+::
+
+    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
+
+To enable integrated authorization, uncomment this line:
+
+::
+
+    #JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.authorizer=org.apache.cassandra.auth.jmx.AuthorizationProxy"
+
+Check standard access control is off by ensuring this line is commented out:
+
+::
+
+   #JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access"
+
+With integrated authentication and authorization enabled, operators can define specific roles and grant them access to
+the particular JMX resources that they need. For example, a role with the necessary permissions to use tools such as
+jconsole or jmc in read-only mode would be defined as:
+
+::
+
+    CREATE ROLE jmx WITH LOGIN = false;
+    GRANT SELECT ON ALL MBEANS TO jmx;
+    GRANT DESCRIBE ON ALL MBEANS TO jmx;
+    GRANT EXECUTE ON MBEAN 'java.lang:type=Threading' TO jmx;
+    GRANT EXECUTE ON MBEAN 'com.sun.management:type=HotSpotDiagnostic' TO jmx;
+
+    # Grant the jmx role to one with login permissions so that it can access the JMX tooling
+    CREATE ROLE ks_user WITH PASSWORD = 'password' AND LOGIN = true AND SUPERUSER = false;
+    GRANT jmx TO ks_user;
+
+Fine grained access control to individual MBeans is also supported:
+
+::
+
+    GRANT EXECUTE ON MBEAN 'org.apache.cassandra.db:type=Tables,keyspace=test_keyspace,table=t1' TO ks_user;
+    GRANT EXECUTE ON MBEAN 'org.apache.cassandra.db:type=Tables,keyspace=test_keyspace,table=*' TO ks_owner;
+
+This permits the ``ks_user`` role to invoke methods on the MBean representing a single table in ``test_keyspace``, while
+granting the same permission for all table level MBeans in that keyspace to the ``ks_owner`` role.
+
+Adding/removing roles and granting/revoking of permissions is handled dynamically once the initial setup is complete, so
+no further restarts are required if permissions are altered.
+
+See also: :ref:`Permissions <cql-permissions>`.
+
+.. _jmx-with-ssl:
+
+JMX With SSL
+~~~~~~~~~~~~
+
+JMX SSL configuration is controlled by a number of system properties, some of which are optional. To turn on SSL, edit
+the relevant lines in ``cassandra-env.sh`` (or ``cassandra-env.ps1`` on Windows) to uncomment and set the values of these
+properties as required:
+
+``com.sun.management.jmxremote.ssl``
+    set to true to enable SSL
+``com.sun.management.jmxremote.ssl.need.client.auth``
+    set to true to enable validation of client certificates
+``com.sun.management.jmxremote.registry.ssl``
+    enables SSL sockets for the RMI registry from which clients obtain the JMX connector stub
+``com.sun.management.jmxremote.ssl.enabled.protocols``
+    by default, the protocols supported by the JVM will be used, override with a comma-separated list. Note that this is
+    not usually necessary and using the defaults is the preferred option.
+``com.sun.management.jmxremote.ssl.enabled.cipher.suites``
+    by default, the cipher suites supported by the JVM will be used, override with a comma-separated list. Note that
+    this is not usually necessary and using the defaults is the preferred option.
+``javax.net.ssl.keyStore``
+    set the path on the local filesystem of the keystore containing server private keys and public certificates
+``javax.net.ssl.keyStorePassword``
+    set the password of the keystore file
+``javax.net.ssl.trustStore``
+    if validation of client certificates is required, use this property to specify the path of the truststore containing
+    the public certificates of trusted clients
+``javax.net.ssl.trustStorePassword``
+    set the password of the truststore file
+
+See also: `Oracle Java7 Docs <http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdemv>`__,
+`Monitor Java with JMX <https://www.lullabot.com/articles/monitor-java-with-jmx>`__
diff --git a/src/doc/3.11.11/_sources/operating/snitch.rst.txt b/src/doc/3.11.11/_sources/operating/snitch.rst.txt
new file mode 100644
index 0000000..faea0b3
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/snitch.rst.txt
@@ -0,0 +1,78 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Snitch
+------
+
+In cassandra, the snitch has two functions:
+
+- it teaches Cassandra enough about your network topology to route requests efficiently.
+- it allows Cassandra to spread replicas around your cluster to avoid correlated failures. It does this by grouping
+  machines into "datacenters" and "racks."  Cassandra will do its best not to have more than one replica on the same
+  "rack" (which may not actually be a physical location).
+
+Dynamic snitching
+^^^^^^^^^^^^^^^^^
+
+The dynamic snitch monitor read latencies to avoid reading from hosts that have slowed down. The dynamic snitch is
+configured with the following properties on ``cassandra.yaml``:
+
+- ``dynamic_snitch``: whether the dynamic snitch should be enabled or disabled.
+- ``dynamic_snitch_update_interval_in_ms``: controls how often to perform the more expensive part of host score
+  calculation.
+- ``dynamic_snitch_reset_interval_in_ms``: if set greater than zero and read_repair_chance is < 1.0, this will allow
+  'pinning' of replicas to hosts in order to increase cache capacity.
+- ``dynamic_snitch_badness_threshold:``: The badness threshold will control how much worse the pinned host has to be
+  before the dynamic snitch will prefer other replicas over it.  This is expressed as a double which represents a
+  percentage.  Thus, a value of 0.2 means Cassandra would continue to prefer the static snitch values until the pinned
+  host was 20% worse than the fastest.
+
+Snitch classes
+^^^^^^^^^^^^^^
+
+The ``endpoint_snitch`` parameter in ``cassandra.yaml`` should be set to the class the class that implements
+``IEndPointSnitch`` which will be wrapped by the dynamic snitch and decide if two endpoints are in the same data center
+or on the same rack. Out of the box, Cassandra provides the snitch implementations:
+
+GossipingPropertyFileSnitch
+    This should be your go-to snitch for production use. The rack and datacenter for the local node are defined in
+    cassandra-rackdc.properties and propagated to other nodes via gossip. If ``cassandra-topology.properties`` exists,
+    it is used as a fallback, allowing migration from the PropertyFileSnitch.
+
+SimpleSnitch
+    Treats Strategy order as proximity. This can improve cache locality when disabling read repair. Only appropriate for
+    single-datacenter deployments.
+
+PropertyFileSnitch
+    Proximity is determined by rack and data center, which are explicitly configured in
+    ``cassandra-topology.properties``.
+
+Ec2Snitch
+    Appropriate for EC2 deployments in a single Region. Loads Region and Availability Zone information from the EC2 API.
+    The Region is treated as the datacenter, and the Availability Zone as the rack. Only private IPs are used, so this
+    will not work across multiple regions.
+
+Ec2MultiRegionSnitch
+    Uses public IPs as broadcast_address to allow cross-region connectivity (thus, you should set seed addresses to the
+    public IP as well). You will need to open the ``storage_port`` or ``ssl_storage_port`` on the public IP firewall
+    (For intra-Region traffic, Cassandra will switch to the private IP after establishing a connection).
+
+RackInferringSnitch
+    Proximity is determined by rack and data center, which are assumed to correspond to the 3rd and 2nd octet of each
+    node's IP address, respectively.  Unless this happens to match your deployment conventions, this is best used as an
+    example of writing a custom Snitch class and is provided in that spirit.
diff --git a/src/doc/3.11.11/_sources/operating/topo_changes.rst.txt b/src/doc/3.11.11/_sources/operating/topo_changes.rst.txt
new file mode 100644
index 0000000..c42708e
--- /dev/null
+++ b/src/doc/3.11.11/_sources/operating/topo_changes.rst.txt
@@ -0,0 +1,124 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+.. _topology-changes:
+
+Adding, replacing, moving and removing nodes
+--------------------------------------------
+
+Bootstrap
+^^^^^^^^^
+
+Adding new nodes is called "bootstrapping". The ``num_tokens`` parameter will define the amount of virtual nodes
+(tokens) the joining node will be assigned during bootstrap. The tokens define the sections of the ring (token ranges)
+the node will become responsible for.
+
+Token allocation
+~~~~~~~~~~~~~~~~
+
+With the default token allocation algorithm the new node will pick ``num_tokens`` random tokens to become responsible
+for. Since tokens are distributed randomly, load distribution improves with a higher amount of virtual nodes, but it
+also increases token management overhead. The default of 256 virtual nodes should provide a reasonable load balance with
+acceptable overhead.
+
+On 3.0+ a new token allocation algorithm was introduced to allocate tokens based on the load of existing virtual nodes
+for a given keyspace, and thus yield an improved load distribution with a lower number of tokens. To use this approach,
+the new node must be started with the JVM option ``-Dcassandra.allocate_tokens_for_keyspace=<keyspace>``, where
+``<keyspace>`` is the keyspace from which the algorithm can find the load information to optimize token assignment for.
+
+Manual token assignment
+"""""""""""""""""""""""
+
+You may specify a comma-separated list of tokens manually with the ``initial_token`` ``cassandra.yaml`` parameter, and
+if that is specified Cassandra will skip the token allocation process. This may be useful when doing token assignment
+with an external tool or when restoring a node with its previous tokens.
+
+Range streaming
+~~~~~~~~~~~~~~~~
+
+After the tokens are allocated, the joining node will pick current replicas of the token ranges it will become
+responsible for to stream data from. By default it will stream from the primary replica of each token range in order to
+guarantee data in the new node will be consistent with the current state.
+
+In the case of any unavailable replica, the consistent bootstrap process will fail. To override this behavior and
+potentially miss data from an unavailable replica, set the JVM flag ``-Dcassandra.consistent.rangemovement=false``.
+
+Resuming failed/hanged bootstrap
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+On 2.2+, if the bootstrap process fails, it's possible to resume bootstrap from the previous saved state by calling
+``nodetool bootstrap resume``. If for some reason the bootstrap hangs or stalls, it may also be resumed by simply
+restarting the node. In order to cleanup bootstrap state and start fresh, you may set the JVM startup flag
+``-Dcassandra.reset_bootstrap_progress=true``.
+
+On lower versions, when the bootstrap proces fails it is recommended to wipe the node (remove all the data), and restart
+the bootstrap process again.
+
+Manual bootstrapping
+~~~~~~~~~~~~~~~~~~~~
+
+It's possible to skip the bootstrapping process entirely and join the ring straight away by setting the hidden parameter
+``auto_bootstrap: false``. This may be useful when restoring a node from a backup or creating a new data-center.
+
+Removing nodes
+^^^^^^^^^^^^^^
+
+You can take a node out of the cluster with ``nodetool decommission`` to a live node, or ``nodetool removenode`` (to any
+other machine) to remove a dead one. This will assign the ranges the old node was responsible for to other nodes, and
+replicate the appropriate data there. If decommission is used, the data will stream from the decommissioned node. If
+removenode is used, the data will stream from the remaining replicas.
+
+No data is removed automatically from the node being decommissioned, so if you want to put the node back into service at
+a different token on the ring, it should be removed manually.
+
+Moving nodes
+^^^^^^^^^^^^
+
+When ``num_tokens: 1`` it's possible to move the node position in the ring with ``nodetool move``. Moving is both a
+convenience over and more efficient than decommission + bootstrap. After moving a node, ``nodetool cleanup`` should be
+run to remove any unnecessary data.
+
+Replacing a dead node
+^^^^^^^^^^^^^^^^^^^^^
+
+In order to replace a dead node, start cassandra with the JVM startup flag
+``-Dcassandra.replace_address_first_boot=<dead_node_ip>``. Once this property is enabled the node starts in a hibernate
+state, during which all the other nodes will see this node to be down.
+
+The replacing node will now start to bootstrap the data from the rest of the nodes in the cluster. The main difference
+between normal bootstrapping of a new node is that this new node will not accept any writes during this phase.
+
+Once the bootstrapping is complete the node will be marked "UP", we rely on the hinted handoff's for making this node
+consistent (since we don't accept writes since the start of the bootstrap).
+
+.. Note:: If the replacement process takes longer than ``max_hint_window_in_ms`` you **MUST** run repair to make the
+   replaced node consistent again, since it missed ongoing writes during bootstrapping.
+
+Monitoring progress
+^^^^^^^^^^^^^^^^^^^
+
+Bootstrap, replace, move and remove progress can be monitored using ``nodetool netstats`` which will show the progress
+of the streaming operations.
+
+Cleanup data after range movements
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+As a safety measure, Cassandra does not automatically remove data from nodes that "lose" part of their token range due
+to a range movement operation (bootstrap, move, replace). Run ``nodetool cleanup`` on the nodes that lost ranges to the
+joining node when you are satisfied the new node is up and working. If you do not do this the old data will still be
+counted against the load on that node.
diff --git a/src/doc/3.11.11/_sources/tools/cqlsh.rst.txt b/src/doc/3.11.11/_sources/tools/cqlsh.rst.txt
new file mode 100644
index 0000000..45e2db8
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/cqlsh.rst.txt
@@ -0,0 +1,455 @@
+.. highlight:: none
+
+.. _cqlsh:
+
+cqlsh: the CQL shell
+--------------------
+
+cqlsh is a command line shell for interacting with Cassandra through CQL (the Cassandra Query Language).  It is shipped
+with every Cassandra package, and can be found in the bin/ directory alongside the cassandra executable.  cqlsh utilizes
+the Python native protocol driver, and connects to the single node specified on the command line.
+
+
+Compatibility
+^^^^^^^^^^^^^
+
+cqlsh is compatible with Python 2.7.
+
+In general, a given version of cqlsh is only guaranteed to work with the version of Cassandra that it was released with.
+In some cases, cqlsh make work with older or newer versions of Cassandra, but this is not officially supported.
+
+
+Optional Dependencies
+^^^^^^^^^^^^^^^^^^^^^
+
+cqlsh ships with all essential dependencies.  However, there are some optional dependencies that can be installed to
+improve the capabilities of cqlsh.
+
+pytz
+~~~~
+
+By default, cqlsh displays all timestamps with a UTC timezone.  To support display of timestamps with another timezone,
+the `pytz <http://pytz.sourceforge.net/>`__ library must be installed.  See the ``timezone`` option in cqlshrc_ for
+specifying a timezone to use.
+
+cython
+~~~~~~
+
+The performance of cqlsh's ``COPY`` operations can be improved by installing `cython <http://cython.org/>`__.  This will
+compile the python modules that are central to the performance of ``COPY``.
+
+cqlshrc
+^^^^^^^
+
+The ``cqlshrc`` file holds configuration options for cqlsh.  By default this is in the user's home directory at
+``~/.cassandra/cqlsh``, but a custom location can be specified with the ``--cqlshrc`` option.
+
+Example config values and documentation can be found in the ``conf/cqlshrc.sample`` file of a tarball installation.  You
+can also view the latest version of `cqlshrc online <https://github.com/apache/cassandra/blob/trunk/conf/cqlshrc.sample>`__.
+
+
+Command Line Options
+^^^^^^^^^^^^^^^^^^^^
+
+Usage:
+
+``cqlsh [options] [host [port]]``
+
+Options:
+
+``-C`` ``--color``
+  Force color output
+
+``--no-color``
+  Disable color output
+
+``--browser``
+  Specify the browser to use for displaying cqlsh help.  This can be one of the `supported browser names
+  <https://docs.python.org/2/library/webbrowser.html>`__ (e.g. ``firefox``) or a browser path followed by ``%s`` (e.g.
+  ``/usr/bin/google-chrome-stable %s``).
+
+``--ssl``
+  Use SSL when connecting to Cassandra
+
+``-u`` ``--user``
+  Username to authenticate against Cassandra with
+
+``-p`` ``--password``
+  Password to authenticate against Cassandra with, should
+  be used in conjunction with ``--user``
+
+``-k`` ``--keyspace``
+  Keyspace to authenticate to, should be used in conjunction
+  with ``--user``
+
+``-f`` ``--file``
+  Execute commands from the given file, then exit
+
+``--debug``
+  Print additional debugging information
+
+``--encoding``
+  Specify a non-default encoding for output (defaults to UTF-8)
+
+``--cqlshrc``
+  Specify a non-default location for the ``cqlshrc`` file
+
+``-e`` ``--execute``
+  Execute the given statement, then exit
+
+``--connect-timeout``
+  Specify the connection timeout in seconds (defaults to 2s)
+
+``--request-timeout``
+  Specify the request timeout in seconds (defaults to 10s)
+
+``-t`` ``--tty``
+  Force tty mode (command prompt)
+
+
+Special Commands
+^^^^^^^^^^^^^^^^
+
+In addition to supporting regular CQL statements, cqlsh also supports a number of special commands that are not part of
+CQL.  These are detailed below.
+
+``CONSISTENCY``
+~~~~~~~~~~~~~~~
+
+`Usage`: ``CONSISTENCY <consistency level>``
+
+Sets the consistency level for operations to follow.  Valid arguments include:
+
+- ``ANY``
+- ``ONE``
+- ``TWO``
+- ``THREE``
+- ``QUORUM``
+- ``ALL``
+- ``LOCAL_QUORUM``
+- ``LOCAL_ONE``
+- ``SERIAL``
+- ``LOCAL_SERIAL``
+
+``SERIAL CONSISTENCY``
+~~~~~~~~~~~~~~~~~~~~~~
+
+`Usage`: ``SERIAL CONSISTENCY <consistency level>``
+
+Sets the serial consistency level for operations to follow.  Valid arguments include:
+
+- ``SERIAL``
+- ``LOCAL_SERIAL``
+
+The serial consistency level is only used by conditional updates (``INSERT``, ``UPDATE`` and ``DELETE`` with an ``IF``
+condition). For those, the serial consistency level defines the consistency level of the serial phase (or “paxos” phase)
+while the normal consistency level defines the consistency for the “learn” phase, i.e. what type of reads will be
+guaranteed to see the update right away. For example, if a conditional write has a consistency level of ``QUORUM`` (and
+is successful), then a ``QUORUM`` read is guaranteed to see that write. But if the regular consistency level of that
+write is ``ANY``, then only a read with a consistency level of ``SERIAL`` is guaranteed to see it (even a read with
+consistency ``ALL`` is not guaranteed to be enough).
+
+``SHOW VERSION``
+~~~~~~~~~~~~~~~~
+Prints the cqlsh, Cassandra, CQL, and native protocol versions in use.  Example::
+
+    cqlsh> SHOW VERSION
+    [cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
+
+``SHOW HOST``
+~~~~~~~~~~~~~
+
+Prints the IP address and port of the Cassandra node that cqlsh is connected to in addition to the cluster name.
+Example::
+
+    cqlsh> SHOW HOST
+    Connected to Prod_Cluster at 192.0.0.1:9042.
+
+``SHOW SESSION``
+~~~~~~~~~~~~~~~~
+
+Pretty prints a specific tracing session.
+
+`Usage`: ``SHOW SESSION <session id>``
+
+Example usage::
+
+    cqlsh> SHOW SESSION 95ac6470-327e-11e6-beca-dfb660d92ad8
+
+    Tracing session: 95ac6470-327e-11e6-beca-dfb660d92ad8
+
+     activity                                                  | timestamp                  | source    | source_elapsed | client
+    -----------------------------------------------------------+----------------------------+-----------+----------------+-----------
+                                            Execute CQL3 query | 2016-06-14 17:23:13.979000 | 127.0.0.1 |              0 | 127.0.0.1
+     Parsing SELECT * FROM system.local; [SharedPool-Worker-1] | 2016-06-14 17:23:13.982000 | 127.0.0.1 |           3843 | 127.0.0.1
+    ...
+
+
+``SOURCE``
+~~~~~~~~~~
+
+Reads the contents of a file and executes each line as a CQL statement or special cqlsh command.
+
+`Usage`: ``SOURCE <string filename>``
+
+Example usage::
+
+    cqlsh> SOURCE '/home/thobbs/commands.cql'
+
+``CAPTURE``
+~~~~~~~~~~~
+
+Begins capturing command output and appending it to a specified file.  Output will not be shown at the console while it
+is captured.
+
+`Usage`::
+
+    CAPTURE '<file>';
+    CAPTURE OFF;
+    CAPTURE;
+
+That is, the path to the file to be appended to must be given inside a string literal. The path is interpreted relative
+to the current working directory. The tilde shorthand notation (``'~/mydir'``) is supported for referring to ``$HOME``.
+
+Only query result output is captured. Errors and output from cqlsh-only commands will still be shown in the cqlsh
+session.
+
+To stop capturing output and show it in the cqlsh session again, use ``CAPTURE OFF``.
+
+To inspect the current capture configuration, use ``CAPTURE`` with no arguments.
+
+``HELP``
+~~~~~~~~
+
+Gives information about cqlsh commands. To see available topics, enter ``HELP`` without any arguments. To see help on a
+topic, use ``HELP <topic>``.  Also see the ``--browser`` argument for controlling what browser is used to display help.
+
+``TRACING``
+~~~~~~~~~~~
+
+Enables or disables tracing for queries.  When tracing is enabled, once a query completes, a trace of the events during
+the query will be printed.
+
+`Usage`::
+
+    TRACING ON
+    TRACING OFF
+
+``PAGING``
+~~~~~~~~~~
+
+Enables paging, disables paging, or sets the page size for read queries.  When paging is enabled, only one page of data
+will be fetched at a time and a prompt will appear to fetch the next page.  Generally, it's a good idea to leave paging
+enabled in an interactive session to avoid fetching and printing large amounts of data at once.
+
+`Usage`::
+
+    PAGING ON
+    PAGING OFF
+    PAGING <page size in rows>
+
+``EXPAND``
+~~~~~~~~~~
+
+Enables or disables vertical printing of rows.  Enabling ``EXPAND`` is useful when many columns are fetched, or the
+contents of a single column are large.
+
+`Usage`::
+
+    EXPAND ON
+    EXPAND OFF
+
+``LOGIN``
+~~~~~~~~~
+
+Authenticate as a specified Cassandra user for the current session.
+
+`Usage`::
+
+    LOGIN <username> [<password>]
+
+``EXIT``
+~~~~~~~~~
+
+Ends the current session and terminates the cqlsh process.
+
+`Usage`::
+
+    EXIT
+    QUIT
+
+``CLEAR``
+~~~~~~~~~
+
+Clears the console.
+
+`Usage`::
+
+    CLEAR
+    CLS
+
+``DESCRIBE``
+~~~~~~~~~~~~
+
+Prints a description (typically a series of DDL statements) of a schema element or the cluster.  This is useful for
+dumping all or portions of the schema.
+
+`Usage`::
+
+    DESCRIBE CLUSTER
+    DESCRIBE SCHEMA
+    DESCRIBE KEYSPACES
+    DESCRIBE KEYSPACE <keyspace name>
+    DESCRIBE TABLES
+    DESCRIBE TABLE <table name>
+    DESCRIBE INDEX <index name>
+    DESCRIBE MATERIALIZED VIEW <view name>
+    DESCRIBE TYPES
+    DESCRIBE TYPE <type name>
+    DESCRIBE FUNCTIONS
+    DESCRIBE FUNCTION <function name>
+    DESCRIBE AGGREGATES
+    DESCRIBE AGGREGATE <aggregate function name>
+
+In any of the commands, ``DESC`` may be used in place of ``DESCRIBE``.
+
+The ``DESCRIBE CLUSTER`` command prints the cluster name and partitioner::
+
+    cqlsh> DESCRIBE CLUSTER
+
+    Cluster: Test Cluster
+    Partitioner: Murmur3Partitioner
+
+The ``DESCRIBE SCHEMA`` command prints the DDL statements needed to recreate the entire schema.  This is especially
+useful for dumping the schema in order to clone a cluster or restore from a backup.
+
+``COPY TO``
+~~~~~~~~~~~
+
+Copies data from a table to a CSV file.
+
+`Usage`::
+
+    COPY <table name> [(<column>, ...)] TO <file name> WITH <copy option> [AND <copy option> ...]
+
+If no columns are specified, all columns from the table will be copied to the CSV file.  A subset of columns to copy may
+be specified by adding a comma-separated list of column names surrounded by parenthesis after the table name.
+
+
+The ``<file name>`` should be a string literal (with single quotes) representing a path to the destination file.  This
+can also the special value ``STDOUT`` (without single quotes) to print the CSV to stdout.
+
+See :ref:`shared-copy-options` for options that apply to both ``COPY TO`` and ``COPY FROM``.
+
+Options for ``COPY TO``
+```````````````````````
+
+``MAXREQUESTS``
+  The maximum number token ranges to fetch simultaneously. Defaults to 6.
+
+``PAGESIZE``
+  The number of rows to fetch in a single page. Defaults to 1000.
+
+``PAGETIMEOUT``
+  By default the page timeout is 10 seconds per 1000 entries
+  in the page size or 10 seconds if pagesize is smaller.
+
+``BEGINTOKEN``, ``ENDTOKEN``
+  Token range to export.  Defaults to exporting the full ring.
+
+``MAXOUTPUTSIZE``
+  The maximum size of the output file measured in number of lines;
+  beyond this maximum the output file will be split into segments.
+  -1 means unlimited, and is the default.
+
+``ENCODING``
+  The encoding used for characters. Defaults to ``utf8``.
+
+``COPY FROM``
+~~~~~~~~~~~~~
+Copies data from a CSV file to table.
+
+`Usage`::
+
+    COPY <table name> [(<column>, ...)] FROM <file name> WITH <copy option> [AND <copy option> ...]
+
+If no columns are specified, all columns from the CSV file will be copied to the table.  A subset
+of columns to copy may be specified by adding a comma-separated list of column names surrounded
+by parenthesis after the table name.
+
+The ``<file name>`` should be a string literal (with single quotes) representing a path to the
+source file.  This can also the special value ``STDIN`` (without single quotes) to read the
+CSV data from stdin.
+
+See :ref:`shared-copy-options` for options that apply to both ``COPY TO`` and ``COPY FROM``.
+
+Options for ``COPY TO``
+```````````````````````
+
+``INGESTRATE``
+  The maximum number of rows to process per second. Defaults to 100000.
+
+``MAXROWS``
+  The maximum number of rows to import. -1 means unlimited, and is the default.
+
+``SKIPROWS``
+  A number of initial rows to skip.  Defaults to 0.
+
+``SKIPCOLS``
+  A comma-separated list of column names to ignore.  By default, no columns are skipped.
+
+``MAXPARSEERRORS``
+  The maximum global number of parsing errors to ignore. -1 means unlimited, and is the default.
+
+``MAXINSERTERRORS``
+  The maximum global number of insert errors to ignore. -1 means unlimited.  The default is 1000.
+
+``ERRFILE`` =
+  A file to store all rows that could not be imported, by default this is ``import_<ks>_<table>.err`` where ``<ks>`` is
+  your keyspace and ``<table>`` is your table name.
+
+``MAXBATCHSIZE``
+  The max number of rows inserted in a single batch. Defaults to 20.
+
+``MINBATCHSIZE``
+  The min number of rows inserted in a single batch. Defaults to 2.
+
+``CHUNKSIZE``
+  The number of rows that are passed to child worker processes from the main process at a time. Defaults to 1000.
+
+.. _shared-copy-options:
+
+Shared COPY Options
+```````````````````
+
+Options that are common to both ``COPY TO`` and ``COPY FROM``.
+
+``NULLVAL``
+  The string placeholder for null values.  Defaults to ``null``.
+
+``HEADER``
+  For ``COPY TO``, controls whether the first line in the CSV output file will contain the column names.  For COPY FROM,
+  specifies whether the first line in the CSV input file contains column names.  Defaults to ``false``.
+
+``DECIMALSEP``
+  The character that is used as the decimal point separator.  Defaults to ``.``.
+
+``THOUSANDSSEP``
+  The character that is used to separate thousands. Defaults to the empty string.
+
+``BOOLSTYlE``
+  The string literal format for boolean values.  Defaults to ``True,False``.
+
+``NUMPROCESSES``
+  The number of child worker processes to create for ``COPY`` tasks.  Defaults to a max of 4 for ``COPY FROM`` and 16
+  for ``COPY TO``.  However, at most (num_cores - 1) processes will be created.
+
+``MAXATTEMPTS``
+  The maximum number of failed attempts to fetch a range of data (when using ``COPY TO``) or insert a chunk of data
+  (when using ``COPY FROM``) before giving up. Defaults to 5.
+
+``REPORTFREQUENCY``
+  How often status updates are refreshed, in seconds.  Defaults to 0.25.
+
+``RATEFILE``
+  An optional file to output rate statistics to.  By default, statistics are not output to a file.
diff --git a/src/doc/3.11.11/_sources/tools/index.rst.txt b/src/doc/3.11.11/_sources/tools/index.rst.txt
new file mode 100644
index 0000000..5a5e4d5
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/index.rst.txt
@@ -0,0 +1,26 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Cassandra Tools
+===============
+
+This section describes the command line tools provided with Apache Cassandra.
+
+.. toctree::
+   :maxdepth: 1
+
+   cqlsh
+   nodetool
diff --git a/src/doc/3.11.11/_sources/tools/nodetool.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool.rst.txt
new file mode 100644
index 0000000..e373031
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool.rst.txt
@@ -0,0 +1,22 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. _nodetool:
+
+Nodetool
+--------
+
+.. todo:: Try to autogenerate this from Nodetool’s help.
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/assassinate.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/assassinate.rst.txt
new file mode 100644
index 0000000..0ec5dc8
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/assassinate.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_assassinate:
+
+assassinate
+-----------
+
+Usage
+---------
+
+.. include:: assassinate.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/bootstrap.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/bootstrap.rst.txt
new file mode 100644
index 0000000..e280fee
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/bootstrap.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_bootstrap:
+
+bootstrap
+---------
+
+Usage
+---------
+
+.. include:: bootstrap.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/cleanup.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/cleanup.rst.txt
new file mode 100644
index 0000000..70ba8f9
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/cleanup.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_cleanup:
+
+cleanup
+-------
+
+Usage
+---------
+
+.. include:: cleanup.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/clearsnapshot.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/clearsnapshot.rst.txt
new file mode 100644
index 0000000..8781475
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/clearsnapshot.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_clearsnapshot:
+
+clearsnapshot
+-------------
+
+Usage
+---------
+
+.. include:: clearsnapshot.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/compact.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/compact.rst.txt
new file mode 100644
index 0000000..a26347c
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/compact.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_compact:
+
+compact
+-------
+
+Usage
+---------
+
+.. include:: compact.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/compactionhistory.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/compactionhistory.rst.txt
new file mode 100644
index 0000000..896433e
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/compactionhistory.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_compactionhistory:
+
+compactionhistory
+-----------------
+
+Usage
+---------
+
+.. include:: compactionhistory.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/compactionstats.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/compactionstats.rst.txt
new file mode 100644
index 0000000..6128225
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/compactionstats.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_compactionstats:
+
+compactionstats
+---------------
+
+Usage
+---------
+
+.. include:: compactionstats.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/decommission.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/decommission.rst.txt
new file mode 100644
index 0000000..8b00ff4
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/decommission.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_decommission:
+
+decommission
+------------
+
+Usage
+---------
+
+.. include:: decommission.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/describecluster.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/describecluster.rst.txt
new file mode 100644
index 0000000..55df135
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/describecluster.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_describecluster:
+
+describecluster
+---------------
+
+Usage
+---------
+
+.. include:: describecluster.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/describering.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/describering.rst.txt
new file mode 100644
index 0000000..3a964e8
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/describering.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_describering:
+
+describering
+------------
+
+Usage
+---------
+
+.. include:: describering.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/disableautocompaction.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/disableautocompaction.rst.txt
new file mode 100644
index 0000000..16549f2
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/disableautocompaction.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disableautocompaction:
+
+disableautocompaction
+---------------------
+
+Usage
+---------
+
+.. include:: disableautocompaction.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/disablebackup.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/disablebackup.rst.txt
new file mode 100644
index 0000000..c9537e0
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/disablebackup.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disablebackup:
+
+disablebackup
+-------------
+
+Usage
+---------
+
+.. include:: disablebackup.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/disablebinary.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/disablebinary.rst.txt
new file mode 100644
index 0000000..86e981f
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/disablebinary.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disablebinary:
+
+disablebinary
+-------------
+
+Usage
+---------
+
+.. include:: disablebinary.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/disablegossip.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/disablegossip.rst.txt
new file mode 100644
index 0000000..76f3d06
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/disablegossip.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disablegossip:
+
+disablegossip
+-------------
+
+Usage
+---------
+
+.. include:: disablegossip.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/disablehandoff.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/disablehandoff.rst.txt
new file mode 100644
index 0000000..35f1133
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/disablehandoff.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disablehandoff:
+
+disablehandoff
+--------------
+
+Usage
+---------
+
+.. include:: disablehandoff.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/disablehintsfordc.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/disablehintsfordc.rst.txt
new file mode 100644
index 0000000..892c31b
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/disablehintsfordc.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disablehintsfordc:
+
+disablehintsfordc
+-----------------
+
+Usage
+---------
+
+.. include:: disablehintsfordc.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/disablethrift.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/disablethrift.rst.txt
new file mode 100644
index 0000000..43a2629
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/disablethrift.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disablethrift:
+
+disablethrift
+-------------
+
+Usage
+---------
+
+.. include:: disablethrift.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/drain.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/drain.rst.txt
new file mode 100644
index 0000000..03093ac
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/drain.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_drain:
+
+drain
+-----
+
+Usage
+---------
+
+.. include:: drain.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/enableautocompaction.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/enableautocompaction.rst.txt
new file mode 100644
index 0000000..2ddf60f
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/enableautocompaction.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enableautocompaction:
+
+enableautocompaction
+--------------------
+
+Usage
+---------
+
+.. include:: enableautocompaction.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/enablebackup.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/enablebackup.rst.txt
new file mode 100644
index 0000000..9a06c66
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/enablebackup.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enablebackup:
+
+enablebackup
+------------
+
+Usage
+---------
+
+.. include:: enablebackup.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/enablebinary.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/enablebinary.rst.txt
new file mode 100644
index 0000000..5b1c6da
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/enablebinary.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enablebinary:
+
+enablebinary
+------------
+
+Usage
+---------
+
+.. include:: enablebinary.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/enablegossip.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/enablegossip.rst.txt
new file mode 100644
index 0000000..ae66186
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/enablegossip.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enablegossip:
+
+enablegossip
+------------
+
+Usage
+---------
+
+.. include:: enablegossip.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/enablehandoff.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/enablehandoff.rst.txt
new file mode 100644
index 0000000..d764c3a
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/enablehandoff.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enablehandoff:
+
+enablehandoff
+-------------
+
+Usage
+---------
+
+.. include:: enablehandoff.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/enablehintsfordc.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/enablehintsfordc.rst.txt
new file mode 100644
index 0000000..6c42087
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/enablehintsfordc.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enablehintsfordc:
+
+enablehintsfordc
+----------------
+
+Usage
+---------
+
+.. include:: enablehintsfordc.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/enablethrift.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/enablethrift.rst.txt
new file mode 100644
index 0000000..ecf0495
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/enablethrift.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enablethrift:
+
+enablethrift
+------------
+
+Usage
+---------
+
+.. include:: enablethrift.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/failuredetector.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/failuredetector.rst.txt
new file mode 100644
index 0000000..25d02b0
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/failuredetector.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_failuredetector:
+
+failuredetector
+---------------
+
+Usage
+---------
+
+.. include:: failuredetector.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/flush.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/flush.rst.txt
new file mode 100644
index 0000000..45e9b2c
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/flush.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_flush:
+
+flush
+-----
+
+Usage
+---------
+
+.. include:: flush.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/garbagecollect.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/garbagecollect.rst.txt
new file mode 100644
index 0000000..3af605a
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/garbagecollect.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_garbagecollect:
+
+garbagecollect
+--------------
+
+Usage
+---------
+
+.. include:: garbagecollect.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/gcstats.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/gcstats.rst.txt
new file mode 100644
index 0000000..3e4b459
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/gcstats.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_gcstats:
+
+gcstats
+-------
+
+Usage
+---------
+
+.. include:: gcstats.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/getcompactionthreshold.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/getcompactionthreshold.rst.txt
new file mode 100644
index 0000000..e17f4b2
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/getcompactionthreshold.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getcompactionthreshold:
+
+getcompactionthreshold
+----------------------
+
+Usage
+---------
+
+.. include:: getcompactionthreshold.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/getcompactionthroughput.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/getcompactionthroughput.rst.txt
new file mode 100644
index 0000000..ef41115
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/getcompactionthroughput.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getcompactionthroughput:
+
+getcompactionthroughput
+-----------------------
+
+Usage
+---------
+
+.. include:: getcompactionthroughput.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/getconcurrentcompactors.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/getconcurrentcompactors.rst.txt
new file mode 100644
index 0000000..8e137e0
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/getconcurrentcompactors.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getconcurrentcompactors:
+
+getconcurrentcompactors
+-----------------------
+
+Usage
+---------
+
+.. include:: getconcurrentcompactors.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/getendpoints.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/getendpoints.rst.txt
new file mode 100644
index 0000000..ac0d43c
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/getendpoints.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getendpoints:
+
+getendpoints
+------------
+
+Usage
+---------
+
+.. include:: getendpoints.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/getinterdcstreamthroughput.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/getinterdcstreamthroughput.rst.txt
new file mode 100644
index 0000000..abdd7e7
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/getinterdcstreamthroughput.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getinterdcstreamthroughput:
+
+getinterdcstreamthroughput
+--------------------------
+
+Usage
+---------
+
+.. include:: getinterdcstreamthroughput.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/getlogginglevels.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/getlogginglevels.rst.txt
new file mode 100644
index 0000000..9936e8d
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/getlogginglevels.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getlogginglevels:
+
+getlogginglevels
+----------------
+
+Usage
+---------
+
+.. include:: getlogginglevels.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/getsstables.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/getsstables.rst.txt
new file mode 100644
index 0000000..1a866cc
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/getsstables.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getsstables:
+
+getsstables
+-----------
+
+Usage
+---------
+
+.. include:: getsstables.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/getstreamthroughput.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/getstreamthroughput.rst.txt
new file mode 100644
index 0000000..6d7dbc4
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/getstreamthroughput.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getstreamthroughput:
+
+getstreamthroughput
+-------------------
+
+Usage
+---------
+
+.. include:: getstreamthroughput.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/gettimeout.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/gettimeout.rst.txt
new file mode 100644
index 0000000..9d2e9ed
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/gettimeout.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_gettimeout:
+
+gettimeout
+----------
+
+Usage
+---------
+
+.. include:: gettimeout.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/gettraceprobability.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/gettraceprobability.rst.txt
new file mode 100644
index 0000000..3f5783f
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/gettraceprobability.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_gettraceprobability:
+
+gettraceprobability
+-------------------
+
+Usage
+---------
+
+.. include:: gettraceprobability.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/gossipinfo.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/gossipinfo.rst.txt
new file mode 100644
index 0000000..cd3513a
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/gossipinfo.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_gossipinfo:
+
+gossipinfo
+----------
+
+Usage
+---------
+
+.. include:: gossipinfo.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/help.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/help.rst.txt
new file mode 100644
index 0000000..8cab88f
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/help.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_help:
+
+help
+----
+
+Usage
+---------
+
+.. include:: help.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/info.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/info.rst.txt
new file mode 100644
index 0000000..74012e9
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/info.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_info:
+
+info
+----
+
+Usage
+---------
+
+.. include:: info.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/invalidatecountercache.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/invalidatecountercache.rst.txt
new file mode 100644
index 0000000..ce1a94d
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/invalidatecountercache.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_invalidatecountercache:
+
+invalidatecountercache
+----------------------
+
+Usage
+---------
+
+.. include:: invalidatecountercache.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/invalidatekeycache.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/invalidatekeycache.rst.txt
new file mode 100644
index 0000000..3e80511
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/invalidatekeycache.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_invalidatekeycache:
+
+invalidatekeycache
+------------------
+
+Usage
+---------
+
+.. include:: invalidatekeycache.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/invalidaterowcache.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/invalidaterowcache.rst.txt
new file mode 100644
index 0000000..fd84f1d
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/invalidaterowcache.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_invalidaterowcache:
+
+invalidaterowcache
+------------------
+
+Usage
+---------
+
+.. include:: invalidaterowcache.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/join.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/join.rst.txt
new file mode 100644
index 0000000..a2819eb
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/join.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_join:
+
+join
+----
+
+Usage
+---------
+
+.. include:: join.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/listsnapshots.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/listsnapshots.rst.txt
new file mode 100644
index 0000000..d897cfa
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/listsnapshots.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_listsnapshots:
+
+listsnapshots
+-------------
+
+Usage
+---------
+
+.. include:: listsnapshots.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/move.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/move.rst.txt
new file mode 100644
index 0000000..04b3bdb
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/move.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_move:
+
+move
+----
+
+Usage
+---------
+
+.. include:: move.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/netstats.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/netstats.rst.txt
new file mode 100644
index 0000000..b94a09e
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/netstats.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_netstats:
+
+netstats
+--------
+
+Usage
+---------
+
+.. include:: netstats.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/nodetool.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/nodetool.rst.txt
new file mode 100644
index 0000000..6242cf9
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/nodetool.rst.txt
@@ -0,0 +1,207 @@
+.. _nodetool
+
+Nodetool
+--------
+
+Usage
+---------
+
+usage: nodetool [(-u <username> | --username <username>)]
+        [(-pw <password> | --password <password>)]
+        [(-pwf <passwordFilePath> | --password-file <passwordFilePath>)]
+        [(-h <host> | --host <host>)] [(-p <port> | --port <port>)] <command> [<args>]
+
+The most commonly used nodetool commands are:
+
+    :doc:`assassinate` -                   Forcefully remove a dead node without re-replicating any data.  Use as a last resort if you cannot removenode
+
+    :doc:`bootstrap` -                     Monitor/manage node's bootstrap process
+
+    :doc:`cleanup` -                       Triggers the immediate cleanup of keys no longer belonging to a node. By default, clean all keyspaces
+
+    :doc:`clearsnapshot` -                 Remove the snapshot with the given name from the given keyspaces. If no snapshotName is specified we will remove all snapshots
+
+    :doc:`compact` -                       Force a (major) compaction on one or more tables or user-defined compaction on given SSTables
+
+    :doc:`compactionhistory` -             Print history of compaction
+
+    :doc:`compactionstats` -               Print statistics on compactions
+
+    :doc:`decommission` -                  Decommission the *node I am connecting to*
+
+    :doc:`describecluster` -               Print the name, snitch, partitioner and schema version of a cluster
+
+    :doc:`describering` -                  Shows the token ranges info of a given keyspace
+
+    :doc:`disableautocompaction` -         Disable autocompaction for the given keyspace and table
+
+    :doc:`disablebackup` -                 Disable incremental backup
+
+    :doc:`disablebinary` -                 Disable native transport (binary protocol)
+
+    :doc:`disablegossip` -                 Disable gossip (effectively marking the node down)
+
+    :doc:`disablehandoff` -                Disable storing hinted handoffs
+
+    :doc:`disablehintsfordc` -             Disable hints for a data center
+
+    :doc:`disablethrift` -                 Disable thrift server
+
+    :doc:`drain` -                         Drain the node (stop accepting writes and flush all tables)
+
+    :doc:`enableautocompaction` -          Enable autocompaction for the given keyspace and table
+
+    :doc:`enablebackup` -                  Enable incremental backup
+
+    :doc:`enablebinary` -                  Reenable native transport (binary protocol)
+
+    :doc:`enablegossip` -                  Reenable gossip
+
+    :doc:`enablehandoff` -                 Reenable future hints storing on the current node
+
+    :doc:`enablehintsfordc` -              Enable hints for a data center that was previsouly disabled
+
+    :doc:`enablethrift` -                  Reenable thrift server
+
+    :doc:`failuredetector` -               Shows the failure detector information for the cluster
+
+    :doc:`flush` -                         Flush one or more tables
+
+    :doc:`garbagecollect` -                Remove deleted data from one or more tables
+
+    :doc:`gcstats` -                       Print GC Statistics
+
+    :doc:`getcompactionthreshold` -        Print min and max compaction thresholds for a given table
+
+    :doc:`getcompactionthroughput` -       Print the MB/s throughput cap for compaction in the system
+
+    :doc:`getconcurrentcompactors` -       Get the number of concurrent compactors in the system.
+
+    :doc:`getendpoints` -                  Print the end points that owns the key
+
+    :doc:`getinterdcstreamthroughput` -    Print the Mb/s throughput cap for inter-datacenter streaming in the system
+
+    :doc:`getlogginglevels` -              Get the runtime logging levels
+
+    :doc:`getsstables` -                   Print the sstable filenames that own the key
+
+    :doc:`getstreamthroughput` -           Print the Mb/s throughput cap for streaming in the system
+
+    :doc:`gettimeout` -                    Print the timeout of the given type in ms
+
+    :doc:`gettraceprobability` -           Print the current trace probability value
+
+    :doc:`gossipinfo` -                    Shows the gossip information for the cluster
+
+    :doc:`help` -                          Display help information
+
+    :doc:`info` -                          Print node information (uptime, load, ...)
+
+    :doc:`invalidatecountercache` -        Invalidate the counter cache
+
+    :doc:`invalidatekeycache` -            Invalidate the key cache
+
+    :doc:`invalidaterowcache` -            Invalidate the row cache
+
+    :doc:`join` -                          Join the ring
+
+    :doc:`listsnapshots` -                 Lists all the snapshots along with the size on disk and true size.
+
+    :doc:`move` -                          Move node on the token ring to a new token
+
+    :doc:`netstats` -                      Print network information on provided host (connecting node by default)
+
+    :doc:`pausehandoff` -                  Pause hints delivery process
+
+    :doc:`proxyhistograms` -               Print statistic histograms for network operations
+
+    :doc:`rangekeysample` -                Shows the sampled keys held across all keyspaces
+
+    :doc:`rebuild` -                       Rebuild data by streaming from other nodes (similarly to bootstrap)
+
+    :doc:`rebuild_index` -                 A full rebuild of native secondary indexes for a given table
+
+    :doc:`refresh` -                       Load newly placed SSTables to the system without restart
+
+    :doc:`refreshsizeestimates` -          Refresh system.size_estimates
+
+    :doc:`reloadlocalschema` -             Reload local node schema from system tables
+
+    :doc:`reloadtriggers` -                Reload trigger classes
+
+    :doc:`relocatesstables` -              Relocates sstables to the correct disk
+
+    :doc:`removenode` -                    Show status of current node removal, force completion of pending removal or remove provided ID
+
+    :doc:`repair` -                        Repair one or more tables
+
+    :doc:`replaybatchlog` -                Kick off batchlog replay and wait for finish
+
+    :doc:`resetlocalschema` -              Reset node's local schema and resync
+
+    :doc:`resumehandoff` -                 Resume hints delivery process
+
+    :doc:`ring` -                          Print information about the token ring
+
+    :doc:`scrub` -                         Scrub (rebuild sstables for) one or more tables
+
+    :doc:`setcachecapacity` -              Set global key, row, and counter cache capacities (in MB units)
+
+    :doc:`setcachekeystosave` -            Set number of keys saved by each cache for faster post-restart warmup. 0 to disable
+
+    :doc:`setcompactionthreshold` -        Set min and max compaction thresholds for a given table
+
+    :doc:`setcompactionthroughput` -       Set the MB/s throughput cap for compaction in the system, or 0 to disable throttling
+
+    :doc:`setconcurrentcompactors` -       Set number of concurrent compactors in the system.
+
+    :doc:`sethintedhandoffthrottlekb` -    Set hinted handoff throttle in kb per second, per delivery thread.
+
+    :doc:`setinterdcstreamthroughput` -    Set the Mb/s throughput cap for inter-datacenter streaming in the system, or 0 to disable throttling
+
+    :doc:`setlogginglevel` -               Set the log level threshold for a given class. If both class and level are empty/null, it will reset to the initial configuration
+
+    :doc:`setstreamthroughput` -           Set the Mb/s throughput cap for streaming in the system, or 0 to disable throttling
+
+    :doc:`settimeout` -                    Set the specified timeout in ms, or 0 to disable timeout
+
+    :doc:`settraceprobability` -           Sets the probability for tracing any given request to value. 0 disables, 1 enables for all requests, 0 is the default
+
+    :doc:`snapshot` -                      Take a snapshot of specified keyspaces or a snapshot of the specified table
+
+    :doc:`status` -                        Print cluster information (state, load, IDs, ...)
+
+    :doc:`statusbackup` -                  Status of incremental backup
+
+    :doc:`statusbinary` -                  Status of native transport (binary protocol)
+
+    :doc:`statusgossip` -                  Status of gossip
+
+    :doc:`statushandoff` -                 Status of storing future hints on the current node
+
+    :doc:`statusthrift` -                  Status of thrift server
+
+    :doc:`stop` -                          Stop compaction
+
+    :doc:`stopdaemon` -                    Stop cassandra daemon
+
+    :doc:`tablehistograms` -               Print statistic histograms for a given table
+
+    :doc:`tablestats` -                    Print statistics on tables
+
+    :doc:`toppartitions` -                 Sample and print the most active partitions for a given column family
+
+    :doc:`tpstats` -                       Print usage statistics of thread pools
+
+    :doc:`truncatehints` -                 Truncate all hints on the local node, or truncate hints for the endpoint(s) specified.
+
+    :doc:`upgradesstables` -               Rewrite sstables (for the requested tables) that are not on the current version (thus upgrading them to said current version)
+
+    :doc:`verify` -                        Verify (check data checksum for) one or more tables
+
+    :doc:`version` -                       Print cassandra version
+
+    :doc:`viewbuildstatus` -               Show progress of a materialized view build
+
+See 'nodetool help <command>' for more information on a specific command.
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/pausehandoff.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/pausehandoff.rst.txt
new file mode 100644
index 0000000..85ea996
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/pausehandoff.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_pausehandoff:
+
+pausehandoff
+------------
+
+Usage
+---------
+
+.. include:: pausehandoff.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/proxyhistograms.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/proxyhistograms.rst.txt
new file mode 100644
index 0000000..c4f333f
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/proxyhistograms.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_proxyhistograms:
+
+proxyhistograms
+---------------
+
+Usage
+---------
+
+.. include:: proxyhistograms.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/rangekeysample.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/rangekeysample.rst.txt
new file mode 100644
index 0000000..983ce93
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/rangekeysample.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_rangekeysample:
+
+rangekeysample
+--------------
+
+Usage
+---------
+
+.. include:: rangekeysample.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/rebuild.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/rebuild.rst.txt
new file mode 100644
index 0000000..7a94ce4
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/rebuild.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_rebuild:
+
+rebuild
+-------
+
+Usage
+---------
+
+.. include:: rebuild.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/rebuild_index.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/rebuild_index.rst.txt
new file mode 100644
index 0000000..a1ea4f5
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/rebuild_index.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_rebuild_index:
+
+rebuild_index
+-------------
+
+Usage
+---------
+
+.. include:: rebuild_index.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/refresh.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/refresh.rst.txt
new file mode 100644
index 0000000..f68f040
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/refresh.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_refresh:
+
+refresh
+-------
+
+Usage
+---------
+
+.. include:: refresh.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/refreshsizeestimates.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/refreshsizeestimates.rst.txt
new file mode 100644
index 0000000..2f3610a
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/refreshsizeestimates.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_refreshsizeestimates:
+
+refreshsizeestimates
+--------------------
+
+Usage
+---------
+
+.. include:: refreshsizeestimates.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/reloadlocalschema.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/reloadlocalschema.rst.txt
new file mode 100644
index 0000000..7ccc0c5
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/reloadlocalschema.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_reloadlocalschema:
+
+reloadlocalschema
+-----------------
+
+Usage
+---------
+
+.. include:: reloadlocalschema.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/reloadtriggers.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/reloadtriggers.rst.txt
new file mode 100644
index 0000000..2f7959d
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/reloadtriggers.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_reloadtriggers:
+
+reloadtriggers
+--------------
+
+Usage
+---------
+
+.. include:: reloadtriggers.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/relocatesstables.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/relocatesstables.rst.txt
new file mode 100644
index 0000000..9951d33
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/relocatesstables.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_relocatesstables:
+
+relocatesstables
+----------------
+
+Usage
+---------
+
+.. include:: relocatesstables.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/removenode.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/removenode.rst.txt
new file mode 100644
index 0000000..fe0a041
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/removenode.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_removenode:
+
+removenode
+----------
+
+Usage
+---------
+
+.. include:: removenode.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/repair.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/repair.rst.txt
new file mode 100644
index 0000000..b43baba
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/repair.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_repair:
+
+repair
+------
+
+Usage
+---------
+
+.. include:: repair.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/replaybatchlog.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/replaybatchlog.rst.txt
new file mode 100644
index 0000000..073f091
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/replaybatchlog.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_replaybatchlog:
+
+replaybatchlog
+--------------
+
+Usage
+---------
+
+.. include:: replaybatchlog.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/resetlocalschema.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/resetlocalschema.rst.txt
new file mode 100644
index 0000000..cd1b75d
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/resetlocalschema.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_resetlocalschema:
+
+resetlocalschema
+----------------
+
+Usage
+---------
+
+.. include:: resetlocalschema.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/resumehandoff.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/resumehandoff.rst.txt
new file mode 100644
index 0000000..48a0451
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/resumehandoff.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_resumehandoff:
+
+resumehandoff
+-------------
+
+Usage
+---------
+
+.. include:: resumehandoff.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/ring.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/ring.rst.txt
new file mode 100644
index 0000000..7b3c195
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/ring.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_ring:
+
+ring
+----
+
+Usage
+---------
+
+.. include:: ring.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/scrub.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/scrub.rst.txt
new file mode 100644
index 0000000..fc926eb
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/scrub.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_scrub:
+
+scrub
+-----
+
+Usage
+---------
+
+.. include:: scrub.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/setcachecapacity.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/setcachecapacity.rst.txt
new file mode 100644
index 0000000..92c7d63
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/setcachecapacity.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setcachecapacity:
+
+setcachecapacity
+----------------
+
+Usage
+---------
+
+.. include:: setcachecapacity.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/setcachekeystosave.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/setcachekeystosave.rst.txt
new file mode 100644
index 0000000..639179f
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/setcachekeystosave.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setcachekeystosave:
+
+setcachekeystosave
+------------------
+
+Usage
+---------
+
+.. include:: setcachekeystosave.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/setcompactionthreshold.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/setcompactionthreshold.rst.txt
new file mode 100644
index 0000000..3a3e88b
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/setcompactionthreshold.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setcompactionthreshold:
+
+setcompactionthreshold
+----------------------
+
+Usage
+---------
+
+.. include:: setcompactionthreshold.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/setcompactionthroughput.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/setcompactionthroughput.rst.txt
new file mode 100644
index 0000000..27185da
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/setcompactionthroughput.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setcompactionthroughput:
+
+setcompactionthroughput
+-----------------------
+
+Usage
+---------
+
+.. include:: setcompactionthroughput.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/setconcurrentcompactors.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/setconcurrentcompactors.rst.txt
new file mode 100644
index 0000000..75969de
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/setconcurrentcompactors.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setconcurrentcompactors:
+
+setconcurrentcompactors
+-----------------------
+
+Usage
+---------
+
+.. include:: setconcurrentcompactors.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/sethintedhandoffthrottlekb.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/sethintedhandoffthrottlekb.rst.txt
new file mode 100644
index 0000000..9986ca2
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/sethintedhandoffthrottlekb.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_sethintedhandoffthrottlekb:
+
+sethintedhandoffthrottlekb
+--------------------------
+
+Usage
+---------
+
+.. include:: sethintedhandoffthrottlekb.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/setinterdcstreamthroughput.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/setinterdcstreamthroughput.rst.txt
new file mode 100644
index 0000000..ed406a7
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/setinterdcstreamthroughput.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setinterdcstreamthroughput:
+
+setinterdcstreamthroughput
+--------------------------
+
+Usage
+---------
+
+.. include:: setinterdcstreamthroughput.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/setlogginglevel.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/setlogginglevel.rst.txt
new file mode 100644
index 0000000..eaa4030
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/setlogginglevel.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setlogginglevel:
+
+setlogginglevel
+---------------
+
+Usage
+---------
+
+.. include:: setlogginglevel.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/setstreamthroughput.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/setstreamthroughput.rst.txt
new file mode 100644
index 0000000..76447f1
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/setstreamthroughput.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setstreamthroughput:
+
+setstreamthroughput
+-------------------
+
+Usage
+---------
+
+.. include:: setstreamthroughput.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/settimeout.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/settimeout.rst.txt
new file mode 100644
index 0000000..4ec9a6e
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/settimeout.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_settimeout:
+
+settimeout
+----------
+
+Usage
+---------
+
+.. include:: settimeout.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/settraceprobability.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/settraceprobability.rst.txt
new file mode 100644
index 0000000..a95b485
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/settraceprobability.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_settraceprobability:
+
+settraceprobability
+-------------------
+
+Usage
+---------
+
+.. include:: settraceprobability.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/snapshot.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/snapshot.rst.txt
new file mode 100644
index 0000000..097a655
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/snapshot.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_snapshot:
+
+snapshot
+--------
+
+Usage
+---------
+
+.. include:: snapshot.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/status.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/status.rst.txt
new file mode 100644
index 0000000..4d3050e
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/status.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_status:
+
+status
+------
+
+Usage
+---------
+
+.. include:: status.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/statusbackup.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/statusbackup.rst.txt
new file mode 100644
index 0000000..6546ec0
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/statusbackup.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_statusbackup:
+
+statusbackup
+------------
+
+Usage
+---------
+
+.. include:: statusbackup.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/statusbinary.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/statusbinary.rst.txt
new file mode 100644
index 0000000..0bb5011
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/statusbinary.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_statusbinary:
+
+statusbinary
+------------
+
+Usage
+---------
+
+.. include:: statusbinary.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/statusgossip.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/statusgossip.rst.txt
new file mode 100644
index 0000000..7dc57ed
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/statusgossip.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_statusgossip:
+
+statusgossip
+------------
+
+Usage
+---------
+
+.. include:: statusgossip.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/statushandoff.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/statushandoff.rst.txt
new file mode 100644
index 0000000..aa1c4eb
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/statushandoff.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_statushandoff:
+
+statushandoff
+-------------
+
+Usage
+---------
+
+.. include:: statushandoff.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/statusthrift.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/statusthrift.rst.txt
new file mode 100644
index 0000000..b70a690
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/statusthrift.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_statusthrift:
+
+statusthrift
+------------
+
+Usage
+---------
+
+.. include:: statusthrift.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/stop.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/stop.rst.txt
new file mode 100644
index 0000000..1e44dbe
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/stop.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_stop:
+
+stop
+----
+
+Usage
+---------
+
+.. include:: stop.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/stopdaemon.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/stopdaemon.rst.txt
new file mode 100644
index 0000000..4ae9510
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/stopdaemon.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_stopdaemon:
+
+stopdaemon
+----------
+
+Usage
+---------
+
+.. include:: stopdaemon.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/tablehistograms.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/tablehistograms.rst.txt
new file mode 100644
index 0000000..79d2b4c
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/tablehistograms.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_tablehistograms:
+
+tablehistograms
+---------------
+
+Usage
+---------
+
+.. include:: tablehistograms.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/tablestats.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/tablestats.rst.txt
new file mode 100644
index 0000000..5b2c02d
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/tablestats.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_tablestats:
+
+tablestats
+----------
+
+Usage
+---------
+
+.. include:: tablestats.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/toppartitions.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/toppartitions.rst.txt
new file mode 100644
index 0000000..7118163
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/toppartitions.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_toppartitions:
+
+toppartitions
+-------------
+
+Usage
+---------
+
+.. include:: toppartitions.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/tpstats.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/tpstats.rst.txt
new file mode 100644
index 0000000..c6b6620
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/tpstats.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_tpstats:
+
+tpstats
+-------
+
+Usage
+---------
+
+.. include:: tpstats.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/truncatehints.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/truncatehints.rst.txt
new file mode 100644
index 0000000..4b75391
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/truncatehints.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_truncatehints:
+
+truncatehints
+-------------
+
+Usage
+---------
+
+.. include:: truncatehints.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/upgradesstables.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/upgradesstables.rst.txt
new file mode 100644
index 0000000..505cc14
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/upgradesstables.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_upgradesstables:
+
+upgradesstables
+---------------
+
+Usage
+---------
+
+.. include:: upgradesstables.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/verify.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/verify.rst.txt
new file mode 100644
index 0000000..dbd152c
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/verify.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_verify:
+
+verify
+------
+
+Usage
+---------
+
+.. include:: verify.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/version.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/version.rst.txt
new file mode 100644
index 0000000..fca4e3f
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/version.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_version:
+
+version
+-------
+
+Usage
+---------
+
+.. include:: version.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/tools/nodetool/viewbuildstatus.rst.txt b/src/doc/3.11.11/_sources/tools/nodetool/viewbuildstatus.rst.txt
new file mode 100644
index 0000000..758fe50
--- /dev/null
+++ b/src/doc/3.11.11/_sources/tools/nodetool/viewbuildstatus.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_viewbuildstatus:
+
+viewbuildstatus
+---------------
+
+Usage
+---------
+
+.. include:: viewbuildstatus.txt
+  :literal:
+
diff --git a/src/doc/3.11.11/_sources/troubleshooting/index.rst.txt b/src/doc/3.11.11/_sources/troubleshooting/index.rst.txt
new file mode 100644
index 0000000..2e5cf10
--- /dev/null
+++ b/src/doc/3.11.11/_sources/troubleshooting/index.rst.txt
@@ -0,0 +1,20 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Troubleshooting
+===============
+
+.. TODO: todo
diff --git a/src/doc/3.11.11/_static/ajax-loader.gif b/src/doc/3.11.11/_static/ajax-loader.gif
new file mode 100644
index 0000000..61faf8c
--- /dev/null
+++ b/src/doc/3.11.11/_static/ajax-loader.gif
Binary files differ
diff --git a/src/doc/3.11.11/_static/basic.css b/src/doc/3.11.11/_static/basic.css
new file mode 100644
index 0000000..0807176
--- /dev/null
+++ b/src/doc/3.11.11/_static/basic.css
@@ -0,0 +1,676 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+    clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+    word-wrap: break-word;
+    overflow-wrap : break-word;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox form.search {
+    overflow: hidden;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+    float: left;
+    width: 80%;
+    padding: 0.25em;
+    box-sizing: border-box;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+    float: left;
+    width: 20%;
+    border-left: none;
+    padding: 0.25em;
+    box-sizing: border-box;
+}
+
+
+img {
+    border: 0;
+    max-width: 100%;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li div.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+    width: 90%;
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+    width: 100%;
+}
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable ul {
+    margin-top: 0;
+    margin-bottom: 0;
+    list-style-type: none;
+}
+
+table.indextable > tbody > tr > td > ul {
+    padding-left: 0em;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+div.modindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+/* -- domain module index --------------------------------------------------- */
+
+table.modindextable td {
+    padding: 2px;
+    border-collapse: collapse;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+div.body {
+    min-width: 450px;
+    max-width: 800px;
+}
+
+div.body p, div.body dd, div.body li, div.body blockquote {
+    -moz-hyphens: auto;
+    -ms-hyphens: auto;
+    -webkit-hyphens: auto;
+    hyphens: auto;
+}
+
+a.headerlink {
+    visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink,
+caption:hover > a.headerlink,
+p.caption:hover > a.headerlink,
+div.code-block-caption:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+    clear: left;
+    float: left;
+    margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+    clear: right;
+    float: right;
+    margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-center {
+    text-align: center;
+}
+
+.align-right {
+    text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px 7px 0 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px 7px 0 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+div.admonition dl {
+    margin-bottom: 0;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.align-center {
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table caption span.caption-number {
+    font-style: italic;
+}
+
+table caption span.caption-text {
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 5px;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+table.footnote td, table.footnote th {
+    border: 0 !important;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+table.citation {
+    border-left: solid 1px gray;
+    margin-left: 1px;
+}
+
+table.citation td {
+    border-bottom: none;
+}
+
+/* -- figures --------------------------------------------------------------- */
+
+div.figure {
+    margin: 0.5em;
+    padding: 0.5em;
+}
+
+div.figure p.caption {
+    padding: 0.3em;
+}
+
+div.figure p.caption span.caption-number {
+    font-style: italic;
+}
+
+div.figure p.caption span.caption-text {
+}
+
+/* -- field list styles ----------------------------------------------------- */
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.field-name {
+    -moz-hyphens: manual;
+    -ms-hyphens: manual;
+    -webkit-hyphens: manual;
+    hyphens: manual;
+}
+
+/* -- hlist styles ---------------------------------------------------------- */
+
+table.hlist td {
+    vertical-align: top;
+}
+
+
+/* -- other body styles ----------------------------------------------------- */
+
+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;
+}
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd p {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+dt:target, span.highlighted {
+    background-color: #fbe54e;
+}
+
+rect.highlighted {
+    fill: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.sig-paren {
+    font-size: larger;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa;
+}
+
+.line-block {
+    display: block;
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+.line-block .line-block {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+    font-family: sans-serif;
+}
+
+.accelerator {
+    text-decoration: underline;
+}
+
+.classifier {
+    font-style: oblique;
+}
+
+abbr, acronym {
+    border-bottom: dotted 1px;
+    cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+    overflow: auto;
+    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
+}
+
+span.pre {
+    -moz-hyphens: none;
+    -ms-hyphens: none;
+    -webkit-hyphens: none;
+    hyphens: none;
+}
+
+td.linenos pre {
+    padding: 5px 0px;
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    margin-left: 0.5em;
+}
+
+table.highlighttable td {
+    padding: 0 0.5em 0 0.5em;
+}
+
+div.code-block-caption {
+    padding: 2px 5px;
+    font-size: small;
+}
+
+div.code-block-caption code {
+    background-color: transparent;
+}
+
+div.code-block-caption + div > div.highlight > pre {
+    margin-top: 0;
+}
+
+div.code-block-caption span.caption-number {
+    padding: 0.1em 0.3em;
+    font-style: italic;
+}
+
+div.code-block-caption span.caption-text {
+}
+
+div.literal-block-wrapper {
+    padding: 1em 1em 0;
+}
+
+div.literal-block-wrapper div.highlight {
+    margin: 0;
+}
+
+code.descname {
+    background-color: transparent;
+    font-weight: bold;
+    font-size: 1.2em;
+}
+
+code.descclassname {
+    background-color: transparent;
+}
+
+code.xref, a code {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
+    background-color: transparent;
+}
+
+.viewcode-link {
+    float: right;
+}
+
+.viewcode-back {
+    float: right;
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    margin: -1px -10px;
+    padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+span.eqno a.headerlink {
+    position: relative;
+    left: 0px;
+    z-index: 1;
+}
+
+div.math:hover a.headerlink {
+    visibility: visible;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0 !important;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}
\ No newline at end of file
diff --git a/src/doc/3.11.11/_static/comment-bright.png b/src/doc/3.11.11/_static/comment-bright.png
new file mode 100644
index 0000000..15e27ed
--- /dev/null
+++ b/src/doc/3.11.11/_static/comment-bright.png
Binary files differ
diff --git a/src/doc/3.11.11/_static/comment-close.png b/src/doc/3.11.11/_static/comment-close.png
new file mode 100644
index 0000000..4d91bcf
--- /dev/null
+++ b/src/doc/3.11.11/_static/comment-close.png
Binary files differ
diff --git a/src/doc/3.11.11/_static/comment.png b/src/doc/3.11.11/_static/comment.png
new file mode 100644
index 0000000..dfbc0cb
--- /dev/null
+++ b/src/doc/3.11.11/_static/comment.png
Binary files differ
diff --git a/src/doc/3.11.11/_static/doctools.js b/src/doc/3.11.11/_static/doctools.js
new file mode 100644
index 0000000..344db17
--- /dev/null
+++ b/src/doc/3.11.11/_static/doctools.js
@@ -0,0 +1,315 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+  var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+    "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+    "profile", "profileEnd"];
+  window.console = {};
+  for (var i = 0; i < names.length; ++i)
+    window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+  return decodeURIComponent(x).replace(/\+/g, ' ');
+};
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+  if (typeof s === 'undefined')
+    s = document.location.search;
+  var parts = s.substr(s.indexOf('?') + 1).split('&');
+  var result = {};
+  for (var i = 0; i < parts.length; i++) {
+    var tmp = parts[i].split('=', 2);
+    var key = jQuery.urldecode(tmp[0]);
+    var value = jQuery.urldecode(tmp[1]);
+    if (key in result)
+      result[key].push(value);
+    else
+      result[key] = [value];
+  }
+  return result;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+  function highlight(node, addItems) {
+    if (node.nodeType === 3) {
+      var val = node.nodeValue;
+      var pos = val.toLowerCase().indexOf(text);
+      if (pos >= 0 &&
+          !jQuery(node.parentNode).hasClass(className) &&
+          !jQuery(node.parentNode).hasClass("nohighlight")) {
+        var span;
+        var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
+        if (isInSVG) {
+          span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
+        } else {
+          span = document.createElement("span");
+          span.className = className;
+        }
+        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+          document.createTextNode(val.substr(pos + text.length)),
+          node.nextSibling));
+        node.nodeValue = val.substr(0, pos);
+        if (isInSVG) {
+          var bbox = span.getBBox();
+          var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
+       	  rect.x.baseVal.value = bbox.x;
+          rect.y.baseVal.value = bbox.y;
+          rect.width.baseVal.value = bbox.width;
+          rect.height.baseVal.value = bbox.height;
+          rect.setAttribute('class', className);
+          var parentOfText = node.parentNode.parentNode;
+          addItems.push({
+              "parent": node.parentNode,
+              "target": rect});
+        }
+      }
+    }
+    else if (!jQuery(node).is("button, select, textarea")) {
+      jQuery.each(node.childNodes, function() {
+        highlight(this, addItems);
+      });
+    }
+  }
+  var addItems = [];
+  var result = this.each(function() {
+    highlight(this, addItems);
+  });
+  for (var i = 0; i < addItems.length; ++i) {
+    jQuery(addItems[i].parent).before(addItems[i].target);
+  }
+  return result;
+};
+
+/*
+ * backward compatibility for jQuery.browser
+ * This will be supported until firefox bug is fixed.
+ */
+if (!jQuery.browser) {
+  jQuery.uaMatch = function(ua) {
+    ua = ua.toLowerCase();
+
+    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
+      /(webkit)[ \/]([\w.]+)/.exec(ua) ||
+      /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
+      /(msie) ([\w.]+)/.exec(ua) ||
+      ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
+      [];
+
+    return {
+      browser: match[ 1 ] || "",
+      version: match[ 2 ] || "0"
+    };
+  };
+  jQuery.browser = {};
+  jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
+}
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+  init : function() {
+    this.fixFirefoxAnchorBug();
+    this.highlightSearchWords();
+    this.initIndexTable();
+    if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
+      this.initOnKeyListeners();
+    }
+  },
+
+  /**
+   * i18n support
+   */
+  TRANSLATIONS : {},
+  PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
+  LOCALE : 'unknown',
+
+  // gettext and ngettext don't access this so that the functions
+  // can safely bound to a different name (_ = Documentation.gettext)
+  gettext : function(string) {
+    var translated = Documentation.TRANSLATIONS[string];
+    if (typeof translated === 'undefined')
+      return string;
+    return (typeof translated === 'string') ? translated : translated[0];
+  },
+
+  ngettext : function(singular, plural, n) {
+    var translated = Documentation.TRANSLATIONS[singular];
+    if (typeof translated === 'undefined')
+      return (n == 1) ? singular : plural;
+    return translated[Documentation.PLURALEXPR(n)];
+  },
+
+  addTranslations : function(catalog) {
+    for (var key in catalog.messages)
+      this.TRANSLATIONS[key] = catalog.messages[key];
+    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+    this.LOCALE = catalog.locale;
+  },
+
+  /**
+   * add context elements like header anchor links
+   */
+  addContextElements : function() {
+    $('div[id] > :header:first').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this headline')).
+      appendTo(this);
+    });
+    $('dt[id]').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this definition')).
+      appendTo(this);
+    });
+  },
+
+  /**
+   * workaround a firefox stupidity
+   * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
+   */
+  fixFirefoxAnchorBug : function() {
+    if (document.location.hash && $.browser.mozilla)
+      window.setTimeout(function() {
+        document.location.href += '';
+      }, 10);
+  },
+
+  /**
+   * highlight the search words provided in the url in the text
+   */
+  highlightSearchWords : function() {
+    var params = $.getQueryParameters();
+    var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+    if (terms.length) {
+      var body = $('div.body');
+      if (!body.length) {
+        body = $('body');
+      }
+      window.setTimeout(function() {
+        $.each(terms, function() {
+          body.highlightText(this.toLowerCase(), 'highlighted');
+        });
+      }, 10);
+      $('<p class="highlight-link"><a href="javascript:Documentation.' +
+        'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
+          .appendTo($('#searchbox'));
+    }
+  },
+
+  /**
+   * init the domain index toggle buttons
+   */
+  initIndexTable : function() {
+    var togglers = $('img.toggler').click(function() {
+      var src = $(this).attr('src');
+      var idnum = $(this).attr('id').substr(7);
+      $('tr.cg-' + idnum).toggle();
+      if (src.substr(-9) === 'minus.png')
+        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+      else
+        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+    }).css('display', '');
+    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+        togglers.click();
+    }
+  },
+
+  /**
+   * helper function to hide the search marks again
+   */
+  hideSearchWords : function() {
+    $('#searchbox .highlight-link').fadeOut(300);
+    $('span.highlighted').removeClass('highlighted');
+  },
+
+  /**
+   * make the url absolute
+   */
+  makeURL : function(relativeURL) {
+    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+  },
+
+  /**
+   * get the current relative url
+   */
+  getCurrentURL : function() {
+    var path = document.location.pathname;
+    var parts = path.split(/\//);
+    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+      if (this === '..')
+        parts.pop();
+    });
+    var url = parts.join('/');
+    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+  },
+
+  initOnKeyListeners: function() {
+    $(document).keyup(function(event) {
+      var activeElementType = document.activeElement.tagName;
+      // don't navigate when in search box or textarea
+      if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
+        switch (event.keyCode) {
+          case 37: // left
+            var prevHref = $('link[rel="prev"]').prop('href');
+            if (prevHref) {
+              window.location.href = prevHref;
+              return false;
+            }
+          case 39: // right
+            var nextHref = $('link[rel="next"]').prop('href');
+            if (nextHref) {
+              window.location.href = nextHref;
+              return false;
+            }
+        }
+      }
+    });
+  }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+  Documentation.init();
+});
diff --git a/src/doc/3.11.11/_static/documentation_options.js b/src/doc/3.11.11/_static/documentation_options.js
new file mode 100644
index 0000000..d28647e
--- /dev/null
+++ b/src/doc/3.11.11/_static/documentation_options.js
@@ -0,0 +1,10 @@
+var DOCUMENTATION_OPTIONS = {
+    URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
+    VERSION: '',
+    LANGUAGE: 'None',
+    COLLAPSE_INDEX: false,
+    FILE_SUFFIX: '.html',
+    HAS_SOURCE: true,
+    SOURCELINK_SUFFIX: '.txt',
+    NAVIGATION_WITH_KEYS: false,
+};
\ No newline at end of file
diff --git a/src/doc/3.11.11/_static/down-pressed.png b/src/doc/3.11.11/_static/down-pressed.png
new file mode 100644
index 0000000..5756c8c
--- /dev/null
+++ b/src/doc/3.11.11/_static/down-pressed.png
Binary files differ
diff --git a/src/doc/3.11.11/_static/down.png b/src/doc/3.11.11/_static/down.png
new file mode 100644
index 0000000..1b3bdad
--- /dev/null
+++ b/src/doc/3.11.11/_static/down.png
Binary files differ
diff --git a/src/doc/3.11.11/_static/extra.css b/src/doc/3.11.11/_static/extra.css
new file mode 100644
index 0000000..c2972bd
--- /dev/null
+++ b/src/doc/3.11.11/_static/extra.css
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+div:not(.highlight) > pre {
+    background: #fff;
+    border: 1px solid #e1e4e5;
+    color: #404040;
+    margin: 1px 0 24px 0;
+    overflow-x: auto;
+    padding: 12px 12px;
+    font-size: 12px;
+}
+
+a.reference.internal code.literal {
+    border: none;
+    font-size: 12px;
+    color: #2980B9;
+    padding: 0;
+    background: none;
+}
+
+a.reference.internal:visited code.literal {
+    color: #9B59B6;
+    padding: 0;
+    background: none;
+}
+
+
+/* override table width restrictions */
+.wy-table-responsive table td, .wy-table-responsive table th {
+    white-space: normal;
+}
+
+.wy-table-responsive {
+    margin-bottom: 24px;
+    max-width: 100%;
+    overflow: visible;
+}
+
+table.contentstable {
+    margin: 0;
+}
+
+td.rightcolumn {
+    padding-left: 30px;
+}
+
+div#wipwarning {
+    font-size: 14px;
+    border: 1px solid #ecc;
+    color: #f66;
+    background: #ffe8e8;
+    padding: 10px 30px;
+    margin-bottom: 30px;
+}
+.content-container{
+    padding-right: 15px;
+    padding-left: 15px;
+    margin-right: auto;
+    margin-left: auto;
+    width:100%;
+}
diff --git a/src/doc/3.11.11/_static/file.png b/src/doc/3.11.11/_static/file.png
new file mode 100644
index 0000000..a858a41
--- /dev/null
+++ b/src/doc/3.11.11/_static/file.png
Binary files differ
diff --git a/src/doc/3.11.11/_static/jquery-3.2.1.js b/src/doc/3.11.11/_static/jquery-3.2.1.js
new file mode 100644
index 0000000..d2d8ca4
--- /dev/null
+++ b/src/doc/3.11.11/_static/jquery-3.2.1.js
@@ -0,0 +1,10253 @@
+/*!
+ * jQuery JavaScript Library v3.2.1
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright JS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2017-03-20T18:59Z
+ */
+( function( global, factory ) {
+
+	"use strict";
+
+	if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+		// For CommonJS and CommonJS-like environments where a proper `window`
+		// is present, execute the factory and get jQuery.
+		// For environments that do not have a `window` with a `document`
+		// (such as Node.js), expose a factory as module.exports.
+		// This accentuates the need for the creation of a real `window`.
+		// e.g. var jQuery = require("jquery")(window);
+		// See ticket #14549 for more info.
+		module.exports = global.document ?
+			factory( global, true ) :
+			function( w ) {
+				if ( !w.document ) {
+					throw new Error( "jQuery requires a window with a document" );
+				}
+				return factory( w );
+			};
+	} else {
+		factory( global );
+	}
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var document = window.document;
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+
+
+	function DOMEval( code, doc ) {
+		doc = doc || document;
+
+		var script = doc.createElement( "script" );
+
+		script.text = code;
+		doc.head.appendChild( script ).parentNode.removeChild( script );
+	}
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+
+
+var
+	version = "3.2.1",
+
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
+
+		// The jQuery object is actually just the init constructor 'enhanced'
+		// Need init if jQuery is called (just allow error to be thrown if not included)
+		return new jQuery.fn.init( selector, context );
+	},
+
+	// Support: Android <=4.0 only
+	// Make sure we trim BOM and NBSP
+	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+	// Matches dashed string for camelizing
+	rmsPrefix = /^-ms-/,
+	rdashAlpha = /-([a-z])/g,
+
+	// Used by jQuery.camelCase as callback to replace()
+	fcamelCase = function( all, letter ) {
+		return letter.toUpperCase();
+	};
+
+jQuery.fn = jQuery.prototype = {
+
+	// The current version of jQuery being used
+	jquery: version,
+
+	constructor: jQuery,
+
+	// The default length of a jQuery object is 0
+	length: 0,
+
+	toArray: function() {
+		return slice.call( this );
+	},
+
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+
+		// Return all the elements in a clean array
+		if ( num == null ) {
+			return slice.call( this );
+		}
+
+		// Return just the one element from the set
+		return num < 0 ? this[ num + this.length ] : this[ num ];
+	},
+
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
+
+		// Build a new jQuery matched element set
+		var ret = jQuery.merge( this.constructor(), elems );
+
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+
+		// Return the newly-formed element set
+		return ret;
+	},
+
+	// Execute a callback for every element in the matched set.
+	each: function( callback ) {
+		return jQuery.each( this, callback );
+	},
+
+	map: function( callback ) {
+		return this.pushStack( jQuery.map( this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		} ) );
+	},
+
+	slice: function() {
+		return this.pushStack( slice.apply( this, arguments ) );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	eq: function( i ) {
+		var len = this.length,
+			j = +i + ( i < 0 ? len : 0 );
+		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor();
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: push,
+	sort: arr.sort,
+	splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var options, name, src, copy, copyIsArray, clone,
+		target = arguments[ 0 ] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+
+		// Skip the boolean and the target
+		target = arguments[ i ] || {};
+		i++;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+		target = {};
+	}
+
+	// Extend jQuery itself if only one argument is passed
+	if ( i === length ) {
+		target = this;
+		i--;
+	}
+
+	for ( ; i < length; i++ ) {
+
+		// Only deal with non-null/undefined values
+		if ( ( options = arguments[ i ] ) != null ) {
+
+			// Extend the base object
+			for ( name in options ) {
+				src = target[ name ];
+				copy = options[ name ];
+
+				// Prevent never-ending loop
+				if ( target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+					( copyIsArray = Array.isArray( copy ) ) ) ) {
+
+					if ( copyIsArray ) {
+						copyIsArray = false;
+						clone = src && Array.isArray( src ) ? src : [];
+
+					} else {
+						clone = src && jQuery.isPlainObject( src ) ? src : {};
+					}
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend( {
+
+	// Unique for each copy of jQuery on the page
+	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+	// Assume jQuery is ready without the ready module
+	isReady: true,
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	noop: function() {},
+
+	isFunction: function( obj ) {
+		return jQuery.type( obj ) === "function";
+	},
+
+	isWindow: function( obj ) {
+		return obj != null && obj === obj.window;
+	},
+
+	isNumeric: function( obj ) {
+
+		// As of jQuery 3.0, isNumeric is limited to
+		// strings and numbers (primitives or objects)
+		// that can be coerced to finite numbers (gh-2662)
+		var type = jQuery.type( obj );
+		return ( type === "number" || type === "string" ) &&
+
+			// parseFloat NaNs numeric-cast false positives ("")
+			// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+			// subtraction forces infinities to NaN
+			!isNaN( obj - parseFloat( obj ) );
+	},
+
+	isPlainObject: function( obj ) {
+		var proto, Ctor;
+
+		// Detect obvious negatives
+		// Use toString instead of jQuery.type to catch host objects
+		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+			return false;
+		}
+
+		proto = getProto( obj );
+
+		// Objects with no prototype (e.g., `Object.create( null )`) are plain
+		if ( !proto ) {
+			return true;
+		}
+
+		// Objects with prototype are plain iff they were constructed by a global Object function
+		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+	},
+
+	isEmptyObject: function( obj ) {
+
+		/* eslint-disable no-unused-vars */
+		// See https://github.com/eslint/eslint/issues/6125
+		var name;
+
+		for ( name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	type: function( obj ) {
+		if ( obj == null ) {
+			return obj + "";
+		}
+
+		// Support: Android <=2.3 only (functionish RegExp)
+		return typeof obj === "object" || typeof obj === "function" ?
+			class2type[ toString.call( obj ) ] || "object" :
+			typeof obj;
+	},
+
+	// Evaluates a script in a global context
+	globalEval: function( code ) {
+		DOMEval( code );
+	},
+
+	// Convert dashed to camelCase; used by the css and data modules
+	// Support: IE <=9 - 11, Edge 12 - 13
+	// Microsoft forgot to hump their vendor prefix (#9572)
+	camelCase: function( string ) {
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+	},
+
+	each: function( obj, callback ) {
+		var length, i = 0;
+
+		if ( isArrayLike( obj ) ) {
+			length = obj.length;
+			for ( ; i < length; i++ ) {
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+					break;
+				}
+			}
+		} else {
+			for ( i in obj ) {
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+					break;
+				}
+			}
+		}
+
+		return obj;
+	},
+
+	// Support: Android <=4.0 only
+	trim: function( text ) {
+		return text == null ?
+			"" :
+			( text + "" ).replace( rtrim, "" );
+	},
+
+	// results is for internal usage only
+	makeArray: function( arr, results ) {
+		var ret = results || [];
+
+		if ( arr != null ) {
+			if ( isArrayLike( Object( arr ) ) ) {
+				jQuery.merge( ret,
+					typeof arr === "string" ?
+					[ arr ] : arr
+				);
+			} else {
+				push.call( ret, arr );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, arr, i ) {
+		return arr == null ? -1 : indexOf.call( arr, elem, i );
+	},
+
+	// Support: Android <=4.0 only, PhantomJS 1 only
+	// push.apply(_, arraylike) throws on ancient WebKit
+	merge: function( first, second ) {
+		var len = +second.length,
+			j = 0,
+			i = first.length;
+
+		for ( ; j < len; j++ ) {
+			first[ i++ ] = second[ j ];
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, invert ) {
+		var callbackInverse,
+			matches = [],
+			i = 0,
+			length = elems.length,
+			callbackExpect = !invert;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( ; i < length; i++ ) {
+			callbackInverse = !callback( elems[ i ], i );
+			if ( callbackInverse !== callbackExpect ) {
+				matches.push( elems[ i ] );
+			}
+		}
+
+		return matches;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var length, value,
+			i = 0,
+			ret = [];
+
+		// Go through the array, translating each of the items to their new values
+		if ( isArrayLike( elems ) ) {
+			length = elems.length;
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+
+		// Go through every key on the object,
+		} else {
+			for ( i in elems ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return concat.apply( [], ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// Bind a function to a context, optionally partially applying any
+	// arguments.
+	proxy: function( fn, context ) {
+		var tmp, args, proxy;
+
+		if ( typeof context === "string" ) {
+			tmp = fn[ context ];
+			context = fn;
+			fn = tmp;
+		}
+
+		// Quick check to determine if target is callable, in the spec
+		// this throws a TypeError, but we will just return undefined.
+		if ( !jQuery.isFunction( fn ) ) {
+			return undefined;
+		}
+
+		// Simulated bind
+		args = slice.call( arguments, 2 );
+		proxy = function() {
+			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+		};
+
+		// Set the guid of unique handler to the same of original handler, so it can be removed
+		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+		return proxy;
+	},
+
+	now: Date.now,
+
+	// jQuery.support is not used in Core but other projects attach their
+	// properties to it so it needs to exist.
+	support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+	// Support: real iOS 8.2 only (not reproducible in simulator)
+	// `in` check used to prevent JIT error (gh-2145)
+	// hasOwn isn't used here due to false negatives
+	// regarding Nodelist length in IE
+	var length = !!obj && "length" in obj && obj.length,
+		type = jQuery.type( obj );
+
+	if ( type === "function" || jQuery.isWindow( obj ) ) {
+		return false;
+	}
+
+	return type === "array" || length === 0 ||
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.3.3
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-08-08
+ */
+(function( window ) {
+
+var i,
+	support,
+	Expr,
+	getText,
+	isXML,
+	tokenize,
+	compile,
+	select,
+	outermostContext,
+	sortInput,
+	hasDuplicate,
+
+	// Local document vars
+	setDocument,
+	document,
+	docElem,
+	documentIsHTML,
+	rbuggyQSA,
+	rbuggyMatches,
+	matches,
+	contains,
+
+	// Instance-specific data
+	expando = "sizzle" + 1 * new Date(),
+	preferredDoc = window.document,
+	dirruns = 0,
+	done = 0,
+	classCache = createCache(),
+	tokenCache = createCache(),
+	compilerCache = createCache(),
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+		}
+		return 0;
+	},
+
+	// Instance methods
+	hasOwn = ({}).hasOwnProperty,
+	arr = [],
+	pop = arr.pop,
+	push_native = arr.push,
+	push = arr.push,
+	slice = arr.slice,
+	// Use a stripped-down indexOf as it's faster than native
+	// https://jsperf.com/thor-indexof-vs-for/5
+	indexOf = function( list, elem ) {
+		var i = 0,
+			len = list.length;
+		for ( ; i < len; i++ ) {
+			if ( list[i] === elem ) {
+				return i;
+			}
+		}
+		return -1;
+	},
+
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+	// Regular expressions
+
+	// http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+
+	// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+
+	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+		// Operator (capture 2)
+		"*([*^$|!~]?=)" + whitespace +
+		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+		"*\\]",
+
+	pseudos = ":(" + identifier + ")(?:\\((" +
+		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+		// 1. quoted (capture 3; capture 4 or capture 5)
+		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+		// 2. simple (capture 6)
+		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+		// 3. anything else (capture 2)
+		".*" +
+		")\\)|)",
+
+	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+	rwhitespace = new RegExp( whitespace + "+", "g" ),
+	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+	rpseudo = new RegExp( pseudos ),
+	ridentifier = new RegExp( "^" + identifier + "$" ),
+
+	matchExpr = {
+		"ID": new RegExp( "^#(" + identifier + ")" ),
+		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
+		"ATTR": new RegExp( "^" + attributes ),
+		"PSEUDO": new RegExp( "^" + pseudos ),
+		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+		// For use in libraries implementing .is()
+		// We use this for POS matching in `select`
+		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+	},
+
+	rinputs = /^(?:input|select|textarea|button)$/i,
+	rheader = /^h\d$/i,
+
+	rnative = /^[^{]+\{\s*\[native \w/,
+
+	// Easily-parseable/retrievable ID or TAG or CLASS selectors
+	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+	rsibling = /[+~]/,
+
+	// CSS escapes
+	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+	funescape = function( _, escaped, escapedWhitespace ) {
+		var high = "0x" + escaped - 0x10000;
+		// NaN means non-codepoint
+		// Support: Firefox<24
+		// Workaround erroneous numeric interpretation of +"0x"
+		return high !== high || escapedWhitespace ?
+			escaped :
+			high < 0 ?
+				// BMP codepoint
+				String.fromCharCode( high + 0x10000 ) :
+				// Supplemental Plane codepoint (surrogate pair)
+				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+	},
+
+	// CSS string/identifier serialization
+	// https://drafts.csswg.org/cssom/#common-serializing-idioms
+	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
+	fcssescape = function( ch, asCodePoint ) {
+		if ( asCodePoint ) {
+
+			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+			if ( ch === "\0" ) {
+				return "\uFFFD";
+			}
+
+			// Control characters and (dependent upon position) numbers get escaped as code points
+			return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+		}
+
+		// Other potentially-special ASCII characters get backslash-escaped
+		return "\\" + ch;
+	},
+
+	// Used for iframes
+	// See setDocument()
+	// Removing the function wrapper causes a "Permission Denied"
+	// error in IE
+	unloadHandler = function() {
+		setDocument();
+	},
+
+	disabledAncestor = addCombinator(
+		function( elem ) {
+			return elem.disabled === true && ("form" in elem || "label" in elem);
+		},
+		{ dir: "parentNode", next: "legend" }
+	);
+
+// Optimize for push.apply( _, NodeList )
+try {
+	push.apply(
+		(arr = slice.call( preferredDoc.childNodes )),
+		preferredDoc.childNodes
+	);
+	// Support: Android<4.0
+	// Detect silently failing push.apply
+	arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+	push = { apply: arr.length ?
+
+		// Leverage slice if possible
+		function( target, els ) {
+			push_native.apply( target, slice.call(els) );
+		} :
+
+		// Support: IE<9
+		// Otherwise append directly
+		function( target, els ) {
+			var j = target.length,
+				i = 0;
+			// Can't trust NodeList.length
+			while ( (target[j++] = els[i++]) ) {}
+			target.length = j - 1;
+		}
+	};
+}
+
+function Sizzle( selector, context, results, seed ) {
+	var m, i, elem, nid, match, groups, newSelector,
+		newContext = context && context.ownerDocument,
+
+		// nodeType defaults to 9, since context defaults to document
+		nodeType = context ? context.nodeType : 9;
+
+	results = results || [];
+
+	// Return early from calls with invalid selector or context
+	if ( typeof selector !== "string" || !selector ||
+		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+		return results;
+	}
+
+	// Try to shortcut find operations (as opposed to filters) in HTML documents
+	if ( !seed ) {
+
+		if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+			setDocument( context );
+		}
+		context = context || document;
+
+		if ( documentIsHTML ) {
+
+			// If the selector is sufficiently simple, try using a "get*By*" DOM method
+			// (excepting DocumentFragment context, where the methods don't exist)
+			if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+				// ID selector
+				if ( (m = match[1]) ) {
+
+					// Document context
+					if ( nodeType === 9 ) {
+						if ( (elem = context.getElementById( m )) ) {
+
+							// Support: IE, Opera, Webkit
+							// TODO: identify versions
+							// getElementById can match elements by name instead of ID
+							if ( elem.id === m ) {
+								results.push( elem );
+								return results;
+							}
+						} else {
+							return results;
+						}
+
+					// Element context
+					} else {
+
+						// Support: IE, Opera, Webkit
+						// TODO: identify versions
+						// getElementById can match elements by name instead of ID
+						if ( newContext && (elem = newContext.getElementById( m )) &&
+							contains( context, elem ) &&
+							elem.id === m ) {
+
+							results.push( elem );
+							return results;
+						}
+					}
+
+				// Type selector
+				} else if ( match[2] ) {
+					push.apply( results, context.getElementsByTagName( selector ) );
+					return results;
+
+				// Class selector
+				} else if ( (m = match[3]) && support.getElementsByClassName &&
+					context.getElementsByClassName ) {
+
+					push.apply( results, context.getElementsByClassName( m ) );
+					return results;
+				}
+			}
+
+			// Take advantage of querySelectorAll
+			if ( support.qsa &&
+				!compilerCache[ selector + " " ] &&
+				(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+				if ( nodeType !== 1 ) {
+					newContext = context;
+					newSelector = selector;
+
+				// qSA looks outside Element context, which is not what we want
+				// Thanks to Andrew Dupont for this workaround technique
+				// Support: IE <=8
+				// Exclude object elements
+				} else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+					// Capture the context ID, setting it first if necessary
+					if ( (nid = context.getAttribute( "id" )) ) {
+						nid = nid.replace( rcssescape, fcssescape );
+					} else {
+						context.setAttribute( "id", (nid = expando) );
+					}
+
+					// Prefix every selector in the list
+					groups = tokenize( selector );
+					i = groups.length;
+					while ( i-- ) {
+						groups[i] = "#" + nid + " " + toSelector( groups[i] );
+					}
+					newSelector = groups.join( "," );
+
+					// Expand context for sibling selectors
+					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+						context;
+				}
+
+				if ( newSelector ) {
+					try {
+						push.apply( results,
+							newContext.querySelectorAll( newSelector )
+						);
+						return results;
+					} catch ( qsaError ) {
+					} finally {
+						if ( nid === expando ) {
+							context.removeAttribute( "id" );
+						}
+					}
+				}
+			}
+		}
+	}
+
+	// All others
+	return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *	deleting the oldest entry
+ */
+function createCache() {
+	var keys = [];
+
+	function cache( key, value ) {
+		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+		if ( keys.push( key + " " ) > Expr.cacheLength ) {
+			// Only keep the most recent entries
+			delete cache[ keys.shift() ];
+		}
+		return (cache[ key + " " ] = value);
+	}
+	return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+	fn[ expando ] = true;
+	return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+	var el = document.createElement("fieldset");
+
+	try {
+		return !!fn( el );
+	} catch (e) {
+		return false;
+	} finally {
+		// Remove from its parent by default
+		if ( el.parentNode ) {
+			el.parentNode.removeChild( el );
+		}
+		// release memory in IE
+		el = null;
+	}
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+	var arr = attrs.split("|"),
+		i = arr.length;
+
+	while ( i-- ) {
+		Expr.attrHandle[ arr[i] ] = handler;
+	}
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+	var cur = b && a,
+		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+			a.sourceIndex - b.sourceIndex;
+
+	// Use IE sourceIndex if available on both nodes
+	if ( diff ) {
+		return diff;
+	}
+
+	// Check if b follows a
+	if ( cur ) {
+		while ( (cur = cur.nextSibling) ) {
+			if ( cur === b ) {
+				return -1;
+			}
+		}
+	}
+
+	return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return name === "input" && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return (name === "input" || name === "button") && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+
+	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+	return function( elem ) {
+
+		// Only certain elements can match :enabled or :disabled
+		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
+		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
+		if ( "form" in elem ) {
+
+			// Check for inherited disabledness on relevant non-disabled elements:
+			// * listed form-associated elements in a disabled fieldset
+			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
+			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
+			// * option elements in a disabled optgroup
+			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
+			// All such elements have a "form" property.
+			if ( elem.parentNode && elem.disabled === false ) {
+
+				// Option elements defer to a parent optgroup if present
+				if ( "label" in elem ) {
+					if ( "label" in elem.parentNode ) {
+						return elem.parentNode.disabled === disabled;
+					} else {
+						return elem.disabled === disabled;
+					}
+				}
+
+				// Support: IE 6 - 11
+				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
+				return elem.isDisabled === disabled ||
+
+					// Where there is no isDisabled, check manually
+					/* jshint -W018 */
+					elem.isDisabled !== !disabled &&
+						disabledAncestor( elem ) === disabled;
+			}
+
+			return elem.disabled === disabled;
+
+		// Try to winnow out elements that can't be disabled before trusting the disabled property.
+		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
+		// even exist on them, let alone have a boolean value.
+		} else if ( "label" in elem ) {
+			return elem.disabled === disabled;
+		}
+
+		// Remaining elements are neither :enabled nor :disabled
+		return false;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+	return markFunction(function( argument ) {
+		argument = +argument;
+		return markFunction(function( seed, matches ) {
+			var j,
+				matchIndexes = fn( [], seed.length, argument ),
+				i = matchIndexes.length;
+
+			// Match elements found at the specified indexes
+			while ( i-- ) {
+				if ( seed[ (j = matchIndexes[i]) ] ) {
+					seed[j] = !(matches[j] = seed[j]);
+				}
+			}
+		});
+	});
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+	return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+	// documentElement is verified for cases where it doesn't yet exist
+	// (such as loading iframes in IE - #4833)
+	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+	return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+	var hasCompare, subWindow,
+		doc = node ? node.ownerDocument || node : preferredDoc;
+
+	// Return early if doc is invalid or already selected
+	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+		return document;
+	}
+
+	// Update global variables
+	document = doc;
+	docElem = document.documentElement;
+	documentIsHTML = !isXML( document );
+
+	// Support: IE 9-11, Edge
+	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+	if ( preferredDoc !== document &&
+		(subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+
+		// Support: IE 11, Edge
+		if ( subWindow.addEventListener ) {
+			subWindow.addEventListener( "unload", unloadHandler, false );
+
+		// Support: IE 9 - 10 only
+		} else if ( subWindow.attachEvent ) {
+			subWindow.attachEvent( "onunload", unloadHandler );
+		}
+	}
+
+	/* Attributes
+	---------------------------------------------------------------------- */
+
+	// Support: IE<8
+	// Verify that getAttribute really returns attributes and not properties
+	// (excepting IE8 booleans)
+	support.attributes = assert(function( el ) {
+		el.className = "i";
+		return !el.getAttribute("className");
+	});
+
+	/* getElement(s)By*
+	---------------------------------------------------------------------- */
+
+	// Check if getElementsByTagName("*") returns only elements
+	support.getElementsByTagName = assert(function( el ) {
+		el.appendChild( document.createComment("") );
+		return !el.getElementsByTagName("*").length;
+	});
+
+	// Support: IE<9
+	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+	// Support: IE<10
+	// Check if getElementById returns elements by name
+	// The broken getElementById methods don't pick up programmatically-set names,
+	// so use a roundabout getElementsByName test
+	support.getById = assert(function( el ) {
+		docElem.appendChild( el ).id = expando;
+		return !document.getElementsByName || !document.getElementsByName( expando ).length;
+	});
+
+	// ID filter and find
+	if ( support.getById ) {
+		Expr.filter["ID"] = function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				return elem.getAttribute("id") === attrId;
+			};
+		};
+		Expr.find["ID"] = function( id, context ) {
+			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+				var elem = context.getElementById( id );
+				return elem ? [ elem ] : [];
+			}
+		};
+	} else {
+		Expr.filter["ID"] =  function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				var node = typeof elem.getAttributeNode !== "undefined" &&
+					elem.getAttributeNode("id");
+				return node && node.value === attrId;
+			};
+		};
+
+		// Support: IE 6 - 7 only
+		// getElementById is not reliable as a find shortcut
+		Expr.find["ID"] = function( id, context ) {
+			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+				var node, i, elems,
+					elem = context.getElementById( id );
+
+				if ( elem ) {
+
+					// Verify the id attribute
+					node = elem.getAttributeNode("id");
+					if ( node && node.value === id ) {
+						return [ elem ];
+					}
+
+					// Fall back on getElementsByName
+					elems = context.getElementsByName( id );
+					i = 0;
+					while ( (elem = elems[i++]) ) {
+						node = elem.getAttributeNode("id");
+						if ( node && node.value === id ) {
+							return [ elem ];
+						}
+					}
+				}
+
+				return [];
+			}
+		};
+	}
+
+	// Tag
+	Expr.find["TAG"] = support.getElementsByTagName ?
+		function( tag, context ) {
+			if ( typeof context.getElementsByTagName !== "undefined" ) {
+				return context.getElementsByTagName( tag );
+
+			// DocumentFragment nodes don't have gEBTN
+			} else if ( support.qsa ) {
+				return context.querySelectorAll( tag );
+			}
+		} :
+
+		function( tag, context ) {
+			var elem,
+				tmp = [],
+				i = 0,
+				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+				results = context.getElementsByTagName( tag );
+
+			// Filter out possible comments
+			if ( tag === "*" ) {
+				while ( (elem = results[i++]) ) {
+					if ( elem.nodeType === 1 ) {
+						tmp.push( elem );
+					}
+				}
+
+				return tmp;
+			}
+			return results;
+		};
+
+	// Class
+	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+			return context.getElementsByClassName( className );
+		}
+	};
+
+	/* QSA/matchesSelector
+	---------------------------------------------------------------------- */
+
+	// QSA and matchesSelector support
+
+	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+	rbuggyMatches = [];
+
+	// qSa(:focus) reports false when true (Chrome 21)
+	// We allow this because of a bug in IE8/9 that throws an error
+	// whenever `document.activeElement` is accessed on an iframe
+	// So, we allow :focus to pass through QSA all the time to avoid the IE error
+	// See https://bugs.jquery.com/ticket/13378
+	rbuggyQSA = [];
+
+	if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+		// Build QSA regex
+		// Regex strategy adopted from Diego Perini
+		assert(function( el ) {
+			// Select is set to empty string on purpose
+			// This is to test IE's treatment of not explicitly
+			// setting a boolean content attribute,
+			// since its presence should be enough
+			// https://bugs.jquery.com/ticket/12359
+			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
+				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
+				"<option selected=''></option></select>";
+
+			// Support: IE8, Opera 11-12.16
+			// Nothing should be selected when empty strings follow ^= or $= or *=
+			// The test attribute must be unknown in Opera but "safe" for WinRT
+			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+			if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+			}
+
+			// Support: IE8
+			// Boolean attributes and "value" are not treated correctly
+			if ( !el.querySelectorAll("[selected]").length ) {
+				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+			}
+
+			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+				rbuggyQSA.push("~=");
+			}
+
+			// Webkit/Opera - :checked should return selected option elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			// IE8 throws error here and will not see later tests
+			if ( !el.querySelectorAll(":checked").length ) {
+				rbuggyQSA.push(":checked");
+			}
+
+			// Support: Safari 8+, iOS 8+
+			// https://bugs.webkit.org/show_bug.cgi?id=136851
+			// In-page `selector#id sibling-combinator selector` fails
+			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+				rbuggyQSA.push(".#.+[+~]");
+			}
+		});
+
+		assert(function( el ) {
+			el.innerHTML = "<a href='' disabled='disabled'></a>" +
+				"<select disabled='disabled'><option/></select>";
+
+			// Support: Windows 8 Native Apps
+			// The type and name attributes are restricted during .innerHTML assignment
+			var input = document.createElement("input");
+			input.setAttribute( "type", "hidden" );
+			el.appendChild( input ).setAttribute( "name", "D" );
+
+			// Support: IE8
+			// Enforce case-sensitivity of name attribute
+			if ( el.querySelectorAll("[name=d]").length ) {
+				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+			}
+
+			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+			// IE8 throws error here and will not see later tests
+			if ( el.querySelectorAll(":enabled").length !== 2 ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Support: IE9-11+
+			// IE's :disabled selector does not pick up the children of disabled fieldsets
+			docElem.appendChild( el ).disabled = true;
+			if ( el.querySelectorAll(":disabled").length !== 2 ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Opera 10-11 does not throw on post-comma invalid pseudos
+			el.querySelectorAll("*,:x");
+			rbuggyQSA.push(",.*:");
+		});
+	}
+
+	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+		docElem.webkitMatchesSelector ||
+		docElem.mozMatchesSelector ||
+		docElem.oMatchesSelector ||
+		docElem.msMatchesSelector) )) ) {
+
+		assert(function( el ) {
+			// Check to see if it's possible to do matchesSelector
+			// on a disconnected node (IE 9)
+			support.disconnectedMatch = matches.call( el, "*" );
+
+			// This should fail with an exception
+			// Gecko does not error, returns false instead
+			matches.call( el, "[s!='']:x" );
+			rbuggyMatches.push( "!=", pseudos );
+		});
+	}
+
+	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+	/* Contains
+	---------------------------------------------------------------------- */
+	hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+	// Element contains another
+	// Purposefully self-exclusive
+	// As in, an element does not contain itself
+	contains = hasCompare || rnative.test( docElem.contains ) ?
+		function( a, b ) {
+			var adown = a.nodeType === 9 ? a.documentElement : a,
+				bup = b && b.parentNode;
+			return a === bup || !!( bup && bup.nodeType === 1 && (
+				adown.contains ?
+					adown.contains( bup ) :
+					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+			));
+		} :
+		function( a, b ) {
+			if ( b ) {
+				while ( (b = b.parentNode) ) {
+					if ( b === a ) {
+						return true;
+					}
+				}
+			}
+			return false;
+		};
+
+	/* Sorting
+	---------------------------------------------------------------------- */
+
+	// Document order sorting
+	sortOrder = hasCompare ?
+	function( a, b ) {
+
+		// Flag for duplicate removal
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		// Sort on method existence if only one input has compareDocumentPosition
+		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+		if ( compare ) {
+			return compare;
+		}
+
+		// Calculate position if both inputs belong to the same document
+		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+			a.compareDocumentPosition( b ) :
+
+			// Otherwise we know they are disconnected
+			1;
+
+		// Disconnected nodes
+		if ( compare & 1 ||
+			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+			// Choose the first element that is related to our preferred document
+			if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+				return -1;
+			}
+			if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+				return 1;
+			}
+
+			// Maintain original order
+			return sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+		}
+
+		return compare & 4 ? -1 : 1;
+	} :
+	function( a, b ) {
+		// Exit early if the nodes are identical
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		var cur,
+			i = 0,
+			aup = a.parentNode,
+			bup = b.parentNode,
+			ap = [ a ],
+			bp = [ b ];
+
+		// Parentless nodes are either documents or disconnected
+		if ( !aup || !bup ) {
+			return a === document ? -1 :
+				b === document ? 1 :
+				aup ? -1 :
+				bup ? 1 :
+				sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+
+		// If the nodes are siblings, we can do a quick check
+		} else if ( aup === bup ) {
+			return siblingCheck( a, b );
+		}
+
+		// Otherwise we need full lists of their ancestors for comparison
+		cur = a;
+		while ( (cur = cur.parentNode) ) {
+			ap.unshift( cur );
+		}
+		cur = b;
+		while ( (cur = cur.parentNode) ) {
+			bp.unshift( cur );
+		}
+
+		// Walk down the tree looking for a discrepancy
+		while ( ap[i] === bp[i] ) {
+			i++;
+		}
+
+		return i ?
+			// Do a sibling check if the nodes have a common ancestor
+			siblingCheck( ap[i], bp[i] ) :
+
+			// Otherwise nodes in our document sort first
+			ap[i] === preferredDoc ? -1 :
+			bp[i] === preferredDoc ? 1 :
+			0;
+	};
+
+	return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+	return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	// Make sure that attribute selectors are quoted
+	expr = expr.replace( rattributeQuotes, "='$1']" );
+
+	if ( support.matchesSelector && documentIsHTML &&
+		!compilerCache[ expr + " " ] &&
+		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+		try {
+			var ret = matches.call( elem, expr );
+
+			// IE 9's matchesSelector returns false on disconnected nodes
+			if ( ret || support.disconnectedMatch ||
+					// As well, disconnected nodes are said to be in a document
+					// fragment in IE 9
+					elem.document && elem.document.nodeType !== 11 ) {
+				return ret;
+			}
+		} catch (e) {}
+	}
+
+	return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+	// Set document vars if needed
+	if ( ( context.ownerDocument || context ) !== document ) {
+		setDocument( context );
+	}
+	return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	var fn = Expr.attrHandle[ name.toLowerCase() ],
+		// Don't get fooled by Object.prototype properties (jQuery #13807)
+		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+			fn( elem, name, !documentIsHTML ) :
+			undefined;
+
+	return val !== undefined ?
+		val :
+		support.attributes || !documentIsHTML ?
+			elem.getAttribute( name ) :
+			(val = elem.getAttributeNode(name)) && val.specified ?
+				val.value :
+				null;
+};
+
+Sizzle.escape = function( sel ) {
+	return (sel + "").replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+	throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+	var elem,
+		duplicates = [],
+		j = 0,
+		i = 0;
+
+	// Unless we *know* we can detect duplicates, assume their presence
+	hasDuplicate = !support.detectDuplicates;
+	sortInput = !support.sortStable && results.slice( 0 );
+	results.sort( sortOrder );
+
+	if ( hasDuplicate ) {
+		while ( (elem = results[i++]) ) {
+			if ( elem === results[ i ] ) {
+				j = duplicates.push( i );
+			}
+		}
+		while ( j-- ) {
+			results.splice( duplicates[ j ], 1 );
+		}
+	}
+
+	// Clear input after sorting to release objects
+	// See https://github.com/jquery/sizzle/pull/225
+	sortInput = null;
+
+	return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+	var node,
+		ret = "",
+		i = 0,
+		nodeType = elem.nodeType;
+
+	if ( !nodeType ) {
+		// If no nodeType, this is expected to be an array
+		while ( (node = elem[i++]) ) {
+			// Do not traverse comment nodes
+			ret += getText( node );
+		}
+	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+		// Use textContent for elements
+		// innerText usage removed for consistency of new lines (jQuery #11153)
+		if ( typeof elem.textContent === "string" ) {
+			return elem.textContent;
+		} else {
+			// Traverse its children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				ret += getText( elem );
+			}
+		}
+	} else if ( nodeType === 3 || nodeType === 4 ) {
+		return elem.nodeValue;
+	}
+	// Do not include comment or processing instruction nodes
+
+	return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+	// Can be adjusted by the user
+	cacheLength: 50,
+
+	createPseudo: markFunction,
+
+	match: matchExpr,
+
+	attrHandle: {},
+
+	find: {},
+
+	relative: {
+		">": { dir: "parentNode", first: true },
+		" ": { dir: "parentNode" },
+		"+": { dir: "previousSibling", first: true },
+		"~": { dir: "previousSibling" }
+	},
+
+	preFilter: {
+		"ATTR": function( match ) {
+			match[1] = match[1].replace( runescape, funescape );
+
+			// Move the given value to match[3] whether quoted or unquoted
+			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+			if ( match[2] === "~=" ) {
+				match[3] = " " + match[3] + " ";
+			}
+
+			return match.slice( 0, 4 );
+		},
+
+		"CHILD": function( match ) {
+			/* matches from matchExpr["CHILD"]
+				1 type (only|nth|...)
+				2 what (child|of-type)
+				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+				4 xn-component of xn+y argument ([+-]?\d*n|)
+				5 sign of xn-component
+				6 x of xn-component
+				7 sign of y-component
+				8 y of y-component
+			*/
+			match[1] = match[1].toLowerCase();
+
+			if ( match[1].slice( 0, 3 ) === "nth" ) {
+				// nth-* requires argument
+				if ( !match[3] ) {
+					Sizzle.error( match[0] );
+				}
+
+				// numeric x and y parameters for Expr.filter.CHILD
+				// remember that false/true cast respectively to 0/1
+				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+			// other types prohibit arguments
+			} else if ( match[3] ) {
+				Sizzle.error( match[0] );
+			}
+
+			return match;
+		},
+
+		"PSEUDO": function( match ) {
+			var excess,
+				unquoted = !match[6] && match[2];
+
+			if ( matchExpr["CHILD"].test( match[0] ) ) {
+				return null;
+			}
+
+			// Accept quoted arguments as-is
+			if ( match[3] ) {
+				match[2] = match[4] || match[5] || "";
+
+			// Strip excess characters from unquoted arguments
+			} else if ( unquoted && rpseudo.test( unquoted ) &&
+				// Get excess from tokenize (recursively)
+				(excess = tokenize( unquoted, true )) &&
+				// advance to the next closing parenthesis
+				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+				// excess is a negative index
+				match[0] = match[0].slice( 0, excess );
+				match[2] = unquoted.slice( 0, excess );
+			}
+
+			// Return only captures needed by the pseudo filter method (type and argument)
+			return match.slice( 0, 3 );
+		}
+	},
+
+	filter: {
+
+		"TAG": function( nodeNameSelector ) {
+			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+			return nodeNameSelector === "*" ?
+				function() { return true; } :
+				function( elem ) {
+					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+				};
+		},
+
+		"CLASS": function( className ) {
+			var pattern = classCache[ className + " " ];
+
+			return pattern ||
+				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+				classCache( className, function( elem ) {
+					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+				});
+		},
+
+		"ATTR": function( name, operator, check ) {
+			return function( elem ) {
+				var result = Sizzle.attr( elem, name );
+
+				if ( result == null ) {
+					return operator === "!=";
+				}
+				if ( !operator ) {
+					return true;
+				}
+
+				result += "";
+
+				return operator === "=" ? result === check :
+					operator === "!=" ? result !== check :
+					operator === "^=" ? check && result.indexOf( check ) === 0 :
+					operator === "*=" ? check && result.indexOf( check ) > -1 :
+					operator === "$=" ? check && result.slice( -check.length ) === check :
+					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+					false;
+			};
+		},
+
+		"CHILD": function( type, what, argument, first, last ) {
+			var simple = type.slice( 0, 3 ) !== "nth",
+				forward = type.slice( -4 ) !== "last",
+				ofType = what === "of-type";
+
+			return first === 1 && last === 0 ?
+
+				// Shortcut for :nth-*(n)
+				function( elem ) {
+					return !!elem.parentNode;
+				} :
+
+				function( elem, context, xml ) {
+					var cache, uniqueCache, outerCache, node, nodeIndex, start,
+						dir = simple !== forward ? "nextSibling" : "previousSibling",
+						parent = elem.parentNode,
+						name = ofType && elem.nodeName.toLowerCase(),
+						useCache = !xml && !ofType,
+						diff = false;
+
+					if ( parent ) {
+
+						// :(first|last|only)-(child|of-type)
+						if ( simple ) {
+							while ( dir ) {
+								node = elem;
+								while ( (node = node[ dir ]) ) {
+									if ( ofType ?
+										node.nodeName.toLowerCase() === name :
+										node.nodeType === 1 ) {
+
+										return false;
+									}
+								}
+								// Reverse direction for :only-* (if we haven't yet done so)
+								start = dir = type === "only" && !start && "nextSibling";
+							}
+							return true;
+						}
+
+						start = [ forward ? parent.firstChild : parent.lastChild ];
+
+						// non-xml :nth-child(...) stores cache data on `parent`
+						if ( forward && useCache ) {
+
+							// Seek `elem` from a previously-cached index
+
+							// ...in a gzip-friendly way
+							node = parent;
+							outerCache = node[ expando ] || (node[ expando ] = {});
+
+							// Support: IE <9 only
+							// Defend against cloned attroperties (jQuery gh-1709)
+							uniqueCache = outerCache[ node.uniqueID ] ||
+								(outerCache[ node.uniqueID ] = {});
+
+							cache = uniqueCache[ type ] || [];
+							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+							diff = nodeIndex && cache[ 2 ];
+							node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+								// Fallback to seeking `elem` from the start
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								// When found, cache indexes on `parent` and break
+								if ( node.nodeType === 1 && ++diff && node === elem ) {
+									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+									break;
+								}
+							}
+
+						} else {
+							// Use previously-cached element index if available
+							if ( useCache ) {
+								// ...in a gzip-friendly way
+								node = elem;
+								outerCache = node[ expando ] || (node[ expando ] = {});
+
+								// Support: IE <9 only
+								// Defend against cloned attroperties (jQuery gh-1709)
+								uniqueCache = outerCache[ node.uniqueID ] ||
+									(outerCache[ node.uniqueID ] = {});
+
+								cache = uniqueCache[ type ] || [];
+								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+								diff = nodeIndex;
+							}
+
+							// xml :nth-child(...)
+							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
+							if ( diff === false ) {
+								// Use the same loop as above to seek `elem` from the start
+								while ( (node = ++nodeIndex && node && node[ dir ] ||
+									(diff = nodeIndex = 0) || start.pop()) ) {
+
+									if ( ( ofType ?
+										node.nodeName.toLowerCase() === name :
+										node.nodeType === 1 ) &&
+										++diff ) {
+
+										// Cache the index of each encountered element
+										if ( useCache ) {
+											outerCache = node[ expando ] || (node[ expando ] = {});
+
+											// Support: IE <9 only
+											// Defend against cloned attroperties (jQuery gh-1709)
+											uniqueCache = outerCache[ node.uniqueID ] ||
+												(outerCache[ node.uniqueID ] = {});
+
+											uniqueCache[ type ] = [ dirruns, diff ];
+										}
+
+										if ( node === elem ) {
+											break;
+										}
+									}
+								}
+							}
+						}
+
+						// Incorporate the offset, then check against cycle size
+						diff -= last;
+						return diff === first || ( diff % first === 0 && diff / first >= 0 );
+					}
+				};
+		},
+
+		"PSEUDO": function( pseudo, argument ) {
+			// pseudo-class names are case-insensitive
+			// http://www.w3.org/TR/selectors/#pseudo-classes
+			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+			// Remember that setFilters inherits from pseudos
+			var args,
+				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+					Sizzle.error( "unsupported pseudo: " + pseudo );
+
+			// The user may use createPseudo to indicate that
+			// arguments are needed to create the filter function
+			// just as Sizzle does
+			if ( fn[ expando ] ) {
+				return fn( argument );
+			}
+
+			// But maintain support for old signatures
+			if ( fn.length > 1 ) {
+				args = [ pseudo, pseudo, "", argument ];
+				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+					markFunction(function( seed, matches ) {
+						var idx,
+							matched = fn( seed, argument ),
+							i = matched.length;
+						while ( i-- ) {
+							idx = indexOf( seed, matched[i] );
+							seed[ idx ] = !( matches[ idx ] = matched[i] );
+						}
+					}) :
+					function( elem ) {
+						return fn( elem, 0, args );
+					};
+			}
+
+			return fn;
+		}
+	},
+
+	pseudos: {
+		// Potentially complex pseudos
+		"not": markFunction(function( selector ) {
+			// Trim the selector passed to compile
+			// to avoid treating leading and trailing
+			// spaces as combinators
+			var input = [],
+				results = [],
+				matcher = compile( selector.replace( rtrim, "$1" ) );
+
+			return matcher[ expando ] ?
+				markFunction(function( seed, matches, context, xml ) {
+					var elem,
+						unmatched = matcher( seed, null, xml, [] ),
+						i = seed.length;
+
+					// Match elements unmatched by `matcher`
+					while ( i-- ) {
+						if ( (elem = unmatched[i]) ) {
+							seed[i] = !(matches[i] = elem);
+						}
+					}
+				}) :
+				function( elem, context, xml ) {
+					input[0] = elem;
+					matcher( input, null, xml, results );
+					// Don't keep the element (issue #299)
+					input[0] = null;
+					return !results.pop();
+				};
+		}),
+
+		"has": markFunction(function( selector ) {
+			return function( elem ) {
+				return Sizzle( selector, elem ).length > 0;
+			};
+		}),
+
+		"contains": markFunction(function( text ) {
+			text = text.replace( runescape, funescape );
+			return function( elem ) {
+				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+			};
+		}),
+
+		// "Whether an element is represented by a :lang() selector
+		// is based solely on the element's language value
+		// being equal to the identifier C,
+		// or beginning with the identifier C immediately followed by "-".
+		// The matching of C against the element's language value is performed case-insensitively.
+		// The identifier C does not have to be a valid language name."
+		// http://www.w3.org/TR/selectors/#lang-pseudo
+		"lang": markFunction( function( lang ) {
+			// lang value must be a valid identifier
+			if ( !ridentifier.test(lang || "") ) {
+				Sizzle.error( "unsupported lang: " + lang );
+			}
+			lang = lang.replace( runescape, funescape ).toLowerCase();
+			return function( elem ) {
+				var elemLang;
+				do {
+					if ( (elemLang = documentIsHTML ?
+						elem.lang :
+						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+						elemLang = elemLang.toLowerCase();
+						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+					}
+				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+				return false;
+			};
+		}),
+
+		// Miscellaneous
+		"target": function( elem ) {
+			var hash = window.location && window.location.hash;
+			return hash && hash.slice( 1 ) === elem.id;
+		},
+
+		"root": function( elem ) {
+			return elem === docElem;
+		},
+
+		"focus": function( elem ) {
+			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+		},
+
+		// Boolean properties
+		"enabled": createDisabledPseudo( false ),
+		"disabled": createDisabledPseudo( true ),
+
+		"checked": function( elem ) {
+			// In CSS3, :checked should return both checked and selected elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			var nodeName = elem.nodeName.toLowerCase();
+			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+		},
+
+		"selected": function( elem ) {
+			// Accessing this property makes selected-by-default
+			// options in Safari work properly
+			if ( elem.parentNode ) {
+				elem.parentNode.selectedIndex;
+			}
+
+			return elem.selected === true;
+		},
+
+		// Contents
+		"empty": function( elem ) {
+			// http://www.w3.org/TR/selectors/#empty-pseudo
+			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+			//   but not by others (comment: 8; processing instruction: 7; etc.)
+			// nodeType < 6 works because attributes (2) do not appear as children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				if ( elem.nodeType < 6 ) {
+					return false;
+				}
+			}
+			return true;
+		},
+
+		"parent": function( elem ) {
+			return !Expr.pseudos["empty"]( elem );
+		},
+
+		// Element/input types
+		"header": function( elem ) {
+			return rheader.test( elem.nodeName );
+		},
+
+		"input": function( elem ) {
+			return rinputs.test( elem.nodeName );
+		},
+
+		"button": function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return name === "input" && elem.type === "button" || name === "button";
+		},
+
+		"text": function( elem ) {
+			var attr;
+			return elem.nodeName.toLowerCase() === "input" &&
+				elem.type === "text" &&
+
+				// Support: IE<8
+				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+		},
+
+		// Position-in-collection
+		"first": createPositionalPseudo(function() {
+			return [ 0 ];
+		}),
+
+		"last": createPositionalPseudo(function( matchIndexes, length ) {
+			return [ length - 1 ];
+		}),
+
+		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			return [ argument < 0 ? argument + length : argument ];
+		}),
+
+		"even": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 0;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"odd": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 1;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; --i >= 0; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; ++i < length; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		})
+	}
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+	Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+	Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+	var matched, match, tokens, type,
+		soFar, groups, preFilters,
+		cached = tokenCache[ selector + " " ];
+
+	if ( cached ) {
+		return parseOnly ? 0 : cached.slice( 0 );
+	}
+
+	soFar = selector;
+	groups = [];
+	preFilters = Expr.preFilter;
+
+	while ( soFar ) {
+
+		// Comma and first run
+		if ( !matched || (match = rcomma.exec( soFar )) ) {
+			if ( match ) {
+				// Don't consume trailing commas as valid
+				soFar = soFar.slice( match[0].length ) || soFar;
+			}
+			groups.push( (tokens = []) );
+		}
+
+		matched = false;
+
+		// Combinators
+		if ( (match = rcombinators.exec( soFar )) ) {
+			matched = match.shift();
+			tokens.push({
+				value: matched,
+				// Cast descendant combinators to space
+				type: match[0].replace( rtrim, " " )
+			});
+			soFar = soFar.slice( matched.length );
+		}
+
+		// Filters
+		for ( type in Expr.filter ) {
+			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+				(match = preFilters[ type ]( match ))) ) {
+				matched = match.shift();
+				tokens.push({
+					value: matched,
+					type: type,
+					matches: match
+				});
+				soFar = soFar.slice( matched.length );
+			}
+		}
+
+		if ( !matched ) {
+			break;
+		}
+	}
+
+	// Return the length of the invalid excess
+	// if we're just parsing
+	// Otherwise, throw an error or return tokens
+	return parseOnly ?
+		soFar.length :
+		soFar ?
+			Sizzle.error( selector ) :
+			// Cache the tokens
+			tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+	var i = 0,
+		len = tokens.length,
+		selector = "";
+	for ( ; i < len; i++ ) {
+		selector += tokens[i].value;
+	}
+	return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+	var dir = combinator.dir,
+		skip = combinator.next,
+		key = skip || dir,
+		checkNonElements = base && key === "parentNode",
+		doneName = done++;
+
+	return combinator.first ?
+		// Check against closest ancestor/preceding element
+		function( elem, context, xml ) {
+			while ( (elem = elem[ dir ]) ) {
+				if ( elem.nodeType === 1 || checkNonElements ) {
+					return matcher( elem, context, xml );
+				}
+			}
+			return false;
+		} :
+
+		// Check against all ancestor/preceding elements
+		function( elem, context, xml ) {
+			var oldCache, uniqueCache, outerCache,
+				newCache = [ dirruns, doneName ];
+
+			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+			if ( xml ) {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						if ( matcher( elem, context, xml ) ) {
+							return true;
+						}
+					}
+				}
+			} else {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+						// Support: IE <9 only
+						// Defend against cloned attroperties (jQuery gh-1709)
+						uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+						if ( skip && skip === elem.nodeName.toLowerCase() ) {
+							elem = elem[ dir ] || elem;
+						} else if ( (oldCache = uniqueCache[ key ]) &&
+							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+							// Assign to newCache so results back-propagate to previous elements
+							return (newCache[ 2 ] = oldCache[ 2 ]);
+						} else {
+							// Reuse newcache so results back-propagate to previous elements
+							uniqueCache[ key ] = newCache;
+
+							// A match means we're done; a fail means we have to keep checking
+							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+								return true;
+							}
+						}
+					}
+				}
+			}
+			return false;
+		};
+}
+
+function elementMatcher( matchers ) {
+	return matchers.length > 1 ?
+		function( elem, context, xml ) {
+			var i = matchers.length;
+			while ( i-- ) {
+				if ( !matchers[i]( elem, context, xml ) ) {
+					return false;
+				}
+			}
+			return true;
+		} :
+		matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+	var i = 0,
+		len = contexts.length;
+	for ( ; i < len; i++ ) {
+		Sizzle( selector, contexts[i], results );
+	}
+	return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+	var elem,
+		newUnmatched = [],
+		i = 0,
+		len = unmatched.length,
+		mapped = map != null;
+
+	for ( ; i < len; i++ ) {
+		if ( (elem = unmatched[i]) ) {
+			if ( !filter || filter( elem, context, xml ) ) {
+				newUnmatched.push( elem );
+				if ( mapped ) {
+					map.push( i );
+				}
+			}
+		}
+	}
+
+	return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+	if ( postFilter && !postFilter[ expando ] ) {
+		postFilter = setMatcher( postFilter );
+	}
+	if ( postFinder && !postFinder[ expando ] ) {
+		postFinder = setMatcher( postFinder, postSelector );
+	}
+	return markFunction(function( seed, results, context, xml ) {
+		var temp, i, elem,
+			preMap = [],
+			postMap = [],
+			preexisting = results.length,
+
+			// Get initial elements from seed or context
+			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+			// Prefilter to get matcher input, preserving a map for seed-results synchronization
+			matcherIn = preFilter && ( seed || !selector ) ?
+				condense( elems, preMap, preFilter, context, xml ) :
+				elems,
+
+			matcherOut = matcher ?
+				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+					// ...intermediate processing is necessary
+					[] :
+
+					// ...otherwise use results directly
+					results :
+				matcherIn;
+
+		// Find primary matches
+		if ( matcher ) {
+			matcher( matcherIn, matcherOut, context, xml );
+		}
+
+		// Apply postFilter
+		if ( postFilter ) {
+			temp = condense( matcherOut, postMap );
+			postFilter( temp, [], context, xml );
+
+			// Un-match failing elements by moving them back to matcherIn
+			i = temp.length;
+			while ( i-- ) {
+				if ( (elem = temp[i]) ) {
+					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+				}
+			}
+		}
+
+		if ( seed ) {
+			if ( postFinder || preFilter ) {
+				if ( postFinder ) {
+					// Get the final matcherOut by condensing this intermediate into postFinder contexts
+					temp = [];
+					i = matcherOut.length;
+					while ( i-- ) {
+						if ( (elem = matcherOut[i]) ) {
+							// Restore matcherIn since elem is not yet a final match
+							temp.push( (matcherIn[i] = elem) );
+						}
+					}
+					postFinder( null, (matcherOut = []), temp, xml );
+				}
+
+				// Move matched elements from seed to results to keep them synchronized
+				i = matcherOut.length;
+				while ( i-- ) {
+					if ( (elem = matcherOut[i]) &&
+						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+						seed[temp] = !(results[temp] = elem);
+					}
+				}
+			}
+
+		// Add elements to results, through postFinder if defined
+		} else {
+			matcherOut = condense(
+				matcherOut === results ?
+					matcherOut.splice( preexisting, matcherOut.length ) :
+					matcherOut
+			);
+			if ( postFinder ) {
+				postFinder( null, results, matcherOut, xml );
+			} else {
+				push.apply( results, matcherOut );
+			}
+		}
+	});
+}
+
+function matcherFromTokens( tokens ) {
+	var checkContext, matcher, j,
+		len = tokens.length,
+		leadingRelative = Expr.relative[ tokens[0].type ],
+		implicitRelative = leadingRelative || Expr.relative[" "],
+		i = leadingRelative ? 1 : 0,
+
+		// The foundational matcher ensures that elements are reachable from top-level context(s)
+		matchContext = addCombinator( function( elem ) {
+			return elem === checkContext;
+		}, implicitRelative, true ),
+		matchAnyContext = addCombinator( function( elem ) {
+			return indexOf( checkContext, elem ) > -1;
+		}, implicitRelative, true ),
+		matchers = [ function( elem, context, xml ) {
+			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+				(checkContext = context).nodeType ?
+					matchContext( elem, context, xml ) :
+					matchAnyContext( elem, context, xml ) );
+			// Avoid hanging onto element (issue #299)
+			checkContext = null;
+			return ret;
+		} ];
+
+	for ( ; i < len; i++ ) {
+		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+		} else {
+			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+			// Return special upon seeing a positional matcher
+			if ( matcher[ expando ] ) {
+				// Find the next relative operator (if any) for proper handling
+				j = ++i;
+				for ( ; j < len; j++ ) {
+					if ( Expr.relative[ tokens[j].type ] ) {
+						break;
+					}
+				}
+				return setMatcher(
+					i > 1 && elementMatcher( matchers ),
+					i > 1 && toSelector(
+						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
+						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+					).replace( rtrim, "$1" ),
+					matcher,
+					i < j && matcherFromTokens( tokens.slice( i, j ) ),
+					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+					j < len && toSelector( tokens )
+				);
+			}
+			matchers.push( matcher );
+		}
+	}
+
+	return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+	var bySet = setMatchers.length > 0,
+		byElement = elementMatchers.length > 0,
+		superMatcher = function( seed, context, xml, results, outermost ) {
+			var elem, j, matcher,
+				matchedCount = 0,
+				i = "0",
+				unmatched = seed && [],
+				setMatched = [],
+				contextBackup = outermostContext,
+				// We must always have either seed elements or outermost context
+				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+				// Use integer dirruns iff this is the outermost matcher
+				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+				len = elems.length;
+
+			if ( outermost ) {
+				outermostContext = context === document || context || outermost;
+			}
+
+			// Add elements passing elementMatchers directly to results
+			// Support: IE<9, Safari
+			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+				if ( byElement && elem ) {
+					j = 0;
+					if ( !context && elem.ownerDocument !== document ) {
+						setDocument( elem );
+						xml = !documentIsHTML;
+					}
+					while ( (matcher = elementMatchers[j++]) ) {
+						if ( matcher( elem, context || document, xml) ) {
+							results.push( elem );
+							break;
+						}
+					}
+					if ( outermost ) {
+						dirruns = dirrunsUnique;
+					}
+				}
+
+				// Track unmatched elements for set filters
+				if ( bySet ) {
+					// They will have gone through all possible matchers
+					if ( (elem = !matcher && elem) ) {
+						matchedCount--;
+					}
+
+					// Lengthen the array for every element, matched or not
+					if ( seed ) {
+						unmatched.push( elem );
+					}
+				}
+			}
+
+			// `i` is now the count of elements visited above, and adding it to `matchedCount`
+			// makes the latter nonnegative.
+			matchedCount += i;
+
+			// Apply set filters to unmatched elements
+			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+			// no element matchers and no seed.
+			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
+			// numerically zero.
+			if ( bySet && i !== matchedCount ) {
+				j = 0;
+				while ( (matcher = setMatchers[j++]) ) {
+					matcher( unmatched, setMatched, context, xml );
+				}
+
+				if ( seed ) {
+					// Reintegrate element matches to eliminate the need for sorting
+					if ( matchedCount > 0 ) {
+						while ( i-- ) {
+							if ( !(unmatched[i] || setMatched[i]) ) {
+								setMatched[i] = pop.call( results );
+							}
+						}
+					}
+
+					// Discard index placeholder values to get only actual matches
+					setMatched = condense( setMatched );
+				}
+
+				// Add matches to results
+				push.apply( results, setMatched );
+
+				// Seedless set matches succeeding multiple successful matchers stipulate sorting
+				if ( outermost && !seed && setMatched.length > 0 &&
+					( matchedCount + setMatchers.length ) > 1 ) {
+
+					Sizzle.uniqueSort( results );
+				}
+			}
+
+			// Override manipulation of globals by nested matchers
+			if ( outermost ) {
+				dirruns = dirrunsUnique;
+				outermostContext = contextBackup;
+			}
+
+			return unmatched;
+		};
+
+	return bySet ?
+		markFunction( superMatcher ) :
+		superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+	var i,
+		setMatchers = [],
+		elementMatchers = [],
+		cached = compilerCache[ selector + " " ];
+
+	if ( !cached ) {
+		// Generate a function of recursive functions that can be used to check each element
+		if ( !match ) {
+			match = tokenize( selector );
+		}
+		i = match.length;
+		while ( i-- ) {
+			cached = matcherFromTokens( match[i] );
+			if ( cached[ expando ] ) {
+				setMatchers.push( cached );
+			} else {
+				elementMatchers.push( cached );
+			}
+		}
+
+		// Cache the compiled function
+		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+		// Save selector and tokenization
+		cached.selector = selector;
+	}
+	return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+	var i, tokens, token, type, find,
+		compiled = typeof selector === "function" && selector,
+		match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+	results = results || [];
+
+	// Try to minimize operations if there is only one selector in the list and no seed
+	// (the latter of which guarantees us context)
+	if ( match.length === 1 ) {
+
+		// Reduce context if the leading compound selector is an ID
+		tokens = match[0] = match[0].slice( 0 );
+		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+				context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
+
+			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+			if ( !context ) {
+				return results;
+
+			// Precompiled matchers will still verify ancestry, so step up a level
+			} else if ( compiled ) {
+				context = context.parentNode;
+			}
+
+			selector = selector.slice( tokens.shift().value.length );
+		}
+
+		// Fetch a seed set for right-to-left matching
+		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+		while ( i-- ) {
+			token = tokens[i];
+
+			// Abort if we hit a combinator
+			if ( Expr.relative[ (type = token.type) ] ) {
+				break;
+			}
+			if ( (find = Expr.find[ type ]) ) {
+				// Search, expanding context for leading sibling combinators
+				if ( (seed = find(
+					token.matches[0].replace( runescape, funescape ),
+					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+				)) ) {
+
+					// If seed is empty or no tokens remain, we can return early
+					tokens.splice( i, 1 );
+					selector = seed.length && toSelector( tokens );
+					if ( !selector ) {
+						push.apply( results, seed );
+						return results;
+					}
+
+					break;
+				}
+			}
+		}
+	}
+
+	// Compile and execute a filtering function if one is not provided
+	// Provide `match` to avoid retokenization if we modified the selector above
+	( compiled || compile( selector, match ) )(
+		seed,
+		context,
+		!documentIsHTML,
+		results,
+		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+	);
+	return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( el ) {
+	// Should return 1, but returns 4 (following)
+	return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( el ) {
+	el.innerHTML = "<a href='#'></a>";
+	return el.firstChild.getAttribute("href") === "#" ;
+}) ) {
+	addHandle( "type|href|height|width", function( elem, name, isXML ) {
+		if ( !isXML ) {
+			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+		}
+	});
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( el ) {
+	el.innerHTML = "<input/>";
+	el.firstChild.setAttribute( "value", "" );
+	return el.firstChild.getAttribute( "value" ) === "";
+}) ) {
+	addHandle( "value", function( elem, name, isXML ) {
+		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+			return elem.defaultValue;
+		}
+	});
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( el ) {
+	return el.getAttribute("disabled") == null;
+}) ) {
+	addHandle( booleans, function( elem, name, isXML ) {
+		var val;
+		if ( !isXML ) {
+			return elem[ name ] === true ? name.toLowerCase() :
+					(val = elem.getAttributeNode( name )) && val.specified ?
+					val.value :
+				null;
+		}
+	});
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+
+
+
+var dir = function( elem, dir, until ) {
+	var matched = [],
+		truncate = until !== undefined;
+
+	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+		if ( elem.nodeType === 1 ) {
+			if ( truncate && jQuery( elem ).is( until ) ) {
+				break;
+			}
+			matched.push( elem );
+		}
+	}
+	return matched;
+};
+
+
+var siblings = function( n, elem ) {
+	var matched = [];
+
+	for ( ; n; n = n.nextSibling ) {
+		if ( n.nodeType === 1 && n !== elem ) {
+			matched.push( n );
+		}
+	}
+
+	return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+
+
+function nodeName( elem, name ) {
+
+  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+
+};
+var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+	if ( jQuery.isFunction( qualifier ) ) {
+		return jQuery.grep( elements, function( elem, i ) {
+			return !!qualifier.call( elem, i, elem ) !== not;
+		} );
+	}
+
+	// Single element
+	if ( qualifier.nodeType ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( elem === qualifier ) !== not;
+		} );
+	}
+
+	// Arraylike of elements (jQuery, arguments, Array)
+	if ( typeof qualifier !== "string" ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+		} );
+	}
+
+	// Simple selector that can be filtered directly, removing non-Elements
+	if ( risSimple.test( qualifier ) ) {
+		return jQuery.filter( qualifier, elements, not );
+	}
+
+	// Complex selector, compare the two sets, removing non-Elements
+	qualifier = jQuery.filter( qualifier, elements );
+	return jQuery.grep( elements, function( elem ) {
+		return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
+	} );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+	var elem = elems[ 0 ];
+
+	if ( not ) {
+		expr = ":not(" + expr + ")";
+	}
+
+	if ( elems.length === 1 && elem.nodeType === 1 ) {
+		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
+	}
+
+	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+		return elem.nodeType === 1;
+	} ) );
+};
+
+jQuery.fn.extend( {
+	find: function( selector ) {
+		var i, ret,
+			len = this.length,
+			self = this;
+
+		if ( typeof selector !== "string" ) {
+			return this.pushStack( jQuery( selector ).filter( function() {
+				for ( i = 0; i < len; i++ ) {
+					if ( jQuery.contains( self[ i ], this ) ) {
+						return true;
+					}
+				}
+			} ) );
+		}
+
+		ret = this.pushStack( [] );
+
+		for ( i = 0; i < len; i++ ) {
+			jQuery.find( selector, self[ i ], ret );
+		}
+
+		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+	},
+	filter: function( selector ) {
+		return this.pushStack( winnow( this, selector || [], false ) );
+	},
+	not: function( selector ) {
+		return this.pushStack( winnow( this, selector || [], true ) );
+	},
+	is: function( selector ) {
+		return !!winnow(
+			this,
+
+			// If this is a positional/relative selector, check membership in the returned set
+			// so $("p:first").is("p:last") won't return true for a doc with two "p".
+			typeof selector === "string" && rneedsContext.test( selector ) ?
+				jQuery( selector ) :
+				selector || [],
+			false
+		).length;
+	}
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+	// A simple way to check for HTML strings
+	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+	// Strict HTML recognition (#11290: must start with <)
+	// Shortcut simple #id case for speed
+	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+	init = jQuery.fn.init = function( selector, context, root ) {
+		var match, elem;
+
+		// HANDLE: $(""), $(null), $(undefined), $(false)
+		if ( !selector ) {
+			return this;
+		}
+
+		// Method init() accepts an alternate rootjQuery
+		// so migrate can support jQuery.sub (gh-2101)
+		root = root || rootjQuery;
+
+		// Handle HTML strings
+		if ( typeof selector === "string" ) {
+			if ( selector[ 0 ] === "<" &&
+				selector[ selector.length - 1 ] === ">" &&
+				selector.length >= 3 ) {
+
+				// Assume that strings that start and end with <> are HTML and skip the regex check
+				match = [ null, selector, null ];
+
+			} else {
+				match = rquickExpr.exec( selector );
+			}
+
+			// Match html or make sure no context is specified for #id
+			if ( match && ( match[ 1 ] || !context ) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[ 1 ] ) {
+					context = context instanceof jQuery ? context[ 0 ] : context;
+
+					// Option to run scripts is true for back-compat
+					// Intentionally let the error be thrown if parseHTML is not present
+					jQuery.merge( this, jQuery.parseHTML(
+						match[ 1 ],
+						context && context.nodeType ? context.ownerDocument || context : document,
+						true
+					) );
+
+					// HANDLE: $(html, props)
+					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+						for ( match in context ) {
+
+							// Properties of context are called as methods if possible
+							if ( jQuery.isFunction( this[ match ] ) ) {
+								this[ match ]( context[ match ] );
+
+							// ...and otherwise set as attributes
+							} else {
+								this.attr( match, context[ match ] );
+							}
+						}
+					}
+
+					return this;
+
+				// HANDLE: $(#id)
+				} else {
+					elem = document.getElementById( match[ 2 ] );
+
+					if ( elem ) {
+
+						// Inject the element directly into the jQuery object
+						this[ 0 ] = elem;
+						this.length = 1;
+					}
+					return this;
+				}
+
+			// HANDLE: $(expr, $(...))
+			} else if ( !context || context.jquery ) {
+				return ( context || root ).find( selector );
+
+			// HANDLE: $(expr, context)
+			// (which is just equivalent to: $(context).find(expr)
+			} else {
+				return this.constructor( context ).find( selector );
+			}
+
+		// HANDLE: $(DOMElement)
+		} else if ( selector.nodeType ) {
+			this[ 0 ] = selector;
+			this.length = 1;
+			return this;
+
+		// HANDLE: $(function)
+		// Shortcut for document ready
+		} else if ( jQuery.isFunction( selector ) ) {
+			return root.ready !== undefined ?
+				root.ready( selector ) :
+
+				// Execute immediately if ready is not present
+				selector( jQuery );
+		}
+
+		return jQuery.makeArray( selector, this );
+	};
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+	// Methods guaranteed to produce a unique set when starting from a unique set
+	guaranteedUnique = {
+		children: true,
+		contents: true,
+		next: true,
+		prev: true
+	};
+
+jQuery.fn.extend( {
+	has: function( target ) {
+		var targets = jQuery( target, this ),
+			l = targets.length;
+
+		return this.filter( function() {
+			var i = 0;
+			for ( ; i < l; i++ ) {
+				if ( jQuery.contains( this, targets[ i ] ) ) {
+					return true;
+				}
+			}
+		} );
+	},
+
+	closest: function( selectors, context ) {
+		var cur,
+			i = 0,
+			l = this.length,
+			matched = [],
+			targets = typeof selectors !== "string" && jQuery( selectors );
+
+		// Positional selectors never match, since there's no _selection_ context
+		if ( !rneedsContext.test( selectors ) ) {
+			for ( ; i < l; i++ ) {
+				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+					// Always skip document fragments
+					if ( cur.nodeType < 11 && ( targets ?
+						targets.index( cur ) > -1 :
+
+						// Don't pass non-elements to Sizzle
+						cur.nodeType === 1 &&
+							jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+						matched.push( cur );
+						break;
+					}
+				}
+			}
+		}
+
+		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+	},
+
+	// Determine the position of an element within the set
+	index: function( elem ) {
+
+		// No argument, return index in parent
+		if ( !elem ) {
+			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+		}
+
+		// Index in selector
+		if ( typeof elem === "string" ) {
+			return indexOf.call( jQuery( elem ), this[ 0 ] );
+		}
+
+		// Locate the position of the desired element
+		return indexOf.call( this,
+
+			// If it receives a jQuery object, the first element is used
+			elem.jquery ? elem[ 0 ] : elem
+		);
+	},
+
+	add: function( selector, context ) {
+		return this.pushStack(
+			jQuery.uniqueSort(
+				jQuery.merge( this.get(), jQuery( selector, context ) )
+			)
+		);
+	},
+
+	addBack: function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	}
+} );
+
+function sibling( cur, dir ) {
+	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+	return cur;
+}
+
+jQuery.each( {
+	parent: function( elem ) {
+		var parent = elem.parentNode;
+		return parent && parent.nodeType !== 11 ? parent : null;
+	},
+	parents: function( elem ) {
+		return dir( elem, "parentNode" );
+	},
+	parentsUntil: function( elem, i, until ) {
+		return dir( elem, "parentNode", until );
+	},
+	next: function( elem ) {
+		return sibling( elem, "nextSibling" );
+	},
+	prev: function( elem ) {
+		return sibling( elem, "previousSibling" );
+	},
+	nextAll: function( elem ) {
+		return dir( elem, "nextSibling" );
+	},
+	prevAll: function( elem ) {
+		return dir( elem, "previousSibling" );
+	},
+	nextUntil: function( elem, i, until ) {
+		return dir( elem, "nextSibling", until );
+	},
+	prevUntil: function( elem, i, until ) {
+		return dir( elem, "previousSibling", until );
+	},
+	siblings: function( elem ) {
+		return siblings( ( elem.parentNode || {} ).firstChild, elem );
+	},
+	children: function( elem ) {
+		return siblings( elem.firstChild );
+	},
+	contents: function( elem ) {
+        if ( nodeName( elem, "iframe" ) ) {
+            return elem.contentDocument;
+        }
+
+        // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
+        // Treat the template element as a regular one in browsers that
+        // don't support it.
+        if ( nodeName( elem, "template" ) ) {
+            elem = elem.content || elem;
+        }
+
+        return jQuery.merge( [], elem.childNodes );
+	}
+}, function( name, fn ) {
+	jQuery.fn[ name ] = function( until, selector ) {
+		var matched = jQuery.map( this, fn, until );
+
+		if ( name.slice( -5 ) !== "Until" ) {
+			selector = until;
+		}
+
+		if ( selector && typeof selector === "string" ) {
+			matched = jQuery.filter( selector, matched );
+		}
+
+		if ( this.length > 1 ) {
+
+			// Remove duplicates
+			if ( !guaranteedUnique[ name ] ) {
+				jQuery.uniqueSort( matched );
+			}
+
+			// Reverse order for parents* and prev-derivatives
+			if ( rparentsprev.test( name ) ) {
+				matched.reverse();
+			}
+		}
+
+		return this.pushStack( matched );
+	};
+} );
+var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+	var object = {};
+	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
+		object[ flag ] = true;
+	} );
+	return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *	options: an optional list of space-separated options that will change how
+ *			the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *	once:			will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *	memory:			will keep track of previous values and will call any callback added
+ *					after the list has been fired right away with the latest "memorized"
+ *					values (like a Deferred)
+ *
+ *	unique:			will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *	stopOnFalse:	interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+	// Convert options from String-formatted to Object-formatted if needed
+	// (we check in cache first)
+	options = typeof options === "string" ?
+		createOptions( options ) :
+		jQuery.extend( {}, options );
+
+	var // Flag to know if list is currently firing
+		firing,
+
+		// Last fire value for non-forgettable lists
+		memory,
+
+		// Flag to know if list was already fired
+		fired,
+
+		// Flag to prevent firing
+		locked,
+
+		// Actual callback list
+		list = [],
+
+		// Queue of execution data for repeatable lists
+		queue = [],
+
+		// Index of currently firing callback (modified by add/remove as needed)
+		firingIndex = -1,
+
+		// Fire callbacks
+		fire = function() {
+
+			// Enforce single-firing
+			locked = locked || options.once;
+
+			// Execute callbacks for all pending executions,
+			// respecting firingIndex overrides and runtime changes
+			fired = firing = true;
+			for ( ; queue.length; firingIndex = -1 ) {
+				memory = queue.shift();
+				while ( ++firingIndex < list.length ) {
+
+					// Run callback and check for early termination
+					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+						options.stopOnFalse ) {
+
+						// Jump to end and forget the data so .add doesn't re-fire
+						firingIndex = list.length;
+						memory = false;
+					}
+				}
+			}
+
+			// Forget the data if we're done with it
+			if ( !options.memory ) {
+				memory = false;
+			}
+
+			firing = false;
+
+			// Clean up if we're done firing for good
+			if ( locked ) {
+
+				// Keep an empty list if we have data for future add calls
+				if ( memory ) {
+					list = [];
+
+				// Otherwise, this object is spent
+				} else {
+					list = "";
+				}
+			}
+		},
+
+		// Actual Callbacks object
+		self = {
+
+			// Add a callback or a collection of callbacks to the list
+			add: function() {
+				if ( list ) {
+
+					// If we have memory from a past run, we should fire after adding
+					if ( memory && !firing ) {
+						firingIndex = list.length - 1;
+						queue.push( memory );
+					}
+
+					( function add( args ) {
+						jQuery.each( args, function( _, arg ) {
+							if ( jQuery.isFunction( arg ) ) {
+								if ( !options.unique || !self.has( arg ) ) {
+									list.push( arg );
+								}
+							} else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
+
+								// Inspect recursively
+								add( arg );
+							}
+						} );
+					} )( arguments );
+
+					if ( memory && !firing ) {
+						fire();
+					}
+				}
+				return this;
+			},
+
+			// Remove a callback from the list
+			remove: function() {
+				jQuery.each( arguments, function( _, arg ) {
+					var index;
+					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+						list.splice( index, 1 );
+
+						// Handle firing indexes
+						if ( index <= firingIndex ) {
+							firingIndex--;
+						}
+					}
+				} );
+				return this;
+			},
+
+			// Check if a given callback is in the list.
+			// If no argument is given, return whether or not list has callbacks attached.
+			has: function( fn ) {
+				return fn ?
+					jQuery.inArray( fn, list ) > -1 :
+					list.length > 0;
+			},
+
+			// Remove all callbacks from the list
+			empty: function() {
+				if ( list ) {
+					list = [];
+				}
+				return this;
+			},
+
+			// Disable .fire and .add
+			// Abort any current/pending executions
+			// Clear all callbacks and values
+			disable: function() {
+				locked = queue = [];
+				list = memory = "";
+				return this;
+			},
+			disabled: function() {
+				return !list;
+			},
+
+			// Disable .fire
+			// Also disable .add unless we have memory (since it would have no effect)
+			// Abort any pending executions
+			lock: function() {
+				locked = queue = [];
+				if ( !memory && !firing ) {
+					list = memory = "";
+				}
+				return this;
+			},
+			locked: function() {
+				return !!locked;
+			},
+
+			// Call all callbacks with the given context and arguments
+			fireWith: function( context, args ) {
+				if ( !locked ) {
+					args = args || [];
+					args = [ context, args.slice ? args.slice() : args ];
+					queue.push( args );
+					if ( !firing ) {
+						fire();
+					}
+				}
+				return this;
+			},
+
+			// Call all the callbacks with the given arguments
+			fire: function() {
+				self.fireWith( this, arguments );
+				return this;
+			},
+
+			// To know if the callbacks have already been called at least once
+			fired: function() {
+				return !!fired;
+			}
+		};
+
+	return self;
+};
+
+
+function Identity( v ) {
+	return v;
+}
+function Thrower( ex ) {
+	throw ex;
+}
+
+function adoptValue( value, resolve, reject, noValue ) {
+	var method;
+
+	try {
+
+		// Check for promise aspect first to privilege synchronous behavior
+		if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
+			method.call( value ).done( resolve ).fail( reject );
+
+		// Other thenables
+		} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
+			method.call( value, resolve, reject );
+
+		// Other non-thenables
+		} else {
+
+			// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
+			// * false: [ value ].slice( 0 ) => resolve( value )
+			// * true: [ value ].slice( 1 ) => resolve()
+			resolve.apply( undefined, [ value ].slice( noValue ) );
+		}
+
+	// For Promises/A+, convert exceptions into rejections
+	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+	// Deferred#then to conditionally suppress rejection.
+	} catch ( value ) {
+
+		// Support: Android 4.0 only
+		// Strict mode functions invoked without .call/.apply get global-object context
+		reject.apply( undefined, [ value ] );
+	}
+}
+
+jQuery.extend( {
+
+	Deferred: function( func ) {
+		var tuples = [
+
+				// action, add listener, callbacks,
+				// ... .then handlers, argument index, [final state]
+				[ "notify", "progress", jQuery.Callbacks( "memory" ),
+					jQuery.Callbacks( "memory" ), 2 ],
+				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
+					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
+					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+			],
+			state = "pending",
+			promise = {
+				state: function() {
+					return state;
+				},
+				always: function() {
+					deferred.done( arguments ).fail( arguments );
+					return this;
+				},
+				"catch": function( fn ) {
+					return promise.then( null, fn );
+				},
+
+				// Keep pipe for back-compat
+				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+					var fns = arguments;
+
+					return jQuery.Deferred( function( newDefer ) {
+						jQuery.each( tuples, function( i, tuple ) {
+
+							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
+							var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+							// deferred.progress(function() { bind to newDefer or newDefer.notify })
+							// deferred.done(function() { bind to newDefer or newDefer.resolve })
+							// deferred.fail(function() { bind to newDefer or newDefer.reject })
+							deferred[ tuple[ 1 ] ]( function() {
+								var returned = fn && fn.apply( this, arguments );
+								if ( returned && jQuery.isFunction( returned.promise ) ) {
+									returned.promise()
+										.progress( newDefer.notify )
+										.done( newDefer.resolve )
+										.fail( newDefer.reject );
+								} else {
+									newDefer[ tuple[ 0 ] + "With" ](
+										this,
+										fn ? [ returned ] : arguments
+									);
+								}
+							} );
+						} );
+						fns = null;
+					} ).promise();
+				},
+				then: function( onFulfilled, onRejected, onProgress ) {
+					var maxDepth = 0;
+					function resolve( depth, deferred, handler, special ) {
+						return function() {
+							var that = this,
+								args = arguments,
+								mightThrow = function() {
+									var returned, then;
+
+									// Support: Promises/A+ section 2.3.3.3.3
+									// https://promisesaplus.com/#point-59
+									// Ignore double-resolution attempts
+									if ( depth < maxDepth ) {
+										return;
+									}
+
+									returned = handler.apply( that, args );
+
+									// Support: Promises/A+ section 2.3.1
+									// https://promisesaplus.com/#point-48
+									if ( returned === deferred.promise() ) {
+										throw new TypeError( "Thenable self-resolution" );
+									}
+
+									// Support: Promises/A+ sections 2.3.3.1, 3.5
+									// https://promisesaplus.com/#point-54
+									// https://promisesaplus.com/#point-75
+									// Retrieve `then` only once
+									then = returned &&
+
+										// Support: Promises/A+ section 2.3.4
+										// https://promisesaplus.com/#point-64
+										// Only check objects and functions for thenability
+										( typeof returned === "object" ||
+											typeof returned === "function" ) &&
+										returned.then;
+
+									// Handle a returned thenable
+									if ( jQuery.isFunction( then ) ) {
+
+										// Special processors (notify) just wait for resolution
+										if ( special ) {
+											then.call(
+												returned,
+												resolve( maxDepth, deferred, Identity, special ),
+												resolve( maxDepth, deferred, Thrower, special )
+											);
+
+										// Normal processors (resolve) also hook into progress
+										} else {
+
+											// ...and disregard older resolution values
+											maxDepth++;
+
+											then.call(
+												returned,
+												resolve( maxDepth, deferred, Identity, special ),
+												resolve( maxDepth, deferred, Thrower, special ),
+												resolve( maxDepth, deferred, Identity,
+													deferred.notifyWith )
+											);
+										}
+
+									// Handle all other returned values
+									} else {
+
+										// Only substitute handlers pass on context
+										// and multiple values (non-spec behavior)
+										if ( handler !== Identity ) {
+											that = undefined;
+											args = [ returned ];
+										}
+
+										// Process the value(s)
+										// Default process is resolve
+										( special || deferred.resolveWith )( that, args );
+									}
+								},
+
+								// Only normal processors (resolve) catch and reject exceptions
+								process = special ?
+									mightThrow :
+									function() {
+										try {
+											mightThrow();
+										} catch ( e ) {
+
+											if ( jQuery.Deferred.exceptionHook ) {
+												jQuery.Deferred.exceptionHook( e,
+													process.stackTrace );
+											}
+
+											// Support: Promises/A+ section 2.3.3.3.4.1
+											// https://promisesaplus.com/#point-61
+											// Ignore post-resolution exceptions
+											if ( depth + 1 >= maxDepth ) {
+
+												// Only substitute handlers pass on context
+												// and multiple values (non-spec behavior)
+												if ( handler !== Thrower ) {
+													that = undefined;
+													args = [ e ];
+												}
+
+												deferred.rejectWith( that, args );
+											}
+										}
+									};
+
+							// Support: Promises/A+ section 2.3.3.3.1
+							// https://promisesaplus.com/#point-57
+							// Re-resolve promises immediately to dodge false rejection from
+							// subsequent errors
+							if ( depth ) {
+								process();
+							} else {
+
+								// Call an optional hook to record the stack, in case of exception
+								// since it's otherwise lost when execution goes async
+								if ( jQuery.Deferred.getStackHook ) {
+									process.stackTrace = jQuery.Deferred.getStackHook();
+								}
+								window.setTimeout( process );
+							}
+						};
+					}
+
+					return jQuery.Deferred( function( newDefer ) {
+
+						// progress_handlers.add( ... )
+						tuples[ 0 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								jQuery.isFunction( onProgress ) ?
+									onProgress :
+									Identity,
+								newDefer.notifyWith
+							)
+						);
+
+						// fulfilled_handlers.add( ... )
+						tuples[ 1 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								jQuery.isFunction( onFulfilled ) ?
+									onFulfilled :
+									Identity
+							)
+						);
+
+						// rejected_handlers.add( ... )
+						tuples[ 2 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								jQuery.isFunction( onRejected ) ?
+									onRejected :
+									Thrower
+							)
+						);
+					} ).promise();
+				},
+
+				// Get a promise for this deferred
+				// If obj is provided, the promise aspect is added to the object
+				promise: function( obj ) {
+					return obj != null ? jQuery.extend( obj, promise ) : promise;
+				}
+			},
+			deferred = {};
+
+		// Add list-specific methods
+		jQuery.each( tuples, function( i, tuple ) {
+			var list = tuple[ 2 ],
+				stateString = tuple[ 5 ];
+
+			// promise.progress = list.add
+			// promise.done = list.add
+			// promise.fail = list.add
+			promise[ tuple[ 1 ] ] = list.add;
+
+			// Handle state
+			if ( stateString ) {
+				list.add(
+					function() {
+
+						// state = "resolved" (i.e., fulfilled)
+						// state = "rejected"
+						state = stateString;
+					},
+
+					// rejected_callbacks.disable
+					// fulfilled_callbacks.disable
+					tuples[ 3 - i ][ 2 ].disable,
+
+					// progress_callbacks.lock
+					tuples[ 0 ][ 2 ].lock
+				);
+			}
+
+			// progress_handlers.fire
+			// fulfilled_handlers.fire
+			// rejected_handlers.fire
+			list.add( tuple[ 3 ].fire );
+
+			// deferred.notify = function() { deferred.notifyWith(...) }
+			// deferred.resolve = function() { deferred.resolveWith(...) }
+			// deferred.reject = function() { deferred.rejectWith(...) }
+			deferred[ tuple[ 0 ] ] = function() {
+				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+				return this;
+			};
+
+			// deferred.notifyWith = list.fireWith
+			// deferred.resolveWith = list.fireWith
+			// deferred.rejectWith = list.fireWith
+			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+		} );
+
+		// Make the deferred a promise
+		promise.promise( deferred );
+
+		// Call given func if any
+		if ( func ) {
+			func.call( deferred, deferred );
+		}
+
+		// All done!
+		return deferred;
+	},
+
+	// Deferred helper
+	when: function( singleValue ) {
+		var
+
+			// count of uncompleted subordinates
+			remaining = arguments.length,
+
+			// count of unprocessed arguments
+			i = remaining,
+
+			// subordinate fulfillment data
+			resolveContexts = Array( i ),
+			resolveValues = slice.call( arguments ),
+
+			// the master Deferred
+			master = jQuery.Deferred(),
+
+			// subordinate callback factory
+			updateFunc = function( i ) {
+				return function( value ) {
+					resolveContexts[ i ] = this;
+					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+					if ( !( --remaining ) ) {
+						master.resolveWith( resolveContexts, resolveValues );
+					}
+				};
+			};
+
+		// Single- and empty arguments are adopted like Promise.resolve
+		if ( remaining <= 1 ) {
+			adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
+				!remaining );
+
+			// Use .then() to unwrap secondary thenables (cf. gh-3000)
+			if ( master.state() === "pending" ||
+				jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+				return master.then();
+			}
+		}
+
+		// Multiple arguments are aggregated like Promise.all array elements
+		while ( i-- ) {
+			adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+		}
+
+		return master.promise();
+	}
+} );
+
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+	// Support: IE 8 - 9 only
+	// Console exists when dev tools are open, which can happen at any time
+	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+	}
+};
+
+
+
+
+jQuery.readyException = function( error ) {
+	window.setTimeout( function() {
+		throw error;
+	} );
+};
+
+
+
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+	readyList
+		.then( fn )
+
+		// Wrap jQuery.readyException in a function so that the lookup
+		// happens at the time of error handling instead of callback
+		// registration.
+		.catch( function( error ) {
+			jQuery.readyException( error );
+		} );
+
+	return this;
+};
+
+jQuery.extend( {
+
+	// Is the DOM ready to be used? Set to true once it occurs.
+	isReady: false,
+
+	// A counter to track how many items to wait for before
+	// the ready event fires. See #6781
+	readyWait: 1,
+
+	// Handle when the DOM is ready
+	ready: function( wait ) {
+
+		// Abort if there are pending holds or we're already ready
+		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+			return;
+		}
+
+		// Remember that the DOM is ready
+		jQuery.isReady = true;
+
+		// If a normal DOM Ready event fired, decrement, and wait if need be
+		if ( wait !== true && --jQuery.readyWait > 0 ) {
+			return;
+		}
+
+		// If there are functions bound, to execute
+		readyList.resolveWith( document, [ jQuery ] );
+	}
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+	document.removeEventListener( "DOMContentLoaded", completed );
+	window.removeEventListener( "load", completed );
+	jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+	// Handle it asynchronously to allow scripts the opportunity to delay ready
+	window.setTimeout( jQuery.ready );
+
+} else {
+
+	// Use the handy event callback
+	document.addEventListener( "DOMContentLoaded", completed );
+
+	// A fallback to window.onload, that will always work
+	window.addEventListener( "load", completed );
+}
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+	var i = 0,
+		len = elems.length,
+		bulk = key == null;
+
+	// Sets many values
+	if ( jQuery.type( key ) === "object" ) {
+		chainable = true;
+		for ( i in key ) {
+			access( elems, fn, i, key[ i ], true, emptyGet, raw );
+		}
+
+	// Sets one value
+	} else if ( value !== undefined ) {
+		chainable = true;
+
+		if ( !jQuery.isFunction( value ) ) {
+			raw = true;
+		}
+
+		if ( bulk ) {
+
+			// Bulk operations run against the entire set
+			if ( raw ) {
+				fn.call( elems, value );
+				fn = null;
+
+			// ...except when executing function values
+			} else {
+				bulk = fn;
+				fn = function( elem, key, value ) {
+					return bulk.call( jQuery( elem ), value );
+				};
+			}
+		}
+
+		if ( fn ) {
+			for ( ; i < len; i++ ) {
+				fn(
+					elems[ i ], key, raw ?
+					value :
+					value.call( elems[ i ], i, fn( elems[ i ], key ) )
+				);
+			}
+		}
+	}
+
+	if ( chainable ) {
+		return elems;
+	}
+
+	// Gets
+	if ( bulk ) {
+		return fn.call( elems );
+	}
+
+	return len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+var acceptData = function( owner ) {
+
+	// Accepts only:
+	//  - Node
+	//    - Node.ELEMENT_NODE
+	//    - Node.DOCUMENT_NODE
+	//  - Object
+	//    - Any
+	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+	this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+	cache: function( owner ) {
+
+		// Check if the owner object already has a cache
+		var value = owner[ this.expando ];
+
+		// If not, create one
+		if ( !value ) {
+			value = {};
+
+			// We can accept data for non-element nodes in modern browsers,
+			// but we should not, see #8335.
+			// Always return an empty object.
+			if ( acceptData( owner ) ) {
+
+				// If it is a node unlikely to be stringify-ed or looped over
+				// use plain assignment
+				if ( owner.nodeType ) {
+					owner[ this.expando ] = value;
+
+				// Otherwise secure it in a non-enumerable property
+				// configurable must be true to allow the property to be
+				// deleted when data is removed
+				} else {
+					Object.defineProperty( owner, this.expando, {
+						value: value,
+						configurable: true
+					} );
+				}
+			}
+		}
+
+		return value;
+	},
+	set: function( owner, data, value ) {
+		var prop,
+			cache = this.cache( owner );
+
+		// Handle: [ owner, key, value ] args
+		// Always use camelCase key (gh-2257)
+		if ( typeof data === "string" ) {
+			cache[ jQuery.camelCase( data ) ] = value;
+
+		// Handle: [ owner, { properties } ] args
+		} else {
+
+			// Copy the properties one-by-one to the cache object
+			for ( prop in data ) {
+				cache[ jQuery.camelCase( prop ) ] = data[ prop ];
+			}
+		}
+		return cache;
+	},
+	get: function( owner, key ) {
+		return key === undefined ?
+			this.cache( owner ) :
+
+			// Always use camelCase key (gh-2257)
+			owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
+	},
+	access: function( owner, key, value ) {
+
+		// In cases where either:
+		//
+		//   1. No key was specified
+		//   2. A string key was specified, but no value provided
+		//
+		// Take the "read" path and allow the get method to determine
+		// which value to return, respectively either:
+		//
+		//   1. The entire cache object
+		//   2. The data stored at the key
+		//
+		if ( key === undefined ||
+				( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+			return this.get( owner, key );
+		}
+
+		// When the key is not a string, or both a key and value
+		// are specified, set or extend (existing objects) with either:
+		//
+		//   1. An object of properties
+		//   2. A key and value
+		//
+		this.set( owner, key, value );
+
+		// Since the "set" path can have two possible entry points
+		// return the expected data based on which path was taken[*]
+		return value !== undefined ? value : key;
+	},
+	remove: function( owner, key ) {
+		var i,
+			cache = owner[ this.expando ];
+
+		if ( cache === undefined ) {
+			return;
+		}
+
+		if ( key !== undefined ) {
+
+			// Support array or space separated string of keys
+			if ( Array.isArray( key ) ) {
+
+				// If key is an array of keys...
+				// We always set camelCase keys, so remove that.
+				key = key.map( jQuery.camelCase );
+			} else {
+				key = jQuery.camelCase( key );
+
+				// If a key with the spaces exists, use it.
+				// Otherwise, create an array by matching non-whitespace
+				key = key in cache ?
+					[ key ] :
+					( key.match( rnothtmlwhite ) || [] );
+			}
+
+			i = key.length;
+
+			while ( i-- ) {
+				delete cache[ key[ i ] ];
+			}
+		}
+
+		// Remove the expando if there's no more data
+		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+			// Support: Chrome <=35 - 45
+			// Webkit & Blink performance suffers when deleting properties
+			// from DOM nodes, so set to undefined instead
+			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+			if ( owner.nodeType ) {
+				owner[ this.expando ] = undefined;
+			} else {
+				delete owner[ this.expando ];
+			}
+		}
+	},
+	hasData: function( owner ) {
+		var cache = owner[ this.expando ];
+		return cache !== undefined && !jQuery.isEmptyObject( cache );
+	}
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+//	Implementation Summary
+//
+//	1. Enforce API surface and semantic compatibility with 1.9.x branch
+//	2. Improve the module's maintainability by reducing the storage
+//		paths to a single mechanism.
+//	3. Use the same single mechanism to support "private" and "user" data.
+//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+//	5. Avoid exposing implementation details on user objects (eg. expando properties)
+//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+	rmultiDash = /[A-Z]/g;
+
+function getData( data ) {
+	if ( data === "true" ) {
+		return true;
+	}
+
+	if ( data === "false" ) {
+		return false;
+	}
+
+	if ( data === "null" ) {
+		return null;
+	}
+
+	// Only convert to a number if it doesn't change the string
+	if ( data === +data + "" ) {
+		return +data;
+	}
+
+	if ( rbrace.test( data ) ) {
+		return JSON.parse( data );
+	}
+
+	return data;
+}
+
+function dataAttr( elem, key, data ) {
+	var name;
+
+	// If nothing was found internally, try to fetch any
+	// data from the HTML5 data-* attribute
+	if ( data === undefined && elem.nodeType === 1 ) {
+		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+		data = elem.getAttribute( name );
+
+		if ( typeof data === "string" ) {
+			try {
+				data = getData( data );
+			} catch ( e ) {}
+
+			// Make sure we set the data so it isn't changed later
+			dataUser.set( elem, key, data );
+		} else {
+			data = undefined;
+		}
+	}
+	return data;
+}
+
+jQuery.extend( {
+	hasData: function( elem ) {
+		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+	},
+
+	data: function( elem, name, data ) {
+		return dataUser.access( elem, name, data );
+	},
+
+	removeData: function( elem, name ) {
+		dataUser.remove( elem, name );
+	},
+
+	// TODO: Now that all calls to _data and _removeData have been replaced
+	// with direct calls to dataPriv methods, these can be deprecated.
+	_data: function( elem, name, data ) {
+		return dataPriv.access( elem, name, data );
+	},
+
+	_removeData: function( elem, name ) {
+		dataPriv.remove( elem, name );
+	}
+} );
+
+jQuery.fn.extend( {
+	data: function( key, value ) {
+		var i, name, data,
+			elem = this[ 0 ],
+			attrs = elem && elem.attributes;
+
+		// Gets all values
+		if ( key === undefined ) {
+			if ( this.length ) {
+				data = dataUser.get( elem );
+
+				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+					i = attrs.length;
+					while ( i-- ) {
+
+						// Support: IE 11 only
+						// The attrs elements can be null (#14894)
+						if ( attrs[ i ] ) {
+							name = attrs[ i ].name;
+							if ( name.indexOf( "data-" ) === 0 ) {
+								name = jQuery.camelCase( name.slice( 5 ) );
+								dataAttr( elem, name, data[ name ] );
+							}
+						}
+					}
+					dataPriv.set( elem, "hasDataAttrs", true );
+				}
+			}
+
+			return data;
+		}
+
+		// Sets multiple values
+		if ( typeof key === "object" ) {
+			return this.each( function() {
+				dataUser.set( this, key );
+			} );
+		}
+
+		return access( this, function( value ) {
+			var data;
+
+			// The calling jQuery object (element matches) is not empty
+			// (and therefore has an element appears at this[ 0 ]) and the
+			// `value` parameter was not undefined. An empty jQuery object
+			// will result in `undefined` for elem = this[ 0 ] which will
+			// throw an exception if an attempt to read a data cache is made.
+			if ( elem && value === undefined ) {
+
+				// Attempt to get data from the cache
+				// The key will always be camelCased in Data
+				data = dataUser.get( elem, key );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// Attempt to "discover" the data in
+				// HTML5 custom data-* attrs
+				data = dataAttr( elem, key );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// We tried really hard, but the data doesn't exist.
+				return;
+			}
+
+			// Set the data...
+			this.each( function() {
+
+				// We always store the camelCased key
+				dataUser.set( this, key, value );
+			} );
+		}, null, value, arguments.length > 1, null, true );
+	},
+
+	removeData: function( key ) {
+		return this.each( function() {
+			dataUser.remove( this, key );
+		} );
+	}
+} );
+
+
+jQuery.extend( {
+	queue: function( elem, type, data ) {
+		var queue;
+
+		if ( elem ) {
+			type = ( type || "fx" ) + "queue";
+			queue = dataPriv.get( elem, type );
+
+			// Speed up dequeue by getting out quickly if this is just a lookup
+			if ( data ) {
+				if ( !queue || Array.isArray( data ) ) {
+					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+				} else {
+					queue.push( data );
+				}
+			}
+			return queue || [];
+		}
+	},
+
+	dequeue: function( elem, type ) {
+		type = type || "fx";
+
+		var queue = jQuery.queue( elem, type ),
+			startLength = queue.length,
+			fn = queue.shift(),
+			hooks = jQuery._queueHooks( elem, type ),
+			next = function() {
+				jQuery.dequeue( elem, type );
+			};
+
+		// If the fx queue is dequeued, always remove the progress sentinel
+		if ( fn === "inprogress" ) {
+			fn = queue.shift();
+			startLength--;
+		}
+
+		if ( fn ) {
+
+			// Add a progress sentinel to prevent the fx queue from being
+			// automatically dequeued
+			if ( type === "fx" ) {
+				queue.unshift( "inprogress" );
+			}
+
+			// Clear up the last queue stop function
+			delete hooks.stop;
+			fn.call( elem, next, hooks );
+		}
+
+		if ( !startLength && hooks ) {
+			hooks.empty.fire();
+		}
+	},
+
+	// Not public - generate a queueHooks object, or return the current one
+	_queueHooks: function( elem, type ) {
+		var key = type + "queueHooks";
+		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+			empty: jQuery.Callbacks( "once memory" ).add( function() {
+				dataPriv.remove( elem, [ type + "queue", key ] );
+			} )
+		} );
+	}
+} );
+
+jQuery.fn.extend( {
+	queue: function( type, data ) {
+		var setter = 2;
+
+		if ( typeof type !== "string" ) {
+			data = type;
+			type = "fx";
+			setter--;
+		}
+
+		if ( arguments.length < setter ) {
+			return jQuery.queue( this[ 0 ], type );
+		}
+
+		return data === undefined ?
+			this :
+			this.each( function() {
+				var queue = jQuery.queue( this, type, data );
+
+				// Ensure a hooks for this queue
+				jQuery._queueHooks( this, type );
+
+				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+					jQuery.dequeue( this, type );
+				}
+			} );
+	},
+	dequeue: function( type ) {
+		return this.each( function() {
+			jQuery.dequeue( this, type );
+		} );
+	},
+	clearQueue: function( type ) {
+		return this.queue( type || "fx", [] );
+	},
+
+	// Get a promise resolved when queues of a certain type
+	// are emptied (fx is the type by default)
+	promise: function( type, obj ) {
+		var tmp,
+			count = 1,
+			defer = jQuery.Deferred(),
+			elements = this,
+			i = this.length,
+			resolve = function() {
+				if ( !( --count ) ) {
+					defer.resolveWith( elements, [ elements ] );
+				}
+			};
+
+		if ( typeof type !== "string" ) {
+			obj = type;
+			type = undefined;
+		}
+		type = type || "fx";
+
+		while ( i-- ) {
+			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+			if ( tmp && tmp.empty ) {
+				count++;
+				tmp.empty.add( resolve );
+			}
+		}
+		resolve();
+		return defer.promise( obj );
+	}
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHiddenWithinTree = function( elem, el ) {
+
+		// isHiddenWithinTree might be called from jQuery#filter function;
+		// in that case, element will be second argument
+		elem = el || elem;
+
+		// Inline style trumps all
+		return elem.style.display === "none" ||
+			elem.style.display === "" &&
+
+			// Otherwise, check computed style
+			// Support: Firefox <=43 - 45
+			// Disconnected elements can have computed display: none, so first confirm that elem is
+			// in the document.
+			jQuery.contains( elem.ownerDocument, elem ) &&
+
+			jQuery.css( elem, "display" ) === "none";
+	};
+
+var swap = function( elem, options, callback, args ) {
+	var ret, name,
+		old = {};
+
+	// Remember the old values, and insert the new ones
+	for ( name in options ) {
+		old[ name ] = elem.style[ name ];
+		elem.style[ name ] = options[ name ];
+	}
+
+	ret = callback.apply( elem, args || [] );
+
+	// Revert the old values
+	for ( name in options ) {
+		elem.style[ name ] = old[ name ];
+	}
+
+	return ret;
+};
+
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+	var adjusted,
+		scale = 1,
+		maxIterations = 20,
+		currentValue = tween ?
+			function() {
+				return tween.cur();
+			} :
+			function() {
+				return jQuery.css( elem, prop, "" );
+			},
+		initial = currentValue(),
+		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+		// Starting value computation is required for potential unit mismatches
+		initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+			rcssNum.exec( jQuery.css( elem, prop ) );
+
+	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+		// Trust units reported by jQuery.css
+		unit = unit || initialInUnit[ 3 ];
+
+		// Make sure we update the tween properties later on
+		valueParts = valueParts || [];
+
+		// Iteratively approximate from a nonzero starting point
+		initialInUnit = +initial || 1;
+
+		do {
+
+			// If previous iteration zeroed out, double until we get *something*.
+			// Use string for doubling so we don't accidentally see scale as unchanged below
+			scale = scale || ".5";
+
+			// Adjust and apply
+			initialInUnit = initialInUnit / scale;
+			jQuery.style( elem, prop, initialInUnit + unit );
+
+		// Update scale, tolerating zero or NaN from tween.cur()
+		// Break the loop if scale is unchanged or perfect, or if we've just had enough.
+		} while (
+			scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
+		);
+	}
+
+	if ( valueParts ) {
+		initialInUnit = +initialInUnit || +initial || 0;
+
+		// Apply relative offset (+=/-=) if specified
+		adjusted = valueParts[ 1 ] ?
+			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+			+valueParts[ 2 ];
+		if ( tween ) {
+			tween.unit = unit;
+			tween.start = initialInUnit;
+			tween.end = adjusted;
+		}
+	}
+	return adjusted;
+}
+
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+	var temp,
+		doc = elem.ownerDocument,
+		nodeName = elem.nodeName,
+		display = defaultDisplayMap[ nodeName ];
+
+	if ( display ) {
+		return display;
+	}
+
+	temp = doc.body.appendChild( doc.createElement( nodeName ) );
+	display = jQuery.css( temp, "display" );
+
+	temp.parentNode.removeChild( temp );
+
+	if ( display === "none" ) {
+		display = "block";
+	}
+	defaultDisplayMap[ nodeName ] = display;
+
+	return display;
+}
+
+function showHide( elements, show ) {
+	var display, elem,
+		values = [],
+		index = 0,
+		length = elements.length;
+
+	// Determine new display value for elements that need to change
+	for ( ; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+
+		display = elem.style.display;
+		if ( show ) {
+
+			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+			// check is required in this first loop unless we have a nonempty display value (either
+			// inline or about-to-be-restored)
+			if ( display === "none" ) {
+				values[ index ] = dataPriv.get( elem, "display" ) || null;
+				if ( !values[ index ] ) {
+					elem.style.display = "";
+				}
+			}
+			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+				values[ index ] = getDefaultDisplay( elem );
+			}
+		} else {
+			if ( display !== "none" ) {
+				values[ index ] = "none";
+
+				// Remember what we're overwriting
+				dataPriv.set( elem, "display", display );
+			}
+		}
+	}
+
+	// Set the display of the elements in a second loop to avoid constant reflow
+	for ( index = 0; index < length; index++ ) {
+		if ( values[ index ] != null ) {
+			elements[ index ].style.display = values[ index ];
+		}
+	}
+
+	return elements;
+}
+
+jQuery.fn.extend( {
+	show: function() {
+		return showHide( this, true );
+	},
+	hide: function() {
+		return showHide( this );
+	},
+	toggle: function( state ) {
+		if ( typeof state === "boolean" ) {
+			return state ? this.show() : this.hide();
+		}
+
+		return this.each( function() {
+			if ( isHiddenWithinTree( this ) ) {
+				jQuery( this ).show();
+			} else {
+				jQuery( this ).hide();
+			}
+		} );
+	}
+} );
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
+
+var rscriptType = ( /^$|\/(?:java|ecma)script/i );
+
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+	// Support: IE <=9 only
+	option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+	// XHTML parsers do not magically insert elements in the
+	// same way that tag soup parsers do. So we cannot shorten
+	// this by omitting <tbody> or other required elements.
+	thead: [ 1, "<table>", "</table>" ],
+	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+	_default: [ 0, "", "" ]
+};
+
+// Support: IE <=9 only
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function getAll( context, tag ) {
+
+	// Support: IE <=9 - 11 only
+	// Use typeof to avoid zero-argument method invocation on host objects (#15151)
+	var ret;
+
+	if ( typeof context.getElementsByTagName !== "undefined" ) {
+		ret = context.getElementsByTagName( tag || "*" );
+
+	} else if ( typeof context.querySelectorAll !== "undefined" ) {
+		ret = context.querySelectorAll( tag || "*" );
+
+	} else {
+		ret = [];
+	}
+
+	if ( tag === undefined || tag && nodeName( context, tag ) ) {
+		return jQuery.merge( [ context ], ret );
+	}
+
+	return ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+	var i = 0,
+		l = elems.length;
+
+	for ( ; i < l; i++ ) {
+		dataPriv.set(
+			elems[ i ],
+			"globalEval",
+			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
+		);
+	}
+}
+
+
+var rhtml = /<|&#?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+	var elem, tmp, tag, wrap, contains, j,
+		fragment = context.createDocumentFragment(),
+		nodes = [],
+		i = 0,
+		l = elems.length;
+
+	for ( ; i < l; i++ ) {
+		elem = elems[ i ];
+
+		if ( elem || elem === 0 ) {
+
+			// Add nodes directly
+			if ( jQuery.type( elem ) === "object" ) {
+
+				// Support: Android <=4.0 only, PhantomJS 1 only
+				// push.apply(_, arraylike) throws on ancient WebKit
+				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+			// Convert non-html into a text node
+			} else if ( !rhtml.test( elem ) ) {
+				nodes.push( context.createTextNode( elem ) );
+
+			// Convert html into DOM nodes
+			} else {
+				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+				// Deserialize a standard representation
+				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+				wrap = wrapMap[ tag ] || wrapMap._default;
+				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+				// Descend through wrappers to the right content
+				j = wrap[ 0 ];
+				while ( j-- ) {
+					tmp = tmp.lastChild;
+				}
+
+				// Support: Android <=4.0 only, PhantomJS 1 only
+				// push.apply(_, arraylike) throws on ancient WebKit
+				jQuery.merge( nodes, tmp.childNodes );
+
+				// Remember the top-level container
+				tmp = fragment.firstChild;
+
+				// Ensure the created nodes are orphaned (#12392)
+				tmp.textContent = "";
+			}
+		}
+	}
+
+	// Remove wrapper from fragment
+	fragment.textContent = "";
+
+	i = 0;
+	while ( ( elem = nodes[ i++ ] ) ) {
+
+		// Skip elements already in the context collection (trac-4087)
+		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+			if ( ignored ) {
+				ignored.push( elem );
+			}
+			continue;
+		}
+
+		contains = jQuery.contains( elem.ownerDocument, elem );
+
+		// Append to fragment
+		tmp = getAll( fragment.appendChild( elem ), "script" );
+
+		// Preserve script evaluation history
+		if ( contains ) {
+			setGlobalEval( tmp );
+		}
+
+		// Capture executables
+		if ( scripts ) {
+			j = 0;
+			while ( ( elem = tmp[ j++ ] ) ) {
+				if ( rscriptType.test( elem.type || "" ) ) {
+					scripts.push( elem );
+				}
+			}
+		}
+	}
+
+	return fragment;
+}
+
+
+( function() {
+	var fragment = document.createDocumentFragment(),
+		div = fragment.appendChild( document.createElement( "div" ) ),
+		input = document.createElement( "input" );
+
+	// Support: Android 4.0 - 4.3 only
+	// Check state lost if the name is set (#11217)
+	// Support: Windows Web Apps (WWA)
+	// `name` and `type` must use .setAttribute for WWA (#14901)
+	input.setAttribute( "type", "radio" );
+	input.setAttribute( "checked", "checked" );
+	input.setAttribute( "name", "t" );
+
+	div.appendChild( input );
+
+	// Support: Android <=4.1 only
+	// Older WebKit doesn't clone checked state correctly in fragments
+	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+	// Support: IE <=11 only
+	// Make sure textarea (and checkbox) defaultValue is properly cloned
+	div.innerHTML = "<textarea>x</textarea>";
+	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+var documentElement = document.documentElement;
+
+
+
+var
+	rkeyEvent = /^key/,
+	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+	rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+	return true;
+}
+
+function returnFalse() {
+	return false;
+}
+
+// Support: IE <=9 only
+// See #13393 for more info
+function safeActiveElement() {
+	try {
+		return document.activeElement;
+	} catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+	var origFn, type;
+
+	// Types can be a map of types/handlers
+	if ( typeof types === "object" ) {
+
+		// ( types-Object, selector, data )
+		if ( typeof selector !== "string" ) {
+
+			// ( types-Object, data )
+			data = data || selector;
+			selector = undefined;
+		}
+		for ( type in types ) {
+			on( elem, type, selector, data, types[ type ], one );
+		}
+		return elem;
+	}
+
+	if ( data == null && fn == null ) {
+
+		// ( types, fn )
+		fn = selector;
+		data = selector = undefined;
+	} else if ( fn == null ) {
+		if ( typeof selector === "string" ) {
+
+			// ( types, selector, fn )
+			fn = data;
+			data = undefined;
+		} else {
+
+			// ( types, data, fn )
+			fn = data;
+			data = selector;
+			selector = undefined;
+		}
+	}
+	if ( fn === false ) {
+		fn = returnFalse;
+	} else if ( !fn ) {
+		return elem;
+	}
+
+	if ( one === 1 ) {
+		origFn = fn;
+		fn = function( event ) {
+
+			// Can use an empty set, since event contains the info
+			jQuery().off( event );
+			return origFn.apply( this, arguments );
+		};
+
+		// Use same guid so caller can remove using origFn
+		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+	}
+	return elem.each( function() {
+		jQuery.event.add( this, types, fn, data, selector );
+	} );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+	global: {},
+
+	add: function( elem, types, handler, data, selector ) {
+
+		var handleObjIn, eventHandle, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = dataPriv.get( elem );
+
+		// Don't attach events to noData or text/comment nodes (but allow plain objects)
+		if ( !elemData ) {
+			return;
+		}
+
+		// Caller can pass in an object of custom data in lieu of the handler
+		if ( handler.handler ) {
+			handleObjIn = handler;
+			handler = handleObjIn.handler;
+			selector = handleObjIn.selector;
+		}
+
+		// Ensure that invalid selectors throw exceptions at attach time
+		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
+		if ( selector ) {
+			jQuery.find.matchesSelector( documentElement, selector );
+		}
+
+		// Make sure that the handler has a unique ID, used to find/remove it later
+		if ( !handler.guid ) {
+			handler.guid = jQuery.guid++;
+		}
+
+		// Init the element's event structure and main handler, if this is the first
+		if ( !( events = elemData.events ) ) {
+			events = elemData.events = {};
+		}
+		if ( !( eventHandle = elemData.handle ) ) {
+			eventHandle = elemData.handle = function( e ) {
+
+				// Discard the second event of a jQuery.event.trigger() and
+				// when an event is called after a page has unloaded
+				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+			};
+		}
+
+		// Handle multiple events separated by a space
+		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[ t ] ) || [];
+			type = origType = tmp[ 1 ];
+			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+			// There *must* be a type, no attaching namespace-only handlers
+			if ( !type ) {
+				continue;
+			}
+
+			// If event changes its type, use the special event handlers for the changed type
+			special = jQuery.event.special[ type ] || {};
+
+			// If selector defined, determine special event api type, otherwise given type
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+
+			// Update special based on newly reset type
+			special = jQuery.event.special[ type ] || {};
+
+			// handleObj is passed to all event handlers
+			handleObj = jQuery.extend( {
+				type: type,
+				origType: origType,
+				data: data,
+				handler: handler,
+				guid: handler.guid,
+				selector: selector,
+				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+				namespace: namespaces.join( "." )
+			}, handleObjIn );
+
+			// Init the event handler queue if we're the first
+			if ( !( handlers = events[ type ] ) ) {
+				handlers = events[ type ] = [];
+				handlers.delegateCount = 0;
+
+				// Only use addEventListener if the special events handler returns false
+				if ( !special.setup ||
+					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+					if ( elem.addEventListener ) {
+						elem.addEventListener( type, eventHandle );
+					}
+				}
+			}
+
+			if ( special.add ) {
+				special.add.call( elem, handleObj );
+
+				if ( !handleObj.handler.guid ) {
+					handleObj.handler.guid = handler.guid;
+				}
+			}
+
+			// Add to the element's handler list, delegates in front
+			if ( selector ) {
+				handlers.splice( handlers.delegateCount++, 0, handleObj );
+			} else {
+				handlers.push( handleObj );
+			}
+
+			// Keep track of which events have ever been used, for event optimization
+			jQuery.event.global[ type ] = true;
+		}
+
+	},
+
+	// Detach an event or set of events from an element
+	remove: function( elem, types, handler, selector, mappedTypes ) {
+
+		var j, origCount, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+		if ( !elemData || !( events = elemData.events ) ) {
+			return;
+		}
+
+		// Once for each type.namespace in types; type may be omitted
+		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[ t ] ) || [];
+			type = origType = tmp[ 1 ];
+			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+			// Unbind all events (on this namespace, if provided) for the element
+			if ( !type ) {
+				for ( type in events ) {
+					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+				}
+				continue;
+			}
+
+			special = jQuery.event.special[ type ] || {};
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+			handlers = events[ type ] || [];
+			tmp = tmp[ 2 ] &&
+				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+			// Remove matching events
+			origCount = j = handlers.length;
+			while ( j-- ) {
+				handleObj = handlers[ j ];
+
+				if ( ( mappedTypes || origType === handleObj.origType ) &&
+					( !handler || handler.guid === handleObj.guid ) &&
+					( !tmp || tmp.test( handleObj.namespace ) ) &&
+					( !selector || selector === handleObj.selector ||
+						selector === "**" && handleObj.selector ) ) {
+					handlers.splice( j, 1 );
+
+					if ( handleObj.selector ) {
+						handlers.delegateCount--;
+					}
+					if ( special.remove ) {
+						special.remove.call( elem, handleObj );
+					}
+				}
+			}
+
+			// Remove generic event handler if we removed something and no more handlers exist
+			// (avoids potential for endless recursion during removal of special event handlers)
+			if ( origCount && !handlers.length ) {
+				if ( !special.teardown ||
+					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+					jQuery.removeEvent( elem, type, elemData.handle );
+				}
+
+				delete events[ type ];
+			}
+		}
+
+		// Remove data and the expando if it's no longer used
+		if ( jQuery.isEmptyObject( events ) ) {
+			dataPriv.remove( elem, "handle events" );
+		}
+	},
+
+	dispatch: function( nativeEvent ) {
+
+		// Make a writable jQuery.Event from the native event object
+		var event = jQuery.event.fix( nativeEvent );
+
+		var i, j, ret, matched, handleObj, handlerQueue,
+			args = new Array( arguments.length ),
+			handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+			special = jQuery.event.special[ event.type ] || {};
+
+		// Use the fix-ed jQuery.Event rather than the (read-only) native event
+		args[ 0 ] = event;
+
+		for ( i = 1; i < arguments.length; i++ ) {
+			args[ i ] = arguments[ i ];
+		}
+
+		event.delegateTarget = this;
+
+		// Call the preDispatch hook for the mapped type, and let it bail if desired
+		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+			return;
+		}
+
+		// Determine handlers
+		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+		// Run delegates first; they may want to stop propagation beneath us
+		i = 0;
+		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+			event.currentTarget = matched.elem;
+
+			j = 0;
+			while ( ( handleObj = matched.handlers[ j++ ] ) &&
+				!event.isImmediatePropagationStopped() ) {
+
+				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
+				// a subset or equal to those in the bound event (both can have no namespace).
+				if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+					event.handleObj = handleObj;
+					event.data = handleObj.data;
+
+					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+						handleObj.handler ).apply( matched.elem, args );
+
+					if ( ret !== undefined ) {
+						if ( ( event.result = ret ) === false ) {
+							event.preventDefault();
+							event.stopPropagation();
+						}
+					}
+				}
+			}
+		}
+
+		// Call the postDispatch hook for the mapped type
+		if ( special.postDispatch ) {
+			special.postDispatch.call( this, event );
+		}
+
+		return event.result;
+	},
+
+	handlers: function( event, handlers ) {
+		var i, handleObj, sel, matchedHandlers, matchedSelectors,
+			handlerQueue = [],
+			delegateCount = handlers.delegateCount,
+			cur = event.target;
+
+		// Find delegate handlers
+		if ( delegateCount &&
+
+			// Support: IE <=9
+			// Black-hole SVG <use> instance trees (trac-13180)
+			cur.nodeType &&
+
+			// Support: Firefox <=42
+			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
+			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
+			// Support: IE 11 only
+			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
+			!( event.type === "click" && event.button >= 1 ) ) {
+
+			for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+				// Don't check non-elements (#13208)
+				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
+					matchedHandlers = [];
+					matchedSelectors = {};
+					for ( i = 0; i < delegateCount; i++ ) {
+						handleObj = handlers[ i ];
+
+						// Don't conflict with Object.prototype properties (#13203)
+						sel = handleObj.selector + " ";
+
+						if ( matchedSelectors[ sel ] === undefined ) {
+							matchedSelectors[ sel ] = handleObj.needsContext ?
+								jQuery( sel, this ).index( cur ) > -1 :
+								jQuery.find( sel, this, null, [ cur ] ).length;
+						}
+						if ( matchedSelectors[ sel ] ) {
+							matchedHandlers.push( handleObj );
+						}
+					}
+					if ( matchedHandlers.length ) {
+						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
+					}
+				}
+			}
+		}
+
+		// Add the remaining (directly-bound) handlers
+		cur = this;
+		if ( delegateCount < handlers.length ) {
+			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
+		}
+
+		return handlerQueue;
+	},
+
+	addProp: function( name, hook ) {
+		Object.defineProperty( jQuery.Event.prototype, name, {
+			enumerable: true,
+			configurable: true,
+
+			get: jQuery.isFunction( hook ) ?
+				function() {
+					if ( this.originalEvent ) {
+							return hook( this.originalEvent );
+					}
+				} :
+				function() {
+					if ( this.originalEvent ) {
+							return this.originalEvent[ name ];
+					}
+				},
+
+			set: function( value ) {
+				Object.defineProperty( this, name, {
+					enumerable: true,
+					configurable: true,
+					writable: true,
+					value: value
+				} );
+			}
+		} );
+	},
+
+	fix: function( originalEvent ) {
+		return originalEvent[ jQuery.expando ] ?
+			originalEvent :
+			new jQuery.Event( originalEvent );
+	},
+
+	special: {
+		load: {
+
+			// Prevent triggered image.load events from bubbling to window.load
+			noBubble: true
+		},
+		focus: {
+
+			// Fire native event if possible so blur/focus sequence is correct
+			trigger: function() {
+				if ( this !== safeActiveElement() && this.focus ) {
+					this.focus();
+					return false;
+				}
+			},
+			delegateType: "focusin"
+		},
+		blur: {
+			trigger: function() {
+				if ( this === safeActiveElement() && this.blur ) {
+					this.blur();
+					return false;
+				}
+			},
+			delegateType: "focusout"
+		},
+		click: {
+
+			// For checkbox, fire native event so checked state will be right
+			trigger: function() {
+				if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {
+					this.click();
+					return false;
+				}
+			},
+
+			// For cross-browser consistency, don't fire native .click() on links
+			_default: function( event ) {
+				return nodeName( event.target, "a" );
+			}
+		},
+
+		beforeunload: {
+			postDispatch: function( event ) {
+
+				// Support: Firefox 20+
+				// Firefox doesn't alert if the returnValue field is not set.
+				if ( event.result !== undefined && event.originalEvent ) {
+					event.originalEvent.returnValue = event.result;
+				}
+			}
+		}
+	}
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+	// This "if" is needed for plain objects
+	if ( elem.removeEventListener ) {
+		elem.removeEventListener( type, handle );
+	}
+};
+
+jQuery.Event = function( src, props ) {
+
+	// Allow instantiation without the 'new' keyword
+	if ( !( this instanceof jQuery.Event ) ) {
+		return new jQuery.Event( src, props );
+	}
+
+	// Event object
+	if ( src && src.type ) {
+		this.originalEvent = src;
+		this.type = src.type;
+
+		// Events bubbling up the document may have been marked as prevented
+		// by a handler lower down the tree; reflect the correct value.
+		this.isDefaultPrevented = src.defaultPrevented ||
+				src.defaultPrevented === undefined &&
+
+				// Support: Android <=2.3 only
+				src.returnValue === false ?
+			returnTrue :
+			returnFalse;
+
+		// Create target properties
+		// Support: Safari <=6 - 7 only
+		// Target should not be a text node (#504, #13143)
+		this.target = ( src.target && src.target.nodeType === 3 ) ?
+			src.target.parentNode :
+			src.target;
+
+		this.currentTarget = src.currentTarget;
+		this.relatedTarget = src.relatedTarget;
+
+	// Event type
+	} else {
+		this.type = src;
+	}
+
+	// Put explicitly provided properties onto the event object
+	if ( props ) {
+		jQuery.extend( this, props );
+	}
+
+	// Create a timestamp if incoming event doesn't have one
+	this.timeStamp = src && src.timeStamp || jQuery.now();
+
+	// Mark it as fixed
+	this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+	constructor: jQuery.Event,
+	isDefaultPrevented: returnFalse,
+	isPropagationStopped: returnFalse,
+	isImmediatePropagationStopped: returnFalse,
+	isSimulated: false,
+
+	preventDefault: function() {
+		var e = this.originalEvent;
+
+		this.isDefaultPrevented = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.preventDefault();
+		}
+	},
+	stopPropagation: function() {
+		var e = this.originalEvent;
+
+		this.isPropagationStopped = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.stopPropagation();
+		}
+	},
+	stopImmediatePropagation: function() {
+		var e = this.originalEvent;
+
+		this.isImmediatePropagationStopped = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.stopImmediatePropagation();
+		}
+
+		this.stopPropagation();
+	}
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+	altKey: true,
+	bubbles: true,
+	cancelable: true,
+	changedTouches: true,
+	ctrlKey: true,
+	detail: true,
+	eventPhase: true,
+	metaKey: true,
+	pageX: true,
+	pageY: true,
+	shiftKey: true,
+	view: true,
+	"char": true,
+	charCode: true,
+	key: true,
+	keyCode: true,
+	button: true,
+	buttons: true,
+	clientX: true,
+	clientY: true,
+	offsetX: true,
+	offsetY: true,
+	pointerId: true,
+	pointerType: true,
+	screenX: true,
+	screenY: true,
+	targetTouches: true,
+	toElement: true,
+	touches: true,
+
+	which: function( event ) {
+		var button = event.button;
+
+		// Add which for key events
+		if ( event.which == null && rkeyEvent.test( event.type ) ) {
+			return event.charCode != null ? event.charCode : event.keyCode;
+		}
+
+		// Add which for click: 1 === left; 2 === middle; 3 === right
+		if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+			if ( button & 1 ) {
+				return 1;
+			}
+
+			if ( button & 2 ) {
+				return 3;
+			}
+
+			if ( button & 4 ) {
+				return 2;
+			}
+
+			return 0;
+		}
+
+		return event.which;
+	}
+}, jQuery.event.addProp );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+	mouseenter: "mouseover",
+	mouseleave: "mouseout",
+	pointerenter: "pointerover",
+	pointerleave: "pointerout"
+}, function( orig, fix ) {
+	jQuery.event.special[ orig ] = {
+		delegateType: fix,
+		bindType: fix,
+
+		handle: function( event ) {
+			var ret,
+				target = this,
+				related = event.relatedTarget,
+				handleObj = event.handleObj;
+
+			// For mouseenter/leave call the handler if related is outside the target.
+			// NB: No relatedTarget if the mouse left/entered the browser window
+			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+				event.type = handleObj.origType;
+				ret = handleObj.handler.apply( this, arguments );
+				event.type = fix;
+			}
+			return ret;
+		}
+	};
+} );
+
+jQuery.fn.extend( {
+
+	on: function( types, selector, data, fn ) {
+		return on( this, types, selector, data, fn );
+	},
+	one: function( types, selector, data, fn ) {
+		return on( this, types, selector, data, fn, 1 );
+	},
+	off: function( types, selector, fn ) {
+		var handleObj, type;
+		if ( types && types.preventDefault && types.handleObj ) {
+
+			// ( event )  dispatched jQuery.Event
+			handleObj = types.handleObj;
+			jQuery( types.delegateTarget ).off(
+				handleObj.namespace ?
+					handleObj.origType + "." + handleObj.namespace :
+					handleObj.origType,
+				handleObj.selector,
+				handleObj.handler
+			);
+			return this;
+		}
+		if ( typeof types === "object" ) {
+
+			// ( types-object [, selector] )
+			for ( type in types ) {
+				this.off( type, selector, types[ type ] );
+			}
+			return this;
+		}
+		if ( selector === false || typeof selector === "function" ) {
+
+			// ( types [, fn] )
+			fn = selector;
+			selector = undefined;
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		}
+		return this.each( function() {
+			jQuery.event.remove( this, types, fn, selector );
+		} );
+	}
+} );
+
+
+var
+
+	/* eslint-disable max-len */
+
+	// See https://github.com/eslint/eslint/issues/3229
+	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
+
+	/* eslint-enable */
+
+	// Support: IE <=10 - 11, Edge 12 - 13
+	// In IE/Edge using regex groups here causes severe slowdowns.
+	// See https://connect.microsoft.com/IE/feedback/details/1736512/
+	rnoInnerhtml = /<script|<style|<link/i,
+
+	// checked="checked" or checked
+	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+	rscriptTypeMasked = /^true\/(.*)/,
+	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
+
+// Prefer a tbody over its parent table for containing new rows
+function manipulationTarget( elem, content ) {
+	if ( nodeName( elem, "table" ) &&
+		nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
+
+		return jQuery( ">tbody", elem )[ 0 ] || elem;
+	}
+
+	return elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
+	return elem;
+}
+function restoreScript( elem ) {
+	var match = rscriptTypeMasked.exec( elem.type );
+
+	if ( match ) {
+		elem.type = match[ 1 ];
+	} else {
+		elem.removeAttribute( "type" );
+	}
+
+	return elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+	if ( dest.nodeType !== 1 ) {
+		return;
+	}
+
+	// 1. Copy private data: events, handlers, etc.
+	if ( dataPriv.hasData( src ) ) {
+		pdataOld = dataPriv.access( src );
+		pdataCur = dataPriv.set( dest, pdataOld );
+		events = pdataOld.events;
+
+		if ( events ) {
+			delete pdataCur.handle;
+			pdataCur.events = {};
+
+			for ( type in events ) {
+				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+					jQuery.event.add( dest, type, events[ type ][ i ] );
+				}
+			}
+		}
+	}
+
+	// 2. Copy user data
+	if ( dataUser.hasData( src ) ) {
+		udataOld = dataUser.access( src );
+		udataCur = jQuery.extend( {}, udataOld );
+
+		dataUser.set( dest, udataCur );
+	}
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+	var nodeName = dest.nodeName.toLowerCase();
+
+	// Fails to persist the checked state of a cloned checkbox or radio button.
+	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+		dest.checked = src.checked;
+
+	// Fails to return the selected option to the default selected state when cloning options
+	} else if ( nodeName === "input" || nodeName === "textarea" ) {
+		dest.defaultValue = src.defaultValue;
+	}
+}
+
+function domManip( collection, args, callback, ignored ) {
+
+	// Flatten any nested arrays
+	args = concat.apply( [], args );
+
+	var fragment, first, scripts, hasScripts, node, doc,
+		i = 0,
+		l = collection.length,
+		iNoClone = l - 1,
+		value = args[ 0 ],
+		isFunction = jQuery.isFunction( value );
+
+	// We can't cloneNode fragments that contain checked, in WebKit
+	if ( isFunction ||
+			( l > 1 && typeof value === "string" &&
+				!support.checkClone && rchecked.test( value ) ) ) {
+		return collection.each( function( index ) {
+			var self = collection.eq( index );
+			if ( isFunction ) {
+				args[ 0 ] = value.call( this, index, self.html() );
+			}
+			domManip( self, args, callback, ignored );
+		} );
+	}
+
+	if ( l ) {
+		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
+		first = fragment.firstChild;
+
+		if ( fragment.childNodes.length === 1 ) {
+			fragment = first;
+		}
+
+		// Require either new content or an interest in ignored elements to invoke the callback
+		if ( first || ignored ) {
+			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+			hasScripts = scripts.length;
+
+			// Use the original fragment for the last item
+			// instead of the first because it can end up
+			// being emptied incorrectly in certain situations (#8070).
+			for ( ; i < l; i++ ) {
+				node = fragment;
+
+				if ( i !== iNoClone ) {
+					node = jQuery.clone( node, true, true );
+
+					// Keep references to cloned scripts for later restoration
+					if ( hasScripts ) {
+
+						// Support: Android <=4.0 only, PhantomJS 1 only
+						// push.apply(_, arraylike) throws on ancient WebKit
+						jQuery.merge( scripts, getAll( node, "script" ) );
+					}
+				}
+
+				callback.call( collection[ i ], node, i );
+			}
+
+			if ( hasScripts ) {
+				doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+				// Reenable scripts
+				jQuery.map( scripts, restoreScript );
+
+				// Evaluate executable scripts on first document insertion
+				for ( i = 0; i < hasScripts; i++ ) {
+					node = scripts[ i ];
+					if ( rscriptType.test( node.type || "" ) &&
+						!dataPriv.access( node, "globalEval" ) &&
+						jQuery.contains( doc, node ) ) {
+
+						if ( node.src ) {
+
+							// Optional AJAX dependency, but won't run scripts if not present
+							if ( jQuery._evalUrl ) {
+								jQuery._evalUrl( node.src );
+							}
+						} else {
+							DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return collection;
+}
+
+function remove( elem, selector, keepData ) {
+	var node,
+		nodes = selector ? jQuery.filter( selector, elem ) : elem,
+		i = 0;
+
+	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
+		if ( !keepData && node.nodeType === 1 ) {
+			jQuery.cleanData( getAll( node ) );
+		}
+
+		if ( node.parentNode ) {
+			if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
+				setGlobalEval( getAll( node, "script" ) );
+			}
+			node.parentNode.removeChild( node );
+		}
+	}
+
+	return elem;
+}
+
+jQuery.extend( {
+	htmlPrefilter: function( html ) {
+		return html.replace( rxhtmlTag, "<$1></$2>" );
+	},
+
+	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+		var i, l, srcElements, destElements,
+			clone = elem.cloneNode( true ),
+			inPage = jQuery.contains( elem.ownerDocument, elem );
+
+		// Fix IE cloning issues
+		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+				!jQuery.isXMLDoc( elem ) ) {
+
+			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
+			destElements = getAll( clone );
+			srcElements = getAll( elem );
+
+			for ( i = 0, l = srcElements.length; i < l; i++ ) {
+				fixInput( srcElements[ i ], destElements[ i ] );
+			}
+		}
+
+		// Copy the events from the original to the clone
+		if ( dataAndEvents ) {
+			if ( deepDataAndEvents ) {
+				srcElements = srcElements || getAll( elem );
+				destElements = destElements || getAll( clone );
+
+				for ( i = 0, l = srcElements.length; i < l; i++ ) {
+					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+				}
+			} else {
+				cloneCopyEvent( elem, clone );
+			}
+		}
+
+		// Preserve script evaluation history
+		destElements = getAll( clone, "script" );
+		if ( destElements.length > 0 ) {
+			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+		}
+
+		// Return the cloned set
+		return clone;
+	},
+
+	cleanData: function( elems ) {
+		var data, elem, type,
+			special = jQuery.event.special,
+			i = 0;
+
+		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
+			if ( acceptData( elem ) ) {
+				if ( ( data = elem[ dataPriv.expando ] ) ) {
+					if ( data.events ) {
+						for ( type in data.events ) {
+							if ( special[ type ] ) {
+								jQuery.event.remove( elem, type );
+
+							// This is a shortcut to avoid jQuery.event.remove's overhead
+							} else {
+								jQuery.removeEvent( elem, type, data.handle );
+							}
+						}
+					}
+
+					// Support: Chrome <=35 - 45+
+					// Assign undefined instead of using delete, see Data#remove
+					elem[ dataPriv.expando ] = undefined;
+				}
+				if ( elem[ dataUser.expando ] ) {
+
+					// Support: Chrome <=35 - 45+
+					// Assign undefined instead of using delete, see Data#remove
+					elem[ dataUser.expando ] = undefined;
+				}
+			}
+		}
+	}
+} );
+
+jQuery.fn.extend( {
+	detach: function( selector ) {
+		return remove( this, selector, true );
+	},
+
+	remove: function( selector ) {
+		return remove( this, selector );
+	},
+
+	text: function( value ) {
+		return access( this, function( value ) {
+			return value === undefined ?
+				jQuery.text( this ) :
+				this.empty().each( function() {
+					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+						this.textContent = value;
+					}
+				} );
+		}, null, value, arguments.length );
+	},
+
+	append: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.appendChild( elem );
+			}
+		} );
+	},
+
+	prepend: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.insertBefore( elem, target.firstChild );
+			}
+		} );
+	},
+
+	before: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this );
+			}
+		} );
+	},
+
+	after: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this.nextSibling );
+			}
+		} );
+	},
+
+	empty: function() {
+		var elem,
+			i = 0;
+
+		for ( ; ( elem = this[ i ] ) != null; i++ ) {
+			if ( elem.nodeType === 1 ) {
+
+				// Prevent memory leaks
+				jQuery.cleanData( getAll( elem, false ) );
+
+				// Remove any remaining nodes
+				elem.textContent = "";
+			}
+		}
+
+		return this;
+	},
+
+	clone: function( dataAndEvents, deepDataAndEvents ) {
+		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+		return this.map( function() {
+			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+		} );
+	},
+
+	html: function( value ) {
+		return access( this, function( value ) {
+			var elem = this[ 0 ] || {},
+				i = 0,
+				l = this.length;
+
+			if ( value === undefined && elem.nodeType === 1 ) {
+				return elem.innerHTML;
+			}
+
+			// See if we can take a shortcut and just use innerHTML
+			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+				value = jQuery.htmlPrefilter( value );
+
+				try {
+					for ( ; i < l; i++ ) {
+						elem = this[ i ] || {};
+
+						// Remove element nodes and prevent memory leaks
+						if ( elem.nodeType === 1 ) {
+							jQuery.cleanData( getAll( elem, false ) );
+							elem.innerHTML = value;
+						}
+					}
+
+					elem = 0;
+
+				// If using innerHTML throws an exception, use the fallback method
+				} catch ( e ) {}
+			}
+
+			if ( elem ) {
+				this.empty().append( value );
+			}
+		}, null, value, arguments.length );
+	},
+
+	replaceWith: function() {
+		var ignored = [];
+
+		// Make the changes, replacing each non-ignored context element with the new content
+		return domManip( this, arguments, function( elem ) {
+			var parent = this.parentNode;
+
+			if ( jQuery.inArray( this, ignored ) < 0 ) {
+				jQuery.cleanData( getAll( this ) );
+				if ( parent ) {
+					parent.replaceChild( elem, this );
+				}
+			}
+
+		// Force callback invocation
+		}, ignored );
+	}
+} );
+
+jQuery.each( {
+	appendTo: "append",
+	prependTo: "prepend",
+	insertBefore: "before",
+	insertAfter: "after",
+	replaceAll: "replaceWith"
+}, function( name, original ) {
+	jQuery.fn[ name ] = function( selector ) {
+		var elems,
+			ret = [],
+			insert = jQuery( selector ),
+			last = insert.length - 1,
+			i = 0;
+
+		for ( ; i <= last; i++ ) {
+			elems = i === last ? this : this.clone( true );
+			jQuery( insert[ i ] )[ original ]( elems );
+
+			// Support: Android <=4.0 only, PhantomJS 1 only
+			// .get() because push.apply(_, arraylike) throws on ancient WebKit
+			push.apply( ret, elems.get() );
+		}
+
+		return this.pushStack( ret );
+	};
+} );
+var rmargin = ( /^margin/ );
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+
+		// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
+		// IE throws on elements created in popups
+		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+		var view = elem.ownerDocument.defaultView;
+
+		if ( !view || !view.opener ) {
+			view = window;
+		}
+
+		return view.getComputedStyle( elem );
+	};
+
+
+
+( function() {
+
+	// Executing both pixelPosition & boxSizingReliable tests require only one layout
+	// so they're executed at the same time to save the second computation.
+	function computeStyleTests() {
+
+		// This is a singleton, we need to execute it only once
+		if ( !div ) {
+			return;
+		}
+
+		div.style.cssText =
+			"box-sizing:border-box;" +
+			"position:relative;display:block;" +
+			"margin:auto;border:1px;padding:1px;" +
+			"top:1%;width:50%";
+		div.innerHTML = "";
+		documentElement.appendChild( container );
+
+		var divStyle = window.getComputedStyle( div );
+		pixelPositionVal = divStyle.top !== "1%";
+
+		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
+		reliableMarginLeftVal = divStyle.marginLeft === "2px";
+		boxSizingReliableVal = divStyle.width === "4px";
+
+		// Support: Android 4.0 - 4.3 only
+		// Some styles come back with percentage values, even though they shouldn't
+		div.style.marginRight = "50%";
+		pixelMarginRightVal = divStyle.marginRight === "4px";
+
+		documentElement.removeChild( container );
+
+		// Nullify the div so it wouldn't be stored in the memory and
+		// it will also be a sign that checks already performed
+		div = null;
+	}
+
+	var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
+		container = document.createElement( "div" ),
+		div = document.createElement( "div" );
+
+	// Finish early in limited (non-browser) environments
+	if ( !div.style ) {
+		return;
+	}
+
+	// Support: IE <=9 - 11 only
+	// Style of cloned element affects source element cloned (#8908)
+	div.style.backgroundClip = "content-box";
+	div.cloneNode( true ).style.backgroundClip = "";
+	support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+	container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
+		"padding:0;margin-top:1px;position:absolute";
+	container.appendChild( div );
+
+	jQuery.extend( support, {
+		pixelPosition: function() {
+			computeStyleTests();
+			return pixelPositionVal;
+		},
+		boxSizingReliable: function() {
+			computeStyleTests();
+			return boxSizingReliableVal;
+		},
+		pixelMarginRight: function() {
+			computeStyleTests();
+			return pixelMarginRightVal;
+		},
+		reliableMarginLeft: function() {
+			computeStyleTests();
+			return reliableMarginLeftVal;
+		}
+	} );
+} )();
+
+
+function curCSS( elem, name, computed ) {
+	var width, minWidth, maxWidth, ret,
+
+		// Support: Firefox 51+
+		// Retrieving style before computed somehow
+		// fixes an issue with getting wrong values
+		// on detached elements
+		style = elem.style;
+
+	computed = computed || getStyles( elem );
+
+	// getPropertyValue is needed for:
+	//   .css('filter') (IE 9 only, #12537)
+	//   .css('--customProperty) (#3144)
+	if ( computed ) {
+		ret = computed.getPropertyValue( name ) || computed[ name ];
+
+		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+			ret = jQuery.style( elem, name );
+		}
+
+		// A tribute to the "awesome hack by Dean Edwards"
+		// Android Browser returns percentage for some values,
+		// but width seems to be reliably pixels.
+		// This is against the CSSOM draft spec:
+		// https://drafts.csswg.org/cssom/#resolved-values
+		if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+			// Remember the original values
+			width = style.width;
+			minWidth = style.minWidth;
+			maxWidth = style.maxWidth;
+
+			// Put in the new values to get a computed value out
+			style.minWidth = style.maxWidth = style.width = ret;
+			ret = computed.width;
+
+			// Revert the changed values
+			style.width = width;
+			style.minWidth = minWidth;
+			style.maxWidth = maxWidth;
+		}
+	}
+
+	return ret !== undefined ?
+
+		// Support: IE <=9 - 11 only
+		// IE returns zIndex value as an integer.
+		ret + "" :
+		ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+
+	// Define the hook, we'll check on the first run if it's really needed.
+	return {
+		get: function() {
+			if ( conditionFn() ) {
+
+				// Hook not needed (or it's not possible to use it due
+				// to missing dependency), remove it.
+				delete this.get;
+				return;
+			}
+
+			// Hook needed; redefine it so that the support test is not executed again.
+			return ( this.get = hookFn ).apply( this, arguments );
+		}
+	};
+}
+
+
+var
+
+	// Swappable if display is none or starts with table
+	// except "table", "table-cell", or "table-caption"
+	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+	rcustomProp = /^--/,
+	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+	cssNormalTransform = {
+		letterSpacing: "0",
+		fontWeight: "400"
+	},
+
+	cssPrefixes = [ "Webkit", "Moz", "ms" ],
+	emptyStyle = document.createElement( "div" ).style;
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( name ) {
+
+	// Shortcut for names that are not vendor prefixed
+	if ( name in emptyStyle ) {
+		return name;
+	}
+
+	// Check for vendor prefixed names
+	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
+		i = cssPrefixes.length;
+
+	while ( i-- ) {
+		name = cssPrefixes[ i ] + capName;
+		if ( name in emptyStyle ) {
+			return name;
+		}
+	}
+}
+
+// Return a property mapped along what jQuery.cssProps suggests or to
+// a vendor prefixed property.
+function finalPropName( name ) {
+	var ret = jQuery.cssProps[ name ];
+	if ( !ret ) {
+		ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;
+	}
+	return ret;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+
+	// Any relative (+/-) values have already been
+	// normalized at this point
+	var matches = rcssNum.exec( value );
+	return matches ?
+
+		// Guard against undefined "subtract", e.g., when used as in cssHooks
+		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
+		value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+	var i,
+		val = 0;
+
+	// If we already have the right measurement, avoid augmentation
+	if ( extra === ( isBorderBox ? "border" : "content" ) ) {
+		i = 4;
+
+	// Otherwise initialize for horizontal or vertical properties
+	} else {
+		i = name === "width" ? 1 : 0;
+	}
+
+	for ( ; i < 4; i += 2 ) {
+
+		// Both box models exclude margin, so add it if we want it
+		if ( extra === "margin" ) {
+			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+		}
+
+		if ( isBorderBox ) {
+
+			// border-box includes padding, so remove it if we want content
+			if ( extra === "content" ) {
+				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+			}
+
+			// At this point, extra isn't border nor margin, so remove border
+			if ( extra !== "margin" ) {
+				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		} else {
+
+			// At this point, extra isn't content, so add padding
+			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+			// At this point, extra isn't content nor padding, so add border
+			if ( extra !== "padding" ) {
+				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		}
+	}
+
+	return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+	// Start with computed style
+	var valueIsBorderBox,
+		styles = getStyles( elem ),
+		val = curCSS( elem, name, styles ),
+		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+	// Computed unit is not pixels. Stop here and return.
+	if ( rnumnonpx.test( val ) ) {
+		return val;
+	}
+
+	// Check for style in case a browser which returns unreliable values
+	// for getComputedStyle silently falls back to the reliable elem.style
+	valueIsBorderBox = isBorderBox &&
+		( support.boxSizingReliable() || val === elem.style[ name ] );
+
+	// Fall back to offsetWidth/Height when value is "auto"
+	// This happens for inline elements with no explicit setting (gh-3571)
+	if ( val === "auto" ) {
+		val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ];
+	}
+
+	// Normalize "", auto, and prepare for extra
+	val = parseFloat( val ) || 0;
+
+	// Use the active box-sizing model to add/subtract irrelevant styles
+	return ( val +
+		augmentWidthOrHeight(
+			elem,
+			name,
+			extra || ( isBorderBox ? "border" : "content" ),
+			valueIsBorderBox,
+			styles
+		)
+	) + "px";
+}
+
+jQuery.extend( {
+
+	// Add in style property hooks for overriding the default
+	// behavior of getting and setting a style property
+	cssHooks: {
+		opacity: {
+			get: function( elem, computed ) {
+				if ( computed ) {
+
+					// We should always get a number back from opacity
+					var ret = curCSS( elem, "opacity" );
+					return ret === "" ? "1" : ret;
+				}
+			}
+		}
+	},
+
+	// Don't automatically add "px" to these possibly-unitless properties
+	cssNumber: {
+		"animationIterationCount": true,
+		"columnCount": true,
+		"fillOpacity": true,
+		"flexGrow": true,
+		"flexShrink": true,
+		"fontWeight": true,
+		"lineHeight": true,
+		"opacity": true,
+		"order": true,
+		"orphans": true,
+		"widows": true,
+		"zIndex": true,
+		"zoom": true
+	},
+
+	// Add in properties whose names you wish to fix before
+	// setting or getting the value
+	cssProps: {
+		"float": "cssFloat"
+	},
+
+	// Get and set the style property on a DOM Node
+	style: function( elem, name, value, extra ) {
+
+		// Don't set styles on text and comment nodes
+		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+			return;
+		}
+
+		// Make sure that we're working with the right name
+		var ret, type, hooks,
+			origName = jQuery.camelCase( name ),
+			isCustomProp = rcustomProp.test( name ),
+			style = elem.style;
+
+		// Make sure that we're working with the right name. We don't
+		// want to query the value if it is a CSS custom property
+		// since they are user-defined.
+		if ( !isCustomProp ) {
+			name = finalPropName( origName );
+		}
+
+		// Gets hook for the prefixed version, then unprefixed version
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// Check if we're setting a value
+		if ( value !== undefined ) {
+			type = typeof value;
+
+			// Convert "+=" or "-=" to relative numbers (#7345)
+			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
+				value = adjustCSS( elem, name, ret );
+
+				// Fixes bug #9237
+				type = "number";
+			}
+
+			// Make sure that null and NaN values aren't set (#7116)
+			if ( value == null || value !== value ) {
+				return;
+			}
+
+			// If a number was passed in, add the unit (except for certain CSS properties)
+			if ( type === "number" ) {
+				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
+			}
+
+			// background-* props affect original clone's values
+			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+				style[ name ] = "inherit";
+			}
+
+			// If a hook was provided, use that value, otherwise just set the specified value
+			if ( !hooks || !( "set" in hooks ) ||
+				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
+
+				if ( isCustomProp ) {
+					style.setProperty( name, value );
+				} else {
+					style[ name ] = value;
+				}
+			}
+
+		} else {
+
+			// If a hook was provided get the non-computed value from there
+			if ( hooks && "get" in hooks &&
+				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
+
+				return ret;
+			}
+
+			// Otherwise just get the value from the style object
+			return style[ name ];
+		}
+	},
+
+	css: function( elem, name, extra, styles ) {
+		var val, num, hooks,
+			origName = jQuery.camelCase( name ),
+			isCustomProp = rcustomProp.test( name );
+
+		// Make sure that we're working with the right name. We don't
+		// want to modify the value if it is a CSS custom property
+		// since they are user-defined.
+		if ( !isCustomProp ) {
+			name = finalPropName( origName );
+		}
+
+		// Try prefixed name followed by the unprefixed name
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// If a hook was provided get the computed value from there
+		if ( hooks && "get" in hooks ) {
+			val = hooks.get( elem, true, extra );
+		}
+
+		// Otherwise, if a way to get the computed value exists, use that
+		if ( val === undefined ) {
+			val = curCSS( elem, name, styles );
+		}
+
+		// Convert "normal" to computed value
+		if ( val === "normal" && name in cssNormalTransform ) {
+			val = cssNormalTransform[ name ];
+		}
+
+		// Make numeric if forced or a qualifier was provided and val looks numeric
+		if ( extra === "" || extra ) {
+			num = parseFloat( val );
+			return extra === true || isFinite( num ) ? num || 0 : val;
+		}
+
+		return val;
+	}
+} );
+
+jQuery.each( [ "height", "width" ], function( i, name ) {
+	jQuery.cssHooks[ name ] = {
+		get: function( elem, computed, extra ) {
+			if ( computed ) {
+
+				// Certain elements can have dimension info if we invisibly show them
+				// but it must have a current display style that would benefit
+				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
+
+					// Support: Safari 8+
+					// Table columns in Safari have non-zero offsetWidth & zero
+					// getBoundingClientRect().width unless display is changed.
+					// Support: IE <=11 only
+					// Running getBoundingClientRect on a disconnected node
+					// in IE throws an error.
+					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
+						swap( elem, cssShow, function() {
+							return getWidthOrHeight( elem, name, extra );
+						} ) :
+						getWidthOrHeight( elem, name, extra );
+			}
+		},
+
+		set: function( elem, value, extra ) {
+			var matches,
+				styles = extra && getStyles( elem ),
+				subtract = extra && augmentWidthOrHeight(
+					elem,
+					name,
+					extra,
+					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+					styles
+				);
+
+			// Convert to pixels if value adjustment is needed
+			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
+				( matches[ 3 ] || "px" ) !== "px" ) {
+
+				elem.style[ name ] = value;
+				value = jQuery.css( elem, name );
+			}
+
+			return setPositiveNumber( elem, value, subtract );
+		}
+	};
+} );
+
+jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
+	function( elem, computed ) {
+		if ( computed ) {
+			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
+				elem.getBoundingClientRect().left -
+					swap( elem, { marginLeft: 0 }, function() {
+						return elem.getBoundingClientRect().left;
+					} )
+				) + "px";
+		}
+	}
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each( {
+	margin: "",
+	padding: "",
+	border: "Width"
+}, function( prefix, suffix ) {
+	jQuery.cssHooks[ prefix + suffix ] = {
+		expand: function( value ) {
+			var i = 0,
+				expanded = {},
+
+				// Assumes a single number if not a string
+				parts = typeof value === "string" ? value.split( " " ) : [ value ];
+
+			for ( ; i < 4; i++ ) {
+				expanded[ prefix + cssExpand[ i ] + suffix ] =
+					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+			}
+
+			return expanded;
+		}
+	};
+
+	if ( !rmargin.test( prefix ) ) {
+		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+	}
+} );
+
+jQuery.fn.extend( {
+	css: function( name, value ) {
+		return access( this, function( elem, name, value ) {
+			var styles, len,
+				map = {},
+				i = 0;
+
+			if ( Array.isArray( name ) ) {
+				styles = getStyles( elem );
+				len = name.length;
+
+				for ( ; i < len; i++ ) {
+					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+				}
+
+				return map;
+			}
+
+			return value !== undefined ?
+				jQuery.style( elem, name, value ) :
+				jQuery.css( elem, name );
+		}, name, value, arguments.length > 1 );
+	}
+} );
+
+
+function Tween( elem, options, prop, end, easing ) {
+	return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+	constructor: Tween,
+	init: function( elem, options, prop, end, easing, unit ) {
+		this.elem = elem;
+		this.prop = prop;
+		this.easing = easing || jQuery.easing._default;
+		this.options = options;
+		this.start = this.now = this.cur();
+		this.end = end;
+		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+	},
+	cur: function() {
+		var hooks = Tween.propHooks[ this.prop ];
+
+		return hooks && hooks.get ?
+			hooks.get( this ) :
+			Tween.propHooks._default.get( this );
+	},
+	run: function( percent ) {
+		var eased,
+			hooks = Tween.propHooks[ this.prop ];
+
+		if ( this.options.duration ) {
+			this.pos = eased = jQuery.easing[ this.easing ](
+				percent, this.options.duration * percent, 0, 1, this.options.duration
+			);
+		} else {
+			this.pos = eased = percent;
+		}
+		this.now = ( this.end - this.start ) * eased + this.start;
+
+		if ( this.options.step ) {
+			this.options.step.call( this.elem, this.now, this );
+		}
+
+		if ( hooks && hooks.set ) {
+			hooks.set( this );
+		} else {
+			Tween.propHooks._default.set( this );
+		}
+		return this;
+	}
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+	_default: {
+		get: function( tween ) {
+			var result;
+
+			// Use a property on the element directly when it is not a DOM element,
+			// or when there is no matching style property that exists.
+			if ( tween.elem.nodeType !== 1 ||
+				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
+				return tween.elem[ tween.prop ];
+			}
+
+			// Passing an empty string as a 3rd parameter to .css will automatically
+			// attempt a parseFloat and fallback to a string if the parse fails.
+			// Simple values such as "10px" are parsed to Float;
+			// complex values such as "rotate(1rad)" are returned as-is.
+			result = jQuery.css( tween.elem, tween.prop, "" );
+
+			// Empty strings, null, undefined and "auto" are converted to 0.
+			return !result || result === "auto" ? 0 : result;
+		},
+		set: function( tween ) {
+
+			// Use step hook for back compat.
+			// Use cssHook if its there.
+			// Use .style if available and use plain properties where available.
+			if ( jQuery.fx.step[ tween.prop ] ) {
+				jQuery.fx.step[ tween.prop ]( tween );
+			} else if ( tween.elem.nodeType === 1 &&
+				( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
+					jQuery.cssHooks[ tween.prop ] ) ) {
+				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+			} else {
+				tween.elem[ tween.prop ] = tween.now;
+			}
+		}
+	}
+};
+
+// Support: IE <=9 only
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+	set: function( tween ) {
+		if ( tween.elem.nodeType && tween.elem.parentNode ) {
+			tween.elem[ tween.prop ] = tween.now;
+		}
+	}
+};
+
+jQuery.easing = {
+	linear: function( p ) {
+		return p;
+	},
+	swing: function( p ) {
+		return 0.5 - Math.cos( p * Math.PI ) / 2;
+	},
+	_default: "swing"
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+	fxNow, inProgress,
+	rfxtypes = /^(?:toggle|show|hide)$/,
+	rrun = /queueHooks$/;
+
+function schedule() {
+	if ( inProgress ) {
+		if ( document.hidden === false && window.requestAnimationFrame ) {
+			window.requestAnimationFrame( schedule );
+		} else {
+			window.setTimeout( schedule, jQuery.fx.interval );
+		}
+
+		jQuery.fx.tick();
+	}
+}
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+	window.setTimeout( function() {
+		fxNow = undefined;
+	} );
+	return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+	var which,
+		i = 0,
+		attrs = { height: type };
+
+	// If we include width, step value is 1 to do all cssExpand values,
+	// otherwise step value is 2 to skip over Left and Right
+	includeWidth = includeWidth ? 1 : 0;
+	for ( ; i < 4; i += 2 - includeWidth ) {
+		which = cssExpand[ i ];
+		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+	}
+
+	if ( includeWidth ) {
+		attrs.opacity = attrs.width = type;
+	}
+
+	return attrs;
+}
+
+function createTween( value, prop, animation ) {
+	var tween,
+		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
+		index = 0,
+		length = collection.length;
+	for ( ; index < length; index++ ) {
+		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
+
+			// We're done with this property
+			return tween;
+		}
+	}
+}
+
+function defaultPrefilter( elem, props, opts ) {
+	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
+		isBox = "width" in props || "height" in props,
+		anim = this,
+		orig = {},
+		style = elem.style,
+		hidden = elem.nodeType && isHiddenWithinTree( elem ),
+		dataShow = dataPriv.get( elem, "fxshow" );
+
+	// Queue-skipping animations hijack the fx hooks
+	if ( !opts.queue ) {
+		hooks = jQuery._queueHooks( elem, "fx" );
+		if ( hooks.unqueued == null ) {
+			hooks.unqueued = 0;
+			oldfire = hooks.empty.fire;
+			hooks.empty.fire = function() {
+				if ( !hooks.unqueued ) {
+					oldfire();
+				}
+			};
+		}
+		hooks.unqueued++;
+
+		anim.always( function() {
+
+			// Ensure the complete handler is called before this completes
+			anim.always( function() {
+				hooks.unqueued--;
+				if ( !jQuery.queue( elem, "fx" ).length ) {
+					hooks.empty.fire();
+				}
+			} );
+		} );
+	}
+
+	// Detect show/hide animations
+	for ( prop in props ) {
+		value = props[ prop ];
+		if ( rfxtypes.test( value ) ) {
+			delete props[ prop ];
+			toggle = toggle || value === "toggle";
+			if ( value === ( hidden ? "hide" : "show" ) ) {
+
+				// Pretend to be hidden if this is a "show" and
+				// there is still data from a stopped show/hide
+				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+					hidden = true;
+
+				// Ignore all other no-op show/hide data
+				} else {
+					continue;
+				}
+			}
+			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+		}
+	}
+
+	// Bail out if this is a no-op like .hide().hide()
+	propTween = !jQuery.isEmptyObject( props );
+	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
+		return;
+	}
+
+	// Restrict "overflow" and "display" styles during box animations
+	if ( isBox && elem.nodeType === 1 ) {
+
+		// Support: IE <=9 - 11, Edge 12 - 13
+		// Record all 3 overflow attributes because IE does not infer the shorthand
+		// from identically-valued overflowX and overflowY
+		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+		// Identify a display type, preferring old show/hide data over the CSS cascade
+		restoreDisplay = dataShow && dataShow.display;
+		if ( restoreDisplay == null ) {
+			restoreDisplay = dataPriv.get( elem, "display" );
+		}
+		display = jQuery.css( elem, "display" );
+		if ( display === "none" ) {
+			if ( restoreDisplay ) {
+				display = restoreDisplay;
+			} else {
+
+				// Get nonempty value(s) by temporarily forcing visibility
+				showHide( [ elem ], true );
+				restoreDisplay = elem.style.display || restoreDisplay;
+				display = jQuery.css( elem, "display" );
+				showHide( [ elem ] );
+			}
+		}
+
+		// Animate inline elements as inline-block
+		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
+			if ( jQuery.css( elem, "float" ) === "none" ) {
+
+				// Restore the original display value at the end of pure show/hide animations
+				if ( !propTween ) {
+					anim.done( function() {
+						style.display = restoreDisplay;
+					} );
+					if ( restoreDisplay == null ) {
+						display = style.display;
+						restoreDisplay = display === "none" ? "" : display;
+					}
+				}
+				style.display = "inline-block";
+			}
+		}
+	}
+
+	if ( opts.overflow ) {
+		style.overflow = "hidden";
+		anim.always( function() {
+			style.overflow = opts.overflow[ 0 ];
+			style.overflowX = opts.overflow[ 1 ];
+			style.overflowY = opts.overflow[ 2 ];
+		} );
+	}
+
+	// Implement show/hide animations
+	propTween = false;
+	for ( prop in orig ) {
+
+		// General show/hide setup for this element animation
+		if ( !propTween ) {
+			if ( dataShow ) {
+				if ( "hidden" in dataShow ) {
+					hidden = dataShow.hidden;
+				}
+			} else {
+				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
+			}
+
+			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
+			if ( toggle ) {
+				dataShow.hidden = !hidden;
+			}
+
+			// Show elements before animating them
+			if ( hidden ) {
+				showHide( [ elem ], true );
+			}
+
+			/* eslint-disable no-loop-func */
+
+			anim.done( function() {
+
+			/* eslint-enable no-loop-func */
+
+				// The final step of a "hide" animation is actually hiding the element
+				if ( !hidden ) {
+					showHide( [ elem ] );
+				}
+				dataPriv.remove( elem, "fxshow" );
+				for ( prop in orig ) {
+					jQuery.style( elem, prop, orig[ prop ] );
+				}
+			} );
+		}
+
+		// Per-property setup
+		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+		if ( !( prop in dataShow ) ) {
+			dataShow[ prop ] = propTween.start;
+			if ( hidden ) {
+				propTween.end = propTween.start;
+				propTween.start = 0;
+			}
+		}
+	}
+}
+
+function propFilter( props, specialEasing ) {
+	var index, name, easing, value, hooks;
+
+	// camelCase, specialEasing and expand cssHook pass
+	for ( index in props ) {
+		name = jQuery.camelCase( index );
+		easing = specialEasing[ name ];
+		value = props[ index ];
+		if ( Array.isArray( value ) ) {
+			easing = value[ 1 ];
+			value = props[ index ] = value[ 0 ];
+		}
+
+		if ( index !== name ) {
+			props[ name ] = value;
+			delete props[ index ];
+		}
+
+		hooks = jQuery.cssHooks[ name ];
+		if ( hooks && "expand" in hooks ) {
+			value = hooks.expand( value );
+			delete props[ name ];
+
+			// Not quite $.extend, this won't overwrite existing keys.
+			// Reusing 'index' because we have the correct "name"
+			for ( index in value ) {
+				if ( !( index in props ) ) {
+					props[ index ] = value[ index ];
+					specialEasing[ index ] = easing;
+				}
+			}
+		} else {
+			specialEasing[ name ] = easing;
+		}
+	}
+}
+
+function Animation( elem, properties, options ) {
+	var result,
+		stopped,
+		index = 0,
+		length = Animation.prefilters.length,
+		deferred = jQuery.Deferred().always( function() {
+
+			// Don't match elem in the :animated selector
+			delete tick.elem;
+		} ),
+		tick = function() {
+			if ( stopped ) {
+				return false;
+			}
+			var currentTime = fxNow || createFxNow(),
+				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+
+				// Support: Android 2.3 only
+				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+				temp = remaining / animation.duration || 0,
+				percent = 1 - temp,
+				index = 0,
+				length = animation.tweens.length;
+
+			for ( ; index < length; index++ ) {
+				animation.tweens[ index ].run( percent );
+			}
+
+			deferred.notifyWith( elem, [ animation, percent, remaining ] );
+
+			// If there's more to do, yield
+			if ( percent < 1 && length ) {
+				return remaining;
+			}
+
+			// If this was an empty animation, synthesize a final progress notification
+			if ( !length ) {
+				deferred.notifyWith( elem, [ animation, 1, 0 ] );
+			}
+
+			// Resolve the animation and report its conclusion
+			deferred.resolveWith( elem, [ animation ] );
+			return false;
+		},
+		animation = deferred.promise( {
+			elem: elem,
+			props: jQuery.extend( {}, properties ),
+			opts: jQuery.extend( true, {
+				specialEasing: {},
+				easing: jQuery.easing._default
+			}, options ),
+			originalProperties: properties,
+			originalOptions: options,
+			startTime: fxNow || createFxNow(),
+			duration: options.duration,
+			tweens: [],
+			createTween: function( prop, end ) {
+				var tween = jQuery.Tween( elem, animation.opts, prop, end,
+						animation.opts.specialEasing[ prop ] || animation.opts.easing );
+				animation.tweens.push( tween );
+				return tween;
+			},
+			stop: function( gotoEnd ) {
+				var index = 0,
+
+					// If we are going to the end, we want to run all the tweens
+					// otherwise we skip this part
+					length = gotoEnd ? animation.tweens.length : 0;
+				if ( stopped ) {
+					return this;
+				}
+				stopped = true;
+				for ( ; index < length; index++ ) {
+					animation.tweens[ index ].run( 1 );
+				}
+
+				// Resolve when we played the last frame; otherwise, reject
+				if ( gotoEnd ) {
+					deferred.notifyWith( elem, [ animation, 1, 0 ] );
+					deferred.resolveWith( elem, [ animation, gotoEnd ] );
+				} else {
+					deferred.rejectWith( elem, [ animation, gotoEnd ] );
+				}
+				return this;
+			}
+		} ),
+		props = animation.props;
+
+	propFilter( props, animation.opts.specialEasing );
+
+	for ( ; index < length; index++ ) {
+		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
+		if ( result ) {
+			if ( jQuery.isFunction( result.stop ) ) {
+				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
+					jQuery.proxy( result.stop, result );
+			}
+			return result;
+		}
+	}
+
+	jQuery.map( props, createTween, animation );
+
+	if ( jQuery.isFunction( animation.opts.start ) ) {
+		animation.opts.start.call( elem, animation );
+	}
+
+	// Attach callbacks from options
+	animation
+		.progress( animation.opts.progress )
+		.done( animation.opts.done, animation.opts.complete )
+		.fail( animation.opts.fail )
+		.always( animation.opts.always );
+
+	jQuery.fx.timer(
+		jQuery.extend( tick, {
+			elem: elem,
+			anim: animation,
+			queue: animation.opts.queue
+		} )
+	);
+
+	return animation;
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+	tweeners: {
+		"*": [ function( prop, value ) {
+			var tween = this.createTween( prop, value );
+			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
+			return tween;
+		} ]
+	},
+
+	tweener: function( props, callback ) {
+		if ( jQuery.isFunction( props ) ) {
+			callback = props;
+			props = [ "*" ];
+		} else {
+			props = props.match( rnothtmlwhite );
+		}
+
+		var prop,
+			index = 0,
+			length = props.length;
+
+		for ( ; index < length; index++ ) {
+			prop = props[ index ];
+			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
+			Animation.tweeners[ prop ].unshift( callback );
+		}
+	},
+
+	prefilters: [ defaultPrefilter ],
+
+	prefilter: function( callback, prepend ) {
+		if ( prepend ) {
+			Animation.prefilters.unshift( callback );
+		} else {
+			Animation.prefilters.push( callback );
+		}
+	}
+} );
+
+jQuery.speed = function( speed, easing, fn ) {
+	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+		complete: fn || !fn && easing ||
+			jQuery.isFunction( speed ) && speed,
+		duration: speed,
+		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+	};
+
+	// Go to the end state if fx are off
+	if ( jQuery.fx.off ) {
+		opt.duration = 0;
+
+	} else {
+		if ( typeof opt.duration !== "number" ) {
+			if ( opt.duration in jQuery.fx.speeds ) {
+				opt.duration = jQuery.fx.speeds[ opt.duration ];
+
+			} else {
+				opt.duration = jQuery.fx.speeds._default;
+			}
+		}
+	}
+
+	// Normalize opt.queue - true/undefined/null -> "fx"
+	if ( opt.queue == null || opt.queue === true ) {
+		opt.queue = "fx";
+	}
+
+	// Queueing
+	opt.old = opt.complete;
+
+	opt.complete = function() {
+		if ( jQuery.isFunction( opt.old ) ) {
+			opt.old.call( this );
+		}
+
+		if ( opt.queue ) {
+			jQuery.dequeue( this, opt.queue );
+		}
+	};
+
+	return opt;
+};
+
+jQuery.fn.extend( {
+	fadeTo: function( speed, to, easing, callback ) {
+
+		// Show any hidden elements after setting opacity to 0
+		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
+
+			// Animate to the value specified
+			.end().animate( { opacity: to }, speed, easing, callback );
+	},
+	animate: function( prop, speed, easing, callback ) {
+		var empty = jQuery.isEmptyObject( prop ),
+			optall = jQuery.speed( speed, easing, callback ),
+			doAnimation = function() {
+
+				// Operate on a copy of prop so per-property easing won't be lost
+				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+				// Empty animations, or finishing resolves immediately
+				if ( empty || dataPriv.get( this, "finish" ) ) {
+					anim.stop( true );
+				}
+			};
+			doAnimation.finish = doAnimation;
+
+		return empty || optall.queue === false ?
+			this.each( doAnimation ) :
+			this.queue( optall.queue, doAnimation );
+	},
+	stop: function( type, clearQueue, gotoEnd ) {
+		var stopQueue = function( hooks ) {
+			var stop = hooks.stop;
+			delete hooks.stop;
+			stop( gotoEnd );
+		};
+
+		if ( typeof type !== "string" ) {
+			gotoEnd = clearQueue;
+			clearQueue = type;
+			type = undefined;
+		}
+		if ( clearQueue && type !== false ) {
+			this.queue( type || "fx", [] );
+		}
+
+		return this.each( function() {
+			var dequeue = true,
+				index = type != null && type + "queueHooks",
+				timers = jQuery.timers,
+				data = dataPriv.get( this );
+
+			if ( index ) {
+				if ( data[ index ] && data[ index ].stop ) {
+					stopQueue( data[ index ] );
+				}
+			} else {
+				for ( index in data ) {
+					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+						stopQueue( data[ index ] );
+					}
+				}
+			}
+
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this &&
+					( type == null || timers[ index ].queue === type ) ) {
+
+					timers[ index ].anim.stop( gotoEnd );
+					dequeue = false;
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Start the next in the queue if the last step wasn't forced.
+			// Timers currently will call their complete callbacks, which
+			// will dequeue but only if they were gotoEnd.
+			if ( dequeue || !gotoEnd ) {
+				jQuery.dequeue( this, type );
+			}
+		} );
+	},
+	finish: function( type ) {
+		if ( type !== false ) {
+			type = type || "fx";
+		}
+		return this.each( function() {
+			var index,
+				data = dataPriv.get( this ),
+				queue = data[ type + "queue" ],
+				hooks = data[ type + "queueHooks" ],
+				timers = jQuery.timers,
+				length = queue ? queue.length : 0;
+
+			// Enable finishing flag on private data
+			data.finish = true;
+
+			// Empty the queue first
+			jQuery.queue( this, type, [] );
+
+			if ( hooks && hooks.stop ) {
+				hooks.stop.call( this, true );
+			}
+
+			// Look for any active animations, and finish them
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+					timers[ index ].anim.stop( true );
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Look for any animations in the old queue and finish them
+			for ( index = 0; index < length; index++ ) {
+				if ( queue[ index ] && queue[ index ].finish ) {
+					queue[ index ].finish.call( this );
+				}
+			}
+
+			// Turn off finishing flag
+			delete data.finish;
+		} );
+	}
+} );
+
+jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
+	var cssFn = jQuery.fn[ name ];
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return speed == null || typeof speed === "boolean" ?
+			cssFn.apply( this, arguments ) :
+			this.animate( genFx( name, true ), speed, easing, callback );
+	};
+} );
+
+// Generate shortcuts for custom animations
+jQuery.each( {
+	slideDown: genFx( "show" ),
+	slideUp: genFx( "hide" ),
+	slideToggle: genFx( "toggle" ),
+	fadeIn: { opacity: "show" },
+	fadeOut: { opacity: "hide" },
+	fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return this.animate( props, speed, easing, callback );
+	};
+} );
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+	var timer,
+		i = 0,
+		timers = jQuery.timers;
+
+	fxNow = jQuery.now();
+
+	for ( ; i < timers.length; i++ ) {
+		timer = timers[ i ];
+
+		// Run the timer and safely remove it when done (allowing for external removal)
+		if ( !timer() && timers[ i ] === timer ) {
+			timers.splice( i--, 1 );
+		}
+	}
+
+	if ( !timers.length ) {
+		jQuery.fx.stop();
+	}
+	fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+	jQuery.timers.push( timer );
+	jQuery.fx.start();
+};
+
+jQuery.fx.interval = 13;
+jQuery.fx.start = function() {
+	if ( inProgress ) {
+		return;
+	}
+
+	inProgress = true;
+	schedule();
+};
+
+jQuery.fx.stop = function() {
+	inProgress = null;
+};
+
+jQuery.fx.speeds = {
+	slow: 600,
+	fast: 200,
+
+	// Default speed
+	_default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+	type = type || "fx";
+
+	return this.queue( type, function( next, hooks ) {
+		var timeout = window.setTimeout( next, time );
+		hooks.stop = function() {
+			window.clearTimeout( timeout );
+		};
+	} );
+};
+
+
+( function() {
+	var input = document.createElement( "input" ),
+		select = document.createElement( "select" ),
+		opt = select.appendChild( document.createElement( "option" ) );
+
+	input.type = "checkbox";
+
+	// Support: Android <=4.3 only
+	// Default value for a checkbox should be "on"
+	support.checkOn = input.value !== "";
+
+	// Support: IE <=11 only
+	// Must access selectedIndex to make default options select
+	support.optSelected = opt.selected;
+
+	// Support: IE <=11 only
+	// An input loses its value after becoming a radio
+	input = document.createElement( "input" );
+	input.value = "t";
+	input.type = "radio";
+	support.radioValue = input.value === "t";
+} )();
+
+
+var boolHook,
+	attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend( {
+	attr: function( name, value ) {
+		return access( this, jQuery.attr, name, value, arguments.length > 1 );
+	},
+
+	removeAttr: function( name ) {
+		return this.each( function() {
+			jQuery.removeAttr( this, name );
+		} );
+	}
+} );
+
+jQuery.extend( {
+	attr: function( elem, name, value ) {
+		var ret, hooks,
+			nType = elem.nodeType;
+
+		// Don't get/set attributes on text, comment and attribute nodes
+		if ( nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		// Fallback to prop when attributes are not supported
+		if ( typeof elem.getAttribute === "undefined" ) {
+			return jQuery.prop( elem, name, value );
+		}
+
+		// Attribute hooks are determined by the lowercase version
+		// Grab necessary hook if one is defined
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
+				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
+		}
+
+		if ( value !== undefined ) {
+			if ( value === null ) {
+				jQuery.removeAttr( elem, name );
+				return;
+			}
+
+			if ( hooks && "set" in hooks &&
+				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+				return ret;
+			}
+
+			elem.setAttribute( name, value + "" );
+			return value;
+		}
+
+		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+			return ret;
+		}
+
+		ret = jQuery.find.attr( elem, name );
+
+		// Non-existent attributes return null, we normalize to undefined
+		return ret == null ? undefined : ret;
+	},
+
+	attrHooks: {
+		type: {
+			set: function( elem, value ) {
+				if ( !support.radioValue && value === "radio" &&
+					nodeName( elem, "input" ) ) {
+					var val = elem.value;
+					elem.setAttribute( "type", value );
+					if ( val ) {
+						elem.value = val;
+					}
+					return value;
+				}
+			}
+		}
+	},
+
+	removeAttr: function( elem, value ) {
+		var name,
+			i = 0,
+
+			// Attribute names can contain non-HTML whitespace characters
+			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
+			attrNames = value && value.match( rnothtmlwhite );
+
+		if ( attrNames && elem.nodeType === 1 ) {
+			while ( ( name = attrNames[ i++ ] ) ) {
+				elem.removeAttribute( name );
+			}
+		}
+	}
+} );
+
+// Hooks for boolean attributes
+boolHook = {
+	set: function( elem, value, name ) {
+		if ( value === false ) {
+
+			// Remove boolean attributes when set to false
+			jQuery.removeAttr( elem, name );
+		} else {
+			elem.setAttribute( name, name );
+		}
+		return name;
+	}
+};
+
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+	var getter = attrHandle[ name ] || jQuery.find.attr;
+
+	attrHandle[ name ] = function( elem, name, isXML ) {
+		var ret, handle,
+			lowercaseName = name.toLowerCase();
+
+		if ( !isXML ) {
+
+			// Avoid an infinite loop by temporarily removing this function from the getter
+			handle = attrHandle[ lowercaseName ];
+			attrHandle[ lowercaseName ] = ret;
+			ret = getter( elem, name, isXML ) != null ?
+				lowercaseName :
+				null;
+			attrHandle[ lowercaseName ] = handle;
+		}
+		return ret;
+	};
+} );
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i,
+	rclickable = /^(?:a|area)$/i;
+
+jQuery.fn.extend( {
+	prop: function( name, value ) {
+		return access( this, jQuery.prop, name, value, arguments.length > 1 );
+	},
+
+	removeProp: function( name ) {
+		return this.each( function() {
+			delete this[ jQuery.propFix[ name ] || name ];
+		} );
+	}
+} );
+
+jQuery.extend( {
+	prop: function( elem, name, value ) {
+		var ret, hooks,
+			nType = elem.nodeType;
+
+		// Don't get/set properties on text, comment and attribute nodes
+		if ( nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+
+			// Fix name and attach hooks
+			name = jQuery.propFix[ name ] || name;
+			hooks = jQuery.propHooks[ name ];
+		}
+
+		if ( value !== undefined ) {
+			if ( hooks && "set" in hooks &&
+				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+				return ret;
+			}
+
+			return ( elem[ name ] = value );
+		}
+
+		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+			return ret;
+		}
+
+		return elem[ name ];
+	},
+
+	propHooks: {
+		tabIndex: {
+			get: function( elem ) {
+
+				// Support: IE <=9 - 11 only
+				// elem.tabIndex doesn't always return the
+				// correct value when it hasn't been explicitly set
+				// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+				// Use proper attribute retrieval(#12072)
+				var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+				if ( tabindex ) {
+					return parseInt( tabindex, 10 );
+				}
+
+				if (
+					rfocusable.test( elem.nodeName ) ||
+					rclickable.test( elem.nodeName ) &&
+					elem.href
+				) {
+					return 0;
+				}
+
+				return -1;
+			}
+		}
+	},
+
+	propFix: {
+		"for": "htmlFor",
+		"class": "className"
+	}
+} );
+
+// Support: IE <=11 only
+// Accessing the selectedIndex property
+// forces the browser to respect setting selected
+// on the option
+// The getter ensures a default option is selected
+// when in an optgroup
+// eslint rule "no-unused-expressions" is disabled for this code
+// since it considers such accessions noop
+if ( !support.optSelected ) {
+	jQuery.propHooks.selected = {
+		get: function( elem ) {
+
+			/* eslint no-unused-expressions: "off" */
+
+			var parent = elem.parentNode;
+			if ( parent && parent.parentNode ) {
+				parent.parentNode.selectedIndex;
+			}
+			return null;
+		},
+		set: function( elem ) {
+
+			/* eslint no-unused-expressions: "off" */
+
+			var parent = elem.parentNode;
+			if ( parent ) {
+				parent.selectedIndex;
+
+				if ( parent.parentNode ) {
+					parent.parentNode.selectedIndex;
+				}
+			}
+		}
+	};
+}
+
+jQuery.each( [
+	"tabIndex",
+	"readOnly",
+	"maxLength",
+	"cellSpacing",
+	"cellPadding",
+	"rowSpan",
+	"colSpan",
+	"useMap",
+	"frameBorder",
+	"contentEditable"
+], function() {
+	jQuery.propFix[ this.toLowerCase() ] = this;
+} );
+
+
+
+
+	// Strip and collapse whitespace according to HTML spec
+	// https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
+	function stripAndCollapse( value ) {
+		var tokens = value.match( rnothtmlwhite ) || [];
+		return tokens.join( " " );
+	}
+
+
+function getClass( elem ) {
+	return elem.getAttribute && elem.getAttribute( "class" ) || "";
+}
+
+jQuery.fn.extend( {
+	addClass: function( value ) {
+		var classes, elem, cur, curValue, clazz, j, finalValue,
+			i = 0;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each( function( j ) {
+				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
+			} );
+		}
+
+		if ( typeof value === "string" && value ) {
+			classes = value.match( rnothtmlwhite ) || [];
+
+			while ( ( elem = this[ i++ ] ) ) {
+				curValue = getClass( elem );
+				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+				if ( cur ) {
+					j = 0;
+					while ( ( clazz = classes[ j++ ] ) ) {
+						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+							cur += clazz + " ";
+						}
+					}
+
+					// Only assign if different to avoid unneeded rendering.
+					finalValue = stripAndCollapse( cur );
+					if ( curValue !== finalValue ) {
+						elem.setAttribute( "class", finalValue );
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	removeClass: function( value ) {
+		var classes, elem, cur, curValue, clazz, j, finalValue,
+			i = 0;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each( function( j ) {
+				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
+			} );
+		}
+
+		if ( !arguments.length ) {
+			return this.attr( "class", "" );
+		}
+
+		if ( typeof value === "string" && value ) {
+			classes = value.match( rnothtmlwhite ) || [];
+
+			while ( ( elem = this[ i++ ] ) ) {
+				curValue = getClass( elem );
+
+				// This expression is here for better compressibility (see addClass)
+				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+				if ( cur ) {
+					j = 0;
+					while ( ( clazz = classes[ j++ ] ) ) {
+
+						// Remove *all* instances
+						while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
+							cur = cur.replace( " " + clazz + " ", " " );
+						}
+					}
+
+					// Only assign if different to avoid unneeded rendering.
+					finalValue = stripAndCollapse( cur );
+					if ( curValue !== finalValue ) {
+						elem.setAttribute( "class", finalValue );
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	toggleClass: function( value, stateVal ) {
+		var type = typeof value;
+
+		if ( typeof stateVal === "boolean" && type === "string" ) {
+			return stateVal ? this.addClass( value ) : this.removeClass( value );
+		}
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each( function( i ) {
+				jQuery( this ).toggleClass(
+					value.call( this, i, getClass( this ), stateVal ),
+					stateVal
+				);
+			} );
+		}
+
+		return this.each( function() {
+			var className, i, self, classNames;
+
+			if ( type === "string" ) {
+
+				// Toggle individual class names
+				i = 0;
+				self = jQuery( this );
+				classNames = value.match( rnothtmlwhite ) || [];
+
+				while ( ( className = classNames[ i++ ] ) ) {
+
+					// Check each className given, space separated list
+					if ( self.hasClass( className ) ) {
+						self.removeClass( className );
+					} else {
+						self.addClass( className );
+					}
+				}
+
+			// Toggle whole class name
+			} else if ( value === undefined || type === "boolean" ) {
+				className = getClass( this );
+				if ( className ) {
+
+					// Store className if set
+					dataPriv.set( this, "__className__", className );
+				}
+
+				// If the element has a class name or if we're passed `false`,
+				// then remove the whole classname (if there was one, the above saved it).
+				// Otherwise bring back whatever was previously saved (if anything),
+				// falling back to the empty string if nothing was stored.
+				if ( this.setAttribute ) {
+					this.setAttribute( "class",
+						className || value === false ?
+						"" :
+						dataPriv.get( this, "__className__" ) || ""
+					);
+				}
+			}
+		} );
+	},
+
+	hasClass: function( selector ) {
+		var className, elem,
+			i = 0;
+
+		className = " " + selector + " ";
+		while ( ( elem = this[ i++ ] ) ) {
+			if ( elem.nodeType === 1 &&
+				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
+					return true;
+			}
+		}
+
+		return false;
+	}
+} );
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend( {
+	val: function( value ) {
+		var hooks, ret, isFunction,
+			elem = this[ 0 ];
+
+		if ( !arguments.length ) {
+			if ( elem ) {
+				hooks = jQuery.valHooks[ elem.type ] ||
+					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+				if ( hooks &&
+					"get" in hooks &&
+					( ret = hooks.get( elem, "value" ) ) !== undefined
+				) {
+					return ret;
+				}
+
+				ret = elem.value;
+
+				// Handle most common string cases
+				if ( typeof ret === "string" ) {
+					return ret.replace( rreturn, "" );
+				}
+
+				// Handle cases where value is null/undef or number
+				return ret == null ? "" : ret;
+			}
+
+			return;
+		}
+
+		isFunction = jQuery.isFunction( value );
+
+		return this.each( function( i ) {
+			var val;
+
+			if ( this.nodeType !== 1 ) {
+				return;
+			}
+
+			if ( isFunction ) {
+				val = value.call( this, i, jQuery( this ).val() );
+			} else {
+				val = value;
+			}
+
+			// Treat null/undefined as ""; convert numbers to string
+			if ( val == null ) {
+				val = "";
+
+			} else if ( typeof val === "number" ) {
+				val += "";
+
+			} else if ( Array.isArray( val ) ) {
+				val = jQuery.map( val, function( value ) {
+					return value == null ? "" : value + "";
+				} );
+			}
+
+			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+			// If set returns undefined, fall back to normal setting
+			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
+				this.value = val;
+			}
+		} );
+	}
+} );
+
+jQuery.extend( {
+	valHooks: {
+		option: {
+			get: function( elem ) {
+
+				var val = jQuery.find.attr( elem, "value" );
+				return val != null ?
+					val :
+
+					// Support: IE <=10 - 11 only
+					// option.text throws exceptions (#14686, #14858)
+					// Strip and collapse whitespace
+					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+					stripAndCollapse( jQuery.text( elem ) );
+			}
+		},
+		select: {
+			get: function( elem ) {
+				var value, option, i,
+					options = elem.options,
+					index = elem.selectedIndex,
+					one = elem.type === "select-one",
+					values = one ? null : [],
+					max = one ? index + 1 : options.length;
+
+				if ( index < 0 ) {
+					i = max;
+
+				} else {
+					i = one ? index : 0;
+				}
+
+				// Loop through all the selected options
+				for ( ; i < max; i++ ) {
+					option = options[ i ];
+
+					// Support: IE <=9 only
+					// IE8-9 doesn't update selected after form reset (#2551)
+					if ( ( option.selected || i === index ) &&
+
+							// Don't return options that are disabled or in a disabled optgroup
+							!option.disabled &&
+							( !option.parentNode.disabled ||
+								!nodeName( option.parentNode, "optgroup" ) ) ) {
+
+						// Get the specific value for the option
+						value = jQuery( option ).val();
+
+						// We don't need an array for one selects
+						if ( one ) {
+							return value;
+						}
+
+						// Multi-Selects return an array
+						values.push( value );
+					}
+				}
+
+				return values;
+			},
+
+			set: function( elem, value ) {
+				var optionSet, option,
+					options = elem.options,
+					values = jQuery.makeArray( value ),
+					i = options.length;
+
+				while ( i-- ) {
+					option = options[ i ];
+
+					/* eslint-disable no-cond-assign */
+
+					if ( option.selected =
+						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
+					) {
+						optionSet = true;
+					}
+
+					/* eslint-enable no-cond-assign */
+				}
+
+				// Force browsers to behave consistently when non-matching value is set
+				if ( !optionSet ) {
+					elem.selectedIndex = -1;
+				}
+				return values;
+			}
+		}
+	}
+} );
+
+// Radios and checkboxes getter/setter
+jQuery.each( [ "radio", "checkbox" ], function() {
+	jQuery.valHooks[ this ] = {
+		set: function( elem, value ) {
+			if ( Array.isArray( value ) ) {
+				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
+			}
+		}
+	};
+	if ( !support.checkOn ) {
+		jQuery.valHooks[ this ].get = function( elem ) {
+			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
+		};
+	}
+} );
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
+
+jQuery.extend( jQuery.event, {
+
+	trigger: function( event, data, elem, onlyHandlers ) {
+
+		var i, cur, tmp, bubbleType, ontype, handle, special,
+			eventPath = [ elem || document ],
+			type = hasOwn.call( event, "type" ) ? event.type : event,
+			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
+
+		cur = tmp = elem = elem || document;
+
+		// Don't do events on text and comment nodes
+		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+			return;
+		}
+
+		// focus/blur morphs to focusin/out; ensure we're not firing them right now
+		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+			return;
+		}
+
+		if ( type.indexOf( "." ) > -1 ) {
+
+			// Namespaced trigger; create a regexp to match event type in handle()
+			namespaces = type.split( "." );
+			type = namespaces.shift();
+			namespaces.sort();
+		}
+		ontype = type.indexOf( ":" ) < 0 && "on" + type;
+
+		// Caller can pass in a jQuery.Event object, Object, or just an event type string
+		event = event[ jQuery.expando ] ?
+			event :
+			new jQuery.Event( type, typeof event === "object" && event );
+
+		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+		event.isTrigger = onlyHandlers ? 2 : 3;
+		event.namespace = namespaces.join( "." );
+		event.rnamespace = event.namespace ?
+			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
+			null;
+
+		// Clean up the event in case it is being reused
+		event.result = undefined;
+		if ( !event.target ) {
+			event.target = elem;
+		}
+
+		// Clone any incoming data and prepend the event, creating the handler arg list
+		data = data == null ?
+			[ event ] :
+			jQuery.makeArray( data, [ event ] );
+
+		// Allow special events to draw outside the lines
+		special = jQuery.event.special[ type ] || {};
+		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+			return;
+		}
+
+		// Determine event propagation path in advance, per W3C events spec (#9951)
+		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+			bubbleType = special.delegateType || type;
+			if ( !rfocusMorph.test( bubbleType + type ) ) {
+				cur = cur.parentNode;
+			}
+			for ( ; cur; cur = cur.parentNode ) {
+				eventPath.push( cur );
+				tmp = cur;
+			}
+
+			// Only add window if we got to document (e.g., not plain obj or detached DOM)
+			if ( tmp === ( elem.ownerDocument || document ) ) {
+				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+			}
+		}
+
+		// Fire handlers on the event path
+		i = 0;
+		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
+
+			event.type = i > 1 ?
+				bubbleType :
+				special.bindType || type;
+
+			// jQuery handler
+			handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
+				dataPriv.get( cur, "handle" );
+			if ( handle ) {
+				handle.apply( cur, data );
+			}
+
+			// Native handler
+			handle = ontype && cur[ ontype ];
+			if ( handle && handle.apply && acceptData( cur ) ) {
+				event.result = handle.apply( cur, data );
+				if ( event.result === false ) {
+					event.preventDefault();
+				}
+			}
+		}
+		event.type = type;
+
+		// If nobody prevented the default action, do it now
+		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+			if ( ( !special._default ||
+				special._default.apply( eventPath.pop(), data ) === false ) &&
+				acceptData( elem ) ) {
+
+				// Call a native DOM method on the target with the same name as the event.
+				// Don't do default actions on window, that's where global variables be (#6170)
+				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+					// Don't re-trigger an onFOO event when we call its FOO() method
+					tmp = elem[ ontype ];
+
+					if ( tmp ) {
+						elem[ ontype ] = null;
+					}
+
+					// Prevent re-triggering of the same event, since we already bubbled it above
+					jQuery.event.triggered = type;
+					elem[ type ]();
+					jQuery.event.triggered = undefined;
+
+					if ( tmp ) {
+						elem[ ontype ] = tmp;
+					}
+				}
+			}
+		}
+
+		return event.result;
+	},
+
+	// Piggyback on a donor event to simulate a different one
+	// Used only for `focus(in | out)` events
+	simulate: function( type, elem, event ) {
+		var e = jQuery.extend(
+			new jQuery.Event(),
+			event,
+			{
+				type: type,
+				isSimulated: true
+			}
+		);
+
+		jQuery.event.trigger( e, null, elem );
+	}
+
+} );
+
+jQuery.fn.extend( {
+
+	trigger: function( type, data ) {
+		return this.each( function() {
+			jQuery.event.trigger( type, data, this );
+		} );
+	},
+	triggerHandler: function( type, data ) {
+		var elem = this[ 0 ];
+		if ( elem ) {
+			return jQuery.event.trigger( type, data, elem, true );
+		}
+	}
+} );
+
+
+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
+	function( i, name ) {
+
+	// Handle event binding
+	jQuery.fn[ name ] = function( data, fn ) {
+		return arguments.length > 0 ?
+			this.on( name, null, data, fn ) :
+			this.trigger( name );
+	};
+} );
+
+jQuery.fn.extend( {
+	hover: function( fnOver, fnOut ) {
+		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+	}
+} );
+
+
+
+
+support.focusin = "onfocusin" in window;
+
+
+// Support: Firefox <=44
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
+	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+		// Attach a single capturing handler on the document while someone wants focusin/focusout
+		var handler = function( event ) {
+			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
+		};
+
+		jQuery.event.special[ fix ] = {
+			setup: function() {
+				var doc = this.ownerDocument || this,
+					attaches = dataPriv.access( doc, fix );
+
+				if ( !attaches ) {
+					doc.addEventListener( orig, handler, true );
+				}
+				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
+			},
+			teardown: function() {
+				var doc = this.ownerDocument || this,
+					attaches = dataPriv.access( doc, fix ) - 1;
+
+				if ( !attaches ) {
+					doc.removeEventListener( orig, handler, true );
+					dataPriv.remove( doc, fix );
+
+				} else {
+					dataPriv.access( doc, fix, attaches );
+				}
+			}
+		};
+	} );
+}
+var location = window.location;
+
+var nonce = jQuery.now();
+
+var rquery = ( /\?/ );
+
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+	var xml;
+	if ( !data || typeof data !== "string" ) {
+		return null;
+	}
+
+	// Support: IE 9 - 11 only
+	// IE throws on parseFromString with invalid input.
+	try {
+		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
+	} catch ( e ) {
+		xml = undefined;
+	}
+
+	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+		jQuery.error( "Invalid XML: " + data );
+	}
+	return xml;
+};
+
+
+var
+	rbracket = /\[\]$/,
+	rCRLF = /\r?\n/g,
+	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+	rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+	var name;
+
+	if ( Array.isArray( obj ) ) {
+
+		// Serialize array item.
+		jQuery.each( obj, function( i, v ) {
+			if ( traditional || rbracket.test( prefix ) ) {
+
+				// Treat each array item as a scalar.
+				add( prefix, v );
+
+			} else {
+
+				// Item is non-scalar (array or object), encode its numeric index.
+				buildParams(
+					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
+					v,
+					traditional,
+					add
+				);
+			}
+		} );
+
+	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
+
+		// Serialize object item.
+		for ( name in obj ) {
+			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+		}
+
+	} else {
+
+		// Serialize scalar item.
+		add( prefix, obj );
+	}
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+	var prefix,
+		s = [],
+		add = function( key, valueOrFunction ) {
+
+			// If value is a function, invoke it and use its return value
+			var value = jQuery.isFunction( valueOrFunction ) ?
+				valueOrFunction() :
+				valueOrFunction;
+
+			s[ s.length ] = encodeURIComponent( key ) + "=" +
+				encodeURIComponent( value == null ? "" : value );
+		};
+
+	// If an array was passed in, assume that it is an array of form elements.
+	if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+
+		// Serialize the form elements
+		jQuery.each( a, function() {
+			add( this.name, this.value );
+		} );
+
+	} else {
+
+		// If traditional, encode the "old" way (the way 1.3.2 or older
+		// did it), otherwise encode params recursively.
+		for ( prefix in a ) {
+			buildParams( prefix, a[ prefix ], traditional, add );
+		}
+	}
+
+	// Return the resulting serialization
+	return s.join( "&" );
+};
+
+jQuery.fn.extend( {
+	serialize: function() {
+		return jQuery.param( this.serializeArray() );
+	},
+	serializeArray: function() {
+		return this.map( function() {
+
+			// Can add propHook for "elements" to filter or add form elements
+			var elements = jQuery.prop( this, "elements" );
+			return elements ? jQuery.makeArray( elements ) : this;
+		} )
+		.filter( function() {
+			var type = this.type;
+
+			// Use .is( ":disabled" ) so that fieldset[disabled] works
+			return this.name && !jQuery( this ).is( ":disabled" ) &&
+				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+				( this.checked || !rcheckableType.test( type ) );
+		} )
+		.map( function( i, elem ) {
+			var val = jQuery( this ).val();
+
+			if ( val == null ) {
+				return null;
+			}
+
+			if ( Array.isArray( val ) ) {
+				return jQuery.map( val, function( val ) {
+					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+				} );
+			}
+
+			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+		} ).get();
+	}
+} );
+
+
+var
+	r20 = /%20/g,
+	rhash = /#.*$/,
+	rantiCache = /([?&])_=[^&]*/,
+	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+
+	// #7653, #8125, #8152: local protocol detection
+	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+	rnoContent = /^(?:GET|HEAD)$/,
+	rprotocol = /^\/\//,
+
+	/* Prefilters
+	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+	 * 2) These are called:
+	 *    - BEFORE asking for a transport
+	 *    - AFTER param serialization (s.data is a string if s.processData is true)
+	 * 3) key is the dataType
+	 * 4) the catchall symbol "*" can be used
+	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+	 */
+	prefilters = {},
+
+	/* Transports bindings
+	 * 1) key is the dataType
+	 * 2) the catchall symbol "*" can be used
+	 * 3) selection will start with transport dataType and THEN go to "*" if needed
+	 */
+	transports = {},
+
+	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+	allTypes = "*/".concat( "*" ),
+
+	// Anchor tag for parsing the document origin
+	originAnchor = document.createElement( "a" );
+	originAnchor.href = location.href;
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+	// dataTypeExpression is optional and defaults to "*"
+	return function( dataTypeExpression, func ) {
+
+		if ( typeof dataTypeExpression !== "string" ) {
+			func = dataTypeExpression;
+			dataTypeExpression = "*";
+		}
+
+		var dataType,
+			i = 0,
+			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
+
+		if ( jQuery.isFunction( func ) ) {
+
+			// For each dataType in the dataTypeExpression
+			while ( ( dataType = dataTypes[ i++ ] ) ) {
+
+				// Prepend if requested
+				if ( dataType[ 0 ] === "+" ) {
+					dataType = dataType.slice( 1 ) || "*";
+					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
+
+				// Otherwise append
+				} else {
+					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
+				}
+			}
+		}
+	};
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+	var inspected = {},
+		seekingTransport = ( structure === transports );
+
+	function inspect( dataType ) {
+		var selected;
+		inspected[ dataType ] = true;
+		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+			if ( typeof dataTypeOrTransport === "string" &&
+				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+
+				options.dataTypes.unshift( dataTypeOrTransport );
+				inspect( dataTypeOrTransport );
+				return false;
+			} else if ( seekingTransport ) {
+				return !( selected = dataTypeOrTransport );
+			}
+		} );
+		return selected;
+	}
+
+	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+	var key, deep,
+		flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+	for ( key in src ) {
+		if ( src[ key ] !== undefined ) {
+			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+		}
+	}
+	if ( deep ) {
+		jQuery.extend( true, target, deep );
+	}
+
+	return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+	var ct, type, finalDataType, firstDataType,
+		contents = s.contents,
+		dataTypes = s.dataTypes;
+
+	// Remove auto dataType and get content-type in the process
+	while ( dataTypes[ 0 ] === "*" ) {
+		dataTypes.shift();
+		if ( ct === undefined ) {
+			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
+		}
+	}
+
+	// Check if we're dealing with a known content-type
+	if ( ct ) {
+		for ( type in contents ) {
+			if ( contents[ type ] && contents[ type ].test( ct ) ) {
+				dataTypes.unshift( type );
+				break;
+			}
+		}
+	}
+
+	// Check to see if we have a response for the expected dataType
+	if ( dataTypes[ 0 ] in responses ) {
+		finalDataType = dataTypes[ 0 ];
+	} else {
+
+		// Try convertible dataTypes
+		for ( type in responses ) {
+			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
+				finalDataType = type;
+				break;
+			}
+			if ( !firstDataType ) {
+				firstDataType = type;
+			}
+		}
+
+		// Or just use first one
+		finalDataType = finalDataType || firstDataType;
+	}
+
+	// If we found a dataType
+	// We add the dataType to the list if needed
+	// and return the corresponding response
+	if ( finalDataType ) {
+		if ( finalDataType !== dataTypes[ 0 ] ) {
+			dataTypes.unshift( finalDataType );
+		}
+		return responses[ finalDataType ];
+	}
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+	var conv2, current, conv, tmp, prev,
+		converters = {},
+
+		// Work with a copy of dataTypes in case we need to modify it for conversion
+		dataTypes = s.dataTypes.slice();
+
+	// Create converters map with lowercased keys
+	if ( dataTypes[ 1 ] ) {
+		for ( conv in s.converters ) {
+			converters[ conv.toLowerCase() ] = s.converters[ conv ];
+		}
+	}
+
+	current = dataTypes.shift();
+
+	// Convert to each sequential dataType
+	while ( current ) {
+
+		if ( s.responseFields[ current ] ) {
+			jqXHR[ s.responseFields[ current ] ] = response;
+		}
+
+		// Apply the dataFilter if provided
+		if ( !prev && isSuccess && s.dataFilter ) {
+			response = s.dataFilter( response, s.dataType );
+		}
+
+		prev = current;
+		current = dataTypes.shift();
+
+		if ( current ) {
+
+			// There's only work to do if current dataType is non-auto
+			if ( current === "*" ) {
+
+				current = prev;
+
+			// Convert response if prev dataType is non-auto and differs from current
+			} else if ( prev !== "*" && prev !== current ) {
+
+				// Seek a direct converter
+				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+				// If none found, seek a pair
+				if ( !conv ) {
+					for ( conv2 in converters ) {
+
+						// If conv2 outputs current
+						tmp = conv2.split( " " );
+						if ( tmp[ 1 ] === current ) {
+
+							// If prev can be converted to accepted input
+							conv = converters[ prev + " " + tmp[ 0 ] ] ||
+								converters[ "* " + tmp[ 0 ] ];
+							if ( conv ) {
+
+								// Condense equivalence converters
+								if ( conv === true ) {
+									conv = converters[ conv2 ];
+
+								// Otherwise, insert the intermediate dataType
+								} else if ( converters[ conv2 ] !== true ) {
+									current = tmp[ 0 ];
+									dataTypes.unshift( tmp[ 1 ] );
+								}
+								break;
+							}
+						}
+					}
+				}
+
+				// Apply converter (if not an equivalence)
+				if ( conv !== true ) {
+
+					// Unless errors are allowed to bubble, catch and return them
+					if ( conv && s.throws ) {
+						response = conv( response );
+					} else {
+						try {
+							response = conv( response );
+						} catch ( e ) {
+							return {
+								state: "parsererror",
+								error: conv ? e : "No conversion from " + prev + " to " + current
+							};
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return { state: "success", data: response };
+}
+
+jQuery.extend( {
+
+	// Counter for holding the number of active queries
+	active: 0,
+
+	// Last-Modified header cache for next request
+	lastModified: {},
+	etag: {},
+
+	ajaxSettings: {
+		url: location.href,
+		type: "GET",
+		isLocal: rlocalProtocol.test( location.protocol ),
+		global: true,
+		processData: true,
+		async: true,
+		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+
+		/*
+		timeout: 0,
+		data: null,
+		dataType: null,
+		username: null,
+		password: null,
+		cache: null,
+		throws: false,
+		traditional: false,
+		headers: {},
+		*/
+
+		accepts: {
+			"*": allTypes,
+			text: "text/plain",
+			html: "text/html",
+			xml: "application/xml, text/xml",
+			json: "application/json, text/javascript"
+		},
+
+		contents: {
+			xml: /\bxml\b/,
+			html: /\bhtml/,
+			json: /\bjson\b/
+		},
+
+		responseFields: {
+			xml: "responseXML",
+			text: "responseText",
+			json: "responseJSON"
+		},
+
+		// Data converters
+		// Keys separate source (or catchall "*") and destination types with a single space
+		converters: {
+
+			// Convert anything to text
+			"* text": String,
+
+			// Text to html (true = no transformation)
+			"text html": true,
+
+			// Evaluate text as a json expression
+			"text json": JSON.parse,
+
+			// Parse text as xml
+			"text xml": jQuery.parseXML
+		},
+
+		// For options that shouldn't be deep extended:
+		// you can add your own custom options here if
+		// and when you create one that shouldn't be
+		// deep extended (see ajaxExtend)
+		flatOptions: {
+			url: true,
+			context: true
+		}
+	},
+
+	// Creates a full fledged settings object into target
+	// with both ajaxSettings and settings fields.
+	// If target is omitted, writes into ajaxSettings.
+	ajaxSetup: function( target, settings ) {
+		return settings ?
+
+			// Building a settings object
+			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+			// Extending ajaxSettings
+			ajaxExtend( jQuery.ajaxSettings, target );
+	},
+
+	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+	ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+	// Main method
+	ajax: function( url, options ) {
+
+		// If url is an object, simulate pre-1.5 signature
+		if ( typeof url === "object" ) {
+			options = url;
+			url = undefined;
+		}
+
+		// Force options to be an object
+		options = options || {};
+
+		var transport,
+
+			// URL without anti-cache param
+			cacheURL,
+
+			// Response headers
+			responseHeadersString,
+			responseHeaders,
+
+			// timeout handle
+			timeoutTimer,
+
+			// Url cleanup var
+			urlAnchor,
+
+			// Request state (becomes false upon send and true upon completion)
+			completed,
+
+			// To know if global events are to be dispatched
+			fireGlobals,
+
+			// Loop variable
+			i,
+
+			// uncached part of the url
+			uncached,
+
+			// Create the final options object
+			s = jQuery.ajaxSetup( {}, options ),
+
+			// Callbacks context
+			callbackContext = s.context || s,
+
+			// Context for global events is callbackContext if it is a DOM node or jQuery collection
+			globalEventContext = s.context &&
+				( callbackContext.nodeType || callbackContext.jquery ) ?
+					jQuery( callbackContext ) :
+					jQuery.event,
+
+			// Deferreds
+			deferred = jQuery.Deferred(),
+			completeDeferred = jQuery.Callbacks( "once memory" ),
+
+			// Status-dependent callbacks
+			statusCode = s.statusCode || {},
+
+			// Headers (they are sent all at once)
+			requestHeaders = {},
+			requestHeadersNames = {},
+
+			// Default abort message
+			strAbort = "canceled",
+
+			// Fake xhr
+			jqXHR = {
+				readyState: 0,
+
+				// Builds headers hashtable if needed
+				getResponseHeader: function( key ) {
+					var match;
+					if ( completed ) {
+						if ( !responseHeaders ) {
+							responseHeaders = {};
+							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
+								responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
+							}
+						}
+						match = responseHeaders[ key.toLowerCase() ];
+					}
+					return match == null ? null : match;
+				},
+
+				// Raw string
+				getAllResponseHeaders: function() {
+					return completed ? responseHeadersString : null;
+				},
+
+				// Caches the header
+				setRequestHeader: function( name, value ) {
+					if ( completed == null ) {
+						name = requestHeadersNames[ name.toLowerCase() ] =
+							requestHeadersNames[ name.toLowerCase() ] || name;
+						requestHeaders[ name ] = value;
+					}
+					return this;
+				},
+
+				// Overrides response content-type header
+				overrideMimeType: function( type ) {
+					if ( completed == null ) {
+						s.mimeType = type;
+					}
+					return this;
+				},
+
+				// Status-dependent callbacks
+				statusCode: function( map ) {
+					var code;
+					if ( map ) {
+						if ( completed ) {
+
+							// Execute the appropriate callbacks
+							jqXHR.always( map[ jqXHR.status ] );
+						} else {
+
+							// Lazy-add the new callbacks in a way that preserves old ones
+							for ( code in map ) {
+								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+							}
+						}
+					}
+					return this;
+				},
+
+				// Cancel the request
+				abort: function( statusText ) {
+					var finalText = statusText || strAbort;
+					if ( transport ) {
+						transport.abort( finalText );
+					}
+					done( 0, finalText );
+					return this;
+				}
+			};
+
+		// Attach deferreds
+		deferred.promise( jqXHR );
+
+		// Add protocol if not provided (prefilters might expect it)
+		// Handle falsy url in the settings object (#10093: consistency with old signature)
+		// We also use the url parameter if available
+		s.url = ( ( url || s.url || location.href ) + "" )
+			.replace( rprotocol, location.protocol + "//" );
+
+		// Alias method option to type as per ticket #12004
+		s.type = options.method || options.type || s.method || s.type;
+
+		// Extract dataTypes list
+		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
+
+		// A cross-domain request is in order when the origin doesn't match the current origin.
+		if ( s.crossDomain == null ) {
+			urlAnchor = document.createElement( "a" );
+
+			// Support: IE <=8 - 11, Edge 12 - 13
+			// IE throws exception on accessing the href property if url is malformed,
+			// e.g. http://example.com:80x/
+			try {
+				urlAnchor.href = s.url;
+
+				// Support: IE <=8 - 11 only
+				// Anchor's host property isn't correctly set when s.url is relative
+				urlAnchor.href = urlAnchor.href;
+				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
+					urlAnchor.protocol + "//" + urlAnchor.host;
+			} catch ( e ) {
+
+				// If there is an error parsing the URL, assume it is crossDomain,
+				// it can be rejected by the transport if it is invalid
+				s.crossDomain = true;
+			}
+		}
+
+		// Convert data if not already a string
+		if ( s.data && s.processData && typeof s.data !== "string" ) {
+			s.data = jQuery.param( s.data, s.traditional );
+		}
+
+		// Apply prefilters
+		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+		// If request was aborted inside a prefilter, stop there
+		if ( completed ) {
+			return jqXHR;
+		}
+
+		// We can fire global events as of now if asked to
+		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+		fireGlobals = jQuery.event && s.global;
+
+		// Watch for a new set of requests
+		if ( fireGlobals && jQuery.active++ === 0 ) {
+			jQuery.event.trigger( "ajaxStart" );
+		}
+
+		// Uppercase the type
+		s.type = s.type.toUpperCase();
+
+		// Determine if request has content
+		s.hasContent = !rnoContent.test( s.type );
+
+		// Save the URL in case we're toying with the If-Modified-Since
+		// and/or If-None-Match header later on
+		// Remove hash to simplify url manipulation
+		cacheURL = s.url.replace( rhash, "" );
+
+		// More options handling for requests with no content
+		if ( !s.hasContent ) {
+
+			// Remember the hash so we can put it back
+			uncached = s.url.slice( cacheURL.length );
+
+			// If data is available, append data to url
+			if ( s.data ) {
+				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
+
+				// #9682: remove data so that it's not used in an eventual retry
+				delete s.data;
+			}
+
+			// Add or update anti-cache param if needed
+			if ( s.cache === false ) {
+				cacheURL = cacheURL.replace( rantiCache, "$1" );
+				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
+			}
+
+			// Put hash and anti-cache on the URL that will be requested (gh-1732)
+			s.url = cacheURL + uncached;
+
+		// Change '%20' to '+' if this is encoded form body content (gh-2658)
+		} else if ( s.data && s.processData &&
+			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
+			s.data = s.data.replace( r20, "+" );
+		}
+
+		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+		if ( s.ifModified ) {
+			if ( jQuery.lastModified[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+			}
+			if ( jQuery.etag[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+			}
+		}
+
+		// Set the correct header, if data is being sent
+		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+			jqXHR.setRequestHeader( "Content-Type", s.contentType );
+		}
+
+		// Set the Accepts header for the server, depending on the dataType
+		jqXHR.setRequestHeader(
+			"Accept",
+			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
+				s.accepts[ s.dataTypes[ 0 ] ] +
+					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+				s.accepts[ "*" ]
+		);
+
+		// Check for headers option
+		for ( i in s.headers ) {
+			jqXHR.setRequestHeader( i, s.headers[ i ] );
+		}
+
+		// Allow custom headers/mimetypes and early abort
+		if ( s.beforeSend &&
+			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
+
+			// Abort if not done already and return
+			return jqXHR.abort();
+		}
+
+		// Aborting is no longer a cancellation
+		strAbort = "abort";
+
+		// Install callbacks on deferreds
+		completeDeferred.add( s.complete );
+		jqXHR.done( s.success );
+		jqXHR.fail( s.error );
+
+		// Get transport
+		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+		// If no transport, we auto-abort
+		if ( !transport ) {
+			done( -1, "No Transport" );
+		} else {
+			jqXHR.readyState = 1;
+
+			// Send global event
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+			}
+
+			// If request was aborted inside ajaxSend, stop there
+			if ( completed ) {
+				return jqXHR;
+			}
+
+			// Timeout
+			if ( s.async && s.timeout > 0 ) {
+				timeoutTimer = window.setTimeout( function() {
+					jqXHR.abort( "timeout" );
+				}, s.timeout );
+			}
+
+			try {
+				completed = false;
+				transport.send( requestHeaders, done );
+			} catch ( e ) {
+
+				// Rethrow post-completion exceptions
+				if ( completed ) {
+					throw e;
+				}
+
+				// Propagate others as results
+				done( -1, e );
+			}
+		}
+
+		// Callback for when everything is done
+		function done( status, nativeStatusText, responses, headers ) {
+			var isSuccess, success, error, response, modified,
+				statusText = nativeStatusText;
+
+			// Ignore repeat invocations
+			if ( completed ) {
+				return;
+			}
+
+			completed = true;
+
+			// Clear timeout if it exists
+			if ( timeoutTimer ) {
+				window.clearTimeout( timeoutTimer );
+			}
+
+			// Dereference transport for early garbage collection
+			// (no matter how long the jqXHR object will be used)
+			transport = undefined;
+
+			// Cache response headers
+			responseHeadersString = headers || "";
+
+			// Set readyState
+			jqXHR.readyState = status > 0 ? 4 : 0;
+
+			// Determine if successful
+			isSuccess = status >= 200 && status < 300 || status === 304;
+
+			// Get response data
+			if ( responses ) {
+				response = ajaxHandleResponses( s, jqXHR, responses );
+			}
+
+			// Convert no matter what (that way responseXXX fields are always set)
+			response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+			// If successful, handle type chaining
+			if ( isSuccess ) {
+
+				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+				if ( s.ifModified ) {
+					modified = jqXHR.getResponseHeader( "Last-Modified" );
+					if ( modified ) {
+						jQuery.lastModified[ cacheURL ] = modified;
+					}
+					modified = jqXHR.getResponseHeader( "etag" );
+					if ( modified ) {
+						jQuery.etag[ cacheURL ] = modified;
+					}
+				}
+
+				// if no content
+				if ( status === 204 || s.type === "HEAD" ) {
+					statusText = "nocontent";
+
+				// if not modified
+				} else if ( status === 304 ) {
+					statusText = "notmodified";
+
+				// If we have data, let's convert it
+				} else {
+					statusText = response.state;
+					success = response.data;
+					error = response.error;
+					isSuccess = !error;
+				}
+			} else {
+
+				// Extract error from statusText and normalize for non-aborts
+				error = statusText;
+				if ( status || !statusText ) {
+					statusText = "error";
+					if ( status < 0 ) {
+						status = 0;
+					}
+				}
+			}
+
+			// Set data for the fake xhr object
+			jqXHR.status = status;
+			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+			// Success/Error
+			if ( isSuccess ) {
+				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+			} else {
+				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+			}
+
+			// Status-dependent callbacks
+			jqXHR.statusCode( statusCode );
+			statusCode = undefined;
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+					[ jqXHR, s, isSuccess ? success : error ] );
+			}
+
+			// Complete
+			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+
+				// Handle the global AJAX counter
+				if ( !( --jQuery.active ) ) {
+					jQuery.event.trigger( "ajaxStop" );
+				}
+			}
+		}
+
+		return jqXHR;
+	},
+
+	getJSON: function( url, data, callback ) {
+		return jQuery.get( url, data, callback, "json" );
+	},
+
+	getScript: function( url, callback ) {
+		return jQuery.get( url, undefined, callback, "script" );
+	}
+} );
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+	jQuery[ method ] = function( url, data, callback, type ) {
+
+		// Shift arguments if data argument was omitted
+		if ( jQuery.isFunction( data ) ) {
+			type = type || callback;
+			callback = data;
+			data = undefined;
+		}
+
+		// The url can be an options object (which then must have .url)
+		return jQuery.ajax( jQuery.extend( {
+			url: url,
+			type: method,
+			dataType: type,
+			data: data,
+			success: callback
+		}, jQuery.isPlainObject( url ) && url ) );
+	};
+} );
+
+
+jQuery._evalUrl = function( url ) {
+	return jQuery.ajax( {
+		url: url,
+
+		// Make this explicit, since user can override this through ajaxSetup (#11264)
+		type: "GET",
+		dataType: "script",
+		cache: true,
+		async: false,
+		global: false,
+		"throws": true
+	} );
+};
+
+
+jQuery.fn.extend( {
+	wrapAll: function( html ) {
+		var wrap;
+
+		if ( this[ 0 ] ) {
+			if ( jQuery.isFunction( html ) ) {
+				html = html.call( this[ 0 ] );
+			}
+
+			// The elements to wrap the target around
+			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+			if ( this[ 0 ].parentNode ) {
+				wrap.insertBefore( this[ 0 ] );
+			}
+
+			wrap.map( function() {
+				var elem = this;
+
+				while ( elem.firstElementChild ) {
+					elem = elem.firstElementChild;
+				}
+
+				return elem;
+			} ).append( this );
+		}
+
+		return this;
+	},
+
+	wrapInner: function( html ) {
+		if ( jQuery.isFunction( html ) ) {
+			return this.each( function( i ) {
+				jQuery( this ).wrapInner( html.call( this, i ) );
+			} );
+		}
+
+		return this.each( function() {
+			var self = jQuery( this ),
+				contents = self.contents();
+
+			if ( contents.length ) {
+				contents.wrapAll( html );
+
+			} else {
+				self.append( html );
+			}
+		} );
+	},
+
+	wrap: function( html ) {
+		var isFunction = jQuery.isFunction( html );
+
+		return this.each( function( i ) {
+			jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
+		} );
+	},
+
+	unwrap: function( selector ) {
+		this.parent( selector ).not( "body" ).each( function() {
+			jQuery( this ).replaceWith( this.childNodes );
+		} );
+		return this;
+	}
+} );
+
+
+jQuery.expr.pseudos.hidden = function( elem ) {
+	return !jQuery.expr.pseudos.visible( elem );
+};
+jQuery.expr.pseudos.visible = function( elem ) {
+	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
+};
+
+
+
+
+jQuery.ajaxSettings.xhr = function() {
+	try {
+		return new window.XMLHttpRequest();
+	} catch ( e ) {}
+};
+
+var xhrSuccessStatus = {
+
+		// File protocol always yields status code 0, assume 200
+		0: 200,
+
+		// Support: IE <=9 only
+		// #1450: sometimes IE returns 1223 when it should be 204
+		1223: 204
+	},
+	xhrSupported = jQuery.ajaxSettings.xhr();
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport( function( options ) {
+	var callback, errorCallback;
+
+	// Cross domain only allowed if supported through XMLHttpRequest
+	if ( support.cors || xhrSupported && !options.crossDomain ) {
+		return {
+			send: function( headers, complete ) {
+				var i,
+					xhr = options.xhr();
+
+				xhr.open(
+					options.type,
+					options.url,
+					options.async,
+					options.username,
+					options.password
+				);
+
+				// Apply custom fields if provided
+				if ( options.xhrFields ) {
+					for ( i in options.xhrFields ) {
+						xhr[ i ] = options.xhrFields[ i ];
+					}
+				}
+
+				// Override mime type if needed
+				if ( options.mimeType && xhr.overrideMimeType ) {
+					xhr.overrideMimeType( options.mimeType );
+				}
+
+				// X-Requested-With header
+				// For cross-domain requests, seeing as conditions for a preflight are
+				// akin to a jigsaw puzzle, we simply never set it to be sure.
+				// (it can always be set on a per-request basis or even using ajaxSetup)
+				// For same-domain requests, won't change header if already provided.
+				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
+					headers[ "X-Requested-With" ] = "XMLHttpRequest";
+				}
+
+				// Set headers
+				for ( i in headers ) {
+					xhr.setRequestHeader( i, headers[ i ] );
+				}
+
+				// Callback
+				callback = function( type ) {
+					return function() {
+						if ( callback ) {
+							callback = errorCallback = xhr.onload =
+								xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
+
+							if ( type === "abort" ) {
+								xhr.abort();
+							} else if ( type === "error" ) {
+
+								// Support: IE <=9 only
+								// On a manual native abort, IE9 throws
+								// errors on any property access that is not readyState
+								if ( typeof xhr.status !== "number" ) {
+									complete( 0, "error" );
+								} else {
+									complete(
+
+										// File: protocol always yields status 0; see #8605, #14207
+										xhr.status,
+										xhr.statusText
+									);
+								}
+							} else {
+								complete(
+									xhrSuccessStatus[ xhr.status ] || xhr.status,
+									xhr.statusText,
+
+									// Support: IE <=9 only
+									// IE9 has no XHR2 but throws on binary (trac-11426)
+									// For XHR2 non-text, let the caller handle it (gh-2498)
+									( xhr.responseType || "text" ) !== "text"  ||
+									typeof xhr.responseText !== "string" ?
+										{ binary: xhr.response } :
+										{ text: xhr.responseText },
+									xhr.getAllResponseHeaders()
+								);
+							}
+						}
+					};
+				};
+
+				// Listen to events
+				xhr.onload = callback();
+				errorCallback = xhr.onerror = callback( "error" );
+
+				// Support: IE 9 only
+				// Use onreadystatechange to replace onabort
+				// to handle uncaught aborts
+				if ( xhr.onabort !== undefined ) {
+					xhr.onabort = errorCallback;
+				} else {
+					xhr.onreadystatechange = function() {
+
+						// Check readyState before timeout as it changes
+						if ( xhr.readyState === 4 ) {
+
+							// Allow onerror to be called first,
+							// but that will not handle a native abort
+							// Also, save errorCallback to a variable
+							// as xhr.onerror cannot be accessed
+							window.setTimeout( function() {
+								if ( callback ) {
+									errorCallback();
+								}
+							} );
+						}
+					};
+				}
+
+				// Create the abort callback
+				callback = callback( "abort" );
+
+				try {
+
+					// Do send the request (this may raise an exception)
+					xhr.send( options.hasContent && options.data || null );
+				} catch ( e ) {
+
+					// #14683: Only rethrow if this hasn't been notified as an error yet
+					if ( callback ) {
+						throw e;
+					}
+				}
+			},
+
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+} );
+
+
+
+
+// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
+jQuery.ajaxPrefilter( function( s ) {
+	if ( s.crossDomain ) {
+		s.contents.script = false;
+	}
+} );
+
+// Install script dataType
+jQuery.ajaxSetup( {
+	accepts: {
+		script: "text/javascript, application/javascript, " +
+			"application/ecmascript, application/x-ecmascript"
+	},
+	contents: {
+		script: /\b(?:java|ecma)script\b/
+	},
+	converters: {
+		"text script": function( text ) {
+			jQuery.globalEval( text );
+			return text;
+		}
+	}
+} );
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+	if ( s.cache === undefined ) {
+		s.cache = false;
+	}
+	if ( s.crossDomain ) {
+		s.type = "GET";
+	}
+} );
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+
+	// This transport only deals with cross domain requests
+	if ( s.crossDomain ) {
+		var script, callback;
+		return {
+			send: function( _, complete ) {
+				script = jQuery( "<script>" ).prop( {
+					charset: s.scriptCharset,
+					src: s.url
+				} ).on(
+					"load error",
+					callback = function( evt ) {
+						script.remove();
+						callback = null;
+						if ( evt ) {
+							complete( evt.type === "error" ? 404 : 200, evt.type );
+						}
+					}
+				);
+
+				// Use native DOM manipulation to avoid our domManip AJAX trickery
+				document.head.appendChild( script[ 0 ] );
+			},
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+} );
+
+
+
+
+var oldCallbacks = [],
+	rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup( {
+	jsonp: "callback",
+	jsonpCallback: function() {
+		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+		this[ callback ] = true;
+		return callback;
+	}
+} );
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+	var callbackName, overwritten, responseContainer,
+		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+			"url" :
+			typeof s.data === "string" &&
+				( s.contentType || "" )
+					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+				rjsonp.test( s.data ) && "data"
+		);
+
+	// Handle iff the expected data type is "jsonp" or we have a parameter to set
+	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+		// Get callback name, remembering preexisting value associated with it
+		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+			s.jsonpCallback() :
+			s.jsonpCallback;
+
+		// Insert callback into url or form data
+		if ( jsonProp ) {
+			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+		} else if ( s.jsonp !== false ) {
+			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+		}
+
+		// Use data converter to retrieve json after script execution
+		s.converters[ "script json" ] = function() {
+			if ( !responseContainer ) {
+				jQuery.error( callbackName + " was not called" );
+			}
+			return responseContainer[ 0 ];
+		};
+
+		// Force json dataType
+		s.dataTypes[ 0 ] = "json";
+
+		// Install callback
+		overwritten = window[ callbackName ];
+		window[ callbackName ] = function() {
+			responseContainer = arguments;
+		};
+
+		// Clean-up function (fires after converters)
+		jqXHR.always( function() {
+
+			// If previous value didn't exist - remove it
+			if ( overwritten === undefined ) {
+				jQuery( window ).removeProp( callbackName );
+
+			// Otherwise restore preexisting value
+			} else {
+				window[ callbackName ] = overwritten;
+			}
+
+			// Save back as free
+			if ( s[ callbackName ] ) {
+
+				// Make sure that re-using the options doesn't screw things around
+				s.jsonpCallback = originalSettings.jsonpCallback;
+
+				// Save the callback name for future use
+				oldCallbacks.push( callbackName );
+			}
+
+			// Call if it was a function and we have a response
+			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+				overwritten( responseContainer[ 0 ] );
+			}
+
+			responseContainer = overwritten = undefined;
+		} );
+
+		// Delegate to script
+		return "script";
+	}
+} );
+
+
+
+
+// Support: Safari 8 only
+// In Safari 8 documents created via document.implementation.createHTMLDocument
+// collapse sibling forms: the second one becomes a child of the first one.
+// Because of that, this security measure has to be disabled in Safari 8.
+// https://bugs.webkit.org/show_bug.cgi?id=137337
+support.createHTMLDocument = ( function() {
+	var body = document.implementation.createHTMLDocument( "" ).body;
+	body.innerHTML = "<form></form><form></form>";
+	return body.childNodes.length === 2;
+} )();
+
+
+// Argument "data" should be string of html
+// context (optional): If specified, the fragment will be created in this context,
+// defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+	if ( typeof data !== "string" ) {
+		return [];
+	}
+	if ( typeof context === "boolean" ) {
+		keepScripts = context;
+		context = false;
+	}
+
+	var base, parsed, scripts;
+
+	if ( !context ) {
+
+		// Stop scripts or inline event handlers from being executed immediately
+		// by using document.implementation
+		if ( support.createHTMLDocument ) {
+			context = document.implementation.createHTMLDocument( "" );
+
+			// Set the base href for the created document
+			// so any parsed elements with URLs
+			// are based on the document's URL (gh-2965)
+			base = context.createElement( "base" );
+			base.href = document.location.href;
+			context.head.appendChild( base );
+		} else {
+			context = document;
+		}
+	}
+
+	parsed = rsingleTag.exec( data );
+	scripts = !keepScripts && [];
+
+	// Single tag
+	if ( parsed ) {
+		return [ context.createElement( parsed[ 1 ] ) ];
+	}
+
+	parsed = buildFragment( [ data ], context, scripts );
+
+	if ( scripts && scripts.length ) {
+		jQuery( scripts ).remove();
+	}
+
+	return jQuery.merge( [], parsed.childNodes );
+};
+
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+	var selector, type, response,
+		self = this,
+		off = url.indexOf( " " );
+
+	if ( off > -1 ) {
+		selector = stripAndCollapse( url.slice( off ) );
+		url = url.slice( 0, off );
+	}
+
+	// If it's a function
+	if ( jQuery.isFunction( params ) ) {
+
+		// We assume that it's the callback
+		callback = params;
+		params = undefined;
+
+	// Otherwise, build a param string
+	} else if ( params && typeof params === "object" ) {
+		type = "POST";
+	}
+
+	// If we have elements to modify, make the request
+	if ( self.length > 0 ) {
+		jQuery.ajax( {
+			url: url,
+
+			// If "type" variable is undefined, then "GET" method will be used.
+			// Make value of this field explicit since
+			// user can override it through ajaxSetup method
+			type: type || "GET",
+			dataType: "html",
+			data: params
+		} ).done( function( responseText ) {
+
+			// Save response for use in complete callback
+			response = arguments;
+
+			self.html( selector ?
+
+				// If a selector was specified, locate the right elements in a dummy div
+				// Exclude scripts to avoid IE 'Permission Denied' errors
+				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+				// Otherwise use the full result
+				responseText );
+
+		// If the request succeeds, this function gets "data", "status", "jqXHR"
+		// but they are ignored because response was set above.
+		// If it fails, this function gets "jqXHR", "status", "error"
+		} ).always( callback && function( jqXHR, status ) {
+			self.each( function() {
+				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
+			} );
+		} );
+	}
+
+	return this;
+};
+
+
+
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [
+	"ajaxStart",
+	"ajaxStop",
+	"ajaxComplete",
+	"ajaxError",
+	"ajaxSuccess",
+	"ajaxSend"
+], function( i, type ) {
+	jQuery.fn[ type ] = function( fn ) {
+		return this.on( type, fn );
+	};
+} );
+
+
+
+
+jQuery.expr.pseudos.animated = function( elem ) {
+	return jQuery.grep( jQuery.timers, function( fn ) {
+		return elem === fn.elem;
+	} ).length;
+};
+
+
+
+
+jQuery.offset = {
+	setOffset: function( elem, options, i ) {
+		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+			position = jQuery.css( elem, "position" ),
+			curElem = jQuery( elem ),
+			props = {};
+
+		// Set position first, in-case top/left are set even on static elem
+		if ( position === "static" ) {
+			elem.style.position = "relative";
+		}
+
+		curOffset = curElem.offset();
+		curCSSTop = jQuery.css( elem, "top" );
+		curCSSLeft = jQuery.css( elem, "left" );
+		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
+
+		// Need to be able to calculate position if either
+		// top or left is auto and position is either absolute or fixed
+		if ( calculatePosition ) {
+			curPosition = curElem.position();
+			curTop = curPosition.top;
+			curLeft = curPosition.left;
+
+		} else {
+			curTop = parseFloat( curCSSTop ) || 0;
+			curLeft = parseFloat( curCSSLeft ) || 0;
+		}
+
+		if ( jQuery.isFunction( options ) ) {
+
+			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
+		}
+
+		if ( options.top != null ) {
+			props.top = ( options.top - curOffset.top ) + curTop;
+		}
+		if ( options.left != null ) {
+			props.left = ( options.left - curOffset.left ) + curLeft;
+		}
+
+		if ( "using" in options ) {
+			options.using.call( elem, props );
+
+		} else {
+			curElem.css( props );
+		}
+	}
+};
+
+jQuery.fn.extend( {
+	offset: function( options ) {
+
+		// Preserve chaining for setter
+		if ( arguments.length ) {
+			return options === undefined ?
+				this :
+				this.each( function( i ) {
+					jQuery.offset.setOffset( this, options, i );
+				} );
+		}
+
+		var doc, docElem, rect, win,
+			elem = this[ 0 ];
+
+		if ( !elem ) {
+			return;
+		}
+
+		// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
+		// Support: IE <=11 only
+		// Running getBoundingClientRect on a
+		// disconnected node in IE throws an error
+		if ( !elem.getClientRects().length ) {
+			return { top: 0, left: 0 };
+		}
+
+		rect = elem.getBoundingClientRect();
+
+		doc = elem.ownerDocument;
+		docElem = doc.documentElement;
+		win = doc.defaultView;
+
+		return {
+			top: rect.top + win.pageYOffset - docElem.clientTop,
+			left: rect.left + win.pageXOffset - docElem.clientLeft
+		};
+	},
+
+	position: function() {
+		if ( !this[ 0 ] ) {
+			return;
+		}
+
+		var offsetParent, offset,
+			elem = this[ 0 ],
+			parentOffset = { top: 0, left: 0 };
+
+		// Fixed elements are offset from window (parentOffset = {top:0, left: 0},
+		// because it is its only offset parent
+		if ( jQuery.css( elem, "position" ) === "fixed" ) {
+
+			// Assume getBoundingClientRect is there when computed position is fixed
+			offset = elem.getBoundingClientRect();
+
+		} else {
+
+			// Get *real* offsetParent
+			offsetParent = this.offsetParent();
+
+			// Get correct offsets
+			offset = this.offset();
+			if ( !nodeName( offsetParent[ 0 ], "html" ) ) {
+				parentOffset = offsetParent.offset();
+			}
+
+			// Add offsetParent borders
+			parentOffset = {
+				top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
+				left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
+			};
+		}
+
+		// Subtract parent offsets and element margins
+		return {
+			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+		};
+	},
+
+	// This method will return documentElement in the following cases:
+	// 1) For the element inside the iframe without offsetParent, this method will return
+	//    documentElement of the parent window
+	// 2) For the hidden or detached element
+	// 3) For body or html element, i.e. in case of the html node - it will return itself
+	//
+	// but those exceptions were never presented as a real life use-cases
+	// and might be considered as more preferable results.
+	//
+	// This logic, however, is not guaranteed and can change at any point in the future
+	offsetParent: function() {
+		return this.map( function() {
+			var offsetParent = this.offsetParent;
+
+			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
+				offsetParent = offsetParent.offsetParent;
+			}
+
+			return offsetParent || documentElement;
+		} );
+	}
+} );
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+	var top = "pageYOffset" === prop;
+
+	jQuery.fn[ method ] = function( val ) {
+		return access( this, function( elem, method, val ) {
+
+			// Coalesce documents and windows
+			var win;
+			if ( jQuery.isWindow( elem ) ) {
+				win = elem;
+			} else if ( elem.nodeType === 9 ) {
+				win = elem.defaultView;
+			}
+
+			if ( val === undefined ) {
+				return win ? win[ prop ] : elem[ method ];
+			}
+
+			if ( win ) {
+				win.scrollTo(
+					!top ? val : win.pageXOffset,
+					top ? val : win.pageYOffset
+				);
+
+			} else {
+				elem[ method ] = val;
+			}
+		}, method, val, arguments.length );
+	};
+} );
+
+// Support: Safari <=7 - 9.1, Chrome <=37 - 49
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+		function( elem, computed ) {
+			if ( computed ) {
+				computed = curCSS( elem, prop );
+
+				// If curCSS returns percentage, fallback to offset
+				return rnumnonpx.test( computed ) ?
+					jQuery( elem ).position()[ prop ] + "px" :
+					computed;
+			}
+		}
+	);
+} );
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
+		function( defaultExtra, funcName ) {
+
+		// Margin is only for outerHeight, outerWidth
+		jQuery.fn[ funcName ] = function( margin, value ) {
+			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+			return access( this, function( elem, type, value ) {
+				var doc;
+
+				if ( jQuery.isWindow( elem ) ) {
+
+					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
+					return funcName.indexOf( "outer" ) === 0 ?
+						elem[ "inner" + name ] :
+						elem.document.documentElement[ "client" + name ];
+				}
+
+				// Get document width or height
+				if ( elem.nodeType === 9 ) {
+					doc = elem.documentElement;
+
+					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+					// whichever is greatest
+					return Math.max(
+						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+						elem.body[ "offset" + name ], doc[ "offset" + name ],
+						doc[ "client" + name ]
+					);
+				}
+
+				return value === undefined ?
+
+					// Get width or height on the element, requesting but not forcing parseFloat
+					jQuery.css( elem, type, extra ) :
+
+					// Set width or height on the element
+					jQuery.style( elem, type, value, extra );
+			}, type, chainable ? margin : undefined, chainable );
+		};
+	} );
+} );
+
+
+jQuery.fn.extend( {
+
+	bind: function( types, data, fn ) {
+		return this.on( types, null, data, fn );
+	},
+	unbind: function( types, fn ) {
+		return this.off( types, null, fn );
+	},
+
+	delegate: function( selector, types, data, fn ) {
+		return this.on( types, selector, data, fn );
+	},
+	undelegate: function( selector, types, fn ) {
+
+		// ( namespace ) or ( selector, types [, fn] )
+		return arguments.length === 1 ?
+			this.off( selector, "**" ) :
+			this.off( types, selector || "**", fn );
+	}
+} );
+
+jQuery.holdReady = function( hold ) {
+	if ( hold ) {
+		jQuery.readyWait++;
+	} else {
+		jQuery.ready( true );
+	}
+};
+jQuery.isArray = Array.isArray;
+jQuery.parseJSON = JSON.parse;
+jQuery.nodeName = nodeName;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+	define( "jquery", [], function() {
+		return jQuery;
+	} );
+}
+
+
+
+
+var
+
+	// Map over jQuery in case of overwrite
+	_jQuery = window.jQuery,
+
+	// Map over the $ in case of overwrite
+	_$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+	if ( window.$ === jQuery ) {
+		window.$ = _$;
+	}
+
+	if ( deep && window.jQuery === jQuery ) {
+		window.jQuery = _jQuery;
+	}
+
+	return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( !noGlobal ) {
+	window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+return jQuery;
+} );
diff --git a/src/doc/3.11.11/_static/jquery.js b/src/doc/3.11.11/_static/jquery.js
new file mode 100644
index 0000000..644d35e
--- /dev/null
+++ b/src/doc/3.11.11/_static/jquery.js
@@ -0,0 +1,4 @@
+/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),
+a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function $(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Z,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=W.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ba=new RegExp("^(?:([+-])=|)("+aa+")([a-z%]*)$","i"),ca=["Top","Right","Bottom","Left"],da=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ea=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=W.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&da(d)&&(e[f]=ha(d))):"none"!==c&&(e[f]="none",W.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],"globalEval",!b||W.get(b[c],"globalEval"))}var pa=/<|&#?\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ka.exec(f)||["",""])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&B(this,"input"))return this.click(),!1},_default:function(a){return B(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,Ca=/^true\/(.*)/,Da=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ja.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||"")&&!W.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,""),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,"script"),g.length>0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp("^("+aa+")(?!px)[a-z%]+$","i"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",ra.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:"absolute",visibility:"hidden",display:"block"},Ta={letterSpacing:"0",fontWeight:"400"},Ua=["Webkit","Moz","ms"],Va=d.createElement("div").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ca[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ca[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ca[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ca[f]+"Width",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g="border-box"===r.css(a,"boxSizing",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),"auto"===f&&(f=a["offset"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?"border":"content"),d,e)+"px")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,"string"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(j[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),"normal"===e&&b in Ta&&(e=Ta[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=ba.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,"marginLeft"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&da(a),q=W.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],cb.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=W.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ia([a],!0),j=a.style.display||j,k=r.css(a,"display"),ia([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=W.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ia([a],!0),m.done(function(){p||ia([a]),W.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=hb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],Array.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=kb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=ab||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(i||h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:ab||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);f<g;f++)if(d=kb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,hb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j}r.Animation=r.extend(kb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return fa(c.elem,a,ba.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(L);for(var c,d=0,e=a.length;d<e;d++)c=a[d],kb.tweeners[c]=kb.tweeners[c]||[],kb.tweeners[c].unshift(b)},prefilters:[ib],prefilter:function(a,b){b?kb.prefilters.unshift(a):kb.prefilters.push(a)}}),r.speed=function(a,b,c){var d=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off?d.duration=0:"number"!=typeof d.duration&&(d.duration in r.fx.speeds?d.duration=r.fx.speeds[d.duration]:d.duration=r.fx.speeds._default),null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){r.isFunction(d.old)&&d.old.call(this),d.queue&&r.dequeue(this,d.queue)},d},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(da).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=kb(this,r.extend({},a),f);(e||W.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=W.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&db.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=W.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),r.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(ab=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),ab=void 0},r.fx.timer=function(a){r.timers.push(a),r.fx.start()},r.fx.interval=13,r.fx.start=function(){bb||(bb=!0,eb())},r.fx.stop=function(){bb=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var lb,mb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),
+null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Tb=[],Ub=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Tb.pop()||r.expando+"_"+ub++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Ub.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ub.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Ub,"$1"+e):b.jsonp!==!1&&(b.url+=(vb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Tb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=pb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Vb=a.jQuery,Wb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Wb),b&&a.jQuery===r&&(a.jQuery=Vb),r},b||(a.jQuery=a.$=r),r});
diff --git a/src/doc/3.11.11/_static/language_data.js b/src/doc/3.11.11/_static/language_data.js
new file mode 100644
index 0000000..5266fb1
--- /dev/null
+++ b/src/doc/3.11.11/_static/language_data.js
@@ -0,0 +1,297 @@
+/*
+ * language_data.js
+ * ~~~~~~~~~~~~~~~~
+ *
+ * This script contains the language-specific data used by searchtools.js,
+ * namely the list of stopwords, stemmer, scorer and splitter.
+ *
+ * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
+
+
+/* Non-minified version JS is _stemmer.js if file is provided */ 
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+  var step2list = {
+    ational: 'ate',
+    tional: 'tion',
+    enci: 'ence',
+    anci: 'ance',
+    izer: 'ize',
+    bli: 'ble',
+    alli: 'al',
+    entli: 'ent',
+    eli: 'e',
+    ousli: 'ous',
+    ization: 'ize',
+    ation: 'ate',
+    ator: 'ate',
+    alism: 'al',
+    iveness: 'ive',
+    fulness: 'ful',
+    ousness: 'ous',
+    aliti: 'al',
+    iviti: 'ive',
+    biliti: 'ble',
+    logi: 'log'
+  };
+
+  var step3list = {
+    icate: 'ic',
+    ative: '',
+    alize: 'al',
+    iciti: 'ic',
+    ical: 'ic',
+    ful: '',
+    ness: ''
+  };
+
+  var c = "[^aeiou]";          // consonant
+  var v = "[aeiouy]";          // vowel
+  var C = c + "[^aeiouy]*";    // consonant sequence
+  var V = v + "[aeiou]*";      // vowel sequence
+
+  var mgr0 = "^(" + C + ")?" + V + C;                      // [C]VC... is m>0
+  var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$";    // [C]VC[V] is m=1
+  var mgr1 = "^(" + C + ")?" + V + C + V + C;              // [C]VCVC... is m>1
+  var s_v   = "^(" + C + ")?" + v;                         // vowel in stem
+
+  this.stemWord = function (w) {
+    var stem;
+    var suffix;
+    var firstch;
+    var origword = w;
+
+    if (w.length < 3)
+      return w;
+
+    var re;
+    var re2;
+    var re3;
+    var re4;
+
+    firstch = w.substr(0,1);
+    if (firstch == "y")
+      w = firstch.toUpperCase() + w.substr(1);
+
+    // Step 1a
+    re = /^(.+?)(ss|i)es$/;
+    re2 = /^(.+?)([^s])s$/;
+
+    if (re.test(w))
+      w = w.replace(re,"$1$2");
+    else if (re2.test(w))
+      w = w.replace(re2,"$1$2");
+
+    // Step 1b
+    re = /^(.+?)eed$/;
+    re2 = /^(.+?)(ed|ing)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      re = new RegExp(mgr0);
+      if (re.test(fp[1])) {
+        re = /.$/;
+        w = w.replace(re,"");
+      }
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1];
+      re2 = new RegExp(s_v);
+      if (re2.test(stem)) {
+        w = stem;
+        re2 = /(at|bl|iz)$/;
+        re3 = new RegExp("([^aeiouylsz])\\1$");
+        re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+        if (re2.test(w))
+          w = w + "e";
+        else if (re3.test(w)) {
+          re = /.$/;
+          w = w.replace(re,"");
+        }
+        else if (re4.test(w))
+          w = w + "e";
+      }
+    }
+
+    // Step 1c
+    re = /^(.+?)y$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(s_v);
+      if (re.test(stem))
+        w = stem + "i";
+    }
+
+    // Step 2
+    re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step2list[suffix];
+    }
+
+    // Step 3
+    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step3list[suffix];
+    }
+
+    // Step 4
+    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+    re2 = /^(.+?)(s|t)(ion)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      if (re.test(stem))
+        w = stem;
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1] + fp[2];
+      re2 = new RegExp(mgr1);
+      if (re2.test(stem))
+        w = stem;
+    }
+
+    // Step 5
+    re = /^(.+?)e$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      re2 = new RegExp(meq1);
+      re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+        w = stem;
+    }
+    re = /ll$/;
+    re2 = new RegExp(mgr1);
+    if (re.test(w) && re2.test(w)) {
+      re = /.$/;
+      w = w.replace(re,"");
+    }
+
+    // and turn initial Y back to y
+    if (firstch == "y")
+      w = firstch.toLowerCase() + w.substr(1);
+    return w;
+  }
+}
+
+
+
+
+
+var splitChars = (function() {
+    var result = {};
+    var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
+         1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
+         2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
+         2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
+         3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
+         3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
+         4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
+         8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
+         11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
+         43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
+    var i, j, start, end;
+    for (i = 0; i < singles.length; i++) {
+        result[singles[i]] = true;
+    }
+    var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
+         [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
+         [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
+         [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
+         [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
+         [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
+         [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
+         [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
+         [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
+         [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
+         [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
+         [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
+         [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
+         [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
+         [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
+         [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
+         [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
+         [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
+         [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
+         [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
+         [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
+         [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
+         [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
+         [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
+         [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
+         [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
+         [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
+         [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
+         [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
+         [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
+         [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
+         [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
+         [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
+         [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
+         [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
+         [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
+         [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
+         [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
+         [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
+         [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
+         [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
+         [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
+         [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
+         [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
+         [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
+         [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
+         [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
+         [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
+         [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
+    for (i = 0; i < ranges.length; i++) {
+        start = ranges[i][0];
+        end = ranges[i][1];
+        for (j = start; j <= end; j++) {
+            result[j] = true;
+        }
+    }
+    return result;
+})();
+
+function splitQuery(query) {
+    var result = [];
+    var start = -1;
+    for (var i = 0; i < query.length; i++) {
+        if (splitChars[query.charCodeAt(i)]) {
+            if (start !== -1) {
+                result.push(query.slice(start, i));
+                start = -1;
+            }
+        } else if (start === -1) {
+            start = i;
+        }
+    }
+    if (start !== -1) {
+        result.push(query.slice(start));
+    }
+    return result;
+}
+
+
diff --git a/src/doc/3.11.11/_static/minus.png b/src/doc/3.11.11/_static/minus.png
new file mode 100644
index 0000000..d96755f
--- /dev/null
+++ b/src/doc/3.11.11/_static/minus.png
Binary files differ
diff --git a/src/doc/3.11.11/_static/plus.png b/src/doc/3.11.11/_static/plus.png
new file mode 100644
index 0000000..7107cec
--- /dev/null
+++ b/src/doc/3.11.11/_static/plus.png
Binary files differ
diff --git a/src/doc/3.11.11/_static/pygments.css b/src/doc/3.11.11/_static/pygments.css
new file mode 100644
index 0000000..20c4814
--- /dev/null
+++ b/src/doc/3.11.11/_static/pygments.css
@@ -0,0 +1,69 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #eeffcc; }
+.highlight .c { color: #408090; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #333333 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #208050 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #208050 } /* Literal.Number.Bin */
+.highlight .mf { color: #208050 } /* Literal.Number.Float */
+.highlight .mh { color: #208050 } /* Literal.Number.Hex */
+.highlight .mi { color: #208050 } /* Literal.Number.Integer */
+.highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #06287e } /* Name.Function.Magic */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
+.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/src/doc/3.11.11/_static/searchtools.js b/src/doc/3.11.11/_static/searchtools.js
new file mode 100644
index 0000000..5ff3180
--- /dev/null
+++ b/src/doc/3.11.11/_static/searchtools.js
@@ -0,0 +1,481 @@
+/*
+ * searchtools.js
+ * ~~~~~~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for the full-text search.
+ *
+ * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+if (!Scorer) {
+  /**
+   * Simple result scoring code.
+   */
+  var Scorer = {
+    // Implement the following function to further tweak the score for each result
+    // The function takes a result array [filename, title, anchor, descr, score]
+    // and returns the new score.
+    /*
+    score: function(result) {
+      return result[4];
+    },
+    */
+
+    // query matches the full name of an object
+    objNameMatch: 11,
+    // or matches in the last dotted part of the object name
+    objPartialMatch: 6,
+    // Additive scores depending on the priority of the object
+    objPrio: {0:  15,   // used to be importantResults
+              1:  5,   // used to be objectResults
+              2: -5},  // used to be unimportantResults
+    //  Used when the priority is not in the mapping.
+    objPrioDefault: 0,
+
+    // query found in title
+    title: 15,
+    // query found in terms
+    term: 5
+  };
+}
+
+if (!splitQuery) {
+  function splitQuery(query) {
+    return query.split(/\s+/);
+  }
+}
+
+/**
+ * Search Module
+ */
+var Search = {
+
+  _index : null,
+  _queued_query : null,
+  _pulse_status : -1,
+
+  init : function() {
+      var params = $.getQueryParameters();
+      if (params.q) {
+          var query = params.q[0];
+          $('input[name="q"]')[0].value = query;
+          this.performSearch(query);
+      }
+  },
+
+  loadIndex : function(url) {
+    $.ajax({type: "GET", url: url, data: null,
+            dataType: "script", cache: true,
+            complete: function(jqxhr, textstatus) {
+              if (textstatus != "success") {
+                document.getElementById("searchindexloader").src = url;
+              }
+            }});
+  },
+
+  setIndex : function(index) {
+    var q;
+    this._index = index;
+    if ((q = this._queued_query) !== null) {
+      this._queued_query = null;
+      Search.query(q);
+    }
+  },
+
+  hasIndex : function() {
+      return this._index !== null;
+  },
+
+  deferQuery : function(query) {
+      this._queued_query = query;
+  },
+
+  stopPulse : function() {
+      this._pulse_status = 0;
+  },
+
+  startPulse : function() {
+    if (this._pulse_status >= 0)
+        return;
+    function pulse() {
+      var i;
+      Search._pulse_status = (Search._pulse_status + 1) % 4;
+      var dotString = '';
+      for (i = 0; i < Search._pulse_status; i++)
+        dotString += '.';
+      Search.dots.text(dotString);
+      if (Search._pulse_status > -1)
+        window.setTimeout(pulse, 500);
+    }
+    pulse();
+  },
+
+  /**
+   * perform a search for something (or wait until index is loaded)
+   */
+  performSearch : function(query) {
+    // create the required interface elements
+    this.out = $('#search-results');
+    this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
+    this.dots = $('<span></span>').appendTo(this.title);
+    this.status = $('<p style="display: none"></p>').appendTo(this.out);
+    this.output = $('<ul class="search"/>').appendTo(this.out);
+
+    $('#search-progress').text(_('Preparing search...'));
+    this.startPulse();
+
+    // index already loaded, the browser was quick!
+    if (this.hasIndex())
+      this.query(query);
+    else
+      this.deferQuery(query);
+  },
+
+  /**
+   * execute search (requires search index to be loaded)
+   */
+  query : function(query) {
+    var i;
+
+    // stem the searchterms and add them to the correct list
+    var stemmer = new Stemmer();
+    var searchterms = [];
+    var excluded = [];
+    var hlterms = [];
+    var tmp = splitQuery(query);
+    var objectterms = [];
+    for (i = 0; i < tmp.length; i++) {
+      if (tmp[i] !== "") {
+          objectterms.push(tmp[i].toLowerCase());
+      }
+
+      if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
+          tmp[i] === "") {
+        // skip this "word"
+        continue;
+      }
+      // stem the word
+      var word = stemmer.stemWord(tmp[i].toLowerCase());
+      // prevent stemmer from cutting word smaller than two chars
+      if(word.length < 3 && tmp[i].length >= 3) {
+        word = tmp[i];
+      }
+      var toAppend;
+      // select the correct list
+      if (word[0] == '-') {
+        toAppend = excluded;
+        word = word.substr(1);
+      }
+      else {
+        toAppend = searchterms;
+        hlterms.push(tmp[i].toLowerCase());
+      }
+      // only add if not already in the list
+      if (!$u.contains(toAppend, word))
+        toAppend.push(word);
+    }
+    var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
+
+    // console.debug('SEARCH: searching for:');
+    // console.info('required: ', searchterms);
+    // console.info('excluded: ', excluded);
+
+    // prepare search
+    var terms = this._index.terms;
+    var titleterms = this._index.titleterms;
+
+    // array of [filename, title, anchor, descr, score]
+    var results = [];
+    $('#search-progress').empty();
+
+    // lookup as object
+    for (i = 0; i < objectterms.length; i++) {
+      var others = [].concat(objectterms.slice(0, i),
+                             objectterms.slice(i+1, objectterms.length));
+      results = results.concat(this.performObjectSearch(objectterms[i], others));
+    }
+
+    // lookup as search terms in fulltext
+    results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
+
+    // let the scorer override scores with a custom scoring function
+    if (Scorer.score) {
+      for (i = 0; i < results.length; i++)
+        results[i][4] = Scorer.score(results[i]);
+    }
+
+    // now sort the results by score (in opposite order of appearance, since the
+    // display function below uses pop() to retrieve items) and then
+    // alphabetically
+    results.sort(function(a, b) {
+      var left = a[4];
+      var right = b[4];
+      if (left > right) {
+        return 1;
+      } else if (left < right) {
+        return -1;
+      } else {
+        // same score: sort alphabetically
+        left = a[1].toLowerCase();
+        right = b[1].toLowerCase();
+        return (left > right) ? -1 : ((left < right) ? 1 : 0);
+      }
+    });
+
+    // for debugging
+    //Search.lastresults = results.slice();  // a copy
+    //console.info('search results:', Search.lastresults);
+
+    // print the results
+    var resultCount = results.length;
+    function displayNextItem() {
+      // results left, load the summary and display it
+      if (results.length) {
+        var item = results.pop();
+        var listItem = $('<li style="display:none"></li>');
+        if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
+          // dirhtml builder
+          var dirname = item[0] + '/';
+          if (dirname.match(/\/index\/$/)) {
+            dirname = dirname.substring(0, dirname.length-6);
+          } else if (dirname == 'index/') {
+            dirname = '';
+          }
+          listItem.append($('<a/>').attr('href',
+            DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
+            highlightstring + item[2]).html(item[1]));
+        } else {
+          // normal html builders
+          listItem.append($('<a/>').attr('href',
+            item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
+            highlightstring + item[2]).html(item[1]));
+        }
+        if (item[3]) {
+          listItem.append($('<span> (' + item[3] + ')</span>'));
+          Search.output.append(listItem);
+          listItem.slideDown(5, function() {
+            displayNextItem();
+          });
+        } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
+          var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
+          if (suffix === undefined) {
+            suffix = '.txt';
+          }
+          $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
+                  dataType: "text",
+                  complete: function(jqxhr, textstatus) {
+                    var data = jqxhr.responseText;
+                    if (data !== '' && data !== undefined) {
+                      listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
+                    }
+                    Search.output.append(listItem);
+                    listItem.slideDown(5, function() {
+                      displayNextItem();
+                    });
+                  }});
+        } else {
+          // no source available, just display title
+          Search.output.append(listItem);
+          listItem.slideDown(5, function() {
+            displayNextItem();
+          });
+        }
+      }
+      // search finished, update title and status message
+      else {
+        Search.stopPulse();
+        Search.title.text(_('Search Results'));
+        if (!resultCount)
+          Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
+        else
+            Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
+        Search.status.fadeIn(500);
+      }
+    }
+    displayNextItem();
+  },
+
+  /**
+   * search for object names
+   */
+  performObjectSearch : function(object, otherterms) {
+    var filenames = this._index.filenames;
+    var docnames = this._index.docnames;
+    var objects = this._index.objects;
+    var objnames = this._index.objnames;
+    var titles = this._index.titles;
+
+    var i;
+    var results = [];
+
+    for (var prefix in objects) {
+      for (var name in objects[prefix]) {
+        var fullname = (prefix ? prefix + '.' : '') + name;
+        if (fullname.toLowerCase().indexOf(object) > -1) {
+          var score = 0;
+          var parts = fullname.split('.');
+          // check for different match types: exact matches of full name or
+          // "last name" (i.e. last dotted part)
+          if (fullname == object || parts[parts.length - 1] == object) {
+            score += Scorer.objNameMatch;
+          // matches in last name
+          } else if (parts[parts.length - 1].indexOf(object) > -1) {
+            score += Scorer.objPartialMatch;
+          }
+          var match = objects[prefix][name];
+          var objname = objnames[match[1]][2];
+          var title = titles[match[0]];
+          // If more than one term searched for, we require other words to be
+          // found in the name/title/description
+          if (otherterms.length > 0) {
+            var haystack = (prefix + ' ' + name + ' ' +
+                            objname + ' ' + title).toLowerCase();
+            var allfound = true;
+            for (i = 0; i < otherterms.length; i++) {
+              if (haystack.indexOf(otherterms[i]) == -1) {
+                allfound = false;
+                break;
+              }
+            }
+            if (!allfound) {
+              continue;
+            }
+          }
+          var descr = objname + _(', in ') + title;
+
+          var anchor = match[3];
+          if (anchor === '')
+            anchor = fullname;
+          else if (anchor == '-')
+            anchor = objnames[match[1]][1] + '-' + fullname;
+          // add custom score for some objects according to scorer
+          if (Scorer.objPrio.hasOwnProperty(match[2])) {
+            score += Scorer.objPrio[match[2]];
+          } else {
+            score += Scorer.objPrioDefault;
+          }
+          results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
+        }
+      }
+    }
+
+    return results;
+  },
+
+  /**
+   * search for full-text terms in the index
+   */
+  performTermsSearch : function(searchterms, excluded, terms, titleterms) {
+    var docnames = this._index.docnames;
+    var filenames = this._index.filenames;
+    var titles = this._index.titles;
+
+    var i, j, file;
+    var fileMap = {};
+    var scoreMap = {};
+    var results = [];
+
+    // perform the search on the required terms
+    for (i = 0; i < searchterms.length; i++) {
+      var word = searchterms[i];
+      var files = [];
+      var _o = [
+        {files: terms[word], score: Scorer.term},
+        {files: titleterms[word], score: Scorer.title}
+      ];
+
+      // no match but word was a required one
+      if ($u.every(_o, function(o){return o.files === undefined;})) {
+        break;
+      }
+      // found search word in contents
+      $u.each(_o, function(o) {
+        var _files = o.files;
+        if (_files === undefined)
+          return
+
+        if (_files.length === undefined)
+          _files = [_files];
+        files = files.concat(_files);
+
+        // set score for the word in each file to Scorer.term
+        for (j = 0; j < _files.length; j++) {
+          file = _files[j];
+          if (!(file in scoreMap))
+            scoreMap[file] = {}
+          scoreMap[file][word] = o.score;
+        }
+      });
+
+      // create the mapping
+      for (j = 0; j < files.length; j++) {
+        file = files[j];
+        if (file in fileMap)
+          fileMap[file].push(word);
+        else
+          fileMap[file] = [word];
+      }
+    }
+
+    // now check if the files don't contain excluded terms
+    for (file in fileMap) {
+      var valid = true;
+
+      // check if all requirements are matched
+      if (fileMap[file].length != searchterms.length)
+          continue;
+
+      // ensure that none of the excluded terms is in the search result
+      for (i = 0; i < excluded.length; i++) {
+        if (terms[excluded[i]] == file ||
+            titleterms[excluded[i]] == file ||
+            $u.contains(terms[excluded[i]] || [], file) ||
+            $u.contains(titleterms[excluded[i]] || [], file)) {
+          valid = false;
+          break;
+        }
+      }
+
+      // if we have still a valid result we can add it to the result list
+      if (valid) {
+        // select one (max) score for the file.
+        // for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
+        var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
+        results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
+      }
+    }
+    return results;
+  },
+
+  /**
+   * helper function to return a node containing the
+   * search summary for a given text. keywords is a list
+   * of stemmed words, hlwords is the list of normal, unstemmed
+   * words. the first one is used to find the occurrence, the
+   * latter for highlighting it.
+   */
+  makeSearchSummary : function(text, keywords, hlwords) {
+    var textLower = text.toLowerCase();
+    var start = 0;
+    $.each(keywords, function() {
+      var i = textLower.indexOf(this.toLowerCase());
+      if (i > -1)
+        start = i;
+    });
+    start = Math.max(start - 120, 0);
+    var excerpt = ((start > 0) ? '...' : '') +
+      $.trim(text.substr(start, 240)) +
+      ((start + 240 - text.length) ? '...' : '');
+    var rv = $('<div class="context"></div>').text(excerpt);
+    $.each(hlwords, function() {
+      rv = rv.highlightText(this, 'highlighted');
+    });
+    return rv;
+  }
+};
+
+$(document).ready(function() {
+  Search.init();
+});
diff --git a/src/doc/3.11.11/_static/underscore-1.3.1.js b/src/doc/3.11.11/_static/underscore-1.3.1.js
new file mode 100644
index 0000000..208d4cd
--- /dev/null
+++ b/src/doc/3.11.11/_static/underscore-1.3.1.js
@@ -0,0 +1,999 @@
+//     Underscore.js 1.3.1
+//     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+//     Underscore is freely distributable under the MIT license.
+//     Portions of Underscore are inspired or borrowed from Prototype,
+//     Oliver Steele's Functional, and John Resig's Micro-Templating.
+//     For all details and documentation:
+//     http://documentcloud.github.com/underscore
+
+(function() {
+
+  // Baseline setup
+  // --------------
+
+  // Establish the root object, `window` in the browser, or `global` on the server.
+  var root = this;
+
+  // Save the previous value of the `_` variable.
+  var previousUnderscore = root._;
+
+  // Establish the object that gets returned to break out of a loop iteration.
+  var breaker = {};
+
+  // Save bytes in the minified (but not gzipped) version:
+  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
+  // Create quick reference variables for speed access to core prototypes.
+  var slice            = ArrayProto.slice,
+      unshift          = ArrayProto.unshift,
+      toString         = ObjProto.toString,
+      hasOwnProperty   = ObjProto.hasOwnProperty;
+
+  // All **ECMAScript 5** native function implementations that we hope to use
+  // are declared here.
+  var
+    nativeForEach      = ArrayProto.forEach,
+    nativeMap          = ArrayProto.map,
+    nativeReduce       = ArrayProto.reduce,
+    nativeReduceRight  = ArrayProto.reduceRight,
+    nativeFilter       = ArrayProto.filter,
+    nativeEvery        = ArrayProto.every,
+    nativeSome         = ArrayProto.some,
+    nativeIndexOf      = ArrayProto.indexOf,
+    nativeLastIndexOf  = ArrayProto.lastIndexOf,
+    nativeIsArray      = Array.isArray,
+    nativeKeys         = Object.keys,
+    nativeBind         = FuncProto.bind;
+
+  // Create a safe reference to the Underscore object for use below.
+  var _ = function(obj) { return new wrapper(obj); };
+
+  // Export the Underscore object for **Node.js**, with
+  // backwards-compatibility for the old `require()` API. If we're in
+  // the browser, add `_` as a global object via a string identifier,
+  // for Closure Compiler "advanced" mode.
+  if (typeof exports !== 'undefined') {
+    if (typeof module !== 'undefined' && module.exports) {
+      exports = module.exports = _;
+    }
+    exports._ = _;
+  } else {
+    root['_'] = _;
+  }
+
+  // Current version.
+  _.VERSION = '1.3.1';
+
+  // Collection Functions
+  // --------------------
+
+  // The cornerstone, an `each` implementation, aka `forEach`.
+  // Handles objects with the built-in `forEach`, arrays, and raw objects.
+  // Delegates to **ECMAScript 5**'s native `forEach` if available.
+  var each = _.each = _.forEach = function(obj, iterator, context) {
+    if (obj == null) return;
+    if (nativeForEach && obj.forEach === nativeForEach) {
+      obj.forEach(iterator, context);
+    } else if (obj.length === +obj.length) {
+      for (var i = 0, l = obj.length; i < l; i++) {
+        if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
+      }
+    } else {
+      for (var key in obj) {
+        if (_.has(obj, key)) {
+          if (iterator.call(context, obj[key], key, obj) === breaker) return;
+        }
+      }
+    }
+  };
+
+  // Return the results of applying the iterator to each element.
+  // Delegates to **ECMAScript 5**'s native `map` if available.
+  _.map = _.collect = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
+    each(obj, function(value, index, list) {
+      results[results.length] = iterator.call(context, value, index, list);
+    });
+    if (obj.length === +obj.length) results.length = obj.length;
+    return results;
+  };
+
+  // **Reduce** builds up a single result from a list of values, aka `inject`,
+  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
+  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduce && obj.reduce === nativeReduce) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
+    }
+    each(obj, function(value, index, list) {
+      if (!initial) {
+        memo = value;
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, value, index, list);
+      }
+    });
+    if (!initial) throw new TypeError('Reduce of empty array with no initial value');
+    return memo;
+  };
+
+  // The right-associative version of reduce, also known as `foldr`.
+  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
+  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
+    }
+    var reversed = _.toArray(obj).reverse();
+    if (context && !initial) iterator = _.bind(iterator, context);
+    return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);
+  };
+
+  // Return the first value which passes a truth test. Aliased as `detect`.
+  _.find = _.detect = function(obj, iterator, context) {
+    var result;
+    any(obj, function(value, index, list) {
+      if (iterator.call(context, value, index, list)) {
+        result = value;
+        return true;
+      }
+    });
+    return result;
+  };
+
+  // Return all the elements that pass a truth test.
+  // Delegates to **ECMAScript 5**'s native `filter` if available.
+  // Aliased as `select`.
+  _.filter = _.select = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
+    each(obj, function(value, index, list) {
+      if (iterator.call(context, value, index, list)) results[results.length] = value;
+    });
+    return results;
+  };
+
+  // Return all the elements for which a truth test fails.
+  _.reject = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    each(obj, function(value, index, list) {
+      if (!iterator.call(context, value, index, list)) results[results.length] = value;
+    });
+    return results;
+  };
+
+  // Determine whether all of the elements match a truth test.
+  // Delegates to **ECMAScript 5**'s native `every` if available.
+  // Aliased as `all`.
+  _.every = _.all = function(obj, iterator, context) {
+    var result = true;
+    if (obj == null) return result;
+    if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
+    each(obj, function(value, index, list) {
+      if (!(result = result && iterator.call(context, value, index, list))) return breaker;
+    });
+    return result;
+  };
+
+  // Determine if at least one element in the object matches a truth test.
+  // Delegates to **ECMAScript 5**'s native `some` if available.
+  // Aliased as `any`.
+  var any = _.some = _.any = function(obj, iterator, context) {
+    iterator || (iterator = _.identity);
+    var result = false;
+    if (obj == null) return result;
+    if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
+    each(obj, function(value, index, list) {
+      if (result || (result = iterator.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if a given value is included in the array or object using `===`.
+  // Aliased as `contains`.
+  _.include = _.contains = function(obj, target) {
+    var found = false;
+    if (obj == null) return found;
+    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
+    found = any(obj, function(value) {
+      return value === target;
+    });
+    return found;
+  };
+
+  // Invoke a method (with arguments) on every item in a collection.
+  _.invoke = function(obj, method) {
+    var args = slice.call(arguments, 2);
+    return _.map(obj, function(value) {
+      return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
+    });
+  };
+
+  // Convenience version of a common use case of `map`: fetching a property.
+  _.pluck = function(obj, key) {
+    return _.map(obj, function(value){ return value[key]; });
+  };
+
+  // Return the maximum element or (element-based computation).
+  _.max = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj);
+    if (!iterator && _.isEmpty(obj)) return -Infinity;
+    var result = {computed : -Infinity};
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      computed >= result.computed && (result = {value : value, computed : computed});
+    });
+    return result.value;
+  };
+
+  // Return the minimum element (or element-based computation).
+  _.min = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj);
+    if (!iterator && _.isEmpty(obj)) return Infinity;
+    var result = {computed : Infinity};
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      computed < result.computed && (result = {value : value, computed : computed});
+    });
+    return result.value;
+  };
+
+  // Shuffle an array.
+  _.shuffle = function(obj) {
+    var shuffled = [], rand;
+    each(obj, function(value, index, list) {
+      if (index == 0) {
+        shuffled[0] = value;
+      } else {
+        rand = Math.floor(Math.random() * (index + 1));
+        shuffled[index] = shuffled[rand];
+        shuffled[rand] = value;
+      }
+    });
+    return shuffled;
+  };
+
+  // Sort the object's values by a criterion produced by an iterator.
+  _.sortBy = function(obj, iterator, context) {
+    return _.pluck(_.map(obj, function(value, index, list) {
+      return {
+        value : value,
+        criteria : iterator.call(context, value, index, list)
+      };
+    }).sort(function(left, right) {
+      var a = left.criteria, b = right.criteria;
+      return a < b ? -1 : a > b ? 1 : 0;
+    }), 'value');
+  };
+
+  // Groups the object's values by a criterion. Pass either a string attribute
+  // to group by, or a function that returns the criterion.
+  _.groupBy = function(obj, val) {
+    var result = {};
+    var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
+    each(obj, function(value, index) {
+      var key = iterator(value, index);
+      (result[key] || (result[key] = [])).push(value);
+    });
+    return result;
+  };
+
+  // Use a comparator function to figure out at what index an object should
+  // be inserted so as to maintain order. Uses binary search.
+  _.sortedIndex = function(array, obj, iterator) {
+    iterator || (iterator = _.identity);
+    var low = 0, high = array.length;
+    while (low < high) {
+      var mid = (low + high) >> 1;
+      iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
+    }
+    return low;
+  };
+
+  // Safely convert anything iterable into a real, live array.
+  _.toArray = function(iterable) {
+    if (!iterable)                return [];
+    if (iterable.toArray)         return iterable.toArray();
+    if (_.isArray(iterable))      return slice.call(iterable);
+    if (_.isArguments(iterable))  return slice.call(iterable);
+    return _.values(iterable);
+  };
+
+  // Return the number of elements in an object.
+  _.size = function(obj) {
+    return _.toArray(obj).length;
+  };
+
+  // Array Functions
+  // ---------------
+
+  // Get the first element of an array. Passing **n** will return the first N
+  // values in the array. Aliased as `head`. The **guard** check allows it to work
+  // with `_.map`.
+  _.first = _.head = function(array, n, guard) {
+    return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
+  };
+
+  // Returns everything but the last entry of the array. Especcialy useful on
+  // the arguments object. Passing **n** will return all the values in
+  // the array, excluding the last N. The **guard** check allows it to work with
+  // `_.map`.
+  _.initial = function(array, n, guard) {
+    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
+  };
+
+  // Get the last element of an array. Passing **n** will return the last N
+  // values in the array. The **guard** check allows it to work with `_.map`.
+  _.last = function(array, n, guard) {
+    if ((n != null) && !guard) {
+      return slice.call(array, Math.max(array.length - n, 0));
+    } else {
+      return array[array.length - 1];
+    }
+  };
+
+  // Returns everything but the first entry of the array. Aliased as `tail`.
+  // Especially useful on the arguments object. Passing an **index** will return
+  // the rest of the values in the array from that index onward. The **guard**
+  // check allows it to work with `_.map`.
+  _.rest = _.tail = function(array, index, guard) {
+    return slice.call(array, (index == null) || guard ? 1 : index);
+  };
+
+  // Trim out all falsy values from an array.
+  _.compact = function(array) {
+    return _.filter(array, function(value){ return !!value; });
+  };
+
+  // Return a completely flattened version of an array.
+  _.flatten = function(array, shallow) {
+    return _.reduce(array, function(memo, value) {
+      if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));
+      memo[memo.length] = value;
+      return memo;
+    }, []);
+  };
+
+  // Return a version of the array that does not contain the specified value(s).
+  _.without = function(array) {
+    return _.difference(array, slice.call(arguments, 1));
+  };
+
+  // Produce a duplicate-free version of the array. If the array has already
+  // been sorted, you have the option of using a faster algorithm.
+  // Aliased as `unique`.
+  _.uniq = _.unique = function(array, isSorted, iterator) {
+    var initial = iterator ? _.map(array, iterator) : array;
+    var result = [];
+    _.reduce(initial, function(memo, el, i) {
+      if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) {
+        memo[memo.length] = el;
+        result[result.length] = array[i];
+      }
+      return memo;
+    }, []);
+    return result;
+  };
+
+  // Produce an array that contains the union: each distinct element from all of
+  // the passed-in arrays.
+  _.union = function() {
+    return _.uniq(_.flatten(arguments, true));
+  };
+
+  // Produce an array that contains every item shared between all the
+  // passed-in arrays. (Aliased as "intersect" for back-compat.)
+  _.intersection = _.intersect = function(array) {
+    var rest = slice.call(arguments, 1);
+    return _.filter(_.uniq(array), function(item) {
+      return _.every(rest, function(other) {
+        return _.indexOf(other, item) >= 0;
+      });
+    });
+  };
+
+  // Take the difference between one array and a number of other arrays.
+  // Only the elements present in just the first array will remain.
+  _.difference = function(array) {
+    var rest = _.flatten(slice.call(arguments, 1));
+    return _.filter(array, function(value){ return !_.include(rest, value); });
+  };
+
+  // Zip together multiple lists into a single array -- elements that share
+  // an index go together.
+  _.zip = function() {
+    var args = slice.call(arguments);
+    var length = _.max(_.pluck(args, 'length'));
+    var results = new Array(length);
+    for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
+    return results;
+  };
+
+  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
+  // we need this function. Return the position of the first occurrence of an
+  // item in an array, or -1 if the item is not included in the array.
+  // Delegates to **ECMAScript 5**'s native `indexOf` if available.
+  // If the array is large and already in sort order, pass `true`
+  // for **isSorted** to use binary search.
+  _.indexOf = function(array, item, isSorted) {
+    if (array == null) return -1;
+    var i, l;
+    if (isSorted) {
+      i = _.sortedIndex(array, item);
+      return array[i] === item ? i : -1;
+    }
+    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
+    for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;
+    return -1;
+  };
+
+  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
+  _.lastIndexOf = function(array, item) {
+    if (array == null) return -1;
+    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
+    var i = array.length;
+    while (i--) if (i in array && array[i] === item) return i;
+    return -1;
+  };
+
+  // Generate an integer Array containing an arithmetic progression. A port of
+  // the native Python `range()` function. See
+  // [the Python documentation](http://docs.python.org/library/functions.html#range).
+  _.range = function(start, stop, step) {
+    if (arguments.length <= 1) {
+      stop = start || 0;
+      start = 0;
+    }
+    step = arguments[2] || 1;
+
+    var len = Math.max(Math.ceil((stop - start) / step), 0);
+    var idx = 0;
+    var range = new Array(len);
+
+    while(idx < len) {
+      range[idx++] = start;
+      start += step;
+    }
+
+    return range;
+  };
+
+  // Function (ahem) Functions
+  // ------------------
+
+  // Reusable constructor function for prototype setting.
+  var ctor = function(){};
+
+  // Create a function bound to a given object (assigning `this`, and arguments,
+  // optionally). Binding with arguments is also known as `curry`.
+  // Delegates to **ECMAScript 5**'s native `Function.bind` if available.
+  // We check for `func.bind` first, to fail fast when `func` is undefined.
+  _.bind = function bind(func, context) {
+    var bound, args;
+    if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+    if (!_.isFunction(func)) throw new TypeError;
+    args = slice.call(arguments, 2);
+    return bound = function() {
+      if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
+      ctor.prototype = func.prototype;
+      var self = new ctor;
+      var result = func.apply(self, args.concat(slice.call(arguments)));
+      if (Object(result) === result) return result;
+      return self;
+    };
+  };
+
+  // Bind all of an object's methods to that object. Useful for ensuring that
+  // all callbacks defined on an object belong to it.
+  _.bindAll = function(obj) {
+    var funcs = slice.call(arguments, 1);
+    if (funcs.length == 0) funcs = _.functions(obj);
+    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
+    return obj;
+  };
+
+  // Memoize an expensive function by storing its results.
+  _.memoize = function(func, hasher) {
+    var memo = {};
+    hasher || (hasher = _.identity);
+    return function() {
+      var key = hasher.apply(this, arguments);
+      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
+    };
+  };
+
+  // Delays a function for the given number of milliseconds, and then calls
+  // it with the arguments supplied.
+  _.delay = function(func, wait) {
+    var args = slice.call(arguments, 2);
+    return setTimeout(function(){ return func.apply(func, args); }, wait);
+  };
+
+  // Defers a function, scheduling it to run after the current call stack has
+  // cleared.
+  _.defer = function(func) {
+    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
+  };
+
+  // Returns a function, that, when invoked, will only be triggered at most once
+  // during a given window of time.
+  _.throttle = function(func, wait) {
+    var context, args, timeout, throttling, more;
+    var whenDone = _.debounce(function(){ more = throttling = false; }, wait);
+    return function() {
+      context = this; args = arguments;
+      var later = function() {
+        timeout = null;
+        if (more) func.apply(context, args);
+        whenDone();
+      };
+      if (!timeout) timeout = setTimeout(later, wait);
+      if (throttling) {
+        more = true;
+      } else {
+        func.apply(context, args);
+      }
+      whenDone();
+      throttling = true;
+    };
+  };
+
+  // Returns a function, that, as long as it continues to be invoked, will not
+  // be triggered. The function will be called after it stops being called for
+  // N milliseconds.
+  _.debounce = function(func, wait) {
+    var timeout;
+    return function() {
+      var context = this, args = arguments;
+      var later = function() {
+        timeout = null;
+        func.apply(context, args);
+      };
+      clearTimeout(timeout);
+      timeout = setTimeout(later, wait);
+    };
+  };
+
+  // Returns a function that will be executed at most one time, no matter how
+  // often you call it. Useful for lazy initialization.
+  _.once = function(func) {
+    var ran = false, memo;
+    return function() {
+      if (ran) return memo;
+      ran = true;
+      return memo = func.apply(this, arguments);
+    };
+  };
+
+  // Returns the first function passed as an argument to the second,
+  // allowing you to adjust arguments, run code before and after, and
+  // conditionally execute the original function.
+  _.wrap = function(func, wrapper) {
+    return function() {
+      var args = [func].concat(slice.call(arguments, 0));
+      return wrapper.apply(this, args);
+    };
+  };
+
+  // Returns a function that is the composition of a list of functions, each
+  // consuming the return value of the function that follows.
+  _.compose = function() {
+    var funcs = arguments;
+    return function() {
+      var args = arguments;
+      for (var i = funcs.length - 1; i >= 0; i--) {
+        args = [funcs[i].apply(this, args)];
+      }
+      return args[0];
+    };
+  };
+
+  // Returns a function that will only be executed after being called N times.
+  _.after = function(times, func) {
+    if (times <= 0) return func();
+    return function() {
+      if (--times < 1) { return func.apply(this, arguments); }
+    };
+  };
+
+  // Object Functions
+  // ----------------
+
+  // Retrieve the names of an object's properties.
+  // Delegates to **ECMAScript 5**'s native `Object.keys`
+  _.keys = nativeKeys || function(obj) {
+    if (obj !== Object(obj)) throw new TypeError('Invalid object');
+    var keys = [];
+    for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
+    return keys;
+  };
+
+  // Retrieve the values of an object's properties.
+  _.values = function(obj) {
+    return _.map(obj, _.identity);
+  };
+
+  // Return a sorted list of the function names available on the object.
+  // Aliased as `methods`
+  _.functions = _.methods = function(obj) {
+    var names = [];
+    for (var key in obj) {
+      if (_.isFunction(obj[key])) names.push(key);
+    }
+    return names.sort();
+  };
+
+  // Extend a given object with all the properties in passed-in object(s).
+  _.extend = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      for (var prop in source) {
+        obj[prop] = source[prop];
+      }
+    });
+    return obj;
+  };
+
+  // Fill in a given object with default properties.
+  _.defaults = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      for (var prop in source) {
+        if (obj[prop] == null) obj[prop] = source[prop];
+      }
+    });
+    return obj;
+  };
+
+  // Create a (shallow-cloned) duplicate of an object.
+  _.clone = function(obj) {
+    if (!_.isObject(obj)) return obj;
+    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+  };
+
+  // Invokes interceptor with the obj, and then returns obj.
+  // The primary purpose of this method is to "tap into" a method chain, in
+  // order to perform operations on intermediate results within the chain.
+  _.tap = function(obj, interceptor) {
+    interceptor(obj);
+    return obj;
+  };
+
+  // Internal recursive comparison function.
+  function eq(a, b, stack) {
+    // Identical objects are equal. `0 === -0`, but they aren't identical.
+    // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
+    if (a === b) return a !== 0 || 1 / a == 1 / b;
+    // A strict comparison is necessary because `null == undefined`.
+    if (a == null || b == null) return a === b;
+    // Unwrap any wrapped objects.
+    if (a._chain) a = a._wrapped;
+    if (b._chain) b = b._wrapped;
+    // Invoke a custom `isEqual` method if one is provided.
+    if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);
+    if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);
+    // Compare `[[Class]]` names.
+    var className = toString.call(a);
+    if (className != toString.call(b)) return false;
+    switch (className) {
+      // Strings, numbers, dates, and booleans are compared by value.
+      case '[object String]':
+        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+        // equivalent to `new String("5")`.
+        return a == String(b);
+      case '[object Number]':
+        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
+        // other numeric values.
+        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
+      case '[object Date]':
+      case '[object Boolean]':
+        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+        // millisecond representations. Note that invalid dates with millisecond representations
+        // of `NaN` are not equivalent.
+        return +a == +b;
+      // RegExps are compared by their source patterns and flags.
+      case '[object RegExp]':
+        return a.source == b.source &&
+               a.global == b.global &&
+               a.multiline == b.multiline &&
+               a.ignoreCase == b.ignoreCase;
+    }
+    if (typeof a != 'object' || typeof b != 'object') return false;
+    // Assume equality for cyclic structures. The algorithm for detecting cyclic
+    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+    var length = stack.length;
+    while (length--) {
+      // Linear search. Performance is inversely proportional to the number of
+      // unique nested structures.
+      if (stack[length] == a) return true;
+    }
+    // Add the first object to the stack of traversed objects.
+    stack.push(a);
+    var size = 0, result = true;
+    // Recursively compare objects and arrays.
+    if (className == '[object Array]') {
+      // Compare array lengths to determine if a deep comparison is necessary.
+      size = a.length;
+      result = size == b.length;
+      if (result) {
+        // Deep compare the contents, ignoring non-numeric properties.
+        while (size--) {
+          // Ensure commutative equality for sparse arrays.
+          if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;
+        }
+      }
+    } else {
+      // Objects with different constructors are not equivalent.
+      if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;
+      // Deep compare objects.
+      for (var key in a) {
+        if (_.has(a, key)) {
+          // Count the expected number of properties.
+          size++;
+          // Deep compare each member.
+          if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;
+        }
+      }
+      // Ensure that both objects contain the same number of properties.
+      if (result) {
+        for (key in b) {
+          if (_.has(b, key) && !(size--)) break;
+        }
+        result = !size;
+      }
+    }
+    // Remove the first object from the stack of traversed objects.
+    stack.pop();
+    return result;
+  }
+
+  // Perform a deep comparison to check if two objects are equal.
+  _.isEqual = function(a, b) {
+    return eq(a, b, []);
+  };
+
+  // Is a given array, string, or object empty?
+  // An "empty" object has no enumerable own-properties.
+  _.isEmpty = function(obj) {
+    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
+    for (var key in obj) if (_.has(obj, key)) return false;
+    return true;
+  };
+
+  // Is a given value a DOM element?
+  _.isElement = function(obj) {
+    return !!(obj && obj.nodeType == 1);
+  };
+
+  // Is a given value an array?
+  // Delegates to ECMA5's native Array.isArray
+  _.isArray = nativeIsArray || function(obj) {
+    return toString.call(obj) == '[object Array]';
+  };
+
+  // Is a given variable an object?
+  _.isObject = function(obj) {
+    return obj === Object(obj);
+  };
+
+  // Is a given variable an arguments object?
+  _.isArguments = function(obj) {
+    return toString.call(obj) == '[object Arguments]';
+  };
+  if (!_.isArguments(arguments)) {
+    _.isArguments = function(obj) {
+      return !!(obj && _.has(obj, 'callee'));
+    };
+  }
+
+  // Is a given value a function?
+  _.isFunction = function(obj) {
+    return toString.call(obj) == '[object Function]';
+  };
+
+  // Is a given value a string?
+  _.isString = function(obj) {
+    return toString.call(obj) == '[object String]';
+  };
+
+  // Is a given value a number?
+  _.isNumber = function(obj) {
+    return toString.call(obj) == '[object Number]';
+  };
+
+  // Is the given value `NaN`?
+  _.isNaN = function(obj) {
+    // `NaN` is the only value for which `===` is not reflexive.
+    return obj !== obj;
+  };
+
+  // Is a given value a boolean?
+  _.isBoolean = function(obj) {
+    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
+  };
+
+  // Is a given value a date?
+  _.isDate = function(obj) {
+    return toString.call(obj) == '[object Date]';
+  };
+
+  // Is the given value a regular expression?
+  _.isRegExp = function(obj) {
+    return toString.call(obj) == '[object RegExp]';
+  };
+
+  // Is a given value equal to null?
+  _.isNull = function(obj) {
+    return obj === null;
+  };
+
+  // Is a given variable undefined?
+  _.isUndefined = function(obj) {
+    return obj === void 0;
+  };
+
+  // Has own property?
+  _.has = function(obj, key) {
+    return hasOwnProperty.call(obj, key);
+  };
+
+  // Utility Functions
+  // -----------------
+
+  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+  // previous owner. Returns a reference to the Underscore object.
+  _.noConflict = function() {
+    root._ = previousUnderscore;
+    return this;
+  };
+
+  // Keep the identity function around for default iterators.
+  _.identity = function(value) {
+    return value;
+  };
+
+  // Run a function **n** times.
+  _.times = function (n, iterator, context) {
+    for (var i = 0; i < n; i++) iterator.call(context, i);
+  };
+
+  // Escape a string for HTML interpolation.
+  _.escape = function(string) {
+    return (''+string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g,'&#x2F;');
+  };
+
+  // Add your own custom functions to the Underscore object, ensuring that
+  // they're correctly added to the OOP wrapper as well.
+  _.mixin = function(obj) {
+    each(_.functions(obj), function(name){
+      addToWrapper(name, _[name] = obj[name]);
+    });
+  };
+
+  // Generate a unique integer id (unique within the entire client session).
+  // Useful for temporary DOM ids.
+  var idCounter = 0;
+  _.uniqueId = function(prefix) {
+    var id = idCounter++;
+    return prefix ? prefix + id : id;
+  };
+
+  // By default, Underscore uses ERB-style template delimiters, change the
+  // following template settings to use alternative delimiters.
+  _.templateSettings = {
+    evaluate    : /<%([\s\S]+?)%>/g,
+    interpolate : /<%=([\s\S]+?)%>/g,
+    escape      : /<%-([\s\S]+?)%>/g
+  };
+
+  // When customizing `templateSettings`, if you don't want to define an
+  // interpolation, evaluation or escaping regex, we need one that is
+  // guaranteed not to match.
+  var noMatch = /.^/;
+
+  // Within an interpolation, evaluation, or escaping, remove HTML escaping
+  // that had been previously added.
+  var unescape = function(code) {
+    return code.replace(/\\\\/g, '\\').replace(/\\'/g, "'");
+  };
+
+  // JavaScript micro-templating, similar to John Resig's implementation.
+  // Underscore templating handles arbitrary delimiters, preserves whitespace,
+  // and correctly escapes quotes within interpolated code.
+  _.template = function(str, data) {
+    var c  = _.templateSettings;
+    var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
+      'with(obj||{}){__p.push(\'' +
+      str.replace(/\\/g, '\\\\')
+         .replace(/'/g, "\\'")
+         .replace(c.escape || noMatch, function(match, code) {
+           return "',_.escape(" + unescape(code) + "),'";
+         })
+         .replace(c.interpolate || noMatch, function(match, code) {
+           return "'," + unescape(code) + ",'";
+         })
+         .replace(c.evaluate || noMatch, function(match, code) {
+           return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('";
+         })
+         .replace(/\r/g, '\\r')
+         .replace(/\n/g, '\\n')
+         .replace(/\t/g, '\\t')
+         + "');}return __p.join('');";
+    var func = new Function('obj', '_', tmpl);
+    if (data) return func(data, _);
+    return function(data) {
+      return func.call(this, data, _);
+    };
+  };
+
+  // Add a "chain" function, which will delegate to the wrapper.
+  _.chain = function(obj) {
+    return _(obj).chain();
+  };
+
+  // The OOP Wrapper
+  // ---------------
+
+  // If Underscore is called as a function, it returns a wrapped object that
+  // can be used OO-style. This wrapper holds altered versions of all the
+  // underscore functions. Wrapped objects may be chained.
+  var wrapper = function(obj) { this._wrapped = obj; };
+
+  // Expose `wrapper.prototype` as `_.prototype`
+  _.prototype = wrapper.prototype;
+
+  // Helper function to continue chaining intermediate results.
+  var result = function(obj, chain) {
+    return chain ? _(obj).chain() : obj;
+  };
+
+  // A method to easily add functions to the OOP wrapper.
+  var addToWrapper = function(name, func) {
+    wrapper.prototype[name] = function() {
+      var args = slice.call(arguments);
+      unshift.call(args, this._wrapped);
+      return result(func.apply(_, args), this._chain);
+    };
+  };
+
+  // Add all of the Underscore functions to the wrapper object.
+  _.mixin(_);
+
+  // Add all mutator Array functions to the wrapper.
+  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+    var method = ArrayProto[name];
+    wrapper.prototype[name] = function() {
+      var wrapped = this._wrapped;
+      method.apply(wrapped, arguments);
+      var length = wrapped.length;
+      if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];
+      return result(wrapped, this._chain);
+    };
+  });
+
+  // Add all accessor Array functions to the wrapper.
+  each(['concat', 'join', 'slice'], function(name) {
+    var method = ArrayProto[name];
+    wrapper.prototype[name] = function() {
+      return result(method.apply(this._wrapped, arguments), this._chain);
+    };
+  });
+
+  // Start chaining a wrapped Underscore object.
+  wrapper.prototype.chain = function() {
+    this._chain = true;
+    return this;
+  };
+
+  // Extracts the result from a wrapped and chained object.
+  wrapper.prototype.value = function() {
+    return this._wrapped;
+  };
+
+}).call(this);
diff --git a/src/doc/3.11.11/_static/underscore.js b/src/doc/3.11.11/_static/underscore.js
new file mode 100644
index 0000000..5b55f32
--- /dev/null
+++ b/src/doc/3.11.11/_static/underscore.js
@@ -0,0 +1,31 @@
+// Underscore.js 1.3.1
+// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore is freely distributable under the MIT license.
+// Portions of Underscore are inspired or borrowed from Prototype,
+// Oliver Steele's Functional, and John Resig's Micro-Templating.
+// For all details and documentation:
+// http://documentcloud.github.com/underscore
+(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
+c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
+h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
+b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
+null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
+function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
+e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
+function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
+return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
+c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
+b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
+return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
+d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
+var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
+c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
+a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
+b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
+1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
+b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
+b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),
+function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
+u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
+function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
+true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
diff --git a/src/doc/3.11.11/_static/up-pressed.png b/src/doc/3.11.11/_static/up-pressed.png
new file mode 100644
index 0000000..acee3b6
--- /dev/null
+++ b/src/doc/3.11.11/_static/up-pressed.png
Binary files differ
diff --git a/src/doc/3.11.11/_static/up.png b/src/doc/3.11.11/_static/up.png
new file mode 100644
index 0000000..2a940a7
--- /dev/null
+++ b/src/doc/3.11.11/_static/up.png
Binary files differ
diff --git a/src/doc/3.11.11/_static/websupport.js b/src/doc/3.11.11/_static/websupport.js
new file mode 100644
index 0000000..3b4999e
--- /dev/null
+++ b/src/doc/3.11.11/_static/websupport.js
@@ -0,0 +1,808 @@
+/*
+ * websupport.js
+ * ~~~~~~~~~~~~~
+ *
+ * sphinx.websupport utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+(function($) {
+  $.fn.autogrow = function() {
+    return this.each(function() {
+    var textarea = this;
+
+    $.fn.autogrow.resize(textarea);
+
+    $(textarea)
+      .focus(function() {
+        textarea.interval = setInterval(function() {
+          $.fn.autogrow.resize(textarea);
+        }, 500);
+      })
+      .blur(function() {
+        clearInterval(textarea.interval);
+      });
+    });
+  };
+
+  $.fn.autogrow.resize = function(textarea) {
+    var lineHeight = parseInt($(textarea).css('line-height'), 10);
+    var lines = textarea.value.split('\n');
+    var columns = textarea.cols;
+    var lineCount = 0;
+    $.each(lines, function() {
+      lineCount += Math.ceil(this.length / columns) || 1;
+    });
+    var height = lineHeight * (lineCount + 1);
+    $(textarea).css('height', height);
+  };
+})(jQuery);
+
+(function($) {
+  var comp, by;
+
+  function init() {
+    initEvents();
+    initComparator();
+  }
+
+  function initEvents() {
+    $(document).on("click", 'a.comment-close', function(event) {
+      event.preventDefault();
+      hide($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.vote', function(event) {
+      event.preventDefault();
+      handleVote($(this));
+    });
+    $(document).on("click", 'a.reply', function(event) {
+      event.preventDefault();
+      openReply($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.close-reply', function(event) {
+      event.preventDefault();
+      closeReply($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.sort-option', function(event) {
+      event.preventDefault();
+      handleReSort($(this));
+    });
+    $(document).on("click", 'a.show-proposal', function(event) {
+      event.preventDefault();
+      showProposal($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.hide-proposal', function(event) {
+      event.preventDefault();
+      hideProposal($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.show-propose-change', function(event) {
+      event.preventDefault();
+      showProposeChange($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.hide-propose-change', function(event) {
+      event.preventDefault();
+      hideProposeChange($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.accept-comment', function(event) {
+      event.preventDefault();
+      acceptComment($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.delete-comment', function(event) {
+      event.preventDefault();
+      deleteComment($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.comment-markup', function(event) {
+      event.preventDefault();
+      toggleCommentMarkupBox($(this).attr('id').substring(2));
+    });
+  }
+
+  /**
+   * Set comp, which is a comparator function used for sorting and
+   * inserting comments into the list.
+   */
+  function setComparator() {
+    // If the first three letters are "asc", sort in ascending order
+    // and remove the prefix.
+    if (by.substring(0,3) == 'asc') {
+      var i = by.substring(3);
+      comp = function(a, b) { return a[i] - b[i]; };
+    } else {
+      // Otherwise sort in descending order.
+      comp = function(a, b) { return b[by] - a[by]; };
+    }
+
+    // Reset link styles and format the selected sort option.
+    $('a.sel').attr('href', '#').removeClass('sel');
+    $('a.by' + by).removeAttr('href').addClass('sel');
+  }
+
+  /**
+   * Create a comp function. If the user has preferences stored in
+   * the sortBy cookie, use those, otherwise use the default.
+   */
+  function initComparator() {
+    by = 'rating'; // Default to sort by rating.
+    // If the sortBy cookie is set, use that instead.
+    if (document.cookie.length > 0) {
+      var start = document.cookie.indexOf('sortBy=');
+      if (start != -1) {
+        start = start + 7;
+        var end = document.cookie.indexOf(";", start);
+        if (end == -1) {
+          end = document.cookie.length;
+          by = unescape(document.cookie.substring(start, end));
+        }
+      }
+    }
+    setComparator();
+  }
+
+  /**
+   * Show a comment div.
+   */
+  function show(id) {
+    $('#ao' + id).hide();
+    $('#ah' + id).show();
+    var context = $.extend({id: id}, opts);
+    var popup = $(renderTemplate(popupTemplate, context)).hide();
+    popup.find('textarea[name="proposal"]').hide();
+    popup.find('a.by' + by).addClass('sel');
+    var form = popup.find('#cf' + id);
+    form.submit(function(event) {
+      event.preventDefault();
+      addComment(form);
+    });
+    $('#s' + id).after(popup);
+    popup.slideDown('fast', function() {
+      getComments(id);
+    });
+  }
+
+  /**
+   * Hide a comment div.
+   */
+  function hide(id) {
+    $('#ah' + id).hide();
+    $('#ao' + id).show();
+    var div = $('#sc' + id);
+    div.slideUp('fast', function() {
+      div.remove();
+    });
+  }
+
+  /**
+   * Perform an ajax request to get comments for a node
+   * and insert the comments into the comments tree.
+   */
+  function getComments(id) {
+    $.ajax({
+     type: 'GET',
+     url: opts.getCommentsURL,
+     data: {node: id},
+     success: function(data, textStatus, request) {
+       var ul = $('#cl' + id);
+       var speed = 100;
+       $('#cf' + id)
+         .find('textarea[name="proposal"]')
+         .data('source', data.source);
+
+       if (data.comments.length === 0) {
+         ul.html('<li>No comments yet.</li>');
+         ul.data('empty', true);
+       } else {
+         // If there are comments, sort them and put them in the list.
+         var comments = sortComments(data.comments);
+         speed = data.comments.length * 100;
+         appendComments(comments, ul);
+         ul.data('empty', false);
+       }
+       $('#cn' + id).slideUp(speed + 200);
+       ul.slideDown(speed);
+     },
+     error: function(request, textStatus, error) {
+       showError('Oops, there was a problem retrieving the comments.');
+     },
+     dataType: 'json'
+    });
+  }
+
+  /**
+   * Add a comment via ajax and insert the comment into the comment tree.
+   */
+  function addComment(form) {
+    var node_id = form.find('input[name="node"]').val();
+    var parent_id = form.find('input[name="parent"]').val();
+    var text = form.find('textarea[name="comment"]').val();
+    var proposal = form.find('textarea[name="proposal"]').val();
+
+    if (text == '') {
+      showError('Please enter a comment.');
+      return;
+    }
+
+    // Disable the form that is being submitted.
+    form.find('textarea,input').attr('disabled', 'disabled');
+
+    // Send the comment to the server.
+    $.ajax({
+      type: "POST",
+      url: opts.addCommentURL,
+      dataType: 'json',
+      data: {
+        node: node_id,
+        parent: parent_id,
+        text: text,
+        proposal: proposal
+      },
+      success: function(data, textStatus, error) {
+        // Reset the form.
+        if (node_id) {
+          hideProposeChange(node_id);
+        }
+        form.find('textarea')
+          .val('')
+          .add(form.find('input'))
+          .removeAttr('disabled');
+	var ul = $('#cl' + (node_id || parent_id));
+        if (ul.data('empty')) {
+          $(ul).empty();
+          ul.data('empty', false);
+        }
+        insertComment(data.comment);
+        var ao = $('#ao' + node_id);
+        ao.find('img').attr({'src': opts.commentBrightImage});
+        if (node_id) {
+          // if this was a "root" comment, remove the commenting box
+          // (the user can get it back by reopening the comment popup)
+          $('#ca' + node_id).slideUp();
+        }
+      },
+      error: function(request, textStatus, error) {
+        form.find('textarea,input').removeAttr('disabled');
+        showError('Oops, there was a problem adding the comment.');
+      }
+    });
+  }
+
+  /**
+   * Recursively append comments to the main comment list and children
+   * lists, creating the comment tree.
+   */
+  function appendComments(comments, ul) {
+    $.each(comments, function() {
+      var div = createCommentDiv(this);
+      ul.append($(document.createElement('li')).html(div));
+      appendComments(this.children, div.find('ul.comment-children'));
+      // To avoid stagnating data, don't store the comments children in data.
+      this.children = null;
+      div.data('comment', this);
+    });
+  }
+
+  /**
+   * After adding a new comment, it must be inserted in the correct
+   * location in the comment tree.
+   */
+  function insertComment(comment) {
+    var div = createCommentDiv(comment);
+
+    // To avoid stagnating data, don't store the comments children in data.
+    comment.children = null;
+    div.data('comment', comment);
+
+    var ul = $('#cl' + (comment.node || comment.parent));
+    var siblings = getChildren(ul);
+
+    var li = $(document.createElement('li'));
+    li.hide();
+
+    // Determine where in the parents children list to insert this comment.
+    for(var i=0; i < siblings.length; i++) {
+      if (comp(comment, siblings[i]) <= 0) {
+        $('#cd' + siblings[i].id)
+          .parent()
+          .before(li.html(div));
+        li.slideDown('fast');
+        return;
+      }
+    }
+
+    // If we get here, this comment rates lower than all the others,
+    // or it is the only comment in the list.
+    ul.append(li.html(div));
+    li.slideDown('fast');
+  }
+
+  function acceptComment(id) {
+    $.ajax({
+      type: 'POST',
+      url: opts.acceptCommentURL,
+      data: {id: id},
+      success: function(data, textStatus, request) {
+        $('#cm' + id).fadeOut('fast');
+        $('#cd' + id).removeClass('moderate');
+      },
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem accepting the comment.');
+      }
+    });
+  }
+
+  function deleteComment(id) {
+    $.ajax({
+      type: 'POST',
+      url: opts.deleteCommentURL,
+      data: {id: id},
+      success: function(data, textStatus, request) {
+        var div = $('#cd' + id);
+        if (data == 'delete') {
+          // Moderator mode: remove the comment and all children immediately
+          div.slideUp('fast', function() {
+            div.remove();
+          });
+          return;
+        }
+        // User mode: only mark the comment as deleted
+        div
+          .find('span.user-id:first')
+          .text('[deleted]').end()
+          .find('div.comment-text:first')
+          .text('[deleted]').end()
+          .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
+                ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
+          .remove();
+        var comment = div.data('comment');
+        comment.username = '[deleted]';
+        comment.text = '[deleted]';
+        div.data('comment', comment);
+      },
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem deleting the comment.');
+      }
+    });
+  }
+
+  function showProposal(id) {
+    $('#sp' + id).hide();
+    $('#hp' + id).show();
+    $('#pr' + id).slideDown('fast');
+  }
+
+  function hideProposal(id) {
+    $('#hp' + id).hide();
+    $('#sp' + id).show();
+    $('#pr' + id).slideUp('fast');
+  }
+
+  function showProposeChange(id) {
+    $('#pc' + id).hide();
+    $('#hc' + id).show();
+    var textarea = $('#pt' + id);
+    textarea.val(textarea.data('source'));
+    $.fn.autogrow.resize(textarea[0]);
+    textarea.slideDown('fast');
+  }
+
+  function hideProposeChange(id) {
+    $('#hc' + id).hide();
+    $('#pc' + id).show();
+    var textarea = $('#pt' + id);
+    textarea.val('').removeAttr('disabled');
+    textarea.slideUp('fast');
+  }
+
+  function toggleCommentMarkupBox(id) {
+    $('#mb' + id).toggle();
+  }
+
+  /** Handle when the user clicks on a sort by link. */
+  function handleReSort(link) {
+    var classes = link.attr('class').split(/\s+/);
+    for (var i=0; i<classes.length; i++) {
+      if (classes[i] != 'sort-option') {
+	by = classes[i].substring(2);
+      }
+    }
+    setComparator();
+    // Save/update the sortBy cookie.
+    var expiration = new Date();
+    expiration.setDate(expiration.getDate() + 365);
+    document.cookie= 'sortBy=' + escape(by) +
+                     ';expires=' + expiration.toUTCString();
+    $('ul.comment-ul').each(function(index, ul) {
+      var comments = getChildren($(ul), true);
+      comments = sortComments(comments);
+      appendComments(comments, $(ul).empty());
+    });
+  }
+
+  /**
+   * Function to process a vote when a user clicks an arrow.
+   */
+  function handleVote(link) {
+    if (!opts.voting) {
+      showError("You'll need to login to vote.");
+      return;
+    }
+
+    var id = link.attr('id');
+    if (!id) {
+      // Didn't click on one of the voting arrows.
+      return;
+    }
+    // If it is an unvote, the new vote value is 0,
+    // Otherwise it's 1 for an upvote, or -1 for a downvote.
+    var value = 0;
+    if (id.charAt(1) != 'u') {
+      value = id.charAt(0) == 'u' ? 1 : -1;
+    }
+    // The data to be sent to the server.
+    var d = {
+      comment_id: id.substring(2),
+      value: value
+    };
+
+    // Swap the vote and unvote links.
+    link.hide();
+    $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
+      .show();
+
+    // The div the comment is displayed in.
+    var div = $('div#cd' + d.comment_id);
+    var data = div.data('comment');
+
+    // If this is not an unvote, and the other vote arrow has
+    // already been pressed, unpress it.
+    if ((d.value !== 0) && (data.vote === d.value * -1)) {
+      $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
+      $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
+    }
+
+    // Update the comments rating in the local data.
+    data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
+    data.vote = d.value;
+    div.data('comment', data);
+
+    // Change the rating text.
+    div.find('.rating:first')
+      .text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
+
+    // Send the vote information to the server.
+    $.ajax({
+      type: "POST",
+      url: opts.processVoteURL,
+      data: d,
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem casting that vote.');
+      }
+    });
+  }
+
+  /**
+   * Open a reply form used to reply to an existing comment.
+   */
+  function openReply(id) {
+    // Swap out the reply link for the hide link
+    $('#rl' + id).hide();
+    $('#cr' + id).show();
+
+    // Add the reply li to the children ul.
+    var div = $(renderTemplate(replyTemplate, {id: id})).hide();
+    $('#cl' + id)
+      .prepend(div)
+      // Setup the submit handler for the reply form.
+      .find('#rf' + id)
+      .submit(function(event) {
+        event.preventDefault();
+        addComment($('#rf' + id));
+        closeReply(id);
+      })
+      .find('input[type=button]')
+      .click(function() {
+        closeReply(id);
+      });
+    div.slideDown('fast', function() {
+      $('#rf' + id).find('textarea').focus();
+    });
+  }
+
+  /**
+   * Close the reply form opened with openReply.
+   */
+  function closeReply(id) {
+    // Remove the reply div from the DOM.
+    $('#rd' + id).slideUp('fast', function() {
+      $(this).remove();
+    });
+
+    // Swap out the hide link for the reply link
+    $('#cr' + id).hide();
+    $('#rl' + id).show();
+  }
+
+  /**
+   * Recursively sort a tree of comments using the comp comparator.
+   */
+  function sortComments(comments) {
+    comments.sort(comp);
+    $.each(comments, function() {
+      this.children = sortComments(this.children);
+    });
+    return comments;
+  }
+
+  /**
+   * Get the children comments from a ul. If recursive is true,
+   * recursively include childrens' children.
+   */
+  function getChildren(ul, recursive) {
+    var children = [];
+    ul.children().children("[id^='cd']")
+      .each(function() {
+        var comment = $(this).data('comment');
+        if (recursive)
+          comment.children = getChildren($(this).find('#cl' + comment.id), true);
+        children.push(comment);
+      });
+    return children;
+  }
+
+  /** Create a div to display a comment in. */
+  function createCommentDiv(comment) {
+    if (!comment.displayed && !opts.moderator) {
+      return $('<div class="moderate">Thank you!  Your comment will show up '
+               + 'once it is has been approved by a moderator.</div>');
+    }
+    // Prettify the comment rating.
+    comment.pretty_rating = comment.rating + ' point' +
+      (comment.rating == 1 ? '' : 's');
+    // Make a class (for displaying not yet moderated comments differently)
+    comment.css_class = comment.displayed ? '' : ' moderate';
+    // Create a div for this comment.
+    var context = $.extend({}, opts, comment);
+    var div = $(renderTemplate(commentTemplate, context));
+
+    // If the user has voted on this comment, highlight the correct arrow.
+    if (comment.vote) {
+      var direction = (comment.vote == 1) ? 'u' : 'd';
+      div.find('#' + direction + 'v' + comment.id).hide();
+      div.find('#' + direction + 'u' + comment.id).show();
+    }
+
+    if (opts.moderator || comment.text != '[deleted]') {
+      div.find('a.reply').show();
+      if (comment.proposal_diff)
+        div.find('#sp' + comment.id).show();
+      if (opts.moderator && !comment.displayed)
+        div.find('#cm' + comment.id).show();
+      if (opts.moderator || (opts.username == comment.username))
+        div.find('#dc' + comment.id).show();
+    }
+    return div;
+  }
+
+  /**
+   * A simple template renderer. Placeholders such as <%id%> are replaced
+   * by context['id'] with items being escaped. Placeholders such as <#id#>
+   * are not escaped.
+   */
+  function renderTemplate(template, context) {
+    var esc = $(document.createElement('div'));
+
+    function handle(ph, escape) {
+      var cur = context;
+      $.each(ph.split('.'), function() {
+        cur = cur[this];
+      });
+      return escape ? esc.text(cur || "").html() : cur;
+    }
+
+    return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
+      return handle(arguments[2], arguments[1] == '%' ? true : false);
+    });
+  }
+
+  /** Flash an error message briefly. */
+  function showError(message) {
+    $(document.createElement('div')).attr({'class': 'popup-error'})
+      .append($(document.createElement('div'))
+               .attr({'class': 'error-message'}).text(message))
+      .appendTo('body')
+      .fadeIn("slow")
+      .delay(2000)
+      .fadeOut("slow");
+  }
+
+  /** Add a link the user uses to open the comments popup. */
+  $.fn.comment = function() {
+    return this.each(function() {
+      var id = $(this).attr('id').substring(1);
+      var count = COMMENT_METADATA[id];
+      var title = count + ' comment' + (count == 1 ? '' : 's');
+      var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
+      var addcls = count == 0 ? ' nocomment' : '';
+      $(this)
+        .append(
+          $(document.createElement('a')).attr({
+            href: '#',
+            'class': 'sphinx-comment-open' + addcls,
+            id: 'ao' + id
+          })
+            .append($(document.createElement('img')).attr({
+              src: image,
+              alt: 'comment',
+              title: title
+            }))
+            .click(function(event) {
+              event.preventDefault();
+              show($(this).attr('id').substring(2));
+            })
+        )
+        .append(
+          $(document.createElement('a')).attr({
+            href: '#',
+            'class': 'sphinx-comment-close hidden',
+            id: 'ah' + id
+          })
+            .append($(document.createElement('img')).attr({
+              src: opts.closeCommentImage,
+              alt: 'close',
+              title: 'close'
+            }))
+            .click(function(event) {
+              event.preventDefault();
+              hide($(this).attr('id').substring(2));
+            })
+        );
+    });
+  };
+
+  var opts = {
+    processVoteURL: '/_process_vote',
+    addCommentURL: '/_add_comment',
+    getCommentsURL: '/_get_comments',
+    acceptCommentURL: '/_accept_comment',
+    deleteCommentURL: '/_delete_comment',
+    commentImage: '/static/_static/comment.png',
+    closeCommentImage: '/static/_static/comment-close.png',
+    loadingImage: '/static/_static/ajax-loader.gif',
+    commentBrightImage: '/static/_static/comment-bright.png',
+    upArrow: '/static/_static/up.png',
+    downArrow: '/static/_static/down.png',
+    upArrowPressed: '/static/_static/up-pressed.png',
+    downArrowPressed: '/static/_static/down-pressed.png',
+    voting: false,
+    moderator: false
+  };
+
+  if (typeof COMMENT_OPTIONS != "undefined") {
+    opts = jQuery.extend(opts, COMMENT_OPTIONS);
+  }
+
+  var popupTemplate = '\
+    <div class="sphinx-comments" id="sc<%id%>">\
+      <p class="sort-options">\
+        Sort by:\
+        <a href="#" class="sort-option byrating">best rated</a>\
+        <a href="#" class="sort-option byascage">newest</a>\
+        <a href="#" class="sort-option byage">oldest</a>\
+      </p>\
+      <div class="comment-header">Comments</div>\
+      <div class="comment-loading" id="cn<%id%>">\
+        loading comments... <img src="<%loadingImage%>" alt="" /></div>\
+      <ul id="cl<%id%>" class="comment-ul"></ul>\
+      <div id="ca<%id%>">\
+      <p class="add-a-comment">Add a comment\
+        (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
+      <div class="comment-markup-box" id="mb<%id%>">\
+        reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
+        <code>``code``</code>, \
+        code blocks: <code>::</code> and an indented block after blank line</div>\
+      <form method="post" id="cf<%id%>" class="comment-form" action="">\
+        <textarea name="comment" cols="80"></textarea>\
+        <p class="propose-button">\
+          <a href="#" id="pc<%id%>" class="show-propose-change">\
+            Propose a change &#9657;\
+          </a>\
+          <a href="#" id="hc<%id%>" class="hide-propose-change">\
+            Propose a change &#9663;\
+          </a>\
+        </p>\
+        <textarea name="proposal" id="pt<%id%>" cols="80"\
+                  spellcheck="false"></textarea>\
+        <input type="submit" value="Add comment" />\
+        <input type="hidden" name="node" value="<%id%>" />\
+        <input type="hidden" name="parent" value="" />\
+      </form>\
+      </div>\
+    </div>';
+
+  var commentTemplate = '\
+    <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
+      <div class="vote">\
+        <div class="arrow">\
+          <a href="#" id="uv<%id%>" class="vote" title="vote up">\
+            <img src="<%upArrow%>" />\
+          </a>\
+          <a href="#" id="uu<%id%>" class="un vote" title="vote up">\
+            <img src="<%upArrowPressed%>" />\
+          </a>\
+        </div>\
+        <div class="arrow">\
+          <a href="#" id="dv<%id%>" class="vote" title="vote down">\
+            <img src="<%downArrow%>" id="da<%id%>" />\
+          </a>\
+          <a href="#" id="du<%id%>" class="un vote" title="vote down">\
+            <img src="<%downArrowPressed%>" />\
+          </a>\
+        </div>\
+      </div>\
+      <div class="comment-content">\
+        <p class="tagline comment">\
+          <span class="user-id"><%username%></span>\
+          <span class="rating"><%pretty_rating%></span>\
+          <span class="delta"><%time.delta%></span>\
+        </p>\
+        <div class="comment-text comment"><#text#></div>\
+        <p class="comment-opts comment">\
+          <a href="#" class="reply hidden" id="rl<%id%>">reply &#9657;</a>\
+          <a href="#" class="close-reply" id="cr<%id%>">reply &#9663;</a>\
+          <a href="#" id="sp<%id%>" class="show-proposal">proposal &#9657;</a>\
+          <a href="#" id="hp<%id%>" class="hide-proposal">proposal &#9663;</a>\
+          <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
+          <span id="cm<%id%>" class="moderation hidden">\
+            <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
+          </span>\
+        </p>\
+        <pre class="proposal" id="pr<%id%>">\
+<#proposal_diff#>\
+        </pre>\
+          <ul class="comment-children" id="cl<%id%>"></ul>\
+        </div>\
+        <div class="clearleft"></div>\
+      </div>\
+    </div>';
+
+  var replyTemplate = '\
+    <li>\
+      <div class="reply-div" id="rd<%id%>">\
+        <form id="rf<%id%>">\
+          <textarea name="comment" cols="80"></textarea>\
+          <input type="submit" value="Add reply" />\
+          <input type="button" value="Cancel" />\
+          <input type="hidden" name="parent" value="<%id%>" />\
+          <input type="hidden" name="node" value="" />\
+        </form>\
+      </div>\
+    </li>';
+
+  $(document).ready(function() {
+    init();
+  });
+})(jQuery);
+
+$(document).ready(function() {
+  // add comment anchors for all paragraphs that are commentable
+  $('.sphinx-has-comment').comment();
+
+  // highlight search words in search results
+  $("div.context").each(function() {
+    var params = $.getQueryParameters();
+    var terms = (params.q) ? params.q[0].split(/\s+/) : [];
+    var result = $(this);
+    $.each(terms, function() {
+      result.highlightText(this.toLowerCase(), 'highlighted');
+    });
+  });
+
+  // directly open comment window if requested
+  var anchor = document.location.hash;
+  if (anchor.substring(0, 9) == '#comment-') {
+    $('#ao' + anchor.substring(9)).click();
+    document.location.hash = '#s' + anchor.substring(9);
+  }
+});
diff --git a/src/doc/3.11.11/architecture/dynamo.html b/src/doc/3.11.11/architecture/dynamo.html
new file mode 100644
index 0000000..7f516a8
--- /dev/null
+++ b/src/doc/3.11.11/architecture/dynamo.html
@@ -0,0 +1,218 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Architecture"
+
+doc-title: "Dynamo"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Architecture" href="index.html"/>
+      <link rel="next" title="Storage Engine" href="storage_engine.html"/>
+      <link rel="prev" title="Overview" href="overview.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Architecture</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="overview.html">Overview</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Dynamo</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#gossip">Gossip</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#failure-detection">Failure Detection</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#token-ring-ranges">Token Ring/Ranges</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#replication">Replication</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tunable-consistency">Tunable Consistency</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html">Storage Engine</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="dynamo">
+<h1>Dynamo<a class="headerlink" href="#dynamo" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="gossip">
+<span id="id1"></span><h2>Gossip<a class="headerlink" href="#gossip" title="Permalink to this headline">¶</a></h2>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">todo</p>
+</div>
+</div>
+<div class="section" id="failure-detection">
+<h2>Failure Detection<a class="headerlink" href="#failure-detection" title="Permalink to this headline">¶</a></h2>
+<div class="admonition-todo admonition" id="index-1">
+<p class="first admonition-title">Todo</p>
+<p class="last">todo</p>
+</div>
+</div>
+<div class="section" id="token-ring-ranges">
+<h2>Token Ring/Ranges<a class="headerlink" href="#token-ring-ranges" title="Permalink to this headline">¶</a></h2>
+<div class="admonition-todo admonition" id="index-2">
+<p class="first admonition-title">Todo</p>
+<p class="last">todo</p>
+</div>
+</div>
+<div class="section" id="replication">
+<span id="replication-strategy"></span><h2>Replication<a class="headerlink" href="#replication" title="Permalink to this headline">¶</a></h2>
+<p>The replication strategy of a keyspace determines which nodes are replicas for a given token range. The two main
+replication strategies are <a class="reference internal" href="#simple-strategy"><span class="std std-ref">SimpleStrategy</span></a> and <a class="reference internal" href="#network-topology-strategy"><span class="std std-ref">NetworkTopologyStrategy</span></a>.</p>
+<div class="section" id="simplestrategy">
+<span id="simple-strategy"></span><h3>SimpleStrategy<a class="headerlink" href="#simplestrategy" title="Permalink to this headline">¶</a></h3>
+<p>SimpleStrategy allows a single integer <code class="docutils literal notranslate"><span class="pre">replication_factor</span></code> to be defined. This determines the number of nodes that
+should contain a copy of each row.  For example, if <code class="docutils literal notranslate"><span class="pre">replication_factor</span></code> is 3, then three different nodes should store
+a copy of each row.</p>
+<p>SimpleStrategy treats all nodes identically, ignoring any configured datacenters or racks.  To determine the replicas
+for a token range, Cassandra iterates through the tokens in the ring, starting with the token range of interest.  For
+each token, it checks whether the owning node has been added to the set of replicas, and if it has not, it is added to
+the set.  This process continues until <code class="docutils literal notranslate"><span class="pre">replication_factor</span></code> distinct nodes have been added to the set of replicas.</p>
+</div>
+<div class="section" id="networktopologystrategy">
+<span id="network-topology-strategy"></span><h3>NetworkTopologyStrategy<a class="headerlink" href="#networktopologystrategy" title="Permalink to this headline">¶</a></h3>
+<p>NetworkTopologyStrategy allows a replication factor to be specified for each datacenter in the cluster.  Even if your
+cluster only uses a single datacenter, NetworkTopologyStrategy should be prefered over SimpleStrategy to make it easier
+to add new physical or virtual datacenters to the cluster later.</p>
+<p>In addition to allowing the replication factor to be specified per-DC, NetworkTopologyStrategy also attempts to choose
+replicas within a datacenter from different racks.  If the number of racks is greater than or equal to the replication
+factor for the DC, each replica will be chosen from a different rack.  Otherwise, each rack will hold at least one
+replica, but some racks may hold more than one. Note that this rack-aware behavior has some potentially <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-3810">surprising
+implications</a>.  For example, if there are not an even number of
+nodes in each rack, the data load on the smallest rack may be much higher.  Similarly, if a single node is bootstrapped
+into a new rack, it will be considered a replica for the entire ring.  For this reason, many operators choose to
+configure all nodes on a single “rack”.</p>
+</div>
+</div>
+<div class="section" id="tunable-consistency">
+<h2>Tunable Consistency<a class="headerlink" href="#tunable-consistency" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra supports a per-operation tradeoff between consistency and availability through <em>Consistency Levels</em>.
+Essentially, an operation’s consistency level specifies how many of the replicas need to respond to the coordinator in
+order to consider the operation a success.</p>
+<p>The following consistency levels are available:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">ONE</span></code></dt>
+<dd>Only a single replica must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">TWO</span></code></dt>
+<dd>Two replicas must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">THREE</span></code></dt>
+<dd>Three replicas must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">QUORUM</span></code></dt>
+<dd>A majority (n/2 + 1) of the replicas must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">ALL</span></code></dt>
+<dd>All of the replicas must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">LOCAL_QUORUM</span></code></dt>
+<dd>A majority of the replicas in the local datacenter (whichever datacenter the coordinator is in) must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">EACH_QUORUM</span></code></dt>
+<dd>A majority of the replicas in each datacenter must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">LOCAL_ONE</span></code></dt>
+<dd>Only a single replica must respond.  In a multi-datacenter cluster, this also gaurantees that read requests are not
+sent to replicas in a remote datacenter.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">ANY</span></code></dt>
+<dd>A single replica may respond, or the coordinator may store a hint. If a hint is stored, the coordinator will later
+attempt to replay the hint and deliver the mutation to the replicas.  This consistency level is only accepted for
+write operations.</dd>
+</dl>
+<p>Write operations are always sent to all replicas, regardless of consistency level. The consistency level simply
+controls how many responses the coordinator waits for before responding to the client.</p>
+<p>For read operations, the coordinator generally only issues read commands to enough replicas to satisfy the consistency
+level. There are a couple of exceptions to this:</p>
+<ul class="simple">
+<li>Speculative retry may issue a redundant read request to an extra replica if the other replicas have not responded
+within a specified time window.</li>
+<li>Based on <code class="docutils literal notranslate"><span class="pre">read_repair_chance</span></code> and <code class="docutils literal notranslate"><span class="pre">dclocal_read_repair_chance</span></code> (part of a table’s schema), read requests may be
+randomly sent to all replicas in order to repair potentially inconsistent data.</li>
+</ul>
+<div class="section" id="picking-consistency-levels">
+<h3>Picking Consistency Levels<a class="headerlink" href="#picking-consistency-levels" title="Permalink to this headline">¶</a></h3>
+<p>It is common to pick read and write consistency levels that are high enough to overlap, resulting in “strong”
+consistency.  This is typically expressed as <code class="docutils literal notranslate"><span class="pre">W</span> <span class="pre">+</span> <span class="pre">R</span> <span class="pre">&gt;</span> <span class="pre">RF</span></code>, where <code class="docutils literal notranslate"><span class="pre">W</span></code> is the write consistency level, <code class="docutils literal notranslate"><span class="pre">R</span></code> is the
+read consistency level, and <code class="docutils literal notranslate"><span class="pre">RF</span></code> is the replication factor.  For example, if <code class="docutils literal notranslate"><span class="pre">RF</span> <span class="pre">=</span> <span class="pre">3</span></code>, a <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code> request will
+require responses from at least two of the three replicas.  If <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code> is used for both writes and reads, at least
+one of the replicas is guaranteed to participate in <em>both</em> the write and the read request, which in turn guarantees that
+the latest write will be read. In a multi-datacenter environment, <code class="docutils literal notranslate"><span class="pre">LOCAL_QUORUM</span></code> can be used to provide a weaker but
+still useful guarantee: reads are guaranteed to see the latest write from within the same datacenter.</p>
+<p>If this type of strong consistency isn’t required, lower consistency levels like <code class="docutils literal notranslate"><span class="pre">ONE</span></code> may be used to improve
+throughput, latency, and availability.</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="storage_engine.html" class="btn btn-default pull-right " role="button" title="Storage Engine" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="overview.html" class="btn btn-default" role="button" title="Overview" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/architecture/guarantees.html b/src/doc/3.11.11/architecture/guarantees.html
new file mode 100644
index 0000000..5949108
--- /dev/null
+++ b/src/doc/3.11.11/architecture/guarantees.html
@@ -0,0 +1,113 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Architecture"
+
+doc-title: "Guarantees"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Architecture" href="index.html"/>
+      <link rel="next" title="Data Modeling" href="../data_modeling/index.html"/>
+      <link rel="prev" title="Storage Engine" href="storage_engine.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Architecture</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="overview.html">Overview</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html">Dynamo</a></li>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html">Storage Engine</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Guarantees</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="guarantees">
+<h1>Guarantees<a class="headerlink" href="#guarantees" title="Permalink to this headline">¶</a></h1>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">todo</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../data_modeling/index.html" class="btn btn-default pull-right " role="button" title="Data Modeling" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="storage_engine.html" class="btn btn-default" role="button" title="Storage Engine" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/architecture/index.html b/src/doc/3.11.11/architecture/index.html
new file mode 100644
index 0000000..c02a175
--- /dev/null
+++ b/src/doc/3.11.11/architecture/index.html
@@ -0,0 +1,127 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Architecture"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="next" title="Overview" href="overview.html"/>
+      <link rel="prev" title="Client drivers" href="../getting_started/drivers.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Architecture</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="overview.html">Overview</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html">Dynamo</a></li>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html">Storage Engine</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="architecture">
+<h1>Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline">¶</a></h1>
+<p>This section describes the general architecture of Apache Cassandra.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="overview.html">Overview</a></li>
+<li class="toctree-l1"><a class="reference internal" href="dynamo.html">Dynamo</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html#gossip">Gossip</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html#failure-detection">Failure Detection</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html#token-ring-ranges">Token Ring/Ranges</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html#replication">Replication</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html#tunable-consistency">Tunable Consistency</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="storage_engine.html">Storage Engine</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html#commitlog">CommitLog</a></li>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html#memtables">Memtables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html#sstables">SSTables</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="overview.html" class="btn btn-default pull-right " role="button" title="Overview" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../getting_started/drivers.html" class="btn btn-default" role="button" title="Client drivers" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/architecture/overview.html b/src/doc/3.11.11/architecture/overview.html
new file mode 100644
index 0000000..f533c8c
--- /dev/null
+++ b/src/doc/3.11.11/architecture/overview.html
@@ -0,0 +1,113 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Architecture"
+
+doc-title: "Overview"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Architecture" href="index.html"/>
+      <link rel="next" title="Dynamo" href="dynamo.html"/>
+      <link rel="prev" title="Architecture" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Architecture</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Overview</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html">Dynamo</a></li>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html">Storage Engine</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="overview">
+<h1>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h1>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">todo</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="dynamo.html" class="btn btn-default pull-right " role="button" title="Dynamo" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Architecture" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/architecture/storage_engine.html b/src/doc/3.11.11/architecture/storage_engine.html
new file mode 100644
index 0000000..af74b0e
--- /dev/null
+++ b/src/doc/3.11.11/architecture/storage_engine.html
@@ -0,0 +1,207 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Architecture"
+
+doc-title: "Storage Engine"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Architecture" href="index.html"/>
+      <link rel="next" title="Guarantees" href="guarantees.html"/>
+      <link rel="prev" title="Dynamo" href="dynamo.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Architecture</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="overview.html">Overview</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html">Dynamo</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Storage Engine</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog">CommitLog</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memtables">Memtables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#sstables">SSTables</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="storage-engine">
+<h1>Storage Engine<a class="headerlink" href="#storage-engine" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="commitlog">
+<span id="commit-log"></span><h2>CommitLog<a class="headerlink" href="#commitlog" title="Permalink to this headline">¶</a></h2>
+<p>Commitlogs are an append only log of all mutations local to a Cassandra node. Any data written to Cassandra will first be written to a commit log before being written to a memtable. This provides durability in the case of unexpected shutdown. On startup, any mutations in the commit log will be applied to memtables.</p>
+<p>All mutations write optimized by storing in commitlog segments, reducing the number of seeks needed to write to disk. Commitlog Segments are limited by the “commitlog_segment_size_in_mb” option, once the size is reached, a new commitlog segment is created. Commitlog segments can be archived, deleted, or recycled once all its data has been flushed to SSTables.  Commitlog segments are truncated when Cassandra has written data older than a certain point to the SSTables. Running “nodetool drain” before stopping Cassandra will write everything in the memtables to SSTables and remove the need to sync with the commitlogs on startup.</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_segment_size_in_mb</span></code>: The default size is 32, which is almost always fine, but if you are archiving commitlog segments (see commitlog_archiving.properties), then you probably want a finer granularity of archiving; 8 or 16 MB is reasonable. Max mutation size is also configurable via max_mutation_size_in_kb setting in cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024.</li>
+</ul>
+<p><strong>*NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must be set to at least twice the size of max_mutation_size_in_kb / 1024*</strong></p>
+<p><em>Default Value:</em> 32</p>
+<p>Commitlogs are an append only log of all mutations local to a Cassandra node. Any data written to Cassandra will first be written to a commit log before being written to a memtable. This provides durability in the case of unexpected shutdown. On startup, any mutations in the commit log will be applied.</p>
+<ul>
+<li><p class="first"><code class="docutils literal notranslate"><span class="pre">commitlog_sync</span></code>: may be either “periodic” or “batch.”</p>
+<ul>
+<li><p class="first"><code class="docutils literal notranslate"><span class="pre">batch</span></code>: In batch mode, Cassandra won’t ack writes until the commit log has been fsynced to disk. It will wait “commitlog_sync_batch_window_in_ms” milliseconds between fsyncs. This window should be kept short because the writer threads will be unable to do extra work while waiting. You may need to increase concurrent_writes for the same reason.</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_sync_batch_window_in_ms</span></code>: Time to wait between “batch” fsyncs</li>
+</ul>
+<p><em>Default Value:</em> 2</p>
+</li>
+<li><p class="first"><code class="docutils literal notranslate"><span class="pre">periodic</span></code>: In periodic mode, writes are immediately ack’ed, and the CommitLog is simply synced every “commitlog_sync_period_in_ms” milliseconds.</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_sync_period_in_ms</span></code>: Time to wait between “periodic” fsyncs</li>
+</ul>
+<p><em>Default Value:</em> 10000</p>
+</li>
+</ul>
+</li>
+</ul>
+<p><em>Default Value:</em> periodic</p>
+<p><strong>* NOTE: In the event of an unexpected shutdown, Cassandra can lose up to the sync period or more if the sync is delayed. If using “batch” mode, it is recommended to store commitlogs in a separate, dedicated device.</strong></p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_directory</span></code>: This option is commented out by default When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $CASSANDRA_HOME/data/commitlog.</li>
+</ul>
+<p><em>Default Value:</em> /var/lib/cassandra/commitlog</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_compression</span></code>: Compression to apply to the commitlog. If omitted, the commit log will be written uncompressed. LZ4, Snappy, Deflate and Zstd compressors are supported.</li>
+</ul>
+<p>(Default Value: (complex option):</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#   - class_name: LZ4Compressor</span>
+<span class="c1">#     parameters:</span>
+<span class="c1">#         -</span>
+</pre></div>
+</div>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_total_space_in_mb</span></code>: Total space to use for commit logs on disk.</li>
+</ul>
+<p>If space gets above this value, Cassandra will flush every dirty CF in the oldest segment and remove it. So a small total commitlog space will tend to cause more flush activity on less-active columnfamilies.</p>
+<p>The default value is the smaller of 8192, and 1/4 of the total space of the commitlog volume.</p>
+<p><em>Default Value:</em> 8192</p>
+</div>
+<div class="section" id="memtables">
+<span id="id1"></span><h2>Memtables<a class="headerlink" href="#memtables" title="Permalink to this headline">¶</a></h2>
+<p>Memtables are in-memory structures where Cassandra buffers writes.  In general, there is one active memtable per table.
+Eventually, memtables are flushed onto disk and become immutable <a class="reference internal" href="#sstables">SSTables</a>.  This can be triggered in several
+ways:</p>
+<ul class="simple">
+<li>The memory usage of the memtables exceeds the configured threshold  (see <code class="docutils literal notranslate"><span class="pre">memtable_cleanup_threshold</span></code>)</li>
+<li>The <a class="reference internal" href="#commit-log"><span class="std std-ref">CommitLog</span></a> approaches its maximum size, and forces memtable flushes in order to allow commitlog segments to
+be freed</li>
+</ul>
+<p>Memtables may be stored entirely on-heap or partially off-heap, depending on <code class="docutils literal notranslate"><span class="pre">memtable_allocation_type</span></code>.</p>
+</div>
+<div class="section" id="sstables">
+<h2>SSTables<a class="headerlink" href="#sstables" title="Permalink to this headline">¶</a></h2>
+<p>SSTables are the immutable data files that Cassandra uses for persisting data on disk.</p>
+<p>As SSTables are flushed to disk from <a class="reference internal" href="#memtables"><span class="std std-ref">Memtables</span></a> or are streamed from other nodes, Cassandra triggers compactions
+which combine multiple SSTables into one.  Once the new SSTable has been written, the old SSTables can be removed.</p>
+<p>Each SSTable is comprised of multiple components stored in separate files:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">Data.db</span></code></dt>
+<dd>The actual data, i.e. the contents of rows.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Index.db</span></code></dt>
+<dd>An index from partition keys to positions in the <code class="docutils literal notranslate"><span class="pre">Data.db</span></code> file.  For wide partitions, this may also include an
+index to rows within a partition.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Summary.db</span></code></dt>
+<dd>A sampling of (by default) every 128th entry in the <code class="docutils literal notranslate"><span class="pre">Index.db</span></code> file.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Filter.db</span></code></dt>
+<dd>A Bloom Filter of the partition keys in the SSTable.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">CompressionInfo.db</span></code></dt>
+<dd>Metadata about the offsets and lengths of compression chunks in the <code class="docutils literal notranslate"><span class="pre">Data.db</span></code> file.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Statistics.db</span></code></dt>
+<dd>Stores metadata about the SSTable, including information about timestamps, tombstones, clustering keys, compaction,
+repair, compression, TTLs, and more.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Digest.crc32</span></code></dt>
+<dd>A CRC-32 digest of the <code class="docutils literal notranslate"><span class="pre">Data.db</span></code> file.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">TOC.txt</span></code></dt>
+<dd>A plain text list of the component files for the SSTable.</dd>
+</dl>
+<p>Within the <code class="docutils literal notranslate"><span class="pre">Data.db</span></code> file, rows are organized by partition.  These partitions are sorted in token order (i.e. by a
+hash of the partition key when the default partitioner, <code class="docutils literal notranslate"><span class="pre">Murmur3Partition</span></code>, is used).  Within a partition, rows are
+stored in the order of their clustering keys.</p>
+<p>SSTables can be optionally compressed using block-based compression.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="guarantees.html" class="btn btn-default pull-right " role="button" title="Guarantees" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="dynamo.html" class="btn btn-default" role="button" title="Dynamo" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/bugs.html b/src/doc/3.11.11/bugs.html
new file mode 100644
index 0000000..a600e2f
--- /dev/null
+++ b/src/doc/3.11.11/bugs.html
@@ -0,0 +1,108 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Reporting Bugs and Contributing"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="index.html"/>
+      <link rel="next" title="Contact us" href="contactus.html"/>
+      <link rel="prev" title="Frequently Asked Questions" href="faq/index.html"/>
+'
+doc-search-path: "search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="reporting-bugs-and-contributing">
+<h1>Reporting Bugs and Contributing<a class="headerlink" href="#reporting-bugs-and-contributing" title="Permalink to this headline">¶</a></h1>
+<p>If you encounter a problem with Cassandra, the first places to ask for help are the <a class="reference internal" href="contactus.html#mailing-lists"><span class="std std-ref">user mailing list</span></a> and the <code class="docutils literal notranslate"><span class="pre">#cassandra</span></code> <a class="reference internal" href="contactus.html#irc-channels"><span class="std std-ref">IRC channel</span></a>.</p>
+<p>If, after having asked for help, you suspect that you have found a bug in Cassandra, you should report it by opening a
+ticket through the <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA">Apache Cassandra JIRA</a>. Please provide as much
+details as you can on your problem, and don’t forget to indicate which version of Cassandra you are running and on which
+environment.</p>
+<p>Further details on how to contribute can be found at our <a class="reference internal" href="development/index.html"><span class="doc">Cassandra Development</span></a> section. Please note that the source of
+this documentation is part of the Cassandra git repository and hence contributions to the documentation should follow the
+same path.</p>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="contactus.html" class="btn btn-default pull-right " role="button" title="Contact us" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="faq/index.html" class="btn btn-default" role="button" title="Frequently Asked Questions" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/configuration/cassandra_config_file.html b/src/doc/3.11.11/configuration/cassandra_config_file.html
new file mode 100644
index 0000000..7bb3966
--- /dev/null
+++ b/src/doc/3.11.11/configuration/cassandra_config_file.html
@@ -0,0 +1,1835 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Configuring Cassandra"
+
+doc-title: "Cassandra Configuration File"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Configuring Cassandra" href="index.html"/>
+      <link rel="next" title="Operating Cassandra" href="../operating/index.html"/>
+      <link rel="prev" title="Configuring Cassandra" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Configuring Cassandra</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Cassandra Configuration File</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#cluster-name"><code class="docutils literal notranslate"><span class="pre">cluster_name</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#num-tokens"><code class="docutils literal notranslate"><span class="pre">num_tokens</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#allocate-tokens-for-keyspace"><code class="docutils literal notranslate"><span class="pre">allocate_tokens_for_keyspace</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#initial-token"><code class="docutils literal notranslate"><span class="pre">initial_token</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hinted-handoff-enabled"><code class="docutils literal notranslate"><span class="pre">hinted_handoff_enabled</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hinted-handoff-disabled-datacenters"><code class="docutils literal notranslate"><span class="pre">hinted_handoff_disabled_datacenters</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#max-hint-window-in-ms"><code class="docutils literal notranslate"><span class="pre">max_hint_window_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hinted-handoff-throttle-in-kb"><code class="docutils literal notranslate"><span class="pre">hinted_handoff_throttle_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#max-hints-delivery-threads"><code class="docutils literal notranslate"><span class="pre">max_hints_delivery_threads</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hints-directory"><code class="docutils literal notranslate"><span class="pre">hints_directory</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hints-flush-period-in-ms"><code class="docutils literal notranslate"><span class="pre">hints_flush_period_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#max-hints-file-size-in-mb"><code class="docutils literal notranslate"><span class="pre">max_hints_file_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hints-compression"><code class="docutils literal notranslate"><span class="pre">hints_compression</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#batchlog-replay-throttle-in-kb"><code class="docutils literal notranslate"><span class="pre">batchlog_replay_throttle_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#authenticator"><code class="docutils literal notranslate"><span class="pre">authenticator</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#authorizer"><code class="docutils literal notranslate"><span class="pre">authorizer</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#role-manager"><code class="docutils literal notranslate"><span class="pre">role_manager</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#roles-validity-in-ms"><code class="docutils literal notranslate"><span class="pre">roles_validity_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#roles-update-interval-in-ms"><code class="docutils literal notranslate"><span class="pre">roles_update_interval_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#permissions-validity-in-ms"><code class="docutils literal notranslate"><span class="pre">permissions_validity_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#permissions-update-interval-in-ms"><code class="docutils literal notranslate"><span class="pre">permissions_update_interval_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#credentials-validity-in-ms"><code class="docutils literal notranslate"><span class="pre">credentials_validity_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#credentials-update-interval-in-ms"><code class="docutils literal notranslate"><span class="pre">credentials_update_interval_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#partitioner"><code class="docutils literal notranslate"><span class="pre">partitioner</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#data-file-directories"><code class="docutils literal notranslate"><span class="pre">data_file_directories</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-directory"><code class="docutils literal notranslate"><span class="pre">commitlog_directory</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cdc-enabled"><code class="docutils literal notranslate"><span class="pre">cdc_enabled</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cdc-raw-directory"><code class="docutils literal notranslate"><span class="pre">cdc_raw_directory</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#disk-failure-policy"><code class="docutils literal notranslate"><span class="pre">disk_failure_policy</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commit-failure-policy"><code class="docutils literal notranslate"><span class="pre">commit_failure_policy</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#prepared-statements-cache-size-mb"><code class="docutils literal notranslate"><span class="pre">prepared_statements_cache_size_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#thrift-prepared-statements-cache-size-mb"><code class="docutils literal notranslate"><span class="pre">thrift_prepared_statements_cache_size_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#key-cache-size-in-mb"><code class="docutils literal notranslate"><span class="pre">key_cache_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#key-cache-save-period"><code class="docutils literal notranslate"><span class="pre">key_cache_save_period</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#key-cache-keys-to-save"><code class="docutils literal notranslate"><span class="pre">key_cache_keys_to_save</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#row-cache-class-name"><code class="docutils literal notranslate"><span class="pre">row_cache_class_name</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#row-cache-size-in-mb"><code class="docutils literal notranslate"><span class="pre">row_cache_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#row-cache-save-period"><code class="docutils literal notranslate"><span class="pre">row_cache_save_period</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#row-cache-keys-to-save"><code class="docutils literal notranslate"><span class="pre">row_cache_keys_to_save</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#counter-cache-size-in-mb"><code class="docutils literal notranslate"><span class="pre">counter_cache_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#counter-cache-save-period"><code class="docutils literal notranslate"><span class="pre">counter_cache_save_period</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#counter-cache-keys-to-save"><code class="docutils literal notranslate"><span class="pre">counter_cache_keys_to_save</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#saved-caches-directory"><code class="docutils literal notranslate"><span class="pre">saved_caches_directory</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-sync"><code class="docutils literal notranslate"><span class="pre">commitlog_sync</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-sync-batch-window-in-ms"><code class="docutils literal notranslate"><span class="pre">commitlog_sync_batch_window_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id1"><code class="docutils literal notranslate"><span class="pre">commitlog_sync</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-sync-period-in-ms"><code class="docutils literal notranslate"><span class="pre">commitlog_sync_period_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-segment-size-in-mb"><code class="docutils literal notranslate"><span class="pre">commitlog_segment_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-compression"><code class="docutils literal notranslate"><span class="pre">commitlog_compression</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#seed-provider"><code class="docutils literal notranslate"><span class="pre">seed_provider</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#concurrent-reads"><code class="docutils literal notranslate"><span class="pre">concurrent_reads</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#concurrent-writes"><code class="docutils literal notranslate"><span class="pre">concurrent_writes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#concurrent-counter-writes"><code class="docutils literal notranslate"><span class="pre">concurrent_counter_writes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#concurrent-materialized-view-writes"><code class="docutils literal notranslate"><span class="pre">concurrent_materialized_view_writes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#file-cache-size-in-mb"><code class="docutils literal notranslate"><span class="pre">file_cache_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#buffer-pool-use-heap-if-exhausted"><code class="docutils literal notranslate"><span class="pre">buffer_pool_use_heap_if_exhausted</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#disk-optimization-strategy"><code class="docutils literal notranslate"><span class="pre">disk_optimization_strategy</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memtable-heap-space-in-mb"><code class="docutils literal notranslate"><span class="pre">memtable_heap_space_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memtable-offheap-space-in-mb"><code class="docutils literal notranslate"><span class="pre">memtable_offheap_space_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memtable-cleanup-threshold"><code class="docutils literal notranslate"><span class="pre">memtable_cleanup_threshold</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memtable-allocation-type"><code class="docutils literal notranslate"><span class="pre">memtable_allocation_type</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#repair-session-max-tree-depth"><code class="docutils literal notranslate"><span class="pre">repair_session_max_tree_depth</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-total-space-in-mb"><code class="docutils literal notranslate"><span class="pre">commitlog_total_space_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memtable-flush-writers"><code class="docutils literal notranslate"><span class="pre">memtable_flush_writers</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cdc-total-space-in-mb"><code class="docutils literal notranslate"><span class="pre">cdc_total_space_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cdc-free-space-check-interval-ms"><code class="docutils literal notranslate"><span class="pre">cdc_free_space_check_interval_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#index-summary-capacity-in-mb"><code class="docutils literal notranslate"><span class="pre">index_summary_capacity_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#index-summary-resize-interval-in-minutes"><code class="docutils literal notranslate"><span class="pre">index_summary_resize_interval_in_minutes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#trickle-fsync"><code class="docutils literal notranslate"><span class="pre">trickle_fsync</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#trickle-fsync-interval-in-kb"><code class="docutils literal notranslate"><span class="pre">trickle_fsync_interval_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#storage-port"><code class="docutils literal notranslate"><span class="pre">storage_port</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#ssl-storage-port"><code class="docutils literal notranslate"><span class="pre">ssl_storage_port</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#listen-address"><code class="docutils literal notranslate"><span class="pre">listen_address</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#listen-interface"><code class="docutils literal notranslate"><span class="pre">listen_interface</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#listen-interface-prefer-ipv6"><code class="docutils literal notranslate"><span class="pre">listen_interface_prefer_ipv6</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#broadcast-address"><code class="docutils literal notranslate"><span class="pre">broadcast_address</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#listen-on-broadcast-address"><code class="docutils literal notranslate"><span class="pre">listen_on_broadcast_address</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-authenticator"><code class="docutils literal notranslate"><span class="pre">internode_authenticator</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#start-native-transport"><code class="docutils literal notranslate"><span class="pre">start_native_transport</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-port"><code class="docutils literal notranslate"><span class="pre">native_transport_port</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-port-ssl"><code class="docutils literal notranslate"><span class="pre">native_transport_port_ssl</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-max-threads"><code class="docutils literal notranslate"><span class="pre">native_transport_max_threads</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-max-frame-size-in-mb"><code class="docutils literal notranslate"><span class="pre">native_transport_max_frame_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-max-concurrent-connections"><code class="docutils literal notranslate"><span class="pre">native_transport_max_concurrent_connections</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-max-concurrent-connections-per-ip"><code class="docutils literal notranslate"><span class="pre">native_transport_max_concurrent_connections_per_ip</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#start-rpc"><code class="docutils literal notranslate"><span class="pre">start_rpc</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-address"><code class="docutils literal notranslate"><span class="pre">rpc_address</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-interface"><code class="docutils literal notranslate"><span class="pre">rpc_interface</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-interface-prefer-ipv6"><code class="docutils literal notranslate"><span class="pre">rpc_interface_prefer_ipv6</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-port"><code class="docutils literal notranslate"><span class="pre">rpc_port</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#broadcast-rpc-address"><code class="docutils literal notranslate"><span class="pre">broadcast_rpc_address</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-keepalive"><code class="docutils literal notranslate"><span class="pre">rpc_keepalive</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-server-type"><code class="docutils literal notranslate"><span class="pre">rpc_server_type</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-min-threads"><code class="docutils literal notranslate"><span class="pre">rpc_min_threads</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-max-threads"><code class="docutils literal notranslate"><span class="pre">rpc_max_threads</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-send-buff-size-in-bytes"><code class="docutils literal notranslate"><span class="pre">rpc_send_buff_size_in_bytes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-recv-buff-size-in-bytes"><code class="docutils literal notranslate"><span class="pre">rpc_recv_buff_size_in_bytes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-send-buff-size-in-bytes"><code class="docutils literal notranslate"><span class="pre">internode_send_buff_size_in_bytes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-recv-buff-size-in-bytes"><code class="docutils literal notranslate"><span class="pre">internode_recv_buff_size_in_bytes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#thrift-framed-transport-size-in-mb"><code class="docutils literal notranslate"><span class="pre">thrift_framed_transport_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#incremental-backups"><code class="docutils literal notranslate"><span class="pre">incremental_backups</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#snapshot-before-compaction"><code class="docutils literal notranslate"><span class="pre">snapshot_before_compaction</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#auto-snapshot"><code class="docutils literal notranslate"><span class="pre">auto_snapshot</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#column-index-size-in-kb"><code class="docutils literal notranslate"><span class="pre">column_index_size_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#column-index-cache-size-in-kb"><code class="docutils literal notranslate"><span class="pre">column_index_cache_size_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#concurrent-compactors"><code class="docutils literal notranslate"><span class="pre">concurrent_compactors</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#compaction-throughput-mb-per-sec"><code class="docutils literal notranslate"><span class="pre">compaction_throughput_mb_per_sec</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#sstable-preemptive-open-interval-in-mb"><code class="docutils literal notranslate"><span class="pre">sstable_preemptive_open_interval_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#stream-throughput-outbound-megabits-per-sec"><code class="docutils literal notranslate"><span class="pre">stream_throughput_outbound_megabits_per_sec</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#inter-dc-stream-throughput-outbound-megabits-per-sec"><code class="docutils literal notranslate"><span class="pre">inter_dc_stream_throughput_outbound_megabits_per_sec</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#read-request-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">read_request_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#range-request-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">range_request_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#write-request-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">write_request_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#counter-write-request-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">counter_write_request_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cas-contention-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">cas_contention_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#truncate-request-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">truncate_request_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#request-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">request_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#slow-query-log-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">slow_query_log_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cross-node-timeout"><code class="docutils literal notranslate"><span class="pre">cross_node_timeout</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#streaming-keep-alive-period-in-secs"><code class="docutils literal notranslate"><span class="pre">streaming_keep_alive_period_in_secs</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#phi-convict-threshold"><code class="docutils literal notranslate"><span class="pre">phi_convict_threshold</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#endpoint-snitch"><code class="docutils literal notranslate"><span class="pre">endpoint_snitch</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#dynamic-snitch-update-interval-in-ms"><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_update_interval_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#dynamic-snitch-reset-interval-in-ms"><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_reset_interval_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#dynamic-snitch-badness-threshold"><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_badness_threshold</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#request-scheduler"><code class="docutils literal notranslate"><span class="pre">request_scheduler</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#request-scheduler-options"><code class="docutils literal notranslate"><span class="pre">request_scheduler_options</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#request-scheduler-id"><code class="docutils literal notranslate"><span class="pre">request_scheduler_id</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#server-encryption-options"><code class="docutils literal notranslate"><span class="pre">server_encryption_options</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#client-encryption-options"><code class="docutils literal notranslate"><span class="pre">client_encryption_options</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-compression"><code class="docutils literal notranslate"><span class="pre">internode_compression</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#inter-dc-tcp-nodelay"><code class="docutils literal notranslate"><span class="pre">inter_dc_tcp_nodelay</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tracetype-query-ttl"><code class="docutils literal notranslate"><span class="pre">tracetype_query_ttl</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tracetype-repair-ttl"><code class="docutils literal notranslate"><span class="pre">tracetype_repair_ttl</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#gc-log-threshold-in-ms"><code class="docutils literal notranslate"><span class="pre">gc_log_threshold_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#enable-user-defined-functions"><code class="docutils literal notranslate"><span class="pre">enable_user_defined_functions</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#enable-scripted-user-defined-functions"><code class="docutils literal notranslate"><span class="pre">enable_scripted_user_defined_functions</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#windows-timer-interval"><code class="docutils literal notranslate"><span class="pre">windows_timer_interval</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#transparent-data-encryption-options"><code class="docutils literal notranslate"><span class="pre">transparent_data_encryption_options</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tombstone-warn-threshold"><code class="docutils literal notranslate"><span class="pre">tombstone_warn_threshold</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tombstone-failure-threshold"><code class="docutils literal notranslate"><span class="pre">tombstone_failure_threshold</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#replica-filtering-protection"><code class="docutils literal notranslate"><span class="pre">replica_filtering_protection</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#batch-size-warn-threshold-in-kb"><code class="docutils literal notranslate"><span class="pre">batch_size_warn_threshold_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#batch-size-fail-threshold-in-kb"><code class="docutils literal notranslate"><span class="pre">batch_size_fail_threshold_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#unlogged-batch-across-partitions-warn-threshold"><code class="docutils literal notranslate"><span class="pre">unlogged_batch_across_partitions_warn_threshold</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#compaction-large-partition-warning-threshold-mb"><code class="docutils literal notranslate"><span class="pre">compaction_large_partition_warning_threshold_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#gc-warn-threshold-in-ms"><code class="docutils literal notranslate"><span class="pre">gc_warn_threshold_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#max-value-size-in-mb"><code class="docutils literal notranslate"><span class="pre">max_value_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#back-pressure-enabled"><code class="docutils literal notranslate"><span class="pre">back_pressure_enabled</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#back-pressure-strategy"><code class="docutils literal notranslate"><span class="pre">back_pressure_strategy</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#otc-coalescing-strategy"><code class="docutils literal notranslate"><span class="pre">otc_coalescing_strategy</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#otc-coalescing-window-us"><code class="docutils literal notranslate"><span class="pre">otc_coalescing_window_us</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#otc-coalescing-enough-coalesced-messages"><code class="docutils literal notranslate"><span class="pre">otc_coalescing_enough_coalesced_messages</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#otc-backlog-expiration-interval-ms"><code class="docutils literal notranslate"><span class="pre">otc_backlog_expiration_interval_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#enable-materialized-views"><code class="docutils literal notranslate"><span class="pre">enable_materialized_views</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#enable-sasi-indexes"><code class="docutils literal notranslate"><span class="pre">enable_sasi_indexes</span></code></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cassandra-configuration-file">
+<span id="cassandra-yaml"></span><h1>Cassandra Configuration File<a class="headerlink" href="#cassandra-configuration-file" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="cluster-name">
+<h2><code class="docutils literal notranslate"><span class="pre">cluster_name</span></code><a class="headerlink" href="#cluster-name" title="Permalink to this headline">¶</a></h2>
+<p>The name of the cluster. This is mainly used to prevent machines in
+one logical cluster from joining another.</p>
+<p><em>Default Value:</em> ‘Test Cluster’</p>
+</div>
+<div class="section" id="num-tokens">
+<h2><code class="docutils literal notranslate"><span class="pre">num_tokens</span></code><a class="headerlink" href="#num-tokens" title="Permalink to this headline">¶</a></h2>
+<p>This defines the number of tokens randomly assigned to this node on the ring
+The more tokens, relative to other nodes, the larger the proportion of data
+that this node will store. You probably want all nodes to have the same number
+of tokens assuming they have equal hardware capability.</p>
+<p>If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility,
+and will use the initial_token as described below.</p>
+<p>Specifying initial_token will override this setting on the node’s initial start,
+on subsequent starts, this setting will apply even if initial token is set.</p>
+<p>If you already have a cluster with 1 token per node, and wish to migrate to
+multiple tokens per node, see <a class="reference external" href="http://wiki.apache.org/cassandra/Operations">http://wiki.apache.org/cassandra/Operations</a></p>
+<p><em>Default Value:</em> 256</p>
+</div>
+<div class="section" id="allocate-tokens-for-keyspace">
+<h2><code class="docutils literal notranslate"><span class="pre">allocate_tokens_for_keyspace</span></code><a class="headerlink" href="#allocate-tokens-for-keyspace" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Triggers automatic allocation of num_tokens tokens for this node. The allocation
+algorithm attempts to choose tokens in a way that optimizes replicated load over
+the nodes in the datacenter for the replication strategy used by the specified
+keyspace.</p>
+<p>The load assigned to each node will be close to proportional to its number of
+vnodes.</p>
+<p>Only supported with the Murmur3Partitioner.</p>
+<p><em>Default Value:</em> KEYSPACE</p>
+</div>
+<div class="section" id="initial-token">
+<h2><code class="docutils literal notranslate"><span class="pre">initial_token</span></code><a class="headerlink" href="#initial-token" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>initial_token allows you to specify tokens manually.  While you can use it with
+vnodes (num_tokens &gt; 1, above) – in which case you should provide a
+comma-separated list – it’s primarily used when adding nodes to legacy clusters
+that do not have vnodes enabled.</p>
+</div>
+<div class="section" id="hinted-handoff-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">hinted_handoff_enabled</span></code><a class="headerlink" href="#hinted-handoff-enabled" title="Permalink to this headline">¶</a></h2>
+<p>See <a class="reference external" href="http://wiki.apache.org/cassandra/HintedHandoff">http://wiki.apache.org/cassandra/HintedHandoff</a>
+May either be “true” or “false” to enable globally</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="hinted-handoff-disabled-datacenters">
+<h2><code class="docutils literal notranslate"><span class="pre">hinted_handoff_disabled_datacenters</span></code><a class="headerlink" href="#hinted-handoff-disabled-datacenters" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>When hinted_handoff_enabled is true, a black list of data centers that will not
+perform hinted handoff</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#    - DC1</span>
+<span class="c1">#    - DC2</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="max-hint-window-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">max_hint_window_in_ms</span></code><a class="headerlink" href="#max-hint-window-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>this defines the maximum amount of time a dead host will have hints
+generated.  After it has been dead this long, new hints for it will not be
+created until it has been seen alive and gone down again.</p>
+<p><em>Default Value:</em> 10800000 # 3 hours</p>
+</div>
+<div class="section" id="hinted-handoff-throttle-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">hinted_handoff_throttle_in_kb</span></code><a class="headerlink" href="#hinted-handoff-throttle-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum throttle in KBs per second, per delivery thread.  This will be
+reduced proportionally to the number of nodes in the cluster.  (If there
+are two nodes in the cluster, each delivery thread will use the maximum
+rate; if there are three, each will throttle to half of the maximum,
+since we expect two nodes to be delivering hints simultaneously.)</p>
+<p><em>Default Value:</em> 1024</p>
+</div>
+<div class="section" id="max-hints-delivery-threads">
+<h2><code class="docutils literal notranslate"><span class="pre">max_hints_delivery_threads</span></code><a class="headerlink" href="#max-hints-delivery-threads" title="Permalink to this headline">¶</a></h2>
+<p>Number of threads with which to deliver hints;
+Consider increasing this number when you have multi-dc deployments, since
+cross-dc handoff tends to be slower</p>
+<p><em>Default Value:</em> 2</p>
+</div>
+<div class="section" id="hints-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">hints_directory</span></code><a class="headerlink" href="#hints-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Directory where Cassandra should store hints.
+If not set, the default directory is $CASSANDRA_HOME/data/hints.</p>
+<p><em>Default Value:</em>  /var/lib/cassandra/hints</p>
+</div>
+<div class="section" id="hints-flush-period-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">hints_flush_period_in_ms</span></code><a class="headerlink" href="#hints-flush-period-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How often hints should be flushed from the internal buffers to disk.
+Will <em>not</em> trigger fsync.</p>
+<p><em>Default Value:</em> 10000</p>
+</div>
+<div class="section" id="max-hints-file-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">max_hints_file_size_in_mb</span></code><a class="headerlink" href="#max-hints-file-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size for a single hints file, in megabytes.</p>
+<p><em>Default Value:</em> 128</p>
+</div>
+<div class="section" id="hints-compression">
+<h2><code class="docutils literal notranslate"><span class="pre">hints_compression</span></code><a class="headerlink" href="#hints-compression" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Compression to apply to the hint files. If omitted, hints files
+will be written uncompressed. LZ4, Snappy, and Deflate compressors
+are supported.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#   - class_name: LZ4Compressor</span>
+<span class="c1">#     parameters:</span>
+<span class="c1">#         -</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="batchlog-replay-throttle-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">batchlog_replay_throttle_in_kb</span></code><a class="headerlink" href="#batchlog-replay-throttle-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum throttle in KBs per second, total. This will be
+reduced proportionally to the number of nodes in the cluster.</p>
+<p><em>Default Value:</em> 1024</p>
+</div>
+<div class="section" id="authenticator">
+<h2><code class="docutils literal notranslate"><span class="pre">authenticator</span></code><a class="headerlink" href="#authenticator" title="Permalink to this headline">¶</a></h2>
+<p>Authentication backend, implementing IAuthenticator; used to identify users
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator,
+PasswordAuthenticator}.</p>
+<ul class="simple">
+<li>AllowAllAuthenticator performs no checks - set it to disable authentication.</li>
+<li>PasswordAuthenticator relies on username/password pairs to authenticate
+users. It keeps usernames and hashed passwords in system_auth.roles table.
+Please increase system_auth keyspace replication factor if you use this authenticator.
+If using PasswordAuthenticator, CassandraRoleManager must also be used (see below)</li>
+</ul>
+<p><em>Default Value:</em> AllowAllAuthenticator</p>
+</div>
+<div class="section" id="authorizer">
+<h2><code class="docutils literal notranslate"><span class="pre">authorizer</span></code><a class="headerlink" href="#authorizer" title="Permalink to this headline">¶</a></h2>
+<p>Authorization backend, implementing IAuthorizer; used to limit access/provide permissions
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer,
+CassandraAuthorizer}.</p>
+<ul class="simple">
+<li>AllowAllAuthorizer allows any action to any user - set it to disable authorization.</li>
+<li>CassandraAuthorizer stores permissions in system_auth.role_permissions table. Please
+increase system_auth keyspace replication factor if you use this authorizer.</li>
+</ul>
+<p><em>Default Value:</em> AllowAllAuthorizer</p>
+</div>
+<div class="section" id="role-manager">
+<h2><code class="docutils literal notranslate"><span class="pre">role_manager</span></code><a class="headerlink" href="#role-manager" title="Permalink to this headline">¶</a></h2>
+<p>Part of the Authentication &amp; Authorization backend, implementing IRoleManager; used
+to maintain grants and memberships between roles.
+Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager,
+which stores role information in the system_auth keyspace. Most functions of the
+IRoleManager require an authenticated login, so unless the configured IAuthenticator
+actually implements authentication, most of this functionality will be unavailable.</p>
+<ul class="simple">
+<li>CassandraRoleManager stores role data in the system_auth keyspace. Please
+increase system_auth keyspace replication factor if you use this role manager.</li>
+</ul>
+<p><em>Default Value:</em> CassandraRoleManager</p>
+</div>
+<div class="section" id="roles-validity-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">roles_validity_in_ms</span></code><a class="headerlink" href="#roles-validity-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>Validity period for roles cache (fetching granted roles can be an expensive
+operation depending on the role manager, CassandraRoleManager is one example)
+Granted roles are cached for authenticated sessions in AuthenticatedUser and
+after the period specified here, become eligible for (async) reload.
+Defaults to 2000, set to 0 to disable caching entirely.
+Will be disabled automatically for AllowAllAuthenticator.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="roles-update-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">roles_update_interval_in_ms</span></code><a class="headerlink" href="#roles-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Refresh interval for roles cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If roles_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as roles_validity_in_ms.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="permissions-validity-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">permissions_validity_in_ms</span></code><a class="headerlink" href="#permissions-validity-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>Validity period for permissions cache (fetching permissions can be an
+expensive operation depending on the authorizer, CassandraAuthorizer is
+one example). Defaults to 2000, set to 0 to disable.
+Will be disabled automatically for AllowAllAuthorizer.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="permissions-update-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">permissions_update_interval_in_ms</span></code><a class="headerlink" href="#permissions-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Refresh interval for permissions cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If permissions_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as permissions_validity_in_ms.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="credentials-validity-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">credentials_validity_in_ms</span></code><a class="headerlink" href="#credentials-validity-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>Validity period for credentials cache. This cache is tightly coupled to
+the provided PasswordAuthenticator implementation of IAuthenticator. If
+another IAuthenticator implementation is configured, this cache will not
+be automatically used and so the following settings will have no effect.
+Please note, credentials are cached in their encrypted form, so while
+activating this cache may reduce the number of queries made to the
+underlying table, it may not  bring a significant reduction in the
+latency of individual authentication attempts.
+Defaults to 2000, set to 0 to disable credentials caching.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="credentials-update-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">credentials_update_interval_in_ms</span></code><a class="headerlink" href="#credentials-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Refresh interval for credentials cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If credentials_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as credentials_validity_in_ms.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="partitioner">
+<h2><code class="docutils literal notranslate"><span class="pre">partitioner</span></code><a class="headerlink" href="#partitioner" title="Permalink to this headline">¶</a></h2>
+<p>The partitioner is responsible for distributing groups of rows (by
+partition key) across nodes in the cluster.  You should leave this
+alone for new clusters.  The partitioner can NOT be changed without
+reloading all data, so when upgrading you should set this to the
+same partitioner you were already using.</p>
+<p>Besides Murmur3Partitioner, partitioners included for backwards
+compatibility include RandomPartitioner, ByteOrderedPartitioner, and
+OrderPreservingPartitioner.</p>
+<p><em>Default Value:</em> org.apache.cassandra.dht.Murmur3Partitioner</p>
+</div>
+<div class="section" id="data-file-directories">
+<h2><code class="docutils literal notranslate"><span class="pre">data_file_directories</span></code><a class="headerlink" href="#data-file-directories" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Directories where Cassandra should store data on disk.  Cassandra
+will spread data evenly across them, subject to the granularity of
+the configured compaction strategy.
+If not set, the default directory is $CASSANDRA_HOME/data/data.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#     - /var/lib/cassandra/data</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="commitlog-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_directory</span></code><a class="headerlink" href="#commitlog-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+commit log.  when running on magnetic HDD, this should be a
+separate spindle than the data directories.
+If not set, the default directory is $CASSANDRA_HOME/data/commitlog.</p>
+<p><em>Default Value:</em>  /var/lib/cassandra/commitlog</p>
+</div>
+<div class="section" id="cdc-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">cdc_enabled</span></code><a class="headerlink" href="#cdc-enabled" title="Permalink to this headline">¶</a></h2>
+<p>Enable / disable CDC functionality on a per-node basis. This modifies the logic used
+for write path allocation rejection (standard: never reject. cdc: reject Mutation
+containing a CDC-enabled table if at space limit in cdc_raw_directory).</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="cdc-raw-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">cdc_raw_directory</span></code><a class="headerlink" href="#cdc-raw-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the
+segment contains mutations for a CDC-enabled table. This should be placed on a
+separate spindle than the data directories. If not set, the default directory is
+$CASSANDRA_HOME/data/cdc_raw.</p>
+<p><em>Default Value:</em>  /var/lib/cassandra/cdc_raw</p>
+</div>
+<div class="section" id="disk-failure-policy">
+<h2><code class="docutils literal notranslate"><span class="pre">disk_failure_policy</span></code><a class="headerlink" href="#disk-failure-policy" title="Permalink to this headline">¶</a></h2>
+<p>Policy for data disk failures:</p>
+<dl class="docutils">
+<dt>die</dt>
+<dd>shut down gossip and client transports and kill the JVM for any fs errors or
+single-sstable errors, so the node can be replaced.</dd>
+<dt>stop_paranoid</dt>
+<dd>shut down gossip and client transports even for single-sstable errors,
+kill the JVM for errors during startup.</dd>
+<dt>stop</dt>
+<dd>shut down gossip and client transports, leaving the node effectively dead, but
+can still be inspected via JMX, kill the JVM for errors during startup.</dd>
+<dt>best_effort</dt>
+<dd>stop using the failed disk and respond to requests based on
+remaining available sstables.  This means you WILL see obsolete
+data at CL.ONE!</dd>
+<dt>ignore</dt>
+<dd>ignore fatal errors and let requests fail, as in pre-1.2 Cassandra</dd>
+</dl>
+<p><em>Default Value:</em> stop</p>
+</div>
+<div class="section" id="commit-failure-policy">
+<h2><code class="docutils literal notranslate"><span class="pre">commit_failure_policy</span></code><a class="headerlink" href="#commit-failure-policy" title="Permalink to this headline">¶</a></h2>
+<p>Policy for commit disk failures:</p>
+<dl class="docutils">
+<dt>die</dt>
+<dd>shut down gossip and Thrift and kill the JVM, so the node can be replaced.</dd>
+<dt>stop</dt>
+<dd>shut down gossip and Thrift, leaving the node effectively dead, but
+can still be inspected via JMX.</dd>
+<dt>stop_commit</dt>
+<dd>shutdown the commit log, letting writes collect but
+continuing to service reads, as in pre-2.0.5 Cassandra</dd>
+<dt>ignore</dt>
+<dd>ignore fatal errors and let the batches fail</dd>
+</dl>
+<p><em>Default Value:</em> stop</p>
+</div>
+<div class="section" id="prepared-statements-cache-size-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">prepared_statements_cache_size_mb</span></code><a class="headerlink" href="#prepared-statements-cache-size-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size of the native protocol prepared statement cache</p>
+<p>Valid values are either “auto” (omitting the value) or a value greater 0.</p>
+<p>Note that specifying a too large value will result in long running GCs and possbily
+out-of-memory errors. Keep the value at a small fraction of the heap.</p>
+<p>If you constantly see “prepared statements discarded in the last minute because
+cache limit reached” messages, the first step is to investigate the root cause
+of these messages and check whether prepared statements are used correctly -
+i.e. use bind markers for variable parts.</p>
+<p>Do only change the default value, if you really have more prepared statements than
+fit in the cache. In most cases it is not neccessary to change this value.
+Constantly re-preparing statements is a performance penalty.</p>
+<p>Default value (“auto”) is 1/256th of the heap or 10MB, whichever is greater</p>
+</div>
+<div class="section" id="thrift-prepared-statements-cache-size-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">thrift_prepared_statements_cache_size_mb</span></code><a class="headerlink" href="#thrift-prepared-statements-cache-size-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size of the Thrift prepared statement cache</p>
+<p>If you do not use Thrift at all, it is safe to leave this value at “auto”.</p>
+<p>See description of ‘prepared_statements_cache_size_mb’ above for more information.</p>
+<p>Default value (“auto”) is 1/256th of the heap or 10MB, whichever is greater</p>
+</div>
+<div class="section" id="key-cache-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">key_cache_size_in_mb</span></code><a class="headerlink" href="#key-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size of the key cache in memory.</p>
+<p>Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
+minimum, sometimes more. The key cache is fairly tiny for the amount of
+time it saves, so it’s worthwhile to use it at large numbers.
+The row cache saves even more time, but must contain the entire row,
+so it is extremely space-intensive. It’s best to only use the
+row cache if you have hot rows or static rows.</p>
+<p>NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.</p>
+<p>Default value is empty to make it “auto” (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache.</p>
+</div>
+<div class="section" id="key-cache-save-period">
+<h2><code class="docutils literal notranslate"><span class="pre">key_cache_save_period</span></code><a class="headerlink" href="#key-cache-save-period" title="Permalink to this headline">¶</a></h2>
+<p>Duration in seconds after which Cassandra should
+save the key cache. Caches are saved to saved_caches_directory as
+specified in this configuration file.</p>
+<p>Saved caches greatly improve cold-start speeds, and is relatively cheap in
+terms of I/O for the key cache. Row cache saving is much more expensive and
+has limited use.</p>
+<p>Default is 14400 or 4 hours.</p>
+<p><em>Default Value:</em> 14400</p>
+</div>
+<div class="section" id="key-cache-keys-to-save">
+<h2><code class="docutils literal notranslate"><span class="pre">key_cache_keys_to_save</span></code><a class="headerlink" href="#key-cache-keys-to-save" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of keys from the key cache to save
+Disabled by default, meaning all keys are going to be saved</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="row-cache-class-name">
+<h2><code class="docutils literal notranslate"><span class="pre">row_cache_class_name</span></code><a class="headerlink" href="#row-cache-class-name" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Row cache implementation class name. Available implementations:</p>
+<dl class="docutils">
+<dt>org.apache.cassandra.cache.OHCProvider</dt>
+<dd>Fully off-heap row cache implementation (default).</dd>
+<dt>org.apache.cassandra.cache.SerializingCacheProvider</dt>
+<dd>This is the row cache implementation availabile
+in previous releases of Cassandra.</dd>
+</dl>
+<p><em>Default Value:</em> org.apache.cassandra.cache.OHCProvider</p>
+</div>
+<div class="section" id="row-cache-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">row_cache_size_in_mb</span></code><a class="headerlink" href="#row-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size of the row cache in memory.
+Please note that OHC cache implementation requires some additional off-heap memory to manage
+the map structures and some in-flight memory during operations before/after cache entries can be
+accounted against the cache capacity. This overhead is usually small compared to the whole capacity.
+Do not specify more memory that the system can afford in the worst usual situation and leave some
+headroom for OS block level cache. Do never allow your system to swap.</p>
+<p>Default value is 0, to disable row caching.</p>
+<p><em>Default Value:</em> 0</p>
+</div>
+<div class="section" id="row-cache-save-period">
+<h2><code class="docutils literal notranslate"><span class="pre">row_cache_save_period</span></code><a class="headerlink" href="#row-cache-save-period" title="Permalink to this headline">¶</a></h2>
+<p>Duration in seconds after which Cassandra should save the row cache.
+Caches are saved to saved_caches_directory as specified in this configuration file.</p>
+<p>Saved caches greatly improve cold-start speeds, and is relatively cheap in
+terms of I/O for the key cache. Row cache saving is much more expensive and
+has limited use.</p>
+<p>Default is 0 to disable saving the row cache.</p>
+<p><em>Default Value:</em> 0</p>
+</div>
+<div class="section" id="row-cache-keys-to-save">
+<h2><code class="docutils literal notranslate"><span class="pre">row_cache_keys_to_save</span></code><a class="headerlink" href="#row-cache-keys-to-save" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of keys from the row cache to save.
+Specify 0 (which is the default), meaning all keys are going to be saved</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="counter-cache-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">counter_cache_size_in_mb</span></code><a class="headerlink" href="#counter-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size of the counter cache in memory.</p>
+<p>Counter cache helps to reduce counter locks’ contention for hot counter cells.
+In case of RF = 1 a counter cache hit will cause Cassandra to skip the read before
+write entirely. With RF &gt; 1 a counter cache hit will still help to reduce the duration
+of the lock hold, helping with hot counter cell updates, but will not allow skipping
+the read entirely. Only the local (clock, count) tuple of a counter cell is kept
+in memory, not the whole counter, so it’s relatively cheap.</p>
+<p>NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.</p>
+<p>Default value is empty to make it “auto” (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache.
+NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache.</p>
+</div>
+<div class="section" id="counter-cache-save-period">
+<h2><code class="docutils literal notranslate"><span class="pre">counter_cache_save_period</span></code><a class="headerlink" href="#counter-cache-save-period" title="Permalink to this headline">¶</a></h2>
+<p>Duration in seconds after which Cassandra should
+save the counter cache (keys only). Caches are saved to saved_caches_directory as
+specified in this configuration file.</p>
+<p>Default is 7200 or 2 hours.</p>
+<p><em>Default Value:</em> 7200</p>
+</div>
+<div class="section" id="counter-cache-keys-to-save">
+<h2><code class="docutils literal notranslate"><span class="pre">counter_cache_keys_to_save</span></code><a class="headerlink" href="#counter-cache-keys-to-save" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of keys from the counter cache to save
+Disabled by default, meaning all keys are going to be saved</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="saved-caches-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">saved_caches_directory</span></code><a class="headerlink" href="#saved-caches-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>saved caches
+If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.</p>
+<p><em>Default Value:</em>  /var/lib/cassandra/saved_caches</p>
+</div>
+<div class="section" id="commitlog-sync">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_sync</span></code><a class="headerlink" href="#commitlog-sync" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>commitlog_sync may be either “periodic” or “batch.”</p>
+<p>When in batch mode, Cassandra won’t ack writes until the commit log
+has been fsynced to disk.  It will wait
+commitlog_sync_batch_window_in_ms milliseconds between fsyncs.
+This window should be kept short because the writer threads will
+be unable to do extra work while waiting.  (You may need to increase
+concurrent_writes for the same reason.)</p>
+<p><em>Default Value:</em> batch</p>
+</div>
+<div class="section" id="commitlog-sync-batch-window-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_sync_batch_window_in_ms</span></code><a class="headerlink" href="#commitlog-sync-batch-window-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 2</p>
+</div>
+<div class="section" id="id1">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_sync</span></code><a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
+<p>the other option is “periodic” where writes may be acked immediately
+and the CommitLog is simply synced every commitlog_sync_period_in_ms
+milliseconds.</p>
+<p><em>Default Value:</em> periodic</p>
+</div>
+<div class="section" id="commitlog-sync-period-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_sync_period_in_ms</span></code><a class="headerlink" href="#commitlog-sync-period-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 10000</p>
+</div>
+<div class="section" id="commitlog-segment-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_segment_size_in_mb</span></code><a class="headerlink" href="#commitlog-segment-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>The size of the individual commitlog file segments.  A commitlog
+segment may be archived, deleted, or recycled once all the data
+in it (potentially from each columnfamily in the system) has been
+flushed to sstables.</p>
+<p>The default size is 32, which is almost always fine, but if you are
+archiving commitlog segments (see commitlog_archiving.properties),
+then you probably want a finer granularity of archiving; 8 or 16 MB
+is reasonable.
+Max mutation size is also configurable via max_mutation_size_in_kb setting in
+cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024.
+This should be positive and less than 2048.</p>
+<p>NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must
+be set to at least twice the size of max_mutation_size_in_kb / 1024</p>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="commitlog-compression">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_compression</span></code><a class="headerlink" href="#commitlog-compression" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Compression to apply to the commit log. If omitted, the commit log
+will be written uncompressed.  LZ4, Snappy, and Deflate compressors
+are supported.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#   - class_name: LZ4Compressor</span>
+<span class="c1">#     parameters:</span>
+<span class="c1">#         -</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="seed-provider">
+<h2><code class="docutils literal notranslate"><span class="pre">seed_provider</span></code><a class="headerlink" href="#seed-provider" title="Permalink to this headline">¶</a></h2>
+<p>any class that implements the SeedProvider interface and has a
+constructor that takes a Map&lt;String, String&gt; of parameters will do.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Addresses of hosts that are deemed contact points.</span>
+<span class="c1"># Cassandra nodes use this list of hosts to find each other and learn</span>
+<span class="c1"># the topology of the ring.  You must change this if you are running</span>
+<span class="c1"># multiple nodes!</span>
+<span class="o">-</span> <span class="n">class_name</span><span class="p">:</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">SimpleSeedProvider</span>
+  <span class="n">parameters</span><span class="p">:</span>
+      <span class="c1"># seeds is actually a comma-delimited list of addresses.</span>
+      <span class="c1"># Ex: &quot;&lt;ip1&gt;,&lt;ip2&gt;,&lt;ip3&gt;&quot;</span>
+      <span class="o">-</span> <span class="n">seeds</span><span class="p">:</span> <span class="s2">&quot;127.0.0.1&quot;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="concurrent-reads">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_reads</span></code><a class="headerlink" href="#concurrent-reads" title="Permalink to this headline">¶</a></h2>
+<p>For workloads with more data than can fit in memory, Cassandra’s
+bottleneck will be reads that need to fetch data from
+disk. “concurrent_reads” should be set to (16 * number_of_drives) in
+order to allow the operations to enqueue low enough in the stack
+that the OS and drives can reorder them. Same applies to
+“concurrent_counter_writes”, since counter writes read the current
+values before incrementing and writing them back.</p>
+<p>On the other hand, since writes are almost never IO bound, the ideal
+number of “concurrent_writes” is dependent on the number of cores in
+your system; (8 * number_of_cores) is a good rule of thumb.</p>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="concurrent-writes">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_writes</span></code><a class="headerlink" href="#concurrent-writes" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="concurrent-counter-writes">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_counter_writes</span></code><a class="headerlink" href="#concurrent-counter-writes" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="concurrent-materialized-view-writes">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_materialized_view_writes</span></code><a class="headerlink" href="#concurrent-materialized-view-writes" title="Permalink to this headline">¶</a></h2>
+<p>For materialized view writes, as there is a read involved, so this should
+be limited by the less of concurrent reads or concurrent writes.</p>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="file-cache-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">file_cache_size_in_mb</span></code><a class="headerlink" href="#file-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Maximum memory to use for sstable chunk cache and buffer pooling.
+32MB of this are reserved for pooling buffers, the rest is used as an
+cache that holds uncompressed sstable chunks.
+Defaults to the smaller of 1/4 of heap or 512MB. This pool is allocated off-heap,
+so is in addition to the memory allocated for heap. The cache also has on-heap
+overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size
+if the default 64k chunk size is used).
+Memory is only allocated when needed.</p>
+<p><em>Default Value:</em> 512</p>
+</div>
+<div class="section" id="buffer-pool-use-heap-if-exhausted">
+<h2><code class="docutils literal notranslate"><span class="pre">buffer_pool_use_heap_if_exhausted</span></code><a class="headerlink" href="#buffer-pool-use-heap-if-exhausted" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Flag indicating whether to allocate on or off heap when the sstable buffer
+pool is exhausted, that is when it has exceeded the maximum memory
+file_cache_size_in_mb, beyond which it will not cache buffers but allocate on request.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="disk-optimization-strategy">
+<h2><code class="docutils literal notranslate"><span class="pre">disk_optimization_strategy</span></code><a class="headerlink" href="#disk-optimization-strategy" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>The strategy for optimizing disk read
+Possible values are:
+ssd (for solid state disks, the default)
+spinning (for spinning disks)</p>
+<p><em>Default Value:</em> ssd</p>
+</div>
+<div class="section" id="memtable-heap-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_heap_space_in_mb</span></code><a class="headerlink" href="#memtable-heap-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Total permitted memory to use for memtables. Cassandra will stop
+accepting writes when the limit is exceeded until a flush completes,
+and will trigger a flush based on memtable_cleanup_threshold
+If omitted, Cassandra will set both to 1/4 the size of the heap.</p>
+<p><em>Default Value:</em> 2048</p>
+</div>
+<div class="section" id="memtable-offheap-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_offheap_space_in_mb</span></code><a class="headerlink" href="#memtable-offheap-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 2048</p>
+</div>
+<div class="section" id="memtable-cleanup-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_cleanup_threshold</span></code><a class="headerlink" href="#memtable-cleanup-threshold" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>memtable_cleanup_threshold is deprecated. The default calculation
+is the only reasonable choice. See the comments on  memtable_flush_writers
+for more information.</p>
+<p>Ratio of occupied non-flushing memtable size to total permitted size
+that will trigger a flush of the largest memtable. Larger mct will
+mean larger flushes and hence less compaction, but also less concurrent
+flush activity which can make it difficult to keep your disks fed
+under heavy write load.</p>
+<p>memtable_cleanup_threshold defaults to 1 / (memtable_flush_writers + 1)</p>
+<p><em>Default Value:</em> 0.11</p>
+</div>
+<div class="section" id="memtable-allocation-type">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_allocation_type</span></code><a class="headerlink" href="#memtable-allocation-type" title="Permalink to this headline">¶</a></h2>
+<p>Specify the way Cassandra allocates and manages memtable memory.
+Options are:</p>
+<dl class="docutils">
+<dt>heap_buffers</dt>
+<dd>on heap nio buffers</dd>
+<dt>offheap_buffers</dt>
+<dd>off heap (direct) nio buffers</dd>
+<dt>offheap_objects</dt>
+<dd>off heap objects</dd>
+</dl>
+<p><em>Default Value:</em> heap_buffers</p>
+</div>
+<div class="section" id="repair-session-max-tree-depth">
+<h2><code class="docutils literal notranslate"><span class="pre">repair_session_max_tree_depth</span></code><a class="headerlink" href="#repair-session-max-tree-depth" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Limits the maximum Merkle tree depth to avoid consuming too much
+memory during repairs.</p>
+<p>The default setting of 18 generates trees of maximum size around
+50 MiB / tree. If you are running out of memory during repairs consider
+lowering this to 15 (~6 MiB / tree) or lower, but try not to lower it
+too much past that or you will lose too much resolution and stream
+too much redundant data during repair. Cannot be set lower than 10.</p>
+<p>For more details see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14096">https://issues.apache.org/jira/browse/CASSANDRA-14096</a>.</p>
+<p><em>Default Value:</em> 18</p>
+</div>
+<div class="section" id="commitlog-total-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_total_space_in_mb</span></code><a class="headerlink" href="#commitlog-total-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Total space to use for commit logs on disk.</p>
+<p>If space gets above this value, Cassandra will flush every dirty CF
+in the oldest segment and remove it.  So a small total commitlog space
+will tend to cause more flush activity on less-active columnfamilies.</p>
+<p>The default value is the smaller of 8192, and 1/4 of the total space
+of the commitlog volume.</p>
+<p><em>Default Value:</em> 8192</p>
+</div>
+<div class="section" id="memtable-flush-writers">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_flush_writers</span></code><a class="headerlink" href="#memtable-flush-writers" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>This sets the number of memtable flush writer threads per disk
+as well as the total number of memtables that can be flushed concurrently.
+These are generally a combination of compute and IO bound.</p>
+<p>Memtable flushing is more CPU efficient than memtable ingest and a single thread
+can keep up with the ingest rate of a whole server on a single fast disk
+until it temporarily becomes IO bound under contention typically with compaction.
+At that point you need multiple flush threads. At some point in the future
+it may become CPU bound all the time.</p>
+<p>You can tell if flushing is falling behind using the MemtablePool.BlockedOnAllocation
+metric which should be 0, but will be non-zero if threads are blocked waiting on flushing
+to free memory.</p>
+<p>memtable_flush_writers defaults to two for a single data directory.
+This means that two  memtables can be flushed concurrently to the single data directory.
+If you have multiple data directories the default is one memtable flushing at a time
+but the flush will use a thread per data directory so you will get two or more writers.</p>
+<p>Two is generally enough to flush on a fast disk [array] mounted as a single data directory.
+Adding more flush writers will result in smaller more frequent flushes that introduce more
+compaction overhead.</p>
+<p>There is a direct tradeoff between number of memtables that can be flushed concurrently
+and flush size and frequency. More is not better you just need enough flush writers
+to never stall waiting for flushing to free memory.</p>
+<p><em>Default Value:</em> 2</p>
+</div>
+<div class="section" id="cdc-total-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">cdc_total_space_in_mb</span></code><a class="headerlink" href="#cdc-total-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Total space to use for change-data-capture logs on disk.</p>
+<p>If space gets above this value, Cassandra will throw WriteTimeoutException
+on Mutations including tables with CDC enabled. A CDCCompactor is responsible
+for parsing the raw CDC logs and deleting them when parsing is completed.</p>
+<p>The default value is the min of 4096 mb and 1/8th of the total space
+of the drive where cdc_raw_directory resides.</p>
+<p><em>Default Value:</em> 4096</p>
+</div>
+<div class="section" id="cdc-free-space-check-interval-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">cdc_free_space_check_interval_ms</span></code><a class="headerlink" href="#cdc-free-space-check-interval-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>When we hit our cdc_raw limit and the CDCCompactor is either running behind
+or experiencing backpressure, we check at the following interval to see if any
+new space for cdc-tracked tables has been made available. Default to 250ms</p>
+<p><em>Default Value:</em> 250</p>
+</div>
+<div class="section" id="index-summary-capacity-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">index_summary_capacity_in_mb</span></code><a class="headerlink" href="#index-summary-capacity-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>A fixed memory pool size in MB for for SSTable index summaries. If left
+empty, this will default to 5% of the heap size. If the memory usage of
+all index summaries exceeds this limit, SSTables with low read rates will
+shrink their index summaries in order to meet this limit.  However, this
+is a best-effort process. In extreme conditions Cassandra may need to use
+more than this amount of memory.</p>
+</div>
+<div class="section" id="index-summary-resize-interval-in-minutes">
+<h2><code class="docutils literal notranslate"><span class="pre">index_summary_resize_interval_in_minutes</span></code><a class="headerlink" href="#index-summary-resize-interval-in-minutes" title="Permalink to this headline">¶</a></h2>
+<p>How frequently index summaries should be resampled.  This is done
+periodically to redistribute memory from the fixed-size pool to sstables
+proportional their recent read rates.  Setting to -1 will disable this
+process, leaving existing index summaries at their current sampling level.</p>
+<p><em>Default Value:</em> 60</p>
+</div>
+<div class="section" id="trickle-fsync">
+<h2><code class="docutils literal notranslate"><span class="pre">trickle_fsync</span></code><a class="headerlink" href="#trickle-fsync" title="Permalink to this headline">¶</a></h2>
+<p>Whether to, when doing sequential writing, fsync() at intervals in
+order to force the operating system to flush the dirty
+buffers. Enable this to avoid sudden dirty buffer flushing from
+impacting read latencies. Almost always a good idea on SSDs; not
+necessarily on platters.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="trickle-fsync-interval-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">trickle_fsync_interval_in_kb</span></code><a class="headerlink" href="#trickle-fsync-interval-in-kb" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 10240</p>
+</div>
+<div class="section" id="storage-port">
+<h2><code class="docutils literal notranslate"><span class="pre">storage_port</span></code><a class="headerlink" href="#storage-port" title="Permalink to this headline">¶</a></h2>
+<p>TCP port, for commands and data
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
+<p><em>Default Value:</em> 7000</p>
+</div>
+<div class="section" id="ssl-storage-port">
+<h2><code class="docutils literal notranslate"><span class="pre">ssl_storage_port</span></code><a class="headerlink" href="#ssl-storage-port" title="Permalink to this headline">¶</a></h2>
+<p>SSL port, for encrypted communication.  Unused unless enabled in
+encryption_options
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
+<p><em>Default Value:</em> 7001</p>
+</div>
+<div class="section" id="listen-address">
+<h2><code class="docutils literal notranslate"><span class="pre">listen_address</span></code><a class="headerlink" href="#listen-address" title="Permalink to this headline">¶</a></h2>
+<p>Address or interface to bind to and tell other Cassandra nodes to connect to.
+You _must_ change this if you want multiple nodes to be able to communicate!</p>
+<p>Set listen_address OR listen_interface, not both.</p>
+<p>Leaving it blank leaves it up to InetAddress.getLocalHost(). This
+will always do the Right Thing _if_ the node is properly configured
+(hostname, name resolution, etc), and the Right Thing is to use the
+address associated with the hostname (it might not be).</p>
+<p>Setting listen_address to 0.0.0.0 is always wrong.</p>
+<p><em>Default Value:</em> localhost</p>
+</div>
+<div class="section" id="listen-interface">
+<h2><code class="docutils literal notranslate"><span class="pre">listen_interface</span></code><a class="headerlink" href="#listen-interface" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Set listen_address OR listen_interface, not both. Interfaces must correspond
+to a single address, IP aliasing is not supported.</p>
+<p><em>Default Value:</em> eth0</p>
+</div>
+<div class="section" id="listen-interface-prefer-ipv6">
+<h2><code class="docutils literal notranslate"><span class="pre">listen_interface_prefer_ipv6</span></code><a class="headerlink" href="#listen-interface-prefer-ipv6" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
+you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4
+address will be used. If true the first ipv6 address will be used. Defaults to false preferring
+ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="broadcast-address">
+<h2><code class="docutils literal notranslate"><span class="pre">broadcast_address</span></code><a class="headerlink" href="#broadcast-address" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Address to broadcast to other Cassandra nodes
+Leaving this blank will set it to the same value as listen_address</p>
+<p><em>Default Value:</em> 1.2.3.4</p>
+</div>
+<div class="section" id="listen-on-broadcast-address">
+<h2><code class="docutils literal notranslate"><span class="pre">listen_on_broadcast_address</span></code><a class="headerlink" href="#listen-on-broadcast-address" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>When using multiple physical network interfaces, set this
+to true to listen on broadcast_address in addition to
+the listen_address, allowing nodes to communicate in both
+interfaces.
+Ignore this property if the network configuration automatically
+routes  between the public and private networks such as EC2.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="internode-authenticator">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_authenticator</span></code><a class="headerlink" href="#internode-authenticator" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Internode authentication backend, implementing IInternodeAuthenticator;
+used to allow/disallow connections from peer nodes.</p>
+<p><em>Default Value:</em> org.apache.cassandra.auth.AllowAllInternodeAuthenticator</p>
+</div>
+<div class="section" id="start-native-transport">
+<h2><code class="docutils literal notranslate"><span class="pre">start_native_transport</span></code><a class="headerlink" href="#start-native-transport" title="Permalink to this headline">¶</a></h2>
+<p>Whether to start the native transport server.
+Please note that the address on which the native transport is bound is the
+same as the rpc_address. The port however is different and specified below.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="native-transport-port">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_port</span></code><a class="headerlink" href="#native-transport-port" title="Permalink to this headline">¶</a></h2>
+<p>port for the CQL native transport to listen for clients on
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
+<p><em>Default Value:</em> 9042</p>
+</div>
+<div class="section" id="native-transport-port-ssl">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_port_ssl</span></code><a class="headerlink" href="#native-transport-port-ssl" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+Enabling native transport encryption in client_encryption_options allows you to either use
+encryption for the standard port or to use a dedicated, additional port along with the unencrypted
+standard native_transport_port.
+Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption
+for native_transport_port. Setting native_transport_port_ssl to a different value
+from native_transport_port will use encryption for native_transport_port_ssl while
+keeping native_transport_port unencrypted.</p>
+<p><em>Default Value:</em> 9142</p>
+</div>
+<div class="section" id="native-transport-max-threads">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_max_threads</span></code><a class="headerlink" href="#native-transport-max-threads" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+The maximum threads for handling requests when the native transport is used.
+This is similar to rpc_max_threads though the default differs slightly (and
+there is no native_transport_min_threads, idle threads will always be stopped
+after 30 seconds).</p>
+<p><em>Default Value:</em> 128</p>
+</div>
+<div class="section" id="native-transport-max-frame-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_max_frame_size_in_mb</span></code><a class="headerlink" href="#native-transport-max-frame-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>The maximum size of allowed frame. Frame (requests) larger than this will
+be rejected as invalid. The default is 256MB. If you’re changing this parameter,
+you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048.</p>
+<p><em>Default Value:</em> 256</p>
+</div>
+<div class="section" id="native-transport-max-concurrent-connections">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_max_concurrent_connections</span></code><a class="headerlink" href="#native-transport-max-concurrent-connections" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>The maximum number of concurrent client connections.
+The default is -1, which means unlimited.</p>
+<p><em>Default Value:</em> -1</p>
+</div>
+<div class="section" id="native-transport-max-concurrent-connections-per-ip">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_max_concurrent_connections_per_ip</span></code><a class="headerlink" href="#native-transport-max-concurrent-connections-per-ip" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>The maximum number of concurrent client connections per source ip.
+The default is -1, which means unlimited.</p>
+<p><em>Default Value:</em> -1</p>
+</div>
+<div class="section" id="start-rpc">
+<h2><code class="docutils literal notranslate"><span class="pre">start_rpc</span></code><a class="headerlink" href="#start-rpc" title="Permalink to this headline">¶</a></h2>
+<p>Whether to start the thrift rpc server.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="rpc-address">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_address</span></code><a class="headerlink" href="#rpc-address" title="Permalink to this headline">¶</a></h2>
+<p>The address or interface to bind the Thrift RPC service and native transport
+server to.</p>
+<p>Set rpc_address OR rpc_interface, not both.</p>
+<p>Leaving rpc_address blank has the same effect as on listen_address
+(i.e. it will be based on the configured hostname of the node).</p>
+<p>Note that unlike listen_address, you can specify 0.0.0.0, but you must also
+set broadcast_rpc_address to a value other than 0.0.0.0.</p>
+<p>For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
+<p><em>Default Value:</em> localhost</p>
+</div>
+<div class="section" id="rpc-interface">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_interface</span></code><a class="headerlink" href="#rpc-interface" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Set rpc_address OR rpc_interface, not both. Interfaces must correspond
+to a single address, IP aliasing is not supported.</p>
+<p><em>Default Value:</em> eth1</p>
+</div>
+<div class="section" id="rpc-interface-prefer-ipv6">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_interface_prefer_ipv6</span></code><a class="headerlink" href="#rpc-interface-prefer-ipv6" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
+you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4
+address will be used. If true the first ipv6 address will be used. Defaults to false preferring
+ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="rpc-port">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_port</span></code><a class="headerlink" href="#rpc-port" title="Permalink to this headline">¶</a></h2>
+<p>port for Thrift to listen for clients on</p>
+<p><em>Default Value:</em> 9160</p>
+</div>
+<div class="section" id="broadcast-rpc-address">
+<h2><code class="docutils literal notranslate"><span class="pre">broadcast_rpc_address</span></code><a class="headerlink" href="#broadcast-rpc-address" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>RPC address to broadcast to drivers and other Cassandra nodes. This cannot
+be set to 0.0.0.0. If left blank, this will be set to the value of
+rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must
+be set.</p>
+<p><em>Default Value:</em> 1.2.3.4</p>
+</div>
+<div class="section" id="rpc-keepalive">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_keepalive</span></code><a class="headerlink" href="#rpc-keepalive" title="Permalink to this headline">¶</a></h2>
+<p>enable or disable keepalive on rpc/native connections</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="rpc-server-type">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_server_type</span></code><a class="headerlink" href="#rpc-server-type" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra provides two out-of-the-box options for the RPC Server:</p>
+<dl class="docutils">
+<dt>sync</dt>
+<dd>One thread per thrift connection. For a very large number of clients, memory
+will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size
+per thread, and that will correspond to your use of virtual memory (but physical memory
+may be limited depending on use of stack space).</dd>
+<dt>hsha</dt>
+<dd>Stands for “half synchronous, half asynchronous.” All thrift clients are handled
+asynchronously using a small number of threads that does not vary with the amount
+of thrift clients (and thus scales well to many clients). The rpc requests are still
+synchronous (one thread per active request). If hsha is selected then it is essential
+that rpc_max_threads is changed from the default value of unlimited.</dd>
+</dl>
+<p>The default is sync because on Windows hsha is about 30% slower.  On Linux,
+sync/hsha performance is about the same, with hsha of course using less memory.</p>
+<p>Alternatively,  can provide your own RPC server by providing the fully-qualified class name
+of an o.a.c.t.TServerFactory that can create an instance of it.</p>
+<p><em>Default Value:</em> sync</p>
+</div>
+<div class="section" id="rpc-min-threads">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_min_threads</span></code><a class="headerlink" href="#rpc-min-threads" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Uncomment rpc_min|max_thread to set request pool size limits.</p>
+<p>Regardless of your choice of RPC server (see above), the number of maximum requests in the
+RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync
+RPC server, it also dictates the number of clients that can be connected at all).</p>
+<p>The default is unlimited and thus provides no protection against clients overwhelming the server. You are
+encouraged to set a maximum that makes sense for you in production, but do keep in mind that
+rpc_max_threads represents the maximum number of client requests this server may execute concurrently.</p>
+<p><em>Default Value:</em> 16</p>
+</div>
+<div class="section" id="rpc-max-threads">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_max_threads</span></code><a class="headerlink" href="#rpc-max-threads" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 2048</p>
+</div>
+<div class="section" id="rpc-send-buff-size-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_send_buff_size_in_bytes</span></code><a class="headerlink" href="#rpc-send-buff-size-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>uncomment to set socket buffer sizes on rpc connections</p>
+</div>
+<div class="section" id="rpc-recv-buff-size-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_recv_buff_size_in_bytes</span></code><a class="headerlink" href="#rpc-recv-buff-size-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+</div>
+<div class="section" id="internode-send-buff-size-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_send_buff_size_in_bytes</span></code><a class="headerlink" href="#internode-send-buff-size-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Uncomment to set socket buffer size for internode communication
+Note that when setting this, the buffer size is limited by net.core.wmem_max
+and when not setting it it is defined by net.ipv4.tcp_wmem
+See also:
+/proc/sys/net/core/wmem_max
+/proc/sys/net/core/rmem_max
+/proc/sys/net/ipv4/tcp_wmem
+/proc/sys/net/ipv4/tcp_wmem
+and ‘man tcp’</p>
+</div>
+<div class="section" id="internode-recv-buff-size-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_recv_buff_size_in_bytes</span></code><a class="headerlink" href="#internode-recv-buff-size-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Uncomment to set socket buffer size for internode communication
+Note that when setting this, the buffer size is limited by net.core.wmem_max
+and when not setting it it is defined by net.ipv4.tcp_wmem</p>
+</div>
+<div class="section" id="thrift-framed-transport-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">thrift_framed_transport_size_in_mb</span></code><a class="headerlink" href="#thrift-framed-transport-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>Frame size for thrift (maximum message length).</p>
+<p><em>Default Value:</em> 15</p>
+</div>
+<div class="section" id="incremental-backups">
+<h2><code class="docutils literal notranslate"><span class="pre">incremental_backups</span></code><a class="headerlink" href="#incremental-backups" title="Permalink to this headline">¶</a></h2>
+<p>Set to true to have Cassandra create a hard link to each sstable
+flushed or streamed locally in a backups/ subdirectory of the
+keyspace data.  Removing these links is the operator’s
+responsibility.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="snapshot-before-compaction">
+<h2><code class="docutils literal notranslate"><span class="pre">snapshot_before_compaction</span></code><a class="headerlink" href="#snapshot-before-compaction" title="Permalink to this headline">¶</a></h2>
+<p>Whether or not to take a snapshot before each compaction.  Be
+careful using this option, since Cassandra won’t clean up the
+snapshots for you.  Mostly useful if you’re paranoid when there
+is a data format change.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="auto-snapshot">
+<h2><code class="docutils literal notranslate"><span class="pre">auto_snapshot</span></code><a class="headerlink" href="#auto-snapshot" title="Permalink to this headline">¶</a></h2>
+<p>Whether or not a snapshot is taken of the data before keyspace truncation
+or dropping of column families. The STRONGLY advised default of true
+should be used to provide data safety. If you set this flag to false, you will
+lose data on truncation or drop.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="column-index-size-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">column_index_size_in_kb</span></code><a class="headerlink" href="#column-index-size-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Granularity of the collation index of rows within a partition.
+Increase if your rows are large, or if you have a very large
+number of rows per partition.  The competing goals are these:</p>
+<ul class="simple">
+<li>a smaller granularity means more index entries are generated
+and looking up rows withing the partition by collation column
+is faster</li>
+<li>but, Cassandra will keep the collation index in memory for hot
+rows (as part of the key cache), so a larger granularity means
+you can cache more hot rows</li>
+</ul>
+<p><em>Default Value:</em> 64</p>
+</div>
+<div class="section" id="column-index-cache-size-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">column_index_cache_size_in_kb</span></code><a class="headerlink" href="#column-index-cache-size-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Per sstable indexed key cache entries (the collation index in memory
+mentioned above) exceeding this size will not be held on heap.
+This means that only partition information is held on heap and the
+index entries are read from disk.</p>
+<p>Note that this size refers to the size of the
+serialized index information and not the size of the partition.</p>
+<p><em>Default Value:</em> 2</p>
+</div>
+<div class="section" id="concurrent-compactors">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_compactors</span></code><a class="headerlink" href="#concurrent-compactors" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of simultaneous compactions to allow, NOT including
+validation “compactions” for anti-entropy repair.  Simultaneous
+compactions can help preserve read performance in a mixed read/write
+workload, by mitigating the tendency of small sstables to accumulate
+during a single long running compactions. The default is usually
+fine and if you experience problems with compaction running too
+slowly or too fast, you should look at
+compaction_throughput_mb_per_sec first.</p>
+<p>concurrent_compactors defaults to the smaller of (number of disks,
+number of cores), with a minimum of 2 and a maximum of 8.</p>
+<p>If your data directories are backed by SSD, you should increase this
+to the number of cores.</p>
+<p><em>Default Value:</em> 1</p>
+</div>
+<div class="section" id="compaction-throughput-mb-per-sec">
+<h2><code class="docutils literal notranslate"><span class="pre">compaction_throughput_mb_per_sec</span></code><a class="headerlink" href="#compaction-throughput-mb-per-sec" title="Permalink to this headline">¶</a></h2>
+<p>Throttles compaction to the given total throughput across the entire
+system. The faster you insert data, the faster you need to compact in
+order to keep the sstable count down, but in general, setting this to
+16 to 32 times the rate you are inserting data is more than sufficient.
+Setting this to 0 disables throttling. Note that this account for all types
+of compaction, including validation compaction.</p>
+<p><em>Default Value:</em> 16</p>
+</div>
+<div class="section" id="sstable-preemptive-open-interval-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">sstable_preemptive_open_interval_in_mb</span></code><a class="headerlink" href="#sstable-preemptive-open-interval-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>When compacting, the replacement sstable(s) can be opened before they
+are completely written, and used in place of the prior sstables for
+any range that has been written. This helps to smoothly transfer reads
+between the sstables, reducing page cache churn and keeping hot rows hot</p>
+<p><em>Default Value:</em> 50</p>
+</div>
+<div class="section" id="stream-throughput-outbound-megabits-per-sec">
+<h2><code class="docutils literal notranslate"><span class="pre">stream_throughput_outbound_megabits_per_sec</span></code><a class="headerlink" href="#stream-throughput-outbound-megabits-per-sec" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Throttles all outbound streaming file transfers on this node to the
+given total throughput in Mbps. This is necessary because Cassandra does
+mostly sequential IO when streaming data during bootstrap or repair, which
+can lead to saturating the network connection and degrading rpc performance.
+When unset, the default is 200 Mbps or 25 MB/s.</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="inter-dc-stream-throughput-outbound-megabits-per-sec">
+<h2><code class="docutils literal notranslate"><span class="pre">inter_dc_stream_throughput_outbound_megabits_per_sec</span></code><a class="headerlink" href="#inter-dc-stream-throughput-outbound-megabits-per-sec" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Throttles all streaming file transfer between the datacenters,
+this setting allows users to throttle inter dc stream throughput in addition
+to throttling all network stream traffic as configured with
+stream_throughput_outbound_megabits_per_sec
+When unset, the default is 200 Mbps or 25 MB/s</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="read-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">read_request_timeout_in_ms</span></code><a class="headerlink" href="#read-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for read operations to complete</p>
+<p><em>Default Value:</em> 5000</p>
+</div>
+<div class="section" id="range-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">range_request_timeout_in_ms</span></code><a class="headerlink" href="#range-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for seq or index scans to complete</p>
+<p><em>Default Value:</em> 10000</p>
+</div>
+<div class="section" id="write-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">write_request_timeout_in_ms</span></code><a class="headerlink" href="#write-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for writes to complete</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="counter-write-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">counter_write_request_timeout_in_ms</span></code><a class="headerlink" href="#counter-write-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for counter writes to complete</p>
+<p><em>Default Value:</em> 5000</p>
+</div>
+<div class="section" id="cas-contention-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">cas_contention_timeout_in_ms</span></code><a class="headerlink" href="#cas-contention-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long a coordinator should continue to retry a CAS operation
+that contends with other proposals for the same row</p>
+<p><em>Default Value:</em> 1000</p>
+</div>
+<div class="section" id="truncate-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">truncate_request_timeout_in_ms</span></code><a class="headerlink" href="#truncate-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for truncates to complete
+(This can be much longer, because unless auto_snapshot is disabled
+we need to flush first so we can snapshot before removing the data.)</p>
+<p><em>Default Value:</em> 60000</p>
+</div>
+<div class="section" id="request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">request_timeout_in_ms</span></code><a class="headerlink" href="#request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>The default timeout for other, miscellaneous operations</p>
+<p><em>Default Value:</em> 10000</p>
+</div>
+<div class="section" id="slow-query-log-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">slow_query_log_timeout_in_ms</span></code><a class="headerlink" href="#slow-query-log-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long before a node logs slow queries. Select queries that take longer than
+this timeout to execute, will generate an aggregated log message, so that slow queries
+can be identified. Set this value to zero to disable slow query logging.</p>
+<p><em>Default Value:</em> 500</p>
+</div>
+<div class="section" id="cross-node-timeout">
+<h2><code class="docutils literal notranslate"><span class="pre">cross_node_timeout</span></code><a class="headerlink" href="#cross-node-timeout" title="Permalink to this headline">¶</a></h2>
+<p>Enable operation timeout information exchange between nodes to accurately
+measure request timeouts.  If disabled, replicas will assume that requests
+were forwarded to them instantly by the coordinator, which means that
+under overload conditions we will waste that much extra time processing
+already-timed-out requests.</p>
+<p>Warning: before enabling this property make sure to ntp is installed
+and the times are synchronized between the nodes.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="streaming-keep-alive-period-in-secs">
+<h2><code class="docutils literal notranslate"><span class="pre">streaming_keep_alive_period_in_secs</span></code><a class="headerlink" href="#streaming-keep-alive-period-in-secs" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Set keep-alive period for streaming
+This node will send a keep-alive message periodically with this period.
+If the node does not receive a keep-alive message from the peer for
+2 keep-alive cycles the stream session times out and fail
+Default value is 300s (5 minutes), which means stalled stream
+times out in 10 minutes by default</p>
+<p><em>Default Value:</em> 300</p>
+</div>
+<div class="section" id="phi-convict-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">phi_convict_threshold</span></code><a class="headerlink" href="#phi-convict-threshold" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>phi value that must be reached for a host to be marked down.
+most users should never need to adjust this.</p>
+<p><em>Default Value:</em> 8</p>
+</div>
+<div class="section" id="endpoint-snitch">
+<h2><code class="docutils literal notranslate"><span class="pre">endpoint_snitch</span></code><a class="headerlink" href="#endpoint-snitch" title="Permalink to this headline">¶</a></h2>
+<p>endpoint_snitch – Set this to a class that implements
+IEndpointSnitch.  The snitch has two functions:</p>
+<ul class="simple">
+<li>it teaches Cassandra enough about your network topology to route
+requests efficiently</li>
+<li>it allows Cassandra to spread replicas around your cluster to avoid
+correlated failures. It does this by grouping machines into
+“datacenters” and “racks.”  Cassandra will do its best not to have
+more than one replica on the same “rack” (which may not actually
+be a physical location)</li>
+</ul>
+<p>CASSANDRA WILL NOT ALLOW YOU TO SWITCH TO AN INCOMPATIBLE SNITCH
+ONCE DATA IS INSERTED INTO THE CLUSTER.  This would cause data loss.
+This means that if you start with the default SimpleSnitch, which
+locates every node on “rack1” in “datacenter1”, your only options
+if you need to add another datacenter are GossipingPropertyFileSnitch
+(and the older PFS).  From there, if you want to migrate to an
+incompatible snitch like Ec2Snitch you can do it by adding new nodes
+under Ec2Snitch (which will locate them in a new “datacenter”) and
+decommissioning the old ones.</p>
+<p>Out of the box, Cassandra provides:</p>
+<dl class="docutils">
+<dt>SimpleSnitch:</dt>
+<dd>Treats Strategy order as proximity. This can improve cache
+locality when disabling read repair.  Only appropriate for
+single-datacenter deployments.</dd>
+<dt>GossipingPropertyFileSnitch</dt>
+<dd>This should be your go-to snitch for production use.  The rack
+and datacenter for the local node are defined in
+cassandra-rackdc.properties and propagated to other nodes via
+gossip.  If cassandra-topology.properties exists, it is used as a
+fallback, allowing migration from the PropertyFileSnitch.</dd>
+<dt>PropertyFileSnitch:</dt>
+<dd>Proximity is determined by rack and data center, which are
+explicitly configured in cassandra-topology.properties.</dd>
+<dt>Ec2Snitch:</dt>
+<dd>Appropriate for EC2 deployments in a single Region. Loads Region
+and Availability Zone information from the EC2 API. The Region is
+treated as the datacenter, and the Availability Zone as the rack.
+Only private IPs are used, so this will not work across multiple
+Regions.</dd>
+<dt>Ec2MultiRegionSnitch:</dt>
+<dd>Uses public IPs as broadcast_address to allow cross-region
+connectivity.  (Thus, you should set seed addresses to the public
+IP as well.) You will need to open the storage_port or
+ssl_storage_port on the public IP firewall.  (For intra-Region
+traffic, Cassandra will switch to the private IP after
+establishing a connection.)</dd>
+<dt>RackInferringSnitch:</dt>
+<dd>Proximity is determined by rack and data center, which are
+assumed to correspond to the 3rd and 2nd octet of each node’s IP
+address, respectively.  Unless this happens to match your
+deployment conventions, this is best used as an example of
+writing a custom Snitch class and is provided in that spirit.</dd>
+</dl>
+<p>You can use a custom Snitch by setting this to the full class name
+of the snitch, which will be assumed to be on your classpath.</p>
+<p><em>Default Value:</em> SimpleSnitch</p>
+</div>
+<div class="section" id="dynamic-snitch-update-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_update_interval_in_ms</span></code><a class="headerlink" href="#dynamic-snitch-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>controls how often to perform the more expensive part of host score
+calculation</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="dynamic-snitch-reset-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_reset_interval_in_ms</span></code><a class="headerlink" href="#dynamic-snitch-reset-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>controls how often to reset all host scores, allowing a bad host to
+possibly recover</p>
+<p><em>Default Value:</em> 600000</p>
+</div>
+<div class="section" id="dynamic-snitch-badness-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_badness_threshold</span></code><a class="headerlink" href="#dynamic-snitch-badness-threshold" title="Permalink to this headline">¶</a></h2>
+<p>if set greater than zero and read_repair_chance is &lt; 1.0, this will allow
+‘pinning’ of replicas to hosts in order to increase cache capacity.
+The badness threshold will control how much worse the pinned host has to be
+before the dynamic snitch will prefer other replicas over it.  This is
+expressed as a double which represents a percentage.  Thus, a value of
+0.2 means Cassandra would continue to prefer the static snitch values
+until the pinned host was 20% worse than the fastest.</p>
+<p><em>Default Value:</em> 0.1</p>
+</div>
+<div class="section" id="request-scheduler">
+<h2><code class="docutils literal notranslate"><span class="pre">request_scheduler</span></code><a class="headerlink" href="#request-scheduler" title="Permalink to this headline">¶</a></h2>
+<p>request_scheduler – Set this to a class that implements
+RequestScheduler, which will schedule incoming client requests
+according to the specific policy. This is useful for multi-tenancy
+with a single Cassandra cluster.
+NOTE: This is specifically for requests from the client and does
+not affect inter node communication.
+org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place
+org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of
+client requests to a node with a separate queue for each
+request_scheduler_id. The scheduler is further customized by
+request_scheduler_options as described below.</p>
+<p><em>Default Value:</em> org.apache.cassandra.scheduler.NoScheduler</p>
+</div>
+<div class="section" id="request-scheduler-options">
+<h2><code class="docutils literal notranslate"><span class="pre">request_scheduler_options</span></code><a class="headerlink" href="#request-scheduler-options" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Scheduler Options vary based on the type of scheduler</p>
+<dl class="docutils">
+<dt>NoScheduler</dt>
+<dd>Has no options</dd>
+<dt>RoundRobin</dt>
+<dd><dl class="first last docutils">
+<dt>throttle_limit</dt>
+<dd>The throttle_limit is the number of in-flight
+requests per client.  Requests beyond
+that limit are queued up until
+running requests can complete.
+The value of 80 here is twice the number of
+concurrent_reads + concurrent_writes.</dd>
+<dt>default_weight</dt>
+<dd>default_weight is optional and allows for
+overriding the default which is 1.</dd>
+<dt>weights</dt>
+<dd>Weights are optional and will default to 1 or the
+overridden default_weight. The weight translates into how
+many requests are handled during each turn of the
+RoundRobin, based on the scheduler id.</dd>
+</dl>
+</dd>
+</dl>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#    throttle_limit: 80</span>
+<span class="c1">#    default_weight: 5</span>
+<span class="c1">#    weights:</span>
+<span class="c1">#      Keyspace1: 1</span>
+<span class="c1">#      Keyspace2: 5</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="request-scheduler-id">
+<h2><code class="docutils literal notranslate"><span class="pre">request_scheduler_id</span></code><a class="headerlink" href="#request-scheduler-id" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+request_scheduler_id – An identifier based on which to perform
+the request scheduling. Currently the only valid option is keyspace.</p>
+<p><em>Default Value:</em> keyspace</p>
+</div>
+<div class="section" id="server-encryption-options">
+<h2><code class="docutils literal notranslate"><span class="pre">server_encryption_options</span></code><a class="headerlink" href="#server-encryption-options" title="Permalink to this headline">¶</a></h2>
+<p>Enable or disable inter-node encryption
+JVM defaults for supported SSL socket protocols and cipher suites can
+be replaced using custom encryption options. This is not recommended
+unless you have policies in place that dictate certain settings, or
+need to disable vulnerable ciphers or protocols in case the JVM cannot
+be updated.
+FIPS compliant settings can be configured at JVM level and should not
+involve changing encryption settings here:
+<a class="reference external" href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html">https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html</a>
+<em>NOTE</em> No custom encryption options are enabled at the moment
+The available internode options are : all, none, dc, rack</p>
+<p>If set to dc cassandra will encrypt the traffic between the DCs
+If set to rack cassandra will encrypt the traffic between the racks</p>
+<p>The passwords used in these options must match the passwords used when generating
+the keystore and truststore.  For instructions on generating these files, see:
+<a class="reference external" href="http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore">http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore</a></p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">internode_encryption</span><span class="p">:</span> <span class="n">none</span>
+<span class="n">keystore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">keystore</span>
+<span class="n">keystore_password</span><span class="p">:</span> <span class="n">cassandra</span>
+<span class="n">truststore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">truststore</span>
+<span class="n">truststore_password</span><span class="p">:</span> <span class="n">cassandra</span>
+<span class="c1"># More advanced defaults below:</span>
+<span class="c1"># protocol: TLS</span>
+<span class="c1"># algorithm: SunX509</span>
+<span class="c1"># store_type: JKS</span>
+<span class="c1"># cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]</span>
+<span class="c1"># require_client_auth: false</span>
+<span class="c1"># require_endpoint_verification: false</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="client-encryption-options">
+<h2><code class="docutils literal notranslate"><span class="pre">client_encryption_options</span></code><a class="headerlink" href="#client-encryption-options" title="Permalink to this headline">¶</a></h2>
+<p>enable or disable client/server encryption.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">enabled</span><span class="p">:</span> <span class="n">false</span>
+<span class="c1"># If enabled and optional is set to true encrypted and unencrypted connections are handled.</span>
+<span class="n">optional</span><span class="p">:</span> <span class="n">false</span>
+<span class="n">keystore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">keystore</span>
+<span class="n">keystore_password</span><span class="p">:</span> <span class="n">cassandra</span>
+<span class="c1"># require_client_auth: false</span>
+<span class="c1"># Set trustore and truststore_password if require_client_auth is true</span>
+<span class="c1"># truststore: conf/.truststore</span>
+<span class="c1"># truststore_password: cassandra</span>
+<span class="c1"># More advanced defaults below:</span>
+<span class="c1"># protocol: TLS</span>
+<span class="c1"># algorithm: SunX509</span>
+<span class="c1"># store_type: JKS</span>
+<span class="c1"># cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="internode-compression">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_compression</span></code><a class="headerlink" href="#internode-compression" title="Permalink to this headline">¶</a></h2>
+<p>internode_compression controls whether traffic between nodes is
+compressed.
+Can be:</p>
+<dl class="docutils">
+<dt>all</dt>
+<dd>all traffic is compressed</dd>
+<dt>dc</dt>
+<dd>traffic between different datacenters is compressed</dd>
+<dt>none</dt>
+<dd>nothing is compressed.</dd>
+</dl>
+<p><em>Default Value:</em> dc</p>
+</div>
+<div class="section" id="inter-dc-tcp-nodelay">
+<h2><code class="docutils literal notranslate"><span class="pre">inter_dc_tcp_nodelay</span></code><a class="headerlink" href="#inter-dc-tcp-nodelay" title="Permalink to this headline">¶</a></h2>
+<p>Enable or disable tcp_nodelay for inter-dc communication.
+Disabling it will result in larger (but fewer) network packets being sent,
+reducing overhead from the TCP protocol itself, at the cost of increasing
+latency if you block for cross-datacenter responses.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="tracetype-query-ttl">
+<h2><code class="docutils literal notranslate"><span class="pre">tracetype_query_ttl</span></code><a class="headerlink" href="#tracetype-query-ttl" title="Permalink to this headline">¶</a></h2>
+<p>TTL for different trace types used during logging of the repair process.</p>
+<p><em>Default Value:</em> 86400</p>
+</div>
+<div class="section" id="tracetype-repair-ttl">
+<h2><code class="docutils literal notranslate"><span class="pre">tracetype_repair_ttl</span></code><a class="headerlink" href="#tracetype-repair-ttl" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 604800</p>
+</div>
+<div class="section" id="gc-log-threshold-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">gc_log_threshold_in_ms</span></code><a class="headerlink" href="#gc-log-threshold-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>By default, Cassandra logs GC Pauses greater than 200 ms at INFO level
+This threshold can be adjusted to minimize logging if necessary</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="enable-user-defined-functions">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_user_defined_functions</span></code><a class="headerlink" href="#enable-user-defined-functions" title="Permalink to this headline">¶</a></h2>
+<p>If unset, all GC Pauses greater than gc_log_threshold_in_ms will log at
+INFO level
+UDFs (user defined functions) are disabled by default.
+As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="enable-scripted-user-defined-functions">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_scripted_user_defined_functions</span></code><a class="headerlink" href="#enable-scripted-user-defined-functions" title="Permalink to this headline">¶</a></h2>
+<p>Enables scripted UDFs (JavaScript UDFs).
+Java UDFs are always enabled, if enable_user_defined_functions is true.
+Enable this option to be able to use UDFs with “language javascript” or any custom JSR-223 provider.
+This option has no effect, if enable_user_defined_functions is false.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="windows-timer-interval">
+<h2><code class="docutils literal notranslate"><span class="pre">windows_timer_interval</span></code><a class="headerlink" href="#windows-timer-interval" title="Permalink to this headline">¶</a></h2>
+<p>The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation.
+Lowering this value on Windows can provide much tighter latency and better throughput, however
+some virtualized environments may see a negative performance impact from changing this setting
+below their system default. The sysinternals ‘clockres’ tool can confirm your system’s default
+setting.</p>
+<p><em>Default Value:</em> 1</p>
+</div>
+<div class="section" id="transparent-data-encryption-options">
+<h2><code class="docutils literal notranslate"><span class="pre">transparent_data_encryption_options</span></code><a class="headerlink" href="#transparent-data-encryption-options" title="Permalink to this headline">¶</a></h2>
+<p>Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from
+a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by
+the “key_alias” is the only key that will be used for encrypt opertaions; previously used keys
+can still (and should!) be in the keystore and will be used on decrypt operations
+(to handle the case of key rotation).</p>
+<p>It is strongly recommended to download and install Java Cryptography Extension (JCE)
+Unlimited Strength Jurisdiction Policy Files for your version of the JDK.
+(current link: <a class="reference external" href="http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html">http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html</a>)</p>
+<p>Currently, only the following file types are supported for transparent data encryption, although
+more are coming in future cassandra releases: commitlog, hints</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">enabled</span><span class="p">:</span> <span class="n">false</span>
+<span class="n">chunk_length_kb</span><span class="p">:</span> <span class="mi">64</span>
+<span class="n">cipher</span><span class="p">:</span> <span class="n">AES</span><span class="o">/</span><span class="n">CBC</span><span class="o">/</span><span class="n">PKCS5Padding</span>
+<span class="n">key_alias</span><span class="p">:</span> <span class="n">testing</span><span class="p">:</span><span class="mi">1</span>
+<span class="c1"># CBC IV length for AES needs to be 16 bytes (which is also the default size)</span>
+<span class="c1"># iv_length: 16</span>
+<span class="n">key_provider</span><span class="p">:</span>
+  <span class="o">-</span> <span class="n">class_name</span><span class="p">:</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">security</span><span class="o">.</span><span class="n">JKSKeyProvider</span>
+    <span class="n">parameters</span><span class="p">:</span>
+      <span class="o">-</span> <span class="n">keystore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">keystore</span>
+        <span class="n">keystore_password</span><span class="p">:</span> <span class="n">cassandra</span>
+        <span class="n">store_type</span><span class="p">:</span> <span class="n">JCEKS</span>
+        <span class="n">key_password</span><span class="p">:</span> <span class="n">cassandra</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="tombstone-warn-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">tombstone_warn_threshold</span></code><a class="headerlink" href="#tombstone-warn-threshold" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="safety-thresholds">
+<h3>SAFETY THRESHOLDS #<a class="headerlink" href="#safety-thresholds" title="Permalink to this headline">¶</a></h3>
+<p>When executing a scan, within or across a partition, we need to keep the
+tombstones seen in memory so we can return them to the coordinator, which
+will use them to make sure other replicas also know about the deleted rows.
+With workloads that generate a lot of tombstones, this can cause performance
+problems and even exaust the server heap.
+(<a class="reference external" href="http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets">http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets</a>)
+Adjust the thresholds here if you understand the dangers and want to
+scan more tombstones anyway.  These thresholds may also be adjusted at runtime
+using the StorageService mbean.</p>
+<p><em>Default Value:</em> 1000</p>
+</div>
+</div>
+<div class="section" id="tombstone-failure-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">tombstone_failure_threshold</span></code><a class="headerlink" href="#tombstone-failure-threshold" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 100000</p>
+</div>
+<div class="section" id="replica-filtering-protection">
+<h2><code class="docutils literal notranslate"><span class="pre">replica_filtering_protection</span></code><a class="headerlink" href="#replica-filtering-protection" title="Permalink to this headline">¶</a></h2>
+<p>Filtering and secondary index queries at read consistency levels above ONE/LOCAL_ONE use a
+mechanism called replica filtering protection to ensure that results from stale replicas do
+not violate consistency. (See CASSANDRA-8272 and CASSANDRA-15907 for more details.) This
+mechanism materializes replica results by partition on-heap at the coordinator. The more possibly
+stale results returned by the replicas, the more rows materialized during the query.</p>
+</div>
+<div class="section" id="batch-size-warn-threshold-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">batch_size_warn_threshold_in_kb</span></code><a class="headerlink" href="#batch-size-warn-threshold-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Log WARN on any multiple-partition batch size exceeding this value. 5kb per batch by default.
+Caution should be taken on increasing the size of this threshold as it can lead to node instability.</p>
+<p><em>Default Value:</em> 5</p>
+</div>
+<div class="section" id="batch-size-fail-threshold-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">batch_size_fail_threshold_in_kb</span></code><a class="headerlink" href="#batch-size-fail-threshold-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Fail any multiple-partition batch exceeding this value. 50kb (10x warn threshold) by default.</p>
+<p><em>Default Value:</em> 50</p>
+</div>
+<div class="section" id="unlogged-batch-across-partitions-warn-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">unlogged_batch_across_partitions_warn_threshold</span></code><a class="headerlink" href="#unlogged-batch-across-partitions-warn-threshold" title="Permalink to this headline">¶</a></h2>
+<p>Log WARN on any batches not of type LOGGED than span across more partitions than this limit</p>
+<p><em>Default Value:</em> 10</p>
+</div>
+<div class="section" id="compaction-large-partition-warning-threshold-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">compaction_large_partition_warning_threshold_mb</span></code><a class="headerlink" href="#compaction-large-partition-warning-threshold-mb" title="Permalink to this headline">¶</a></h2>
+<p>Log a warning when compacting partitions larger than this value</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="gc-warn-threshold-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">gc_warn_threshold_in_ms</span></code><a class="headerlink" href="#gc-warn-threshold-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level
+Adjust the threshold based on your application throughput requirement
+By default, Cassandra logs GC Pauses greater than 200 ms at INFO level</p>
+<p><em>Default Value:</em> 1000</p>
+</div>
+<div class="section" id="max-value-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">max_value_size_in_mb</span></code><a class="headerlink" href="#max-value-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Maximum size of any value in SSTables. Safety measure to detect SSTable corruption
+early. Any value size larger than this threshold will result into marking an SSTable
+as corrupted. This should be positive and less than 2048.</p>
+<p><em>Default Value:</em> 256</p>
+</div>
+<div class="section" id="back-pressure-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">back_pressure_enabled</span></code><a class="headerlink" href="#back-pressure-enabled" title="Permalink to this headline">¶</a></h2>
+<p>Back-pressure settings #
+If enabled, the coordinator will apply the back-pressure strategy specified below to each mutation
+sent to replicas, with the aim of reducing pressure on overloaded replicas.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="back-pressure-strategy">
+<h2><code class="docutils literal notranslate"><span class="pre">back_pressure_strategy</span></code><a class="headerlink" href="#back-pressure-strategy" title="Permalink to this headline">¶</a></h2>
+<p>The back-pressure strategy applied.
+The default implementation, RateBasedBackPressure, takes three arguments:
+high ratio, factor, and flow type, and uses the ratio between incoming mutation responses and outgoing mutation requests.
+If below high ratio, outgoing mutations are rate limited according to the incoming rate decreased by the given factor;
+if above high ratio, the rate limiting is increased by the given factor;
+such factor is usually best configured between 1 and 10, use larger values for a faster recovery
+at the expense of potentially more dropped mutations;
+the rate limiting is applied according to the flow type: if FAST, it’s rate limited at the speed of the fastest replica,
+if SLOW at the speed of the slowest one.
+New strategies can be added. Implementors need to implement org.apache.cassandra.net.BackpressureStrategy and
+provide a public constructor accepting a Map&lt;String, Object&gt;.</p>
+</div>
+<div class="section" id="otc-coalescing-strategy">
+<h2><code class="docutils literal notranslate"><span class="pre">otc_coalescing_strategy</span></code><a class="headerlink" href="#otc-coalescing-strategy" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Coalescing Strategies #
+Coalescing multiples messages turns out to significantly boost message processing throughput (think doubling or more).
+On bare metal, the floor for packet processing throughput is high enough that many applications won’t notice, but in
+virtualized environments, the point at which an application can be bound by network packet processing can be
+surprisingly low compared to the throughput of task processing that is possible inside a VM. It’s not that bare metal
+doesn’t benefit from coalescing messages, it’s that the number of packets a bare metal network interface can process
+is sufficient for many applications such that no load starvation is experienced even without coalescing.
+There are other benefits to coalescing network messages that are harder to isolate with a simple metric like messages
+per second. By coalescing multiple tasks together, a network thread can process multiple messages for the cost of one
+trip to read from a socket, and all the task submission work can be done at the same time reducing context switching
+and increasing cache friendliness of network message processing.
+See CASSANDRA-8692 for details.</p>
+<p>Strategy to use for coalescing messages in OutboundTcpConnection.
+Can be fixed, movingaverage, timehorizon, disabled (default).
+You can also specify a subclass of CoalescingStrategies.CoalescingStrategy by name.</p>
+<p><em>Default Value:</em> DISABLED</p>
+</div>
+<div class="section" id="otc-coalescing-window-us">
+<h2><code class="docutils literal notranslate"><span class="pre">otc_coalescing_window_us</span></code><a class="headerlink" href="#otc-coalescing-window-us" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>How many microseconds to wait for coalescing. For fixed strategy this is the amount of time after the first
+message is received before it will be sent with any accompanying messages. For moving average this is the
+maximum amount of time that will be waited as well as the interval at which messages must arrive on average
+for coalescing to be enabled.</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="otc-coalescing-enough-coalesced-messages">
+<h2><code class="docutils literal notranslate"><span class="pre">otc_coalescing_enough_coalesced_messages</span></code><a class="headerlink" href="#otc-coalescing-enough-coalesced-messages" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128.</p>
+<p><em>Default Value:</em> 8</p>
+</div>
+<div class="section" id="otc-backlog-expiration-interval-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">otc_backlog_expiration_interval_ms</span></code><a class="headerlink" href="#otc-backlog-expiration-interval-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection.
+Expiration is done if messages are piling up in the backlog. Droppable messages are expired to free the memory
+taken by expired messages. The interval should be between 0 and 1000, and in most installations the default value
+will be appropriate. A smaller value could potentially expire messages slightly sooner at the expense of more CPU
+time and queue contention while iterating the backlog of messages.
+An interval of 0 disables any wait time, which is the behavior of former Cassandra versions.</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="enable-materialized-views">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_materialized_views</span></code><a class="headerlink" href="#enable-materialized-views" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="experimental-features">
+<h3>EXPERIMENTAL FEATURES #<a class="headerlink" href="#experimental-features" title="Permalink to this headline">¶</a></h3>
+<p>Enables materialized view creation on this node.
+Materialized views are considered experimental and are not recommended for production use.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+</div>
+<div class="section" id="enable-sasi-indexes">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_sasi_indexes</span></code><a class="headerlink" href="#enable-sasi-indexes" title="Permalink to this headline">¶</a></h2>
+<p>Enables SASI index creation on this node.
+SASI indexes are considered experimental and are not recommended for production use.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../operating/index.html" class="btn btn-default pull-right " role="button" title="Operating Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Configuring Cassandra" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/configuration/index.html b/src/doc/3.11.11/configuration/index.html
new file mode 100644
index 0000000..edd9417
--- /dev/null
+++ b/src/doc/3.11.11/configuration/index.html
@@ -0,0 +1,109 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Configuring Cassandra"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="next" title="Cassandra Configuration File" href="cassandra_config_file.html"/>
+      <link rel="prev" title="Changes" href="../cql/changes.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Configuring Cassandra</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cassandra_config_file.html">Cassandra Configuration File</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="configuring-cassandra">
+<h1>Configuring Cassandra<a class="headerlink" href="#configuring-cassandra" title="Permalink to this headline">¶</a></h1>
+<p>This section describes how to configure Apache Cassandra.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="cassandra_config_file.html">Cassandra Configuration File</a></li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="cassandra_config_file.html" class="btn btn-default pull-right " role="button" title="Cassandra Configuration File" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../cql/changes.html" class="btn btn-default" role="button" title="Changes" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/contactus.html b/src/doc/3.11.11/contactus.html
new file mode 100644
index 0000000..c6cabcf
--- /dev/null
+++ b/src/doc/3.11.11/contactus.html
@@ -0,0 +1,127 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Contact us"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="index.html"/>
+      <link rel="prev" title="Reporting Bugs and Contributing" href="bugs.html"/>
+'
+doc-search-path: "search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Contact us</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#mailing-lists">Mailing lists</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#irc">IRC</a></li>
+</ul>
+</li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="contact-us">
+<h1>Contact us<a class="headerlink" href="#contact-us" title="Permalink to this headline">¶</a></h1>
+<p>You can get in touch with the Cassandra community either via the mailing lists or the freenode IRC channels.</p>
+<div class="section" id="mailing-lists">
+<span id="id1"></span><h2>Mailing lists<a class="headerlink" href="#mailing-lists" title="Permalink to this headline">¶</a></h2>
+<p>The following mailing lists are available:</p>
+<ul class="simple">
+<li><a class="reference external" href="http://www.mail-archive.com/user&#64;cassandra.apache.org/">Users</a> – General discussion list for users - <a class="reference external" href="mailto:user-subscribe&#37;&#52;&#48;cassandra&#46;apache&#46;org">Subscribe</a></li>
+<li><a class="reference external" href="http://www.mail-archive.com/dev&#64;cassandra.apache.org/">Developers</a> – Development related discussion - <a class="reference external" href="mailto:dev-subscribe&#37;&#52;&#48;cassandra&#46;apache&#46;org">Subscribe</a></li>
+<li><a class="reference external" href="http://www.mail-archive.com/commits&#64;cassandra.apache.org/">Commits</a> – Commit notification source repository -
+<a class="reference external" href="mailto:commits-subscribe&#37;&#52;&#48;cassandra&#46;apache&#46;org">Subscribe</a></li>
+<li><a class="reference external" href="http://www.mail-archive.com/client-dev&#64;cassandra.apache.org/">Client Libraries</a> – Discussion related to the
+development of idiomatic client APIs - <a class="reference external" href="mailto:client-dev-subscribe&#37;&#52;&#48;cassandra&#46;apache&#46;org">Subscribe</a></li>
+</ul>
+<p>Subscribe by sending an email to the email address in the Subscribe links above. Follow the instructions in the welcome
+email to confirm your subscription. Make sure to keep the welcome email as it contains instructions on how to
+unsubscribe.</p>
+</div>
+<div class="section" id="irc">
+<span id="irc-channels"></span><h2>IRC<a class="headerlink" href="#irc" title="Permalink to this headline">¶</a></h2>
+<p>To chat with developers or users in real-time, join our channels on <a class="reference external" href="http://webchat.freenode.net/">IRC freenode</a>. The
+following channels are available:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">#cassandra</span></code> - for user questions and general discussions.</li>
+<li><code class="docutils literal notranslate"><span class="pre">#cassandra-dev</span></code> - strictly for questions or discussions related to Cassandra development.</li>
+<li><code class="docutils literal notranslate"><span class="pre">#cassandra-builds</span></code> - results of automated test builds.</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            
+            <a href="bugs.html" class="btn btn-default" role="button" title="Reporting Bugs and Contributing" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/cql/appendices.html b/src/doc/3.11.11/cql/appendices.html
new file mode 100644
index 0000000..0b133cf
--- /dev/null
+++ b/src/doc/3.11.11/cql/appendices.html
@@ -0,0 +1,569 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Appendices"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Changes" href="changes.html"/>
+      <link rel="prev" title="Triggers" href="triggers.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Appendices</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#appendix-a-cql-keywords">Appendix A: CQL Keywords</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#appendix-b-cql-reserved-types">Appendix B: CQL Reserved Types</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#appendix-c-dropping-compact-storage">Appendix C: Dropping Compact Storage</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="appendices">
+<h1>Appendices<a class="headerlink" href="#appendices" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="appendix-a-cql-keywords">
+<span id="appendix-a"></span><h2>Appendix A: CQL Keywords<a class="headerlink" href="#appendix-a-cql-keywords" title="Permalink to this headline">¶</a></h2>
+<p>CQL distinguishes between <em>reserved</em> and <em>non-reserved</em> keywords.
+Reserved keywords cannot be used as identifier, they are truly reserved
+for the language (but one can enclose a reserved keyword by
+double-quotes to use it as an identifier). Non-reserved keywords however
+only have a specific meaning in certain context but can used as
+identifier otherwise. The only <em>raison d’être</em> of these non-reserved
+keywords is convenience: some keyword are non-reserved when it was
+always easy for the parser to decide whether they were used as keywords
+or not.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="61%" />
+<col width="39%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Keyword</th>
+<th class="head">Reserved?</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ADD</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AGGREGATE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ALL</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ALLOW</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AND</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">APPLY</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ASC</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ASCII</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">BATCH</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">BEGIN</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">BIGINT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">BLOB</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">BOOLEAN</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">BY</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">CALLED</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">CLUSTERING</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">COLUMNFAMILY</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">COMPACT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">CONTAINS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">COUNT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">COUNTER</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">CUSTOM</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DATE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DECIMAL</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DELETE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DESC</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DISTINCT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DOUBLE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ENTRIES</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">EXISTS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">FILTERING</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">FINALFUNC</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">FLOAT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">FROM</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">FROZEN</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">FULL</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">FUNCTION</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">FUNCTIONS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">GRANT</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">IF</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">IN</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">INDEX</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">INET</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">INFINITY</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">INITCOND</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">INPUT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">INSERT</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">INT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">INTO</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">JSON</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">KEY</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">KEYS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">KEYSPACES</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">LANGUAGE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">LIMIT</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">LIST</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">LOGIN</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">MAP</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">NAN</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">NOLOGIN</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">NORECURSIVE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">NOSUPERUSER</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">NOT</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">NULL</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">OF</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ON</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">OPTIONS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">OR</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ORDER</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">PASSWORD</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">PERMISSION</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">PERMISSIONS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">PRIMARY</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">RENAME</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">REPLACE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">RETURNS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">REVOKE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ROLE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ROLES</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SCHEMA</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SET</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">SFUNC</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SMALLINT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">STATIC</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">STORAGE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">STYPE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TABLE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">TEXT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TIME</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">TIMESTAMP</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TIMEUUID</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">TINYINT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TO</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">TOKEN</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TRIGGER</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TTL</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">TUPLE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TYPE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">UNLOGGED</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">UPDATE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">USE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">USER</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">USERS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">USING</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">UUID</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">VALUES</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">VARCHAR</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">VARINT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">WHERE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">WITH</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">WRITETIME</span></code></td>
+<td>no</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="appendix-b-cql-reserved-types">
+<h2>Appendix B: CQL Reserved Types<a class="headerlink" href="#appendix-b-cql-reserved-types" title="Permalink to this headline">¶</a></h2>
+<p>The following type names are not currently used by CQL, but are reserved
+for potential future use. User-defined types may not use reserved type
+names as their name.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="100%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">type</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">bitstring</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">byte</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">complex</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">enum</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">interval</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">macaddr</span></code></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="appendix-c-dropping-compact-storage">
+<h2>Appendix C: Dropping Compact Storage<a class="headerlink" href="#appendix-c-dropping-compact-storage" title="Permalink to this headline">¶</a></h2>
+<p><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">...</span> <span class="pre">DROP</span> <span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> statement makes Compact Tables CQL-compatible,
+exposing internal structure of Thrift/Compact Tables:</p>
+<ul class="simple">
+<li>CQL-created Compact Tables that have no clustering columns, will expose an
+additional clustering column <code class="docutils literal notranslate"><span class="pre">column1</span></code> with <code class="docutils literal notranslate"><span class="pre">UTF8Type</span></code>.</li>
+<li>CQL-created Compact Tables that had no regular columns, will expose a
+regular column <code class="docutils literal notranslate"><span class="pre">value</span></code> with <code class="docutils literal notranslate"><span class="pre">BytesType</span></code>.</li>
+<li>For CQL-Created Compact Tables, all columns originally defined as
+<code class="docutils literal notranslate"><span class="pre">regular</span></code> will be come <code class="docutils literal notranslate"><span class="pre">static</span></code></li>
+<li>CQL-created Compact Tables that have clustering but have no regular
+columns will have an empty value column (of <code class="docutils literal notranslate"><span class="pre">EmptyType</span></code>)</li>
+<li>SuperColumn Tables (can only be created through Thrift) will expose
+a compact value map with an empty name.</li>
+<li>Thrift-created Compact Tables will have types corresponding to their
+Thrift definition.</li>
+<li>If a row was written while a table was still compact but it has no live
+cells due to later row or cell deletions, it may continue to be simply
+left out of query results, as is the normal behavior for compact tables.
+Rows written after a table is fully CQL-compatible, if they have no live
+cells but a live primary key, may be present in query results with null values.</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="changes.html" class="btn btn-default pull-right " role="button" title="Changes" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="triggers.html" class="btn btn-default" role="button" title="Triggers" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/cql/changes.html b/src/doc/3.11.11/cql/changes.html
new file mode 100644
index 0000000..9a0ffd7
--- /dev/null
+++ b/src/doc/3.11.11/cql/changes.html
@@ -0,0 +1,353 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Changes"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Configuring Cassandra" href="../configuration/index.html"/>
+      <link rel="prev" title="Appendices" href="appendices.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Changes</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#id1">3.4.4</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id2">3.4.3</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id5">3.4.2</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id6">3.4.1</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id7">3.4.0</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id8">3.3.1</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id9">3.3.0</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id10">3.2.0</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id11">3.1.7</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id12">3.1.6</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id13">3.1.5</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id14">3.1.4</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id15">3.1.3</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id16">3.1.2</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id17">3.1.1</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id18">3.1.0</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id19">3.0.5</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id20">3.0.4</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id21">3.0.3</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id22">3.0.2</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id23">3.0.1</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#versioning">Versioning</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="changes">
+<h1>Changes<a class="headerlink" href="#changes" title="Permalink to this headline">¶</a></h1>
+<p>The following describes the changes in each version of CQL.</p>
+<div class="section" id="id1">
+<h2>3.4.4<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> <code class="docutils literal notranslate"><span class="pre">ALTER</span></code> has been removed; a column’s type may not be changed after creation (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12443">CASSANDRA-12443</a>).</li>
+<li><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TYPE</span></code> <code class="docutils literal notranslate"><span class="pre">ALTER</span></code> has been removed; a field’s type may not be changed after creation (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12443">CASSANDRA-12443</a>).</li>
+</ul>
+</div>
+<div class="section" id="id2">
+<h2>3.4.3<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Adds a new <a href="#id3"><span class="problematic" id="id4">``</span></a>duration `` <a class="reference internal" href="types.html#data-types"><span class="std std-ref">data types</span></a> (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-11873">CASSANDRA-11873</a>).</li>
+<li>Support for <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-10707">CASSANDRA-10707</a>).</li>
+<li>Adds a <code class="docutils literal notranslate"><span class="pre">DEFAULT</span> <span class="pre">UNSET</span></code> option for <code class="docutils literal notranslate"><span class="pre">INSERT</span> <span class="pre">JSON</span></code> to ignore omitted columns (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-11424">CASSANDRA-11424</a>).</li>
+<li>Allows <code class="docutils literal notranslate"><span class="pre">null</span></code> as a legal value for TTL on insert and update. It will be treated as equivalent to</li>
+</ul>
+<p>inserting a 0 (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12216">CASSANDRA-12216</a>).</p>
+</div>
+<div class="section" id="id5">
+<h2>3.4.2<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>If a table has a non zero <code class="docutils literal notranslate"><span class="pre">default_time_to_live</span></code>, then explicitly specifying a TTL of 0 in an <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> or
+<code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statement will result in the new writes not having any expiration (that is, an explicit TTL of 0 cancels
+the <code class="docutils literal notranslate"><span class="pre">default_time_to_live</span></code>). This wasn’t the case before and the <code class="docutils literal notranslate"><span class="pre">default_time_to_live</span></code> was applied even though a
+TTL had been explicitly set.</li>
+<li><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> <code class="docutils literal notranslate"><span class="pre">ADD</span></code> and <code class="docutils literal notranslate"><span class="pre">DROP</span></code> now allow multiple columns to be added/removed.</li>
+<li>New <code class="docutils literal notranslate"><span class="pre">PER</span> <span class="pre">PARTITION</span> <span class="pre">LIMIT</span></code> option for <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statements (see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-7017)">CASSANDRA-7017</a>.</li>
+<li><a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">User-defined functions</span></a> can now instantiate <code class="docutils literal notranslate"><span class="pre">UDTValue</span></code> and <code class="docutils literal notranslate"><span class="pre">TupleValue</span></code> instances via the
+new <code class="docutils literal notranslate"><span class="pre">UDFContext</span></code> interface (see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-10818)">CASSANDRA-10818</a>.</li>
+<li><a class="reference internal" href="types.html#udts"><span class="std std-ref">User-defined types</span></a> may now be stored in a non-frozen form, allowing individual fields to be updated and
+deleted in <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statements and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statements, respectively. (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-7423)">CASSANDRA-7423</a>).</li>
+</ul>
+</div>
+<div class="section" id="id6">
+<h2>3.4.1<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Adds <code class="docutils literal notranslate"><span class="pre">CAST</span></code> functions.</li>
+</ul>
+</div>
+<div class="section" id="id7">
+<h2>3.4.0<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Support for <a class="reference internal" href="mvs.html#materialized-views"><span class="std std-ref">materialized views</span></a>.</li>
+<li><code class="docutils literal notranslate"><span class="pre">DELETE</span></code> support for inequality expressions and <code class="docutils literal notranslate"><span class="pre">IN</span></code> restrictions on any primary key columns.</li>
+<li><code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> support for <code class="docutils literal notranslate"><span class="pre">IN</span></code> restrictions on any primary key columns.</li>
+</ul>
+</div>
+<div class="section" id="id8">
+<h2>3.3.1<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>The syntax <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span> <span class="pre">TABLE</span> <span class="pre">X</span></code> is now accepted as an alias for <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span> <span class="pre">X</span></code>.</li>
+</ul>
+</div>
+<div class="section" id="id9">
+<h2>3.3.0<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">User-defined functions and aggregates</span></a> are now supported.</li>
+<li>Allows double-dollar enclosed strings literals as an alternative to single-quote enclosed strings.</li>
+<li>Introduces Roles to supersede user based authentication and access control</li>
+<li>New <code class="docutils literal notranslate"><span class="pre">date</span></code>, <code class="docutils literal notranslate"><span class="pre">time</span></code>, <code class="docutils literal notranslate"><span class="pre">tinyint</span></code> and <code class="docutils literal notranslate"><span class="pre">smallint</span></code> <a class="reference internal" href="types.html#data-types"><span class="std std-ref">data types</span></a> have been added.</li>
+<li><a class="reference internal" href="json.html#cql-json"><span class="std std-ref">JSON support</span></a> has been added</li>
+<li>Adds new time conversion functions and deprecate <code class="docutils literal notranslate"><span class="pre">dateOf</span></code> and <code class="docutils literal notranslate"><span class="pre">unixTimestampOf</span></code>.</li>
+</ul>
+</div>
+<div class="section" id="id10">
+<h2>3.2.0<a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference internal" href="types.html#udts"><span class="std std-ref">User-defined types</span></a> supported.</li>
+<li><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> now supports indexing collection columns, including indexing the keys of map collections through the
+<code class="docutils literal notranslate"><span class="pre">keys()</span></code> function</li>
+<li>Indexes on collections may be queried using the new <code class="docutils literal notranslate"><span class="pre">CONTAINS</span></code> and <code class="docutils literal notranslate"><span class="pre">CONTAINS</span> <span class="pre">KEY</span></code> operators</li>
+<li><a class="reference internal" href="types.html#tuples"><span class="std std-ref">Tuple types</span></a> were added to hold fixed-length sets of typed positional fields.</li>
+<li><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">INDEX</span></code> now supports optionally specifying a keyspace.</li>
+</ul>
+</div>
+<div class="section" id="id11">
+<h2>3.1.7<a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statements now support selecting multiple rows in a single partition using an <code class="docutils literal notranslate"><span class="pre">IN</span></code> clause on combinations
+of clustering columns.</li>
+<li><code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> and <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> syntax is now supported by <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">USER</span></code> and <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">USER</span></code> statements,
+respectively.</li>
+</ul>
+</div>
+<div class="section" id="id12">
+<h2>3.1.6<a class="headerlink" href="#id12" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>A new <code class="docutils literal notranslate"><span class="pre">uuid()</span></code> method has been added.</li>
+<li>Support for <code class="docutils literal notranslate"><span class="pre">DELETE</span> <span class="pre">...</span> <span class="pre">IF</span> <span class="pre">EXISTS</span></code> syntax.</li>
+</ul>
+</div>
+<div class="section" id="id13">
+<h2>3.1.5<a class="headerlink" href="#id13" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>It is now possible to group clustering columns in a relation, see <a class="reference internal" href="dml.html#where-clause"><span class="std std-ref">WHERE</span></a> clauses.</li>
+<li>Added support for <a class="reference internal" href="ddl.html#static-columns"><span class="std std-ref">static columns</span></a>.</li>
+</ul>
+</div>
+<div class="section" id="id14">
+<h2>3.1.4<a class="headerlink" href="#id14" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> now allows specifying options when creating CUSTOM indexes.</li>
+</ul>
+</div>
+<div class="section" id="id15">
+<h2>3.1.3<a class="headerlink" href="#id15" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Millisecond precision formats have been added to the <a class="reference internal" href="types.html#timestamps"><span class="std std-ref">timestamp</span></a> parser.</li>
+</ul>
+</div>
+<div class="section" id="id16">
+<h2>3.1.2<a class="headerlink" href="#id16" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">NaN</span></code> and <code class="docutils literal notranslate"><span class="pre">Infinity</span></code> has been added as valid float constants. They are now reserved keywords. In the unlikely case
+you we using them as a column identifier (or keyspace/table one), you will now need to double quote them.</li>
+</ul>
+</div>
+<div class="section" id="id17">
+<h2>3.1.1<a class="headerlink" href="#id17" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement now allows listing the partition keys (using the <code class="docutils literal notranslate"><span class="pre">DISTINCT</span></code> modifier). See <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-4536">CASSANDRA-4536</a>.</li>
+<li>The syntax <code class="docutils literal notranslate"><span class="pre">c</span> <span class="pre">IN</span> <span class="pre">?</span></code> is now supported in <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clauses. In that case, the value expected for the bind variable
+will be a list of whatever type <code class="docutils literal notranslate"><span class="pre">c</span></code> is.</li>
+<li>It is now possible to use named bind variables (using <code class="docutils literal notranslate"><span class="pre">:name</span></code> instead of <code class="docutils literal notranslate"><span class="pre">?</span></code>).</li>
+</ul>
+</div>
+<div class="section" id="id18">
+<h2>3.1.0<a class="headerlink" href="#id18" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> <code class="docutils literal notranslate"><span class="pre">DROP</span></code> option added.</li>
+<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement now supports aliases in select clause. Aliases in WHERE and ORDER BY clauses are not supported.</li>
+<li><code class="docutils literal notranslate"><span class="pre">CREATE</span></code> statements for <code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code>, <code class="docutils literal notranslate"><span class="pre">TABLE</span></code> and <code class="docutils literal notranslate"><span class="pre">INDEX</span></code> now supports an <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> condition.
+Similarly, <code class="docutils literal notranslate"><span class="pre">DROP</span></code> statements support a <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> condition.</li>
+<li><code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statements optionally supports a <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> condition and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> supports <code class="docutils literal notranslate"><span class="pre">IF</span></code> conditions.</li>
+</ul>
+</div>
+<div class="section" id="id19">
+<h2>3.0.5<a class="headerlink" href="#id19" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statements now allow empty <code class="docutils literal notranslate"><span class="pre">IN</span></code> relations (see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-5626)">CASSANDRA-5626</a>.</li>
+</ul>
+</div>
+<div class="section" id="id20">
+<h2>3.0.4<a class="headerlink" href="#id20" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Updated the syntax for custom <a class="reference internal" href="indexes.html#secondary-indexes"><span class="std std-ref">secondary indexes</span></a>.</li>
+<li>Non-equal condition on the partition key are now never supported, even for ordering partitioner as this was not
+correct (the order was <strong>not</strong> the one of the type of the partition key). Instead, the <code class="docutils literal notranslate"><span class="pre">token</span></code> method should always
+be used for range queries on the partition key (see <a class="reference internal" href="dml.html#where-clause"><span class="std std-ref">WHERE clauses</span></a>).</li>
+</ul>
+</div>
+<div class="section" id="id21">
+<h2>3.0.3<a class="headerlink" href="#id21" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Support for custom <a class="reference internal" href="indexes.html#secondary-indexes"><span class="std std-ref">secondary indexes</span></a> has been added.</li>
+</ul>
+</div>
+<div class="section" id="id22">
+<h2>3.0.2<a class="headerlink" href="#id22" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Type validation for the <a class="reference internal" href="definitions.html#constants"><span class="std std-ref">constants</span></a> has been fixed. For instance, the implementation used to allow
+<code class="docutils literal notranslate"><span class="pre">'2'</span></code> as a valid value for an <code class="docutils literal notranslate"><span class="pre">int</span></code> column (interpreting it has the equivalent of <code class="docutils literal notranslate"><span class="pre">2</span></code>), or <code class="docutils literal notranslate"><span class="pre">42</span></code> as a valid
+<code class="docutils literal notranslate"><span class="pre">blob</span></code> value (in which case <code class="docutils literal notranslate"><span class="pre">42</span></code> was interpreted as an hexadecimal representation of the blob). This is no longer
+the case, type validation of constants is now more strict. See the <a class="reference internal" href="types.html#data-types"><span class="std std-ref">data types</span></a> section for details
+on which constant is allowed for which type.</li>
+<li>The type validation fixed of the previous point has lead to the introduction of blobs constants to allow the input of
+blobs. Do note that while the input of blobs as strings constant is still supported by this version (to allow smoother
+transition to blob constant), it is now deprecated and will be removed by a future version. If you were using strings
+as blobs, you should thus update your client code ASAP to switch blob constants.</li>
+<li>A number of functions to convert native types to blobs have also been introduced. Furthermore the token function is
+now also allowed in select clauses. See the <a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">section on functions</span></a> for details.</li>
+</ul>
+</div>
+<div class="section" id="id23">
+<h2>3.0.1<a class="headerlink" href="#id23" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Date strings (and timestamps) are no longer accepted as valid <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> values. Doing so was a bug in the sense
+that date string are not valid <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code>, and it was thus resulting in <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-4936">confusing behaviors</a>. However, the following new methods have been added to help
+working with <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code>: <code class="docutils literal notranslate"><span class="pre">now</span></code>, <code class="docutils literal notranslate"><span class="pre">minTimeuuid</span></code>, <code class="docutils literal notranslate"><span class="pre">maxTimeuuid</span></code> ,
+<code class="docutils literal notranslate"><span class="pre">dateOf</span></code> and <code class="docutils literal notranslate"><span class="pre">unixTimestampOf</span></code>.</li>
+<li>Float constants now support the exponent notation. In other words, <code class="docutils literal notranslate"><span class="pre">4.2E10</span></code> is now a valid floating point value.</li>
+</ul>
+</div>
+<div class="section" id="versioning">
+<h2>Versioning<a class="headerlink" href="#versioning" title="Permalink to this headline">¶</a></h2>
+<p>Versioning of the CQL language adheres to the <a class="reference external" href="http://semver.org">Semantic Versioning</a> guidelines. Versions take the
+form X.Y.Z where X, Y, and Z are integer values representing major, minor, and patch level respectively. There is no
+correlation between Cassandra release versions and the CQL language version.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="8%" />
+<col width="92%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">version</th>
+<th class="head">description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Major</td>
+<td>The major version <em>must</em> be bumped when backward incompatible changes are introduced. This should rarely
+occur.</td>
+</tr>
+<tr class="row-odd"><td>Minor</td>
+<td>Minor version increments occur when new, but backward compatible, functionality is introduced.</td>
+</tr>
+<tr class="row-even"><td>Patch</td>
+<td>The patch version is incremented when bugs are fixed.</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../configuration/index.html" class="btn btn-default pull-right " role="button" title="Configuring Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="appendices.html" class="btn btn-default" role="button" title="Appendices" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/cql/ddl.html b/src/doc/3.11.11/cql/ddl.html
new file mode 100644
index 0000000..0bbf5f3
--- /dev/null
+++ b/src/doc/3.11.11/cql/ddl.html
@@ -0,0 +1,765 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Data Definition"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Data Manipulation" href="dml.html"/>
+      <link rel="prev" title="Data Types" href="types.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Data Definition</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#common-definitions">Common definitions</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#create-keyspace">CREATE KEYSPACE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#use">USE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#alter-keyspace">ALTER KEYSPACE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#drop-keyspace">DROP KEYSPACE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#create-table">CREATE TABLE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#alter-table">ALTER TABLE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#drop-table">DROP TABLE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#truncate">TRUNCATE</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="data-definition">
+<span id="id1"></span><h1>Data Definition<a class="headerlink" href="#data-definition" title="Permalink to this headline">¶</a></h1>
+<p>CQL stores data in <em>tables</em>, whose schema defines the layout of said data in the table, and those tables are grouped in
+<em>keyspaces</em>. A keyspace defines a number of options that applies to all the tables it contains, most prominently of
+which is the <a class="reference internal" href="../architecture/dynamo.html#replication-strategy"><span class="std std-ref">replication strategy</span></a> used by the keyspace. It is generally encouraged to use
+one keyspace by <em>application</em>, and thus many cluster may define only one keyspace.</p>
+<p>This section describes the statements used to create, modify, and remove those keyspace and tables.</p>
+<div class="section" id="common-definitions">
+<h2>Common definitions<a class="headerlink" href="#common-definitions" title="Permalink to this headline">¶</a></h2>
+<p>The names of the keyspaces and tables are defined by the following grammar:</p>
+<pre>
+<strong id="grammar-token-keyspace-name">keyspace_name</strong> ::=  <a class="reference internal" href="#grammar-token-name"><code class="xref docutils literal notranslate"><span class="pre">name</span></code></a>
+<strong id="grammar-token-table-name">table_name   </strong> ::=  [ <a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a> '.' ] <a class="reference internal" href="#grammar-token-name"><code class="xref docutils literal notranslate"><span class="pre">name</span></code></a>
+<strong id="grammar-token-name">name         </strong> ::=  <a class="reference internal" href="#grammar-token-unquoted-name"><code class="xref docutils literal notranslate"><span class="pre">unquoted_name</span></code></a> | <a class="reference internal" href="#grammar-token-quoted-name"><code class="xref docutils literal notranslate"><span class="pre">quoted_name</span></code></a>
+<strong id="grammar-token-unquoted-name">unquoted_name</strong> ::=  re('[a-zA-Z_0-9]{1, 48}')
+<strong id="grammar-token-quoted-name">quoted_name  </strong> ::=  '&quot;' <a class="reference internal" href="#grammar-token-unquoted-name"><code class="xref docutils literal notranslate"><span class="pre">unquoted_name</span></code></a> '&quot;'
+</pre>
+<p>Both keyspace and table name should be comprised of only alphanumeric characters, cannot be empty and are limited in
+size to 48 characters (that limit exists mostly to avoid filenames (which may include the keyspace and table name) to go
+over the limits of certain file systems). By default, keyspace and table names are case insensitive (<code class="docutils literal notranslate"><span class="pre">myTable</span></code> is
+equivalent to <code class="docutils literal notranslate"><span class="pre">mytable</span></code>) but case sensitivity can be forced by using double-quotes (<code class="docutils literal notranslate"><span class="pre">&quot;myTable&quot;</span></code> is different from
+<code class="docutils literal notranslate"><span class="pre">mytable</span></code>).</p>
+<p>Further, a table is always part of a keyspace and a table name can be provided fully-qualified by the keyspace it is
+part of. If is is not fully-qualified, the table is assumed to be in the <em>current</em> keyspace (see <a class="reference internal" href="#use-statement"><span class="std std-ref">USE statement</span></a>).</p>
+<p>Further, the valid names for columns is simply defined as:</p>
+<pre>
+<strong id="grammar-token-column-name">column_name</strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a>
+</pre>
+<p>We also define the notion of statement options for use in the following section:</p>
+<pre>
+<strong id="grammar-token-options">options</strong> ::=  <a class="reference internal" href="#grammar-token-option"><code class="xref docutils literal notranslate"><span class="pre">option</span></code></a> ( AND <a class="reference internal" href="#grammar-token-option"><code class="xref docutils literal notranslate"><span class="pre">option</span></code></a> )*
+<strong id="grammar-token-option">option </strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> '=' ( <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-constant"><code class="xref docutils literal notranslate"><span class="pre">constant</span></code></a> | <a class="reference internal" href="types.html#grammar-token-map-literal"><code class="xref docutils literal notranslate"><span class="pre">map_literal</span></code></a> )
+</pre>
+</div>
+<div class="section" id="create-keyspace">
+<span id="create-keyspace-statement"></span><h2>CREATE KEYSPACE<a class="headerlink" href="#create-keyspace" title="Permalink to this headline">¶</a></h2>
+<p>A keyspace is created using a <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">KEYSPACE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-keyspace-statement">create_keyspace_statement</strong> ::=  CREATE KEYSPACE [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a> WITH <a class="reference internal" href="#grammar-token-options"><code class="xref docutils literal notranslate"><span class="pre">options</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">Excelsior</span>
+           <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;SimpleStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;replication_factor&#39;</span> <span class="p">:</span> <span class="mf">3</span><span class="p">};</span>
+
+<span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">Excalibur</span>
+           <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;NetworkTopologyStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;DC1&#39;</span> <span class="p">:</span> <span class="mf">1</span><span class="p">,</span> <span class="s1">&#39;DC2&#39;</span> <span class="p">:</span> <span class="mf">3</span><span class="p">}</span>
+            <span class="k">AND</span> <span class="n">durable_writes</span> <span class="o">=</span> <span class="n">false</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The supported <code class="docutils literal notranslate"><span class="pre">options</span></code> are:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="16%" />
+<col width="9%" />
+<col width="9%" />
+<col width="8%" />
+<col width="58%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">name</th>
+<th class="head">kind</th>
+<th class="head">mandatory</th>
+<th class="head">default</th>
+<th class="head">description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">replication</span></code></td>
+<td><em>map</em></td>
+<td>yes</td>
+<td>&#160;</td>
+<td>The replication strategy and options to use for the keyspace (see
+details below).</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">durable_writes</span></code></td>
+<td><em>simple</em></td>
+<td>no</td>
+<td>true</td>
+<td>Whether to use the commit log for updates on this keyspace
+(disable this option at your own risk!).</td>
+</tr>
+</tbody>
+</table>
+<p>The <code class="docutils literal notranslate"><span class="pre">replication</span></code> property is mandatory and must at least contains the <code class="docutils literal notranslate"><span class="pre">'class'</span></code> sub-option which defines the
+<a class="reference internal" href="../architecture/dynamo.html#replication-strategy"><span class="std std-ref">replication strategy</span></a> class to use. The rest of the sub-options depends on what replication
+strategy is used. By default, Cassandra support the following <code class="docutils literal notranslate"><span class="pre">'class'</span></code>:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">'SimpleStrategy'</span></code>: A simple strategy that defines a replication factor for the whole cluster. The only sub-options
+supported is <code class="docutils literal notranslate"><span class="pre">'replication_factor'</span></code> to define that replication factor and is mandatory.</li>
+<li><code class="docutils literal notranslate"><span class="pre">'NetworkTopologyStrategy'</span></code>: A replication strategy that allows to set the replication factor independently for
+each data-center. The rest of the sub-options are key-value pairs where a key is a data-center name and its value is
+the associated replication factor.</li>
+</ul>
+<p>Attempting to create a keyspace that already exists will return an error unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is used. If
+it is used, the statement will be a no-op if the keyspace already exists.</p>
+</div>
+<div class="section" id="use">
+<span id="use-statement"></span><h2>USE<a class="headerlink" href="#use" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">USE</span></code> statement allows to change the <em>current</em> keyspace (for the <em>connection</em> on which it is executed). A number
+of objects in CQL are bound to a keyspace (tables, user-defined types, functions, …) and the current keyspace is the
+default keyspace used when those objects are referred without a fully-qualified name (that is, without being prefixed a
+keyspace name). A <code class="docutils literal notranslate"><span class="pre">USE</span></code> statement simply takes the keyspace to use as current as argument:</p>
+<pre>
+<strong id="grammar-token-use-statement">use_statement</strong> ::=  USE <a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a>
+</pre>
+</div>
+<div class="section" id="alter-keyspace">
+<span id="alter-keyspace-statement"></span><h2>ALTER KEYSPACE<a class="headerlink" href="#alter-keyspace" title="Permalink to this headline">¶</a></h2>
+<p>An <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">KEYSPACE</span></code> statement allows to modify the options of a keyspace:</p>
+<pre>
+<strong id="grammar-token-alter-keyspace-statement">alter_keyspace_statement</strong> ::=  ALTER KEYSPACE <a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a> WITH <a class="reference internal" href="#grammar-token-options"><code class="xref docutils literal notranslate"><span class="pre">options</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">KEYSPACE</span> <span class="n">Excelsior</span>
+          <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;SimpleStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;replication_factor&#39;</span> <span class="p">:</span> <span class="mf">4</span><span class="p">};</span>
+</pre></div>
+</div>
+<p>The supported options are the same than for <a class="reference internal" href="#create-keyspace-statement"><span class="std std-ref">creating a keyspace</span></a>.</p>
+</div>
+<div class="section" id="drop-keyspace">
+<span id="drop-keyspace-statement"></span><h2>DROP KEYSPACE<a class="headerlink" href="#drop-keyspace" title="Permalink to this headline">¶</a></h2>
+<p>Dropping a keyspace can be done using the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">KEYSPACE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-keyspace-statement">drop_keyspace_statement</strong> ::=  DROP KEYSPACE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DROP</span> <span class="k">KEYSPACE</span> <span class="n">Excelsior</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Dropping a keyspace results in the immediate, irreversible removal of that keyspace, including all the tables, UTD and
+functions in it, and all the data contained in those tables.</p>
+<p>If the keyspace does not exists, the statement will return an error, unless <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used in which case the
+operation is a no-op.</p>
+</div>
+<div class="section" id="create-table">
+<span id="create-table-statement"></span><h2>CREATE TABLE<a class="headerlink" href="#create-table" title="Permalink to this headline">¶</a></h2>
+<p>Creating a new table uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-table-statement">create_table_statement</strong> ::=  CREATE TABLE [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+                            '('
+                                <a class="reference internal" href="#grammar-token-column-definition"><code class="xref docutils literal notranslate"><span class="pre">column_definition</span></code></a>
+                                ( ',' <a class="reference internal" href="#grammar-token-column-definition"><code class="xref docutils literal notranslate"><span class="pre">column_definition</span></code></a> )*
+                                [ ',' PRIMARY KEY '(' <a class="reference internal" href="#grammar-token-primary-key"><code class="xref docutils literal notranslate"><span class="pre">primary_key</span></code></a> ')' ]
+                            ')' [ WITH <a class="reference internal" href="#grammar-token-table-options"><code class="xref docutils literal notranslate"><span class="pre">table_options</span></code></a> ]
+<strong id="grammar-token-column-definition">column_definition     </strong> ::=  <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> [ STATIC ] [ PRIMARY KEY]
+<strong id="grammar-token-primary-key">primary_key           </strong> ::=  <a class="reference internal" href="#grammar-token-partition-key"><code class="xref docutils literal notranslate"><span class="pre">partition_key</span></code></a> [ ',' <a class="reference internal" href="#grammar-token-clustering-columns"><code class="xref docutils literal notranslate"><span class="pre">clustering_columns</span></code></a> ]
+<strong id="grammar-token-partition-key">partition_key         </strong> ::=  <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a>
+                            | '(' <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )* ')'
+<strong id="grammar-token-clustering-columns">clustering_columns    </strong> ::=  <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )*
+<strong id="grammar-token-table-options">table_options         </strong> ::=  COMPACT STORAGE [ AND <a class="reference internal" href="#grammar-token-table-options"><code class="xref docutils literal notranslate"><span class="pre">table_options</span></code></a> ]
+                            | CLUSTERING ORDER BY '(' <a class="reference internal" href="#grammar-token-clustering-order"><code class="xref docutils literal notranslate"><span class="pre">clustering_order</span></code></a> ')' [ AND <a class="reference internal" href="#grammar-token-table-options"><code class="xref docutils literal notranslate"><span class="pre">table_options</span></code></a> ]
+                            | <a class="reference internal" href="#grammar-token-options"><code class="xref docutils literal notranslate"><span class="pre">options</span></code></a>
+<strong id="grammar-token-clustering-order">clustering_order      </strong> ::=  <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> (ASC | DESC) ( ',' <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> (ASC | DESC) )*
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">monkeySpecies</span> <span class="p">(</span>
+    <span class="n">species</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">common_name</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">population</span> <span class="nb">varint</span><span class="p">,</span>
+    <span class="n">average_size</span> <span class="nb">int</span>
+<span class="p">)</span> <span class="k">WITH</span> <span class="n">comment</span><span class="o">=</span><span class="s1">&#39;Important biological records&#39;</span>
+   <span class="k">AND</span> <span class="n">read_repair_chance</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">timeline</span> <span class="p">(</span>
+    <span class="n">userid</span> <span class="nb">uuid</span><span class="p">,</span>
+    <span class="n">posted_month</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">posted_time</span> <span class="nb">uuid</span><span class="p">,</span>
+    <span class="n">body</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">posted_by</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">userid</span><span class="p">,</span> <span class="n">posted_month</span><span class="p">,</span> <span class="n">posted_time</span><span class="p">)</span>
+<span class="p">)</span> <span class="k">WITH</span> <span class="n">compaction</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;class&#39;</span> <span class="p">:</span> <span class="s1">&#39;LeveledCompactionStrategy&#39;</span> <span class="p">};</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">loads</span> <span class="p">(</span>
+    <span class="n">machine</span> <span class="nb">inet</span><span class="p">,</span>
+    <span class="n">cpu</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">mtime</span> <span class="nb">timeuuid</span><span class="p">,</span>
+    <span class="n">load</span> <span class="nb">float</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">((</span><span class="n">machine</span><span class="p">,</span> <span class="n">cpu</span><span class="p">),</span> <span class="n">mtime</span><span class="p">)</span>
+<span class="p">)</span> <span class="k">WITH</span> <span class="k">CLUSTERING</span> <span class="k">ORDER</span> <span class="k">BY</span> <span class="p">(</span><span class="n">mtime</span> <span class="k">DESC</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>A CQL table has a name and is composed of a set of <em>rows</em>. Creating a table amounts to defining which <a class="reference internal" href="#column-definition"><span class="std std-ref">columns</span></a> the rows will be composed, which of those columns compose the <a class="reference internal" href="#primary-key"><span class="std std-ref">primary key</span></a>, as
+well as optional <a class="reference internal" href="#create-table-options"><span class="std std-ref">options</span></a> for the table.</p>
+<p>Attempting to create an already existing table will return an error unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> directive is used. If
+it is used, the statement will be a no-op if the table already exists.</p>
+<div class="section" id="column-definitions">
+<span id="column-definition"></span><h3>Column definitions<a class="headerlink" href="#column-definitions" title="Permalink to this headline">¶</a></h3>
+<p>Every rows in a CQL table has a set of predefined columns defined at the time of the table creation (or added later
+using an <a class="reference internal" href="#alter-table-statement"><span class="std std-ref">alter statement</span></a>).</p>
+<p>A <a class="reference internal" href="#grammar-token-column-definition"><code class="xref std std-token docutils literal notranslate"><span class="pre">column_definition</span></code></a> is primarily comprised of the name of the column defined and it’s <a class="reference internal" href="types.html#data-types"><span class="std std-ref">type</span></a>,
+which restrict which values are accepted for that column. Additionally, a column definition can have the following
+modifiers:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">STATIC</span></code></dt>
+<dd>it declares the column as being a <a class="reference internal" href="#static-columns"><span class="std std-ref">static column</span></a>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code></dt>
+<dd>it declares the column as being the sole component of the <a class="reference internal" href="#primary-key"><span class="std std-ref">primary key</span></a> of the table.</dd>
+</dl>
+<div class="section" id="static-columns">
+<span id="id2"></span><h4>Static columns<a class="headerlink" href="#static-columns" title="Permalink to this headline">¶</a></h4>
+<p>Some columns can be declared as <code class="docutils literal notranslate"><span class="pre">STATIC</span></code> in a table definition. A column that is static will be “shared” by all the
+rows belonging to the same partition (having the same <a class="reference internal" href="#partition-key"><span class="std std-ref">partition key</span></a>). For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span>
+    <span class="n">pk</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">t</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">v</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">s</span> <span class="nb">text</span> <span class="k">static</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span>
+<span class="p">);</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">t</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">0</span><span class="p">,</span> <span class="mf">0</span><span class="p">,</span> <span class="s1">&#39;val0&#39;</span><span class="p">,</span> <span class="s1">&#39;static0&#39;</span><span class="p">);</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">t</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">0</span><span class="p">,</span> <span class="mf">1</span><span class="p">,</span> <span class="s1">&#39;val1&#39;</span><span class="p">,</span> <span class="s1">&#39;static1&#39;</span><span class="p">);</span>
+
+<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
+   <span class="n">pk</span> <span class="o">|</span> <span class="n">t</span> <span class="o">|</span> <span class="n">v</span>      <span class="o">|</span> <span class="n">s</span>
+  <span class="c1">----+---+--------+-----------</span>
+   <span class="mf">0</span>  <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="s1">&#39;val0&#39;</span> <span class="o">|</span> <span class="s1">&#39;static1&#39;</span>
+   <span class="mf">0</span>  <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="s1">&#39;val1&#39;</span> <span class="o">|</span> <span class="s1">&#39;static1&#39;</span>
+</pre></div>
+</div>
+<p>As can be seen, the <code class="docutils literal notranslate"><span class="pre">s</span></code> value is the same (<code class="docutils literal notranslate"><span class="pre">static1</span></code>) for both of the row in the partition (the partition key in
+that example being <code class="docutils literal notranslate"><span class="pre">pk</span></code>, both rows are in that same partition): the 2nd insertion has overridden the value for <code class="docutils literal notranslate"><span class="pre">s</span></code>.</p>
+<p>The use of static columns as the following restrictions:</p>
+<ul class="simple">
+<li>tables with the <code class="docutils literal notranslate"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> option (see below) cannot use them.</li>
+<li>a table without clustering columns cannot have static columns (in a table without clustering columns, every partition
+has only one row, and so every column is inherently static).</li>
+<li>only non <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> columns can be static.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="the-primary-key">
+<span id="primary-key"></span><h3>The Primary key<a class="headerlink" href="#the-primary-key" title="Permalink to this headline">¶</a></h3>
+<p>Within a table, a row is uniquely identified by its <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code>, and hence all table <strong>must</strong> define a PRIMARY KEY
+(and only one). A <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> definition is composed of one or more of the columns defined in the table.
+Syntactically, the primary key is defined the keywords <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> followed by comma-separated list of the column
+names composing it within parenthesis, but if the primary key has only one column, one can alternatively follow that
+column definition by the <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> keywords. The order of the columns in the primary key definition matter.</p>
+<p>A CQL primary key is composed of 2 parts:</p>
+<ul>
+<li><p class="first">the <a class="reference internal" href="#partition-key"><span class="std std-ref">partition key</span></a> part. It is the first component of the primary key definition. It can be a
+single column or, using additional parenthesis, can be multiple columns. A table always have at least a partition key,
+the smallest possible table definition is:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span><span class="n">k</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">);</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">the <a class="reference internal" href="#clustering-columns"><span class="std std-ref">clustering columns</span></a>. Those are the columns after the first component of the primary key
+definition, and the order of those columns define the <em>clustering order</em>.</p>
+</li>
+</ul>
+<p>Some example of primary key definition are:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span> <span class="pre">(a)</span></code>: <code class="docutils literal notranslate"><span class="pre">a</span></code> is the partition key and there is no clustering columns.</li>
+<li><code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span> <span class="pre">(a,</span> <span class="pre">b,</span> <span class="pre">c)</span></code> : <code class="docutils literal notranslate"><span class="pre">a</span></code> is the partition key and <code class="docutils literal notranslate"><span class="pre">b</span></code> and <code class="docutils literal notranslate"><span class="pre">c</span></code> are the clustering columns.</li>
+<li><code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span> <span class="pre">((a,</span> <span class="pre">b),</span> <span class="pre">c)</span></code> : <code class="docutils literal notranslate"><span class="pre">a</span></code> and <code class="docutils literal notranslate"><span class="pre">b</span></code> compose the partition key (this is often called a <em>composite</em> partition
+key) and <code class="docutils literal notranslate"><span class="pre">c</span></code> is the clustering column.</li>
+</ul>
+<div class="section" id="the-partition-key">
+<span id="partition-key"></span><h4>The partition key<a class="headerlink" href="#the-partition-key" title="Permalink to this headline">¶</a></h4>
+<p>Within a table, CQL defines the notion of a <em>partition</em>. A partition is simply the set of rows that share the same value
+for their partition key. Note that if the partition key is composed of multiple columns, then rows belong to the same
+partition only they have the same values for all those partition key column. So for instance, given the following table
+definition and content:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span>
+    <span class="n">a</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">b</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">c</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">d</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">((</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">),</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span><span class="p">)</span>
+<span class="p">);</span>
+
+<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
+   <span class="n">a</span> <span class="o">|</span> <span class="n">b</span> <span class="o">|</span> <span class="n">c</span> <span class="o">|</span> <span class="n">d</span>
+  <span class="c1">---+---+---+---</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span>    <span class="c1">// row 1</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">1</span>    <span class="c1">// row 2</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">2</span> <span class="o">|</span> <span class="mf">2</span>    <span class="c1">// row 3</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">3</span> <span class="o">|</span> <span class="mf">3</span>    <span class="c1">// row 4</span>
+   <span class="mf">1</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">4</span> <span class="o">|</span> <span class="mf">4</span>    <span class="c1">// row 5</span>
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span class="pre">row</span> <span class="pre">1</span></code> and <code class="docutils literal notranslate"><span class="pre">row</span> <span class="pre">2</span></code> are in the same partition, <code class="docutils literal notranslate"><span class="pre">row</span> <span class="pre">3</span></code> and <code class="docutils literal notranslate"><span class="pre">row</span> <span class="pre">4</span></code> are also in the same partition (but a
+different one) and <code class="docutils literal notranslate"><span class="pre">row</span> <span class="pre">5</span></code> is in yet another partition.</p>
+<p>Note that a table always has a partition key, and that if the table has no <a class="reference internal" href="#clustering-columns"><span class="std std-ref">clustering columns</span></a>, then every partition of that table is only comprised of a single row (since the primary key
+uniquely identifies rows and the primary key is equal to the partition key if there is no clustering columns).</p>
+<p>The most important property of partition is that all the rows belonging to the same partition are guarantee to be stored
+on the same set of replica nodes. In other words, the partition key of a table defines which of the rows will be
+localized together in the Cluster, and it is thus important to choose your partition key wisely so that rows that needs
+to be fetch together are in the same partition (so that querying those rows together require contacting a minimum of
+nodes).</p>
+<p>Please note however that there is a flip-side to this guarantee: as all rows sharing a partition key are guaranteed to
+be stored on the same set of replica node, a partition key that groups too much data can create a hotspot.</p>
+<p>Another useful property of a partition is that when writing data, all the updates belonging to a single partition are
+done <em>atomically</em> and in <em>isolation</em>, which is not the case across partitions.</p>
+<p>The proper choice of the partition key and clustering columns for a table is probably one of the most important aspect
+of data modeling in Cassandra, and it largely impact which queries can be performed, and how efficiently they are.</p>
+</div>
+<div class="section" id="the-clustering-columns">
+<span id="clustering-columns"></span><h4>The clustering columns<a class="headerlink" href="#the-clustering-columns" title="Permalink to this headline">¶</a></h4>
+<p>The clustering columns of a table defines the clustering order for the partition of that table. For a given
+<a class="reference internal" href="#partition-key"><span class="std std-ref">partition</span></a>, all the rows are physically ordered inside Cassandra by that clustering order. For
+instance, given:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span>
+    <span class="n">a</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">b</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">c</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span><span class="p">)</span>
+<span class="p">);</span>
+
+<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
+   <span class="n">a</span> <span class="o">|</span> <span class="n">b</span> <span class="o">|</span> <span class="n">c</span>
+  <span class="c1">---+---+---</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="mf">4</span>     <span class="c1">// row 1</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">9</span>     <span class="c1">// row 2</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">2</span> <span class="o">|</span> <span class="mf">2</span>     <span class="c1">// row 3</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">3</span> <span class="o">|</span> <span class="mf">3</span>     <span class="c1">// row 4</span>
+</pre></div>
+</div>
+<p>then the rows (which all belong to the same partition) are all stored internally in the order of the values of their
+<code class="docutils literal notranslate"><span class="pre">b</span></code> column (the order they are displayed above). So where the partition key of the table allows to group rows on the
+same replica set, the clustering columns controls how those rows are stored on the replica. That sorting allows the
+retrieval of a range of rows within a partition (for instance, in the example above, <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">*</span> <span class="pre">FROM</span> <span class="pre">t</span> <span class="pre">WHERE</span> <span class="pre">a</span> <span class="pre">=</span> <span class="pre">0</span> <span class="pre">AND</span> <span class="pre">b</span>
+<span class="pre">&gt;</span> <span class="pre">1</span> <span class="pre">and</span> <span class="pre">b</span> <span class="pre">&lt;=</span> <span class="pre">3</span></code>) to be very efficient.</p>
+</div>
+</div>
+<div class="section" id="table-options">
+<span id="create-table-options"></span><h3>Table options<a class="headerlink" href="#table-options" title="Permalink to this headline">¶</a></h3>
+<p>A CQL table has a number of options that can be set at creation (and, for most of them, <a class="reference internal" href="#alter-table-statement"><span class="std std-ref">altered</span></a> later). These options are specified after the <code class="docutils literal notranslate"><span class="pre">WITH</span></code> keyword.</p>
+<p>Amongst those options, two important ones cannot be changed after creation and influence which queries can be done
+against the table: the <code class="docutils literal notranslate"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> option and the <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> option. Those, as well as the other
+options of a table are described in the following sections.</p>
+<div class="section" id="compact-tables">
+<span id="id3"></span><h4>Compact tables<a class="headerlink" href="#compact-tables" title="Permalink to this headline">¶</a></h4>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">Since Cassandra 3.0, compact tables have the exact same layout internally than non compact ones (for the
+same schema obviously), and declaring a table compact <strong>only</strong> creates artificial limitations on the table definition
+and usage that are necessary to ensure backward compatibility with the deprecated Thrift API. And as <code class="docutils literal notranslate"><span class="pre">COMPACT</span>
+<span class="pre">STORAGE</span></code> cannot, as of Cassandra 3.11.11, be removed, it is strongly discouraged to create new table with the
+<code class="docutils literal notranslate"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> option.</p>
+</div>
+<p>A <em>compact</em> table is one defined with the <code class="docutils literal notranslate"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> option. This option is mainly targeted towards backward
+compatibility for definitions created before CQL version 3 (see <a class="reference external" href="http://www.datastax.com/dev/blog/thrift-to-cql3">www.datastax.com/dev/blog/thrift-to-cql3</a> for more details) and shouldn’t be used for new tables. Declaring a
+table with this option creates limitations for the table which are largely arbitrary but necessary for backward
+compatibility with the (deprecated) Thrift API. Amongst those limitation:</p>
+<ul class="simple">
+<li>a compact table cannot use collections nor static columns.</li>
+<li>if a compact table has at least one clustering column, then it must have <em>exactly</em> one column outside of the primary
+key ones. This imply you cannot add or remove columns after creation in particular.</li>
+<li>a compact table is limited in the indexes it can create, and no materialized view can be created on it.</li>
+</ul>
+</div>
+<div class="section" id="reversing-the-clustering-order">
+<span id="clustering-order"></span><h4>Reversing the clustering order<a class="headerlink" href="#reversing-the-clustering-order" title="Permalink to this headline">¶</a></h4>
+<p>The clustering order of a table is defined by the <a class="reference internal" href="#clustering-columns"><span class="std std-ref">clustering columns</span></a> of that table. By
+default, that ordering is based on natural order of those clustering order, but the <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> allows to
+change that clustering order to use the <em>reverse</em> natural order for some (potentially all) of the columns.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> option takes the comma-separated list of the clustering column, each with a <code class="docutils literal notranslate"><span class="pre">ASC</span></code> (for
+<em>ascendant</em>, e.g. the natural order) or <code class="docutils literal notranslate"><span class="pre">DESC</span></code> (for <em>descendant</em>, e.g. the reverse natural order). Note in particular
+that the default (if the <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> option is not used) is strictly equivalent to using the option with all
+clustering columns using the <code class="docutils literal notranslate"><span class="pre">ASC</span></code> modifier.</p>
+<p>Note that this option is basically a hint for the storage engine to change the order in which it stores the row but it
+has 3 visible consequences:</p>
+<dl class="docutils">
+<dt># it limits which <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span></code> clause are allowed for <a class="reference internal" href="dml.html#select-statement"><span class="std std-ref">selects</span></a> on that table. You can only</dt>
+<dd>order results by the clustering order or the reverse clustering order. Meaning that if a table has 2 clustering column
+<code class="docutils literal notranslate"><span class="pre">a</span></code> and <code class="docutils literal notranslate"><span class="pre">b</span></code> and you defined <code class="docutils literal notranslate"><span class="pre">WITH</span> <span class="pre">CLUSTERING</span> <span class="pre">ORDER</span> <span class="pre">(a</span> <span class="pre">DESC,</span> <span class="pre">b</span> <span class="pre">ASC)</span></code>, then in queries you will be allowed to use
+<code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span> <span class="pre">(a</span> <span class="pre">DESC,</span> <span class="pre">b</span> <span class="pre">ASC)</span></code> and (reverse clustering order) <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span> <span class="pre">(a</span> <span class="pre">ASC,</span> <span class="pre">b</span> <span class="pre">DESC)</span></code> but <strong>not</strong> <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span> <span class="pre">(a</span>
+<span class="pre">ASC,</span> <span class="pre">b</span> <span class="pre">ASC)</span></code> (nor <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span> <span class="pre">(a</span> <span class="pre">DESC,</span> <span class="pre">b</span> <span class="pre">DESC)</span></code>).</dd>
+<dt># it also change the default order of results when queried (if no <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span></code> is provided). Results are always returned</dt>
+<dd>in clustering order (within a partition).</dd>
+<dt># it has a small performance impact on some queries as queries in reverse clustering order are slower than the one in</dt>
+<dd>forward clustering order. In practice, this means that if you plan on querying mostly in the reverse natural order of
+your columns (which is common with time series for instance where you often want data from the newest to the oldest),
+it is an optimization to declare a descending clustering order.</dd>
+</dl>
+</div>
+<div class="section" id="other-table-options">
+<span id="create-table-general-options"></span><h4>Other table options<a class="headerlink" href="#other-table-options" title="Permalink to this headline">¶</a></h4>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">review (misses cdc if nothing else) and link to proper categories when appropriate (compaction for instance)</p>
+</div>
+<p>A table supports the following options:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="28%" />
+<col width="9%" />
+<col width="11%" />
+<col width="52%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">option</th>
+<th class="head">kind</th>
+<th class="head">default</th>
+<th class="head">description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">comment</span></code></td>
+<td><em>simple</em></td>
+<td>none</td>
+<td>A free-form, human-readable comment.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">read_repair_chance</span></code></td>
+<td><em>simple</em></td>
+<td>0.1</td>
+<td>The probability with which to query extra nodes (e.g.
+more nodes than required by the consistency level) for
+the purpose of read repairs.</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">dclocal_read_repair_chance</span></code></td>
+<td><em>simple</em></td>
+<td>0</td>
+<td>The probability with which to query extra nodes (e.g.
+more nodes than required by the consistency level)
+belonging to the same data center than the read
+coordinator for the purpose of read repairs.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code></td>
+<td><em>simple</em></td>
+<td>864000</td>
+<td>Time to wait before garbage collecting tombstones
+(deletion markers).</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code></td>
+<td><em>simple</em></td>
+<td>0.00075</td>
+<td>The target probability of false positive of the sstable
+bloom filters. Said bloom filters will be sized to provide
+the provided probability (thus lowering this value impact
+the size of bloom filters in-memory and on-disk)</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">default_time_to_live</span></code></td>
+<td><em>simple</em></td>
+<td>0</td>
+<td>The default expiration time (“TTL”) in seconds for a
+table.</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">compaction</span></code></td>
+<td><em>map</em></td>
+<td><em>see below</em></td>
+<td><a class="reference internal" href="#cql-compaction-options"><span class="std std-ref">Compaction options</span></a>.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">compression</span></code></td>
+<td><em>map</em></td>
+<td><em>see below</em></td>
+<td><a class="reference internal" href="#cql-compression-options"><span class="std std-ref">Compression options</span></a>.</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">caching</span></code></td>
+<td><em>map</em></td>
+<td><em>see below</em></td>
+<td><a class="reference internal" href="#cql-caching-options"><span class="std std-ref">Caching options</span></a>.</td>
+</tr>
+</tbody>
+</table>
+<div class="section" id="compaction-options">
+<span id="cql-compaction-options"></span><h5>Compaction options<a class="headerlink" href="#compaction-options" title="Permalink to this headline">¶</a></h5>
+<p>The <code class="docutils literal notranslate"><span class="pre">compaction</span></code> options must at least define the <code class="docutils literal notranslate"><span class="pre">'class'</span></code> sub-option, that defines the compaction strategy class
+to use. The default supported class are <code class="docutils literal notranslate"><span class="pre">'SizeTieredCompactionStrategy'</span></code> (<a class="reference internal" href="../operating/compaction.html#stcs"><span class="std std-ref">STCS</span></a>),
+<code class="docutils literal notranslate"><span class="pre">'LeveledCompactionStrategy'</span></code> (<a class="reference internal" href="../operating/compaction.html#lcs"><span class="std std-ref">LCS</span></a>) and <code class="docutils literal notranslate"><span class="pre">'TimeWindowCompactionStrategy'</span></code> (<a class="reference internal" href="../operating/compaction.html#twcs"><span class="std std-ref">TWCS</span></a>) (the
+<code class="docutils literal notranslate"><span class="pre">'DateTieredCompactionStrategy'</span></code> is also supported but is deprecated and <code class="docutils literal notranslate"><span class="pre">'TimeWindowCompactionStrategy'</span></code> should be
+preferred instead). Custom strategy can be provided by specifying the full class name as a <a class="reference internal" href="definitions.html#constants"><span class="std std-ref">string constant</span></a>.</p>
+<p>All default strategies support a number of <a class="reference internal" href="../operating/compaction.html#compaction-options"><span class="std std-ref">common options</span></a>, as well as options specific to
+the strategy chosen (see the section corresponding to your strategy for details: <a class="reference internal" href="../operating/compaction.html#stcs-options"><span class="std std-ref">STCS</span></a>, <a class="reference internal" href="../operating/compaction.html#lcs-options"><span class="std std-ref">LCS</span></a> and <a class="reference internal" href="../operating/compaction.html#twcs"><span class="std std-ref">TWCS</span></a>).</p>
+</div>
+<div class="section" id="compression-options">
+<span id="cql-compression-options"></span><h5>Compression options<a class="headerlink" href="#compression-options" title="Permalink to this headline">¶</a></h5>
+<p>The <code class="docutils literal notranslate"><span class="pre">compression</span></code> options define if and how the sstables of the table are compressed. The following sub-options are
+available:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="13%" />
+<col width="66%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Option</th>
+<th class="head">Default</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">class</span></code></td>
+<td>LZ4Compressor</td>
+<td>The compression algorithm to use. Default compressor are: LZ4Compressor,
+SnappyCompressor and DeflateCompressor. Use <code class="docutils literal notranslate"><span class="pre">'enabled'</span> <span class="pre">:</span> <span class="pre">false</span></code> to disable
+compression. Custom compressor can be provided by specifying the full class
+name as a “string constant”:#constants.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">enabled</span></code></td>
+<td>true</td>
+<td>Enable/disable sstable compression.</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">chunk_length_in_kb</span></code></td>
+<td>64</td>
+<td>On disk SSTables are compressed by block (to allow random reads). This
+defines the size (in KB) of said block. Bigger values may improve the
+compression rate, but increases the minimum size of data to be read from disk
+for a read</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">crc_check_chance</span></code></td>
+<td>1.0</td>
+<td>When compression is enabled, each compressed block includes a checksum of
+that block for the purpose of detecting disk bitrot and avoiding the
+propagation of corruption to other replica. This option defines the
+probability with which those checksums are checked during read. By default
+they are always checked. Set to 0 to disable checksum checking and to 0.5 for
+instance to check them every other read   |</td>
+</tr>
+</tbody>
+</table>
+<p>For instance, to create a table with LZ4Compressor and a chunk_lenth_in_kb of 4KB:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">simple</span> <span class="p">(</span>
+   <span class="n">id</span> <span class="nb">int</span><span class="p">,</span>
+   <span class="k">key</span> <span class="nb">text</span><span class="p">,</span>
+   <span class="n">value</span> <span class="nb">text</span><span class="p">,</span>
+   <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="k">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
+<span class="p">)</span> <span class="k">with</span> <span class="n">compression</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;LZ4Compressor&#39;</span><span class="p">,</span> <span class="s1">&#39;chunk_length_in_kb&#39;</span><span class="p">:</span> <span class="mf">4</span><span class="p">};</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="caching-options">
+<span id="cql-caching-options"></span><h5>Caching options<a class="headerlink" href="#caching-options" title="Permalink to this headline">¶</a></h5>
+<p>The <code class="docutils literal notranslate"><span class="pre">caching</span></code> options allows to configure both the <em>key cache</em> and the <em>row cache</em> for the table. The following
+sub-options are available:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Option</th>
+<th class="head">Default</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">keys</span></code></td>
+<td>ALL</td>
+<td>Whether to cache keys (“key cache”) for this table. Valid values are: <code class="docutils literal notranslate"><span class="pre">ALL</span></code> and
+<code class="docutils literal notranslate"><span class="pre">NONE</span></code>.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">rows_per_partition</span></code></td>
+<td>NONE</td>
+<td>The amount of rows to cache per partition (“row cache”). If an integer <code class="docutils literal notranslate"><span class="pre">n</span></code> is
+specified, the first <code class="docutils literal notranslate"><span class="pre">n</span></code> queried rows of a partition will be cached. Other
+possible options are <code class="docutils literal notranslate"><span class="pre">ALL</span></code>, to cache all rows of a queried partition, or <code class="docutils literal notranslate"><span class="pre">NONE</span></code>
+to disable row caching.</td>
+</tr>
+</tbody>
+</table>
+<p>For instance, to create a table with both a key cache and 10 rows per partition:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">simple</span> <span class="p">(</span>
+<span class="n">id</span> <span class="nb">int</span><span class="p">,</span>
+<span class="k">key</span> <span class="nb">text</span><span class="p">,</span>
+<span class="n">value</span> <span class="nb">text</span><span class="p">,</span>
+<span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="k">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
+<span class="p">)</span> <span class="k">WITH</span> <span class="n">caching</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;keys&#39;</span><span class="p">:</span> <span class="s1">&#39;ALL&#39;</span><span class="p">,</span> <span class="s1">&#39;rows_per_partition&#39;</span><span class="p">:</span> <span class="mf">10</span><span class="p">};</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="other-considerations">
+<h5>Other considerations:<a class="headerlink" href="#other-considerations" title="Permalink to this headline">¶</a></h5>
+<ul class="simple">
+<li>Adding new columns (see <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> below) is a constant time operation. There is thus no need to try to
+anticipate future usage when creating a table.</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="section" id="alter-table">
+<span id="alter-table-statement"></span><h2>ALTER TABLE<a class="headerlink" href="#alter-table" title="Permalink to this headline">¶</a></h2>
+<p>Altering an existing table uses the <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-alter-table-statement">alter_table_statement  </strong> ::=  ALTER TABLE <a class="reference internal" href="#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a> <a class="reference internal" href="#grammar-token-alter-table-instruction"><code class="xref docutils literal notranslate"><span class="pre">alter_table_instruction</span></code></a>
+<strong id="grammar-token-alter-table-instruction">alter_table_instruction</strong> ::=  ADD <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> )*
+                             | DROP <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )*
+                             | WITH <a class="reference internal" href="#grammar-token-options"><code class="xref docutils literal notranslate"><span class="pre">options</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">TABLE</span> <span class="n">addamsFamily</span> <span class="k">ADD</span> <span class="n">gravesite</span> <span class="nb">varchar</span><span class="p">;</span>
+
+<span class="k">ALTER</span> <span class="k">TABLE</span> <span class="n">addamsFamily</span>
+       <span class="k">WITH</span> <span class="n">comment</span> <span class="o">=</span> <span class="s1">&#39;A most excellent and useful table&#39;</span>
+       <span class="k">AND</span> <span class="n">read_repair_chance</span> <span class="o">=</span> <span class="mf">0.2</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement can:</p>
+<ul class="simple">
+<li>Add new column(s) to the table (through the <code class="docutils literal notranslate"><span class="pre">ADD</span></code> instruction). Note that the primary key of a table cannot be
+changed and thus newly added column will, by extension, never be part of the primary key. Also note that <a class="reference internal" href="#compact-tables"><span class="std std-ref">compact
+tables</span></a> have restrictions regarding column addition. Note that this is constant (in the amount of
+data the cluster contains) time operation.</li>
+<li>Remove column(s) from the table. This drops both the column and all its content, but note that while the column
+becomes immediately unavailable, its content is only removed lazily during compaction. Please also see the warnings
+below. Due to lazy removal, the altering itself is a constant (in the amount of data removed or contained in the
+cluster) time operation.</li>
+<li>Change some of the table options (through the <code class="docutils literal notranslate"><span class="pre">WITH</span></code> instruction). The <a class="reference internal" href="#create-table-options"><span class="std std-ref">supported options</span></a> are the same that when creating a table (outside of <code class="docutils literal notranslate"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> and <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span>
+<span class="pre">ORDER</span></code> that cannot be changed after creation). Note that setting any <code class="docutils literal notranslate"><span class="pre">compaction</span></code> sub-options has the effect of
+erasing all previous <code class="docutils literal notranslate"><span class="pre">compaction</span></code> options, so you need to re-specify all the sub-options if you want to keep them.
+The same note applies to the set of <code class="docutils literal notranslate"><span class="pre">compression</span></code> sub-options.</li>
+</ul>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">Dropping a column assumes that the timestamps used for the value of this column are “real” timestamp in
+microseconds. Using “real” timestamps in microseconds is the default is and is <strong>strongly</strong> recommended but as
+Cassandra allows the client to provide any timestamp on any table it is theoretically possible to use another
+convention. Please be aware that if you do so, dropping a column will not work correctly.</p>
+</div>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">Once a column is dropped, it is allowed to re-add a column with the same name than the dropped one
+<strong>unless</strong> the type of the dropped column was a (non-frozen) column (due to an internal technical limitation).</p>
+</div>
+</div>
+<div class="section" id="drop-table">
+<span id="drop-table-statement"></span><h2>DROP TABLE<a class="headerlink" href="#drop-table" title="Permalink to this headline">¶</a></h2>
+<p>Dropping a table uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">TABLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-table-statement">drop_table_statement</strong> ::=  DROP TABLE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+</pre>
+<p>Dropping a table results in the immediate, irreversible removal of the table, including all data it contains.</p>
+<p>If the table does not exist, the statement will return an error, unless <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used in which case the
+operation is a no-op.</p>
+</div>
+<div class="section" id="truncate">
+<span id="truncate-statement"></span><h2>TRUNCATE<a class="headerlink" href="#truncate" title="Permalink to this headline">¶</a></h2>
+<p>A table can be truncated using the <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-truncate-statement">truncate_statement</strong> ::=  TRUNCATE [ TABLE ] <a class="reference internal" href="#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+</pre>
+<p>Note that <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span> <span class="pre">TABLE</span> <span class="pre">foo</span></code> is allowed for consistency with other DDL statements but tables are the only object
+that can be truncated currently and so the <code class="docutils literal notranslate"><span class="pre">TABLE</span></code> keyword can be omitted.</p>
+<p>Truncating a table permanently removes all existing data from the table, but without removing the table itself.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="dml.html" class="btn btn-default pull-right " role="button" title="Data Manipulation" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="types.html" class="btn btn-default" role="button" title="Data Types" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/cql/definitions.html b/src/doc/3.11.11/cql/definitions.html
new file mode 100644
index 0000000..ac1a605
--- /dev/null
+++ b/src/doc/3.11.11/cql/definitions.html
@@ -0,0 +1,312 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Definitions"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Data Types" href="types.html"/>
+      <link rel="prev" title="The Cassandra Query Language (CQL)" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Definitions</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#conventions">Conventions</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#identifiers">Identifiers and keywords</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#constants">Constants</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#terms">Terms</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#comments">Comments</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#statements">Statements</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#prepared-statements">Prepared Statements</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="definitions">
+<h1>Definitions<a class="headerlink" href="#definitions" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="conventions">
+<span id="id1"></span><h2>Conventions<a class="headerlink" href="#conventions" title="Permalink to this headline">¶</a></h2>
+<p>To aid in specifying the CQL syntax, we will use the following conventions in this document:</p>
+<ul class="simple">
+<li>Language rules will be given in an informal <a class="reference external" href="http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form#Variants">BNF variant</a> notation. In particular, we’ll use square brakets
+(<code class="docutils literal notranslate"><span class="pre">[</span> <span class="pre">item</span> <span class="pre">]</span></code>) for optional items, <code class="docutils literal notranslate"><span class="pre">*</span></code> and <code class="docutils literal notranslate"><span class="pre">+</span></code> for repeated items (where <code class="docutils literal notranslate"><span class="pre">+</span></code> imply at least one).</li>
+<li>The grammar will also use the following convention for convenience: non-terminal term will be lowercase (and link to
+their definition) while terminal keywords will be provided “all caps”. Note however that keywords are
+<a class="reference internal" href="#identifiers"><span class="std std-ref">Identifiers and keywords</span></a> and are thus case insensitive in practice. We will also define some early construction using
+regexp, which we’ll indicate with <code class="docutils literal notranslate"><span class="pre">re(&lt;some</span> <span class="pre">regular</span> <span class="pre">expression&gt;)</span></code>.</li>
+<li>The grammar is provided for documentation purposes and leave some minor details out.  For instance, the comma on the
+last column definition in a <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> statement is optional but supported if present even though the grammar in
+this document suggests otherwise. Also, not everything accepted by the grammar is necessarily valid CQL.</li>
+<li>References to keywords or pieces of CQL code in running text will be shown in a <code class="docutils literal notranslate"><span class="pre">fixed-width</span> <span class="pre">font</span></code>.</li>
+</ul>
+</div>
+<div class="section" id="identifiers">
+<span id="identifiers-and-keywords"></span><h2>Identifiers and keywords<a class="headerlink" href="#identifiers" title="Permalink to this headline">¶</a></h2>
+<p>The CQL language uses <em>identifiers</em> (or <em>names</em>) to identify tables, columns and other objects. An identifier is a token
+matching the regular expression <code class="docutils literal notranslate"><span class="pre">[a-zA-Z][a-zA-Z0-9_]*</span></code>.</p>
+<p>A number of such identifiers, like <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> or <code class="docutils literal notranslate"><span class="pre">WITH</span></code>, are <em>keywords</em>. They have a fixed meaning for the language
+and most are reserved. The list of those keywords can be found in <a class="reference internal" href="appendices.html#appendix-a"><span class="std std-ref">Appendix A: CQL Keywords</span></a>.</p>
+<p>Identifiers and (unquoted) keywords are case insensitive. Thus <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> is the same than <code class="docutils literal notranslate"><span class="pre">select</span></code> or <code class="docutils literal notranslate"><span class="pre">sElEcT</span></code>, and
+<code class="docutils literal notranslate"><span class="pre">myId</span></code> is the same than <code class="docutils literal notranslate"><span class="pre">myid</span></code> or <code class="docutils literal notranslate"><span class="pre">MYID</span></code>. A convention often used (in particular by the samples of this
+documentation) is to use upper case for keywords and lower case for other identifiers.</p>
+<p>There is a second kind of identifiers called <em>quoted identifiers</em> defined by enclosing an arbitrary sequence of
+characters (non empty) in double-quotes(<code class="docutils literal notranslate"><span class="pre">&quot;</span></code>). Quoted identifiers are never keywords. Thus <code class="docutils literal notranslate"><span class="pre">&quot;select&quot;</span></code> is not a
+reserved keyword and can be used to refer to a column (note that using this is particularly advised), while <code class="docutils literal notranslate"><span class="pre">select</span></code>
+would raise a parsing error. Also, contrarily to unquoted identifiers and keywords, quoted identifiers are case
+sensitive (<code class="docutils literal notranslate"><span class="pre">&quot;My</span> <span class="pre">Quoted</span> <span class="pre">Id&quot;</span></code> is <em>different</em> from <code class="docutils literal notranslate"><span class="pre">&quot;my</span> <span class="pre">quoted</span> <span class="pre">id&quot;</span></code>). A fully lowercase quoted identifier that matches
+<code class="docutils literal notranslate"><span class="pre">[a-zA-Z][a-zA-Z0-9_]*</span></code> is however <em>equivalent</em> to the unquoted identifier obtained by removing the double-quote (so
+<code class="docutils literal notranslate"><span class="pre">&quot;myid&quot;</span></code> is equivalent to <code class="docutils literal notranslate"><span class="pre">myid</span></code> and to <code class="docutils literal notranslate"><span class="pre">myId</span></code> but different from <code class="docutils literal notranslate"><span class="pre">&quot;myId&quot;</span></code>).  Inside a quoted identifier, the
+double-quote character can be repeated to escape it, so <code class="docutils literal notranslate"><span class="pre">&quot;foo</span> <span class="pre">&quot;&quot;</span> <span class="pre">bar&quot;</span></code> is a valid identifier.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last"><em>quoted identifiers</em> allows to declare columns with arbitrary names, and those can sometime clash with
+specific names used by the server. For instance, when using conditional update, the server will respond with a
+result-set containing a special result named <code class="docutils literal notranslate"><span class="pre">&quot;[applied]&quot;</span></code>. If you’ve declared a column with such a name, this
+could potentially confuse some tools and should be avoided. In general, unquoted identifiers should be preferred but
+if you use quoted identifiers, it is strongly advised to avoid any name enclosed by squared brackets (like
+<code class="docutils literal notranslate"><span class="pre">&quot;[applied]&quot;</span></code>) and any name that looks like a function call (like <code class="docutils literal notranslate"><span class="pre">&quot;f(x)&quot;</span></code>).</p>
+</div>
+<p>More formally, we have:</p>
+<pre>
+<strong id="grammar-token-identifier">identifier         </strong> ::=  <a class="reference internal" href="#grammar-token-unquoted-identifier"><code class="xref docutils literal notranslate"><span class="pre">unquoted_identifier</span></code></a> | <a class="reference internal" href="#grammar-token-quoted-identifier"><code class="xref docutils literal notranslate"><span class="pre">quoted_identifier</span></code></a>
+<strong id="grammar-token-unquoted-identifier">unquoted_identifier</strong> ::=  re('[a-zA-Z][a-zA-Z0-9_]*')
+<strong id="grammar-token-quoted-identifier">quoted_identifier  </strong> ::=  '&quot;' (any character where &quot; can appear if doubled)+ '&quot;'
+</pre>
+</div>
+<div class="section" id="constants">
+<span id="id2"></span><h2>Constants<a class="headerlink" href="#constants" title="Permalink to this headline">¶</a></h2>
+<p>CQL defines the following kind of <em>constants</em>:</p>
+<pre>
+<strong id="grammar-token-constant">constant</strong> ::=  <a class="reference internal" href="#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a> | <a class="reference internal" href="#grammar-token-integer"><code class="xref docutils literal notranslate"><span class="pre">integer</span></code></a> | <a class="reference internal" href="#grammar-token-float"><code class="xref docutils literal notranslate"><span class="pre">float</span></code></a> | <a class="reference internal" href="#grammar-token-boolean"><code class="xref docutils literal notranslate"><span class="pre">boolean</span></code></a> | <a class="reference internal" href="#grammar-token-uuid"><code class="xref docutils literal notranslate"><span class="pre">uuid</span></code></a> | <a class="reference internal" href="#grammar-token-blob"><code class="xref docutils literal notranslate"><span class="pre">blob</span></code></a> | NULL
+<strong id="grammar-token-string">string  </strong> ::=  '\'' (any character where ' can appear if doubled)+ '\''
+              '$$' (any character other than '$$') '$$'
+<strong id="grammar-token-integer">integer </strong> ::=  re('-?[0-9]+')
+<strong id="grammar-token-float">float   </strong> ::=  re('-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9+])?') | NAN | INFINITY
+<strong id="grammar-token-boolean">boolean </strong> ::=  TRUE | FALSE
+<strong id="grammar-token-uuid">uuid    </strong> ::=  <a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal notranslate"><span class="pre">hex</span></code></a>{8}-<a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal notranslate"><span class="pre">hex</span></code></a>{4}-<a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal notranslate"><span class="pre">hex</span></code></a>{4}-<a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal notranslate"><span class="pre">hex</span></code></a>{4}-<a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal notranslate"><span class="pre">hex</span></code></a>{12}
+<strong id="grammar-token-hex">hex     </strong> ::=  re(&quot;[0-9a-fA-F]&quot;)
+<strong id="grammar-token-blob">blob    </strong> ::=  '0' ('x' | 'X') <a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal notranslate"><span class="pre">hex</span></code></a>+
+</pre>
+<p>In other words:</p>
+<ul class="simple">
+<li>A string constant is an arbitrary sequence of characters enclosed by single-quote(<code class="docutils literal notranslate"><span class="pre">'</span></code>). A single-quote
+can be included by repeating it, e.g. <code class="docutils literal notranslate"><span class="pre">'It''s</span> <span class="pre">raining</span> <span class="pre">today'</span></code>. Those are not to be confused with quoted
+<a class="reference internal" href="#identifiers"><span class="std std-ref">Identifiers and keywords</span></a> that use double-quotes. Alternatively, a string can be defined by enclosing the arbitrary sequence
+of characters by two dollar characters, in which case single-quote can be used without escaping (<code class="docutils literal notranslate"><span class="pre">$$It's</span> <span class="pre">raining</span>
+<span class="pre">today$$</span></code>). That latter form is often used when defining <a class="reference internal" href="functions.html#udfs"><span class="std std-ref">user-defined functions</span></a> to avoid having to
+escape single-quote characters in function body (as they are more likely to occur than <code class="docutils literal notranslate"><span class="pre">$$</span></code>).</li>
+<li>Integer, float and boolean constant are defined as expected. Note however than float allows the special <code class="docutils literal notranslate"><span class="pre">NaN</span></code> and
+<code class="docutils literal notranslate"><span class="pre">Infinity</span></code> constants.</li>
+<li>CQL supports <a class="reference external" href="https://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a> constants.</li>
+<li>Blobs content are provided in hexadecimal and prefixed by <code class="docutils literal notranslate"><span class="pre">0x</span></code>.</li>
+<li>The special <code class="docutils literal notranslate"><span class="pre">NULL</span></code> constant denotes the absence of value.</li>
+</ul>
+<p>For how these constants are typed, see the <a class="reference internal" href="types.html#data-types"><span class="std std-ref">Data Types</span></a> section.</p>
+</div>
+<div class="section" id="terms">
+<h2>Terms<a class="headerlink" href="#terms" title="Permalink to this headline">¶</a></h2>
+<p>CQL has the notion of a <em>term</em>, which denotes the kind of values that CQL support. Terms are defined by:</p>
+<pre>
+<strong id="grammar-token-term">term         </strong> ::=  <a class="reference internal" href="#grammar-token-constant"><code class="xref docutils literal notranslate"><span class="pre">constant</span></code></a> | <a class="reference internal" href="#grammar-token-literal"><code class="xref docutils literal notranslate"><span class="pre">literal</span></code></a> | <a class="reference internal" href="#grammar-token-function-call"><code class="xref docutils literal notranslate"><span class="pre">function_call</span></code></a> | <a class="reference internal" href="#grammar-token-type-hint"><code class="xref docutils literal notranslate"><span class="pre">type_hint</span></code></a> | <a class="reference internal" href="#grammar-token-bind-marker"><code class="xref docutils literal notranslate"><span class="pre">bind_marker</span></code></a>
+<strong id="grammar-token-literal">literal      </strong> ::=  <a class="reference internal" href="types.html#grammar-token-collection-literal"><code class="xref docutils literal notranslate"><span class="pre">collection_literal</span></code></a> | <a class="reference internal" href="types.html#grammar-token-udt-literal"><code class="xref docutils literal notranslate"><span class="pre">udt_literal</span></code></a> | <a class="reference internal" href="types.html#grammar-token-tuple-literal"><code class="xref docutils literal notranslate"><span class="pre">tuple_literal</span></code></a>
+<strong id="grammar-token-function-call">function_call</strong> ::=  <a class="reference internal" href="#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> '(' [ <a class="reference internal" href="#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> (',' <a class="reference internal" href="#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>)* ] ')'
+<strong id="grammar-token-type-hint">type_hint    </strong> ::=  '(' <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> `)` term
+<strong id="grammar-token-bind-marker">bind_marker  </strong> ::=  '?' | ':' <a class="reference internal" href="#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a>
+</pre>
+<p>A term is thus one of:</p>
+<ul class="simple">
+<li>A <a class="reference internal" href="#constants"><span class="std std-ref">constant</span></a>.</li>
+<li>A literal for either <a class="reference internal" href="types.html#collections"><span class="std std-ref">a collection</span></a>, <a class="reference internal" href="types.html#udts"><span class="std std-ref">a user-defined type</span></a> or <a class="reference internal" href="types.html#tuples"><span class="std std-ref">a tuple</span></a>
+(see the linked sections for details).</li>
+<li>A function call: see <a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">the section on functions</span></a> for details on which <a class="reference internal" href="functions.html#native-functions"><span class="std std-ref">native function</span></a> exists and how to define your own <a class="reference internal" href="functions.html#udfs"><span class="std std-ref">user-defined ones</span></a>.</li>
+<li>A <em>type hint</em>: see the <span class="xref std std-ref">related section</span> for details.</li>
+<li>A bind marker, which denotes a variable to be bound at execution time. See the section on <a class="reference internal" href="#prepared-statements"><span class="std std-ref">Prepared Statements</span></a>
+for details. A bind marker can be either anonymous (<code class="docutils literal notranslate"><span class="pre">?</span></code>) or named (<code class="docutils literal notranslate"><span class="pre">:some_name</span></code>). The latter form provides a more
+convenient way to refer to the variable for binding it and should generally be preferred.</li>
+</ul>
+</div>
+<div class="section" id="comments">
+<h2>Comments<a class="headerlink" href="#comments" title="Permalink to this headline">¶</a></h2>
+<p>A comment in CQL is a line beginning by either double dashes (<code class="docutils literal notranslate"><span class="pre">--</span></code>) or double slash (<code class="docutils literal notranslate"><span class="pre">//</span></code>).</p>
+<p>Multi-line comments are also supported through enclosure within <code class="docutils literal notranslate"><span class="pre">/*</span></code> and <code class="docutils literal notranslate"><span class="pre">*/</span></code> (but nesting is not supported).</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="c1">-- This is a comment</span>
+<span class="c1">// This is a comment too</span>
+<span class="cm">/* This is</span>
+<span class="cm">   a multi-line comment */</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="statements">
+<h2>Statements<a class="headerlink" href="#statements" title="Permalink to this headline">¶</a></h2>
+<p>CQL consists of statements that can be divided in the following categories:</p>
+<ul class="simple">
+<li><a class="reference internal" href="ddl.html#data-definition"><span class="std std-ref">Data Definition</span></a> statements, to define and change how the data is stored (keyspaces and tables).</li>
+<li><a class="reference internal" href="dml.html#data-manipulation"><span class="std std-ref">Data Manipulation</span></a> statements, for selecting, inserting and deleting data.</li>
+<li><a class="reference internal" href="indexes.html#secondary-indexes"><span class="std std-ref">Secondary Indexes</span></a> statements.</li>
+<li><a class="reference internal" href="mvs.html#materialized-views"><span class="std std-ref">Materialized Views</span></a> statements.</li>
+<li><a class="reference internal" href="security.html#cql-roles"><span class="std std-ref">Database Roles</span></a> statements.</li>
+<li><a class="reference internal" href="security.html#cql-permissions"><span class="std std-ref">Permissions</span></a> statements.</li>
+<li><a class="reference internal" href="functions.html#udfs"><span class="std std-ref">User-Defined Functions</span></a> statements.</li>
+<li><a class="reference internal" href="types.html#udts"><span class="std std-ref">User-Defined Types</span></a> statements.</li>
+<li><a class="reference internal" href="triggers.html#cql-triggers"><span class="std std-ref">Triggers</span></a> statements.</li>
+</ul>
+<p>All the statements are listed below and are described in the rest of this documentation (see links above):</p>
+<pre>
+<strong id="grammar-token-cql-statement">cql_statement               </strong> ::=  <a class="reference internal" href="#grammar-token-statement"><code class="xref docutils literal notranslate"><span class="pre">statement</span></code></a> [ ';' ]
+<strong id="grammar-token-statement">statement                   </strong> ::=  <a class="reference internal" href="#grammar-token-ddl-statement"><code class="xref docutils literal notranslate"><span class="pre">ddl_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-dml-statement"><code class="xref docutils literal notranslate"><span class="pre">dml_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-secondary-index-statement"><code class="xref docutils literal notranslate"><span class="pre">secondary_index_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-materialized-view-statement"><code class="xref docutils literal notranslate"><span class="pre">materialized_view_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-role-or-permission-statement"><code class="xref docutils literal notranslate"><span class="pre">role_or_permission_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-udf-statement"><code class="xref docutils literal notranslate"><span class="pre">udf_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-udt-statement"><code class="xref docutils literal notranslate"><span class="pre">udt_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-trigger-statement"><code class="xref docutils literal notranslate"><span class="pre">trigger_statement</span></code></a>
+<strong id="grammar-token-ddl-statement">ddl_statement               </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-use-statement"><code class="xref docutils literal notranslate"><span class="pre">use_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-create-keyspace-statement"><code class="xref docutils literal notranslate"><span class="pre">create_keyspace_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-alter-keyspace-statement"><code class="xref docutils literal notranslate"><span class="pre">alter_keyspace_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-drop-keyspace-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_keyspace_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-create-table-statement"><code class="xref docutils literal notranslate"><span class="pre">create_table_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-alter-table-statement"><code class="xref docutils literal notranslate"><span class="pre">alter_table_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-drop-table-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_table_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-truncate-statement"><code class="xref docutils literal notranslate"><span class="pre">truncate_statement</span></code></a>
+<strong id="grammar-token-dml-statement">dml_statement               </strong> ::=  <a class="reference internal" href="dml.html#grammar-token-select-statement"><code class="xref docutils literal notranslate"><span class="pre">select_statement</span></code></a>
+                                  | <a class="reference internal" href="dml.html#grammar-token-insert-statement"><code class="xref docutils literal notranslate"><span class="pre">insert_statement</span></code></a>
+                                  | <a class="reference internal" href="dml.html#grammar-token-update-statement"><code class="xref docutils literal notranslate"><span class="pre">update_statement</span></code></a>
+                                  | <a class="reference internal" href="dml.html#grammar-token-delete-statement"><code class="xref docutils literal notranslate"><span class="pre">delete_statement</span></code></a>
+                                  | <a class="reference internal" href="dml.html#grammar-token-batch-statement"><code class="xref docutils literal notranslate"><span class="pre">batch_statement</span></code></a>
+<strong id="grammar-token-secondary-index-statement">secondary_index_statement   </strong> ::=  <a class="reference internal" href="indexes.html#grammar-token-create-index-statement"><code class="xref docutils literal notranslate"><span class="pre">create_index_statement</span></code></a>
+                                  | <a class="reference internal" href="indexes.html#grammar-token-drop-index-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_index_statement</span></code></a>
+<strong id="grammar-token-materialized-view-statement">materialized_view_statement </strong> ::=  <a class="reference internal" href="mvs.html#grammar-token-create-materialized-view-statement"><code class="xref docutils literal notranslate"><span class="pre">create_materialized_view_statement</span></code></a>
+                                  | <a class="reference internal" href="mvs.html#grammar-token-drop-materialized-view-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_materialized_view_statement</span></code></a>
+<strong id="grammar-token-role-or-permission-statement">role_or_permission_statement</strong> ::=  <a class="reference internal" href="security.html#grammar-token-create-role-statement"><code class="xref docutils literal notranslate"><span class="pre">create_role_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-alter-role-statement"><code class="xref docutils literal notranslate"><span class="pre">alter_role_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-drop-role-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_role_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-grant-role-statement"><code class="xref docutils literal notranslate"><span class="pre">grant_role_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-revoke-role-statement"><code class="xref docutils literal notranslate"><span class="pre">revoke_role_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-list-roles-statement"><code class="xref docutils literal notranslate"><span class="pre">list_roles_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-grant-permission-statement"><code class="xref docutils literal notranslate"><span class="pre">grant_permission_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-revoke-permission-statement"><code class="xref docutils literal notranslate"><span class="pre">revoke_permission_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-list-permissions-statement"><code class="xref docutils literal notranslate"><span class="pre">list_permissions_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-create-user-statement"><code class="xref docutils literal notranslate"><span class="pre">create_user_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-alter-user-statement"><code class="xref docutils literal notranslate"><span class="pre">alter_user_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-drop-user-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_user_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-list-users-statement"><code class="xref docutils literal notranslate"><span class="pre">list_users_statement</span></code></a>
+<strong id="grammar-token-udf-statement">udf_statement               </strong> ::=  <a class="reference internal" href="functions.html#grammar-token-create-function-statement"><code class="xref docutils literal notranslate"><span class="pre">create_function_statement</span></code></a>
+                                  | <a class="reference internal" href="functions.html#grammar-token-drop-function-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_function_statement</span></code></a>
+                                  | <a class="reference internal" href="functions.html#grammar-token-create-aggregate-statement"><code class="xref docutils literal notranslate"><span class="pre">create_aggregate_statement</span></code></a>
+                                  | <a class="reference internal" href="functions.html#grammar-token-drop-aggregate-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_aggregate_statement</span></code></a>
+<strong id="grammar-token-udt-statement">udt_statement               </strong> ::=  <a class="reference internal" href="types.html#grammar-token-create-type-statement"><code class="xref docutils literal notranslate"><span class="pre">create_type_statement</span></code></a>
+                                  | <a class="reference internal" href="types.html#grammar-token-alter-type-statement"><code class="xref docutils literal notranslate"><span class="pre">alter_type_statement</span></code></a>
+                                  | <a class="reference internal" href="types.html#grammar-token-drop-type-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_type_statement</span></code></a>
+<strong id="grammar-token-trigger-statement">trigger_statement           </strong> ::=  <a class="reference internal" href="triggers.html#grammar-token-create-trigger-statement"><code class="xref docutils literal notranslate"><span class="pre">create_trigger_statement</span></code></a>
+                                  | <a class="reference internal" href="triggers.html#grammar-token-drop-trigger-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_trigger_statement</span></code></a>
+</pre>
+</div>
+<div class="section" id="prepared-statements">
+<span id="id3"></span><h2>Prepared Statements<a class="headerlink" href="#prepared-statements" title="Permalink to this headline">¶</a></h2>
+<p>CQL supports <em>prepared statements</em>. Prepared statements are an optimization that allows to parse a query only once but
+execute it multiple times with different concrete values.</p>
+<p>Any statement that uses at least one bind marker (see <a class="reference internal" href="#grammar-token-bind-marker"><code class="xref std std-token docutils literal notranslate"><span class="pre">bind_marker</span></code></a>) will need to be <em>prepared</em>. After which the statement
+can be <em>executed</em> by provided concrete values for each of its marker. The exact details of how a statement is prepared
+and then executed depends on the CQL driver used and you should refer to your driver documentation.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="types.html" class="btn btn-default pull-right " role="button" title="Data Types" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="The Cassandra Query Language (CQL)" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/cql/dml.html b/src/doc/3.11.11/cql/dml.html
new file mode 100644
index 0000000..3754ef9
--- /dev/null
+++ b/src/doc/3.11.11/cql/dml.html
@@ -0,0 +1,558 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Data Manipulation"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Secondary Indexes" href="indexes.html"/>
+      <link rel="prev" title="Data Definition" href="ddl.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Data Manipulation</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#select">SELECT</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#insert">INSERT</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#update">UPDATE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#delete">DELETE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#batch">BATCH</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="data-manipulation">
+<span id="id1"></span><h1>Data Manipulation<a class="headerlink" href="#data-manipulation" title="Permalink to this headline">¶</a></h1>
+<p>This section describes the statements supported by CQL to insert, update, delete and query data.</p>
+<div class="section" id="select">
+<span id="select-statement"></span><h2>SELECT<a class="headerlink" href="#select" title="Permalink to this headline">¶</a></h2>
+<p>Querying data from data is done using a <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-select-statement">select_statement</strong> ::=  SELECT [ JSON | DISTINCT ] ( <a class="reference internal" href="#grammar-token-select-clause"><code class="xref docutils literal notranslate"><span class="pre">select_clause</span></code></a> | '*' )
+                      FROM <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+                      [ WHERE <a class="reference internal" href="#grammar-token-where-clause"><code class="xref docutils literal notranslate"><span class="pre">where_clause</span></code></a> ]
+                      [ GROUP BY <a class="reference internal" href="#grammar-token-group-by-clause"><code class="xref docutils literal notranslate"><span class="pre">group_by_clause</span></code></a> ]
+                      [ ORDER BY <a class="reference internal" href="#grammar-token-ordering-clause"><code class="xref docutils literal notranslate"><span class="pre">ordering_clause</span></code></a> ]
+                      [ PER PARTITION LIMIT (<a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref docutils literal notranslate"><span class="pre">integer</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-bind-marker"><code class="xref docutils literal notranslate"><span class="pre">bind_marker</span></code></a>) ]
+                      [ LIMIT (<a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref docutils literal notranslate"><span class="pre">integer</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-bind-marker"><code class="xref docutils literal notranslate"><span class="pre">bind_marker</span></code></a>) ]
+                      [ ALLOW FILTERING ]
+<strong id="grammar-token-select-clause">select_clause   </strong> ::=  <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal notranslate"><span class="pre">selector</span></code></a> [ AS <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> ] ( ',' <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal notranslate"><span class="pre">selector</span></code></a> [ AS <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> ] )
+<strong id="grammar-token-selector">selector        </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a>
+                      | <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>
+                      | CAST '(' <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal notranslate"><span class="pre">selector</span></code></a> AS <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ')'
+                      | <a class="reference internal" href="functions.html#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> '(' [ <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal notranslate"><span class="pre">selector</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal notranslate"><span class="pre">selector</span></code></a> )* ] ')'
+                      | COUNT '(' '*' ')'
+<strong id="grammar-token-where-clause">where_clause    </strong> ::=  <a class="reference internal" href="#grammar-token-relation"><code class="xref docutils literal notranslate"><span class="pre">relation</span></code></a> ( AND <a class="reference internal" href="#grammar-token-relation"><code class="xref docutils literal notranslate"><span class="pre">relation</span></code></a> )*
+<strong id="grammar-token-relation">relation        </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal notranslate"><span class="pre">operator</span></code></a> <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>
+                      '(' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )* ')' <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal notranslate"><span class="pre">operator</span></code></a> <a class="reference internal" href="types.html#grammar-token-tuple-literal"><code class="xref docutils literal notranslate"><span class="pre">tuple_literal</span></code></a>
+                      TOKEN '(' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )* ')' <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal notranslate"><span class="pre">operator</span></code></a> <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>
+<strong id="grammar-token-operator">operator        </strong> ::=  '=' | '&lt;' | '&gt;' | '&lt;=' | '&gt;=' | '!=' | IN | CONTAINS | CONTAINS KEY
+<strong id="grammar-token-group-by-clause">group_by_clause </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )*
+<strong id="grammar-token-ordering-clause">ordering_clause </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> [ ASC | DESC ] ( ',' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> [ ASC | DESC ] )*
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">name</span><span class="p">,</span> <span class="n">occupation</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">userid</span> <span class="k">IN</span> <span class="p">(</span><span class="mf">199</span><span class="p">,</span> <span class="mf">200</span><span class="p">,</span> <span class="mf">207</span><span class="p">);</span>
+<span class="k">SELECT</span> <span class="k">JSON</span> <span class="n">name</span><span class="p">,</span> <span class="n">occupation</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="mf">199</span><span class="p">;</span>
+<span class="k">SELECT</span> <span class="n">name</span> <span class="k">AS</span> <span class="n">user_name</span><span class="p">,</span> <span class="n">occupation</span> <span class="k">AS</span> <span class="n">user_occupation</span> <span class="k">FROM</span> <span class="k">users</span><span class="p">;</span>
+
+<span class="k">SELECT</span> <span class="nb">time</span><span class="p">,</span> <span class="n">value</span>
+<span class="k">FROM</span> <span class="n">events</span>
+<span class="k">WHERE</span> <span class="n">event_type</span> <span class="o">=</span> <span class="s1">&#39;myEvent&#39;</span>
+  <span class="k">AND</span> <span class="nb">time</span> <span class="o">&gt;</span> <span class="s1">&#39;2011-02-03&#39;</span>
+  <span class="k">AND</span> <span class="nb">time</span> <span class="o">&lt;=</span> <span class="s1">&#39;2012-01-01&#39;</span>
+
+<span class="k">SELECT</span> <span class="k">COUNT</span> <span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="k">AS</span> <span class="n">user_count</span> <span class="k">FROM</span> <span class="k">users</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statements reads one or more columns for one or more rows in a table. It returns a result-set of the rows
+matching the request, where each row contains the values for the selection corresponding to the query. Additionally,
+<a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">functions</span></a> including <a class="reference internal" href="functions.html#aggregate-functions"><span class="std std-ref">aggregation</span></a> ones can be applied to the result.</p>
+<p>A <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement contains at least a <a class="reference internal" href="#selection-clause"><span class="std std-ref">selection clause</span></a> and the name of the table on which
+the selection is on (note that CQL does <strong>not</strong> joins or sub-queries and thus a select statement only apply to a single
+table). In most case, a select will also have a <a class="reference internal" href="#where-clause"><span class="std std-ref">where clause</span></a> and it can optionally have additional
+clauses to <a class="reference internal" href="#ordering-clause"><span class="std std-ref">order</span></a> or <a class="reference internal" href="#limit-clause"><span class="std std-ref">limit</span></a> the results. Lastly, <a class="reference internal" href="#allow-filtering"><span class="std std-ref">queries that require
+filtering</span></a> can be allowed if the <code class="docutils literal notranslate"><span class="pre">ALLOW</span> <span class="pre">FILTERING</span></code> flag is provided.</p>
+<div class="section" id="selection-clause">
+<span id="id2"></span><h3>Selection clause<a class="headerlink" href="#selection-clause" title="Permalink to this headline">¶</a></h3>
+<p>The <a class="reference internal" href="#grammar-token-select-clause"><code class="xref std std-token docutils literal notranslate"><span class="pre">select_clause</span></code></a> determines which columns needs to be queried and returned in the result-set, as well as any
+transformation to apply to this result before returning. It consists of a comma-separated list of <em>selectors</em> or,
+alternatively, of the wildcard character (<code class="docutils literal notranslate"><span class="pre">*</span></code>) to select all the columns defined in the table.</p>
+<div class="section" id="selectors">
+<h4>Selectors<a class="headerlink" href="#selectors" title="Permalink to this headline">¶</a></h4>
+<p>A <a class="reference internal" href="#grammar-token-selector"><code class="xref std std-token docutils literal notranslate"><span class="pre">selector</span></code></a> can be one of:</p>
+<ul class="simple">
+<li>A column name of the table selected, to retrieve the values for that column.</li>
+<li>A term, which is usually used nested inside other selectors like functions (if a term is selected directly, then the
+corresponding column of the result-set will simply have the value of this term for every row returned).</li>
+<li>A casting, which allows to convert a nested selector to a (compatible) type.</li>
+<li>A function call, where the arguments are selector themselves. See the section on <a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">functions</span></a> for
+more details.</li>
+<li>The special call <code class="docutils literal notranslate"><span class="pre">COUNT(*)</span></code> to the <a class="reference internal" href="functions.html#count-function"><span class="std std-ref">COUNT function</span></a>, which counts all non-null results.</li>
+</ul>
+</div>
+<div class="section" id="aliases">
+<h4>Aliases<a class="headerlink" href="#aliases" title="Permalink to this headline">¶</a></h4>
+<p>Every <em>top-level</em> selector can also be aliased (using <cite>AS</cite>). If so, the name of the corresponding column in the result
+set will be that of the alias. For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="c1">// Without alias</span>
+<span class="k">SELECT</span> <span class="n">intAsBlob</span><span class="p">(</span><span class="mf">4</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
+
+<span class="c1">//  intAsBlob(4)</span>
+<span class="c1">// --------------</span>
+<span class="c1">//  0x00000004</span>
+
+<span class="c1">// With alias</span>
+<span class="k">SELECT</span> <span class="n">intAsBlob</span><span class="p">(</span><span class="mf">4</span><span class="p">)</span> <span class="k">AS</span> <span class="n">four</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
+
+<span class="c1">//  four</span>
+<span class="c1">// ------------</span>
+<span class="c1">//  0x00000004</span>
+</pre></div>
+</div>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Currently, aliases aren’t recognized anywhere else in the statement where they are used (not in the <code class="docutils literal notranslate"><span class="pre">WHERE</span></code>
+clause, not in the <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span></code> clause, …). You must use the orignal column name instead.</p>
+</div>
+</div>
+<div class="section" id="writetime-and-ttl-function">
+<h4><code class="docutils literal notranslate"><span class="pre">WRITETIME</span></code> and <code class="docutils literal notranslate"><span class="pre">TTL</span></code> function<a class="headerlink" href="#writetime-and-ttl-function" title="Permalink to this headline">¶</a></h4>
+<p>Selection supports two special functions (that aren’t allowed anywhere else): <code class="docutils literal notranslate"><span class="pre">WRITETIME</span></code> and <code class="docutils literal notranslate"><span class="pre">TTL</span></code>. Both function
+take only one argument and that argument <em>must</em> be a column name (so for instance <code class="docutils literal notranslate"><span class="pre">TTL(3)</span></code> is invalid).</p>
+<p>Those functions allow to retrieve meta-information that are stored internally for each column, namely:</p>
+<ul class="simple">
+<li>the timestamp of the value of the column for <code class="docutils literal notranslate"><span class="pre">WRITETIME</span></code>.</li>
+<li>the remaining time to live (in seconds) for the value of the column if it set to expire (and <code class="docutils literal notranslate"><span class="pre">null</span></code> otherwise).</li>
+</ul>
+</div>
+</div>
+<div class="section" id="the-where-clause">
+<span id="where-clause"></span><h3>The <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clause<a class="headerlink" href="#the-where-clause" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clause specifies which rows must be queried. It is composed of relations on the columns that are part of
+the <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> and/or have a <a class="reference external" href="#createIndexStmt">secondary index</a> defined on them.</p>
+<p>Not all relations are allowed in a query. For instance, non-equal relations (where <code class="docutils literal notranslate"><span class="pre">IN</span></code> is considered as an equal
+relation) on a partition key are not supported (but see the use of the <code class="docutils literal notranslate"><span class="pre">TOKEN</span></code> method below to do non-equal queries on
+the partition key). Moreover, for a given partition key, the clustering columns induce an ordering of rows and relations
+on them is restricted to the relations that allow to select a <strong>contiguous</strong> (for the ordering) set of rows. For
+instance, given:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">posts</span> <span class="p">(</span>
+    <span class="n">userid</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">blog_title</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">posted_at</span> <span class="nb">timestamp</span><span class="p">,</span>
+    <span class="n">entry_title</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">content</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">category</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">userid</span><span class="p">,</span> <span class="n">blog_title</span><span class="p">,</span> <span class="n">posted_at</span><span class="p">)</span>
+<span class="p">)</span>
+</pre></div>
+</div>
+<p>The following query is allowed:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">entry_title</span><span class="p">,</span> <span class="n">content</span> <span class="k">FROM</span> <span class="n">posts</span>
+ <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
+   <span class="k">AND</span> <span class="n">blog_title</span><span class="o">=</span><span class="s1">&#39;John&#39;&#39;s Blog&#39;</span>
+   <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&gt;=</span> <span class="s1">&#39;2012-01-01&#39;</span> <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&lt;</span> <span class="s1">&#39;2012-01-31&#39;</span>
+</pre></div>
+</div>
+<p>But the following one is not, as it does not select a contiguous set of rows (and we suppose no secondary indexes are
+set):</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="c1">// Needs a blog_title to be set to select ranges of posted_at</span>
+<span class="k">SELECT</span> <span class="n">entry_title</span><span class="p">,</span> <span class="n">content</span> <span class="k">FROM</span> <span class="n">posts</span>
+ <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
+   <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&gt;=</span> <span class="s1">&#39;2012-01-01&#39;</span> <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&lt;</span> <span class="s1">&#39;2012-01-31&#39;</span>
+</pre></div>
+</div>
+<p>When specifying relations, the <code class="docutils literal notranslate"><span class="pre">TOKEN</span></code> function can be used on the <code class="docutils literal notranslate"><span class="pre">PARTITION</span> <span class="pre">KEY</span></code> column to query. In that case,
+rows will be selected based on the token of their <code class="docutils literal notranslate"><span class="pre">PARTITION_KEY</span></code> rather than on the value. Note that the token of a
+key depends on the partitioner in use, and that in particular the RandomPartitioner won’t yield a meaningful order. Also
+note that ordering partitioners always order token values by bytes (so even if the partition key is of type int,
+<code class="docutils literal notranslate"><span class="pre">token(-1)</span> <span class="pre">&gt;</span> <span class="pre">token(0)</span></code> in particular). Example:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">posts</span>
+ <span class="k">WHERE</span> <span class="k">token</span><span class="p">(</span><span class="n">userid</span><span class="p">)</span> <span class="o">&gt;</span> <span class="k">token</span><span class="p">(</span><span class="s1">&#39;tom&#39;</span><span class="p">)</span> <span class="k">AND</span> <span class="k">token</span><span class="p">(</span><span class="n">userid</span><span class="p">)</span> <span class="o">&lt;</span> <span class="k">token</span><span class="p">(</span><span class="s1">&#39;bob&#39;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Moreover, the <code class="docutils literal notranslate"><span class="pre">IN</span></code> relation is only allowed on the last column of the partition key and on the last column of the full
+primary key.</p>
+<p>It is also possible to “group” <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">COLUMNS</span></code> together in a relation using the tuple notation. For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">posts</span>
+ <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
+   <span class="k">AND</span> <span class="p">(</span><span class="n">blog_title</span><span class="p">,</span> <span class="n">posted_at</span><span class="p">)</span> <span class="o">&gt;</span> <span class="p">(</span><span class="s1">&#39;John&#39;&#39;s Blog&#39;</span><span class="p">,</span> <span class="s1">&#39;2012-01-01&#39;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>will request all rows that sorts after the one having “John’s Blog” as <code class="docutils literal notranslate"><span class="pre">blog_tile</span></code> and ‘2012-01-01’ for <code class="docutils literal notranslate"><span class="pre">posted_at</span></code>
+in the clustering order. In particular, rows having a <code class="docutils literal notranslate"><span class="pre">post_at</span> <span class="pre">&lt;=</span> <span class="pre">'2012-01-01'</span></code> will be returned as long as their
+<code class="docutils literal notranslate"><span class="pre">blog_title</span> <span class="pre">&gt;</span> <span class="pre">'John''s</span> <span class="pre">Blog'</span></code>, which would not be the case for:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">posts</span>
+ <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
+   <span class="k">AND</span> <span class="n">blog_title</span> <span class="o">&gt;</span> <span class="s1">&#39;John&#39;&#39;s Blog&#39;</span>
+   <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&gt;</span> <span class="s1">&#39;2012-01-01&#39;</span>
+</pre></div>
+</div>
+<p>The tuple notation may also be used for <code class="docutils literal notranslate"><span class="pre">IN</span></code> clauses on clustering columns:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">posts</span>
+ <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
+   <span class="k">AND</span> <span class="p">(</span><span class="n">blog_title</span><span class="p">,</span> <span class="n">posted_at</span><span class="p">)</span> <span class="k">IN</span> <span class="p">((</span><span class="s1">&#39;John&#39;&#39;s Blog&#39;</span><span class="p">,</span> <span class="s1">&#39;2012-01-01&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Extreme Chess&#39;</span><span class="p">,</span> <span class="s1">&#39;2014-06-01&#39;</span><span class="p">))</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">CONTAINS</span></code> operator may only be used on collection columns (lists, sets, and maps). In the case of maps,
+<code class="docutils literal notranslate"><span class="pre">CONTAINS</span></code> applies to the map values. The <code class="docutils literal notranslate"><span class="pre">CONTAINS</span> <span class="pre">KEY</span></code> operator may only be used on map columns and applies to the
+map keys.</p>
+</div>
+<div class="section" id="grouping-results">
+<span id="group-by-clause"></span><h3>Grouping results<a class="headerlink" href="#grouping-results" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> option allows to condense into a single row all selected rows that share the same values for a set
+of columns.</p>
+<p>Using the <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> option, it is only possible to group rows at the partition key level or at a clustering column
+level. By consequence, the <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> option only accept as arguments primary key column names in the primary key
+order. If a primary key column is restricted by an equality restriction it is not required to be present in the
+<code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> clause.</p>
+<p>Aggregate functions will produce a separate value for each group. If no <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> clause is specified,
+aggregates functions will produce a single value for all the rows.</p>
+<p>If a column is selected without an aggregate function, in a statement with a <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code>, the first value encounter
+in each group will be returned.</p>
+</div>
+<div class="section" id="ordering-results">
+<span id="ordering-clause"></span><h3>Ordering results<a class="headerlink" href="#ordering-results" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span></code> clause allows to select the order of the returned results. It takes as argument a list of column names
+along with the order for the column (<code class="docutils literal notranslate"><span class="pre">ASC</span></code> for ascendant and <code class="docutils literal notranslate"><span class="pre">DESC</span></code> for descendant, omitting the order being
+equivalent to <code class="docutils literal notranslate"><span class="pre">ASC</span></code>). Currently the possible orderings are limited by the <a class="reference internal" href="ddl.html#clustering-order"><span class="std std-ref">clustering order</span></a>
+defined on the table:</p>
+<ul class="simple">
+<li>if the table has been defined without any specific <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code>, then then allowed orderings are the order
+induced by the clustering columns and the reverse of that one.</li>
+<li>otherwise, the orderings allowed are the order of the <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> option and the reversed one.</li>
+</ul>
+</div>
+<div class="section" id="limiting-results">
+<span id="limit-clause"></span><h3>Limiting results<a class="headerlink" href="#limiting-results" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">LIMIT</span></code> option to a <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement limits the number of rows returned by a query, while the <code class="docutils literal notranslate"><span class="pre">PER</span> <span class="pre">PARTITION</span>
+<span class="pre">LIMIT</span></code> option limits the number of rows returned for a given partition by the query. Note that both type of limit can
+used in the same statement.</p>
+</div>
+<div class="section" id="allowing-filtering">
+<span id="allow-filtering"></span><h3>Allowing filtering<a class="headerlink" href="#allowing-filtering" title="Permalink to this headline">¶</a></h3>
+<p>By default, CQL only allows select queries that don’t involve “filtering” server side, i.e. queries where we know that
+all (live) record read will be returned (maybe partly) in the result set. The reasoning is that those “non filtering”
+queries have predictable performance in the sense that they will execute in a time that is proportional to the amount of
+data <strong>returned</strong> by the query (which can be controlled through <code class="docutils literal notranslate"><span class="pre">LIMIT</span></code>).</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">ALLOW</span> <span class="pre">FILTERING</span></code> option allows to explicitly allow (some) queries that require filtering. Please note that a
+query using <code class="docutils literal notranslate"><span class="pre">ALLOW</span> <span class="pre">FILTERING</span></code> may thus have unpredictable performance (for the definition above), i.e. even a query
+that selects a handful of records <strong>may</strong> exhibit performance that depends on the total amount of data stored in the
+cluster.</p>
+<p>For instance, considering the following table holding user profiles with their year of birth (with a secondary index on
+it) and country of residence:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="k">users</span> <span class="p">(</span>
+    <span class="n">username</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">firstname</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">lastname</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">birth_year</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">country</span> <span class="nb">text</span>
+<span class="p">)</span>
+
+<span class="k">CREATE</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="k">users</span><span class="p">(</span><span class="n">birth_year</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>Then the following queries are valid:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="k">users</span><span class="p">;</span>
+<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">birth_year</span> <span class="o">=</span> <span class="mf">1981</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>because in both case, Cassandra guarantees that these queries performance will be proportional to the amount of data
+returned. In particular, if no users are born in 1981, then the second query performance will not depend of the number
+of user profile stored in the database (not directly at least: due to secondary index implementation consideration, this
+query may still depend on the number of node in the cluster, which indirectly depends on the amount of data stored.
+Nevertheless, the number of nodes will always be multiple number of magnitude lower than the number of user profile
+stored). Of course, both query may return very large result set in practice, but the amount of data returned can always
+be controlled by adding a <code class="docutils literal notranslate"><span class="pre">LIMIT</span></code>.</p>
+<p>However, the following query will be rejected:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">birth_year</span> <span class="o">=</span> <span class="mf">1981</span> <span class="k">AND</span> <span class="n">country</span> <span class="o">=</span> <span class="s1">&#39;FR&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>because Cassandra cannot guarantee that it won’t have to scan large amount of data even if the result to those query is
+small. Typically, it will scan all the index entries for users born in 1981 even if only a handful are actually from
+France. However, if you “know what you are doing”, you can force the execution of this query by using <code class="docutils literal notranslate"><span class="pre">ALLOW</span>
+<span class="pre">FILTERING</span></code> and so the following query is valid:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">birth_year</span> <span class="o">=</span> <span class="mf">1981</span> <span class="k">AND</span> <span class="n">country</span> <span class="o">=</span> <span class="s1">&#39;FR&#39;</span> <span class="k">ALLOW</span> <span class="k">FILTERING</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="insert">
+<span id="insert-statement"></span><h2>INSERT<a class="headerlink" href="#insert" title="Permalink to this headline">¶</a></h2>
+<p>Inserting data for a row is done using an <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-insert-statement">insert_statement</strong> ::=  INSERT INTO <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a> ( <a class="reference internal" href="#grammar-token-names-values"><code class="xref docutils literal notranslate"><span class="pre">names_values</span></code></a> | <a class="reference internal" href="#grammar-token-json-clause"><code class="xref docutils literal notranslate"><span class="pre">json_clause</span></code></a> )
+                      [ IF NOT EXISTS ]
+                      [ USING <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> ( AND <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> )* ]
+<strong id="grammar-token-names-values">names_values    </strong> ::=  <a class="reference internal" href="#grammar-token-names"><code class="xref docutils literal notranslate"><span class="pre">names</span></code></a> VALUES <a class="reference internal" href="types.html#grammar-token-tuple-literal"><code class="xref docutils literal notranslate"><span class="pre">tuple_literal</span></code></a>
+<strong id="grammar-token-json-clause">json_clause     </strong> ::=  JSON <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a> [ DEFAULT ( NULL | UNSET ) ]
+<strong id="grammar-token-names">names           </strong> ::=  '(' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )* ')'
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">NerdMovies</span> <span class="p">(</span><span class="n">movie</span><span class="p">,</span> <span class="n">director</span><span class="p">,</span> <span class="n">main_actor</span><span class="p">,</span> <span class="n">year</span><span class="p">)</span>
+                <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;Serenity&#39;</span><span class="p">,</span> <span class="s1">&#39;Joss Whedon&#39;</span><span class="p">,</span> <span class="s1">&#39;Nathan Fillion&#39;</span><span class="p">,</span> <span class="mf">2005</span><span class="p">)</span>
+      <span class="k">USING</span> <span class="k">TTL</span> <span class="mf">86400</span><span class="p">;</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">NerdMovies</span> <span class="k">JSON</span> <span class="s1">&#39;{&quot;movie&quot;: &quot;Serenity&quot;,</span>
+<span class="s1">                              &quot;director&quot;: &quot;Joss Whedon&quot;,</span>
+<span class="s1">                              &quot;year&quot;: 2005}&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statement writes one or more columns for a given row in a table. Note that since a row is identified by
+its <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code>, at least the columns composing it must be specified. The list of columns to insert to must be
+supplied when using the <code class="docutils literal notranslate"><span class="pre">VALUES</span></code> syntax. When using the <code class="docutils literal notranslate"><span class="pre">JSON</span></code> syntax, they are optional. See the
+section on <a class="reference internal" href="json.html#cql-json"><span class="std std-ref">JSON support</span></a> for more detail.</p>
+<p>Note that unlike in SQL, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> does not check the prior existence of the row by default: the row is created if none
+existed before, and updated otherwise. Furthermore, there is no mean to know which of creation or update happened.</p>
+<p>It is however possible to use the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> condition to only insert if the row does not exist prior to the
+insertion. But please note that using <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> will incur a non negligible performance cost (internally, Paxos
+will be used) so this should be used sparingly.</p>
+<p>All updates for an <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> are applied atomically and in isolation.</p>
+<p>Please refer to the <a class="reference internal" href="#update-parameters"><span class="std std-ref">UPDATE</span></a> section for informations on the <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref std std-token docutils literal notranslate"><span class="pre">update_parameter</span></code></a>.</p>
+<p>Also note that <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> does not support counters, while <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> does.</p>
+</div>
+<div class="section" id="update">
+<span id="update-statement"></span><h2>UPDATE<a class="headerlink" href="#update" title="Permalink to this headline">¶</a></h2>
+<p>Updating a row is done using an <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-update-statement">update_statement</strong> ::=  UPDATE <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+                      [ USING <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> ( AND <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> )* ]
+                      SET <a class="reference internal" href="#grammar-token-assignment"><code class="xref docutils literal notranslate"><span class="pre">assignment</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-assignment"><code class="xref docutils literal notranslate"><span class="pre">assignment</span></code></a> )*
+                      WHERE <a class="reference internal" href="#grammar-token-where-clause"><code class="xref docutils literal notranslate"><span class="pre">where_clause</span></code></a>
+                      [ IF ( EXISTS | <a class="reference internal" href="#grammar-token-condition"><code class="xref docutils literal notranslate"><span class="pre">condition</span></code></a> ( AND <a class="reference internal" href="#grammar-token-condition"><code class="xref docutils literal notranslate"><span class="pre">condition</span></code></a> )*) ]
+<strong id="grammar-token-update-parameter">update_parameter</strong> ::=  ( TIMESTAMP | TTL ) ( <a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref docutils literal notranslate"><span class="pre">integer</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-bind-marker"><code class="xref docutils literal notranslate"><span class="pre">bind_marker</span></code></a> )
+<strong id="grammar-token-assignment">assignment      </strong> ::=  <a class="reference internal" href="#grammar-token-simple-selection"><code class="xref docutils literal notranslate"><span class="pre">simple_selection</span></code></a> '=' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>
+                     | <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> '=' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( '+' | '-' ) <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>
+                     | <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> '=' <a class="reference internal" href="types.html#grammar-token-list-literal"><code class="xref docutils literal notranslate"><span class="pre">list_literal</span></code></a> '+' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a>
+<strong id="grammar-token-simple-selection">simple_selection</strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a>
+                     | <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> '[' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> ']'
+                     | <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> '.' `field_name
+<strong id="grammar-token-condition">condition       </strong> ::=  <a class="reference internal" href="#grammar-token-simple-selection"><code class="xref docutils literal notranslate"><span class="pre">simple_selection</span></code></a> <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal notranslate"><span class="pre">operator</span></code></a> <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">NerdMovies</span> <span class="k">USING</span> <span class="k">TTL</span> <span class="mf">400</span>
+   <span class="k">SET</span> <span class="n">director</span>   <span class="o">=</span> <span class="s1">&#39;Joss Whedon&#39;</span><span class="p">,</span>
+       <span class="n">main_actor</span> <span class="o">=</span> <span class="s1">&#39;Nathan Fillion&#39;</span><span class="p">,</span>
+       <span class="n">year</span>       <span class="o">=</span> <span class="mf">2005</span>
+ <span class="k">WHERE</span> <span class="n">movie</span> <span class="o">=</span> <span class="s1">&#39;Serenity&#39;</span><span class="p">;</span>
+
+<span class="k">UPDATE</span> <span class="n">UserActions</span>
+   <span class="k">SET</span> <span class="n">total</span> <span class="o">=</span> <span class="n">total</span> <span class="o">+</span> <span class="mf">2</span>
+   <span class="k">WHERE</span> <span class="k">user</span> <span class="o">=</span> <span class="m">B70DE1D0-9908-4AE3-BE34-5573E5B09F14</span>
+     <span class="k">AND</span> <span class="n">action</span> <span class="o">=</span> <span class="s1">&#39;click&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statement writes one or more columns for a given row in a table. The <a class="reference internal" href="#grammar-token-where-clause"><code class="xref std std-token docutils literal notranslate"><span class="pre">where_clause</span></code></a> is used to
+select the row to update and must include all columns composing the <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code>. Non primary key columns are then
+set using the <code class="docutils literal notranslate"><span class="pre">SET</span></code> keyword.</p>
+<p>Note that unlike in SQL, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> does not check the prior existence of the row by default (except through <code class="docutils literal notranslate"><span class="pre">IF</span></code>, see
+below): the row is created if none existed before, and updated otherwise. Furthermore, there are no means to know
+whether a creation or update occurred.</p>
+<p>It is however possible to use the conditions on some columns through <code class="docutils literal notranslate"><span class="pre">IF</span></code>, in which case the row will not be updated
+unless the conditions are met. But, please note that using <code class="docutils literal notranslate"><span class="pre">IF</span></code> conditions will incur a non-negligible performance
+cost (internally, Paxos will be used) so this should be used sparingly.</p>
+<p>In an <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statement, all updates within the same partition key are applied atomically and in isolation.</p>
+<p>Regarding the <a class="reference internal" href="#grammar-token-assignment"><code class="xref std std-token docutils literal notranslate"><span class="pre">assignment</span></code></a>:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">c</span> <span class="pre">=</span> <span class="pre">c</span> <span class="pre">+</span> <span class="pre">3</span></code> is used to increment/decrement counters. The column name after the ‘=’ sign <strong>must</strong> be the same than
+the one before the ‘=’ sign. Note that increment/decrement is only allowed on counters, and are the <em>only</em> update
+operations allowed on counters. See the section on <a class="reference internal" href="types.html#counters"><span class="std std-ref">counters</span></a> for details.</li>
+<li><code class="docutils literal notranslate"><span class="pre">id</span> <span class="pre">=</span> <span class="pre">id</span> <span class="pre">+</span> <span class="pre">&lt;some-collection&gt;</span></code> and <code class="docutils literal notranslate"><span class="pre">id[value1]</span> <span class="pre">=</span> <span class="pre">value2</span></code> are for collections, see the <a class="reference internal" href="types.html#collections"><span class="std std-ref">relevant section</span></a> for details.</li>
+<li><code class="docutils literal notranslate"><span class="pre">id.field</span> <span class="pre">=</span> <span class="pre">3</span></code> is for setting the value of a field on a non-frozen user-defined types. see the <a class="reference internal" href="types.html#udts"><span class="std std-ref">relevant section</span></a> for details.</li>
+</ul>
+<div class="section" id="update-parameters">
+<span id="id3"></span><h3>Update parameters<a class="headerlink" href="#update-parameters" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> (and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> and <code class="docutils literal notranslate"><span class="pre">BATCH</span></code> for the <code class="docutils literal notranslate"><span class="pre">TIMESTAMP</span></code>) statements support the following
+parameters:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">TIMESTAMP</span></code>: sets the timestamp for the operation. If not specified, the coordinator will use the current time (in
+microseconds) at the start of statement execution as the timestamp. This is usually a suitable default.</li>
+<li><code class="docutils literal notranslate"><span class="pre">TTL</span></code>: specifies an optional Time To Live (in seconds) for the inserted values. If set, the inserted values are
+automatically removed from the database after the specified time. Note that the TTL concerns the inserted values, not
+the columns themselves. This means that any subsequent update of the column will also reset the TTL (to whatever TTL
+is specified in that update). By default, values never expire. A TTL of 0 is equivalent to no TTL. If the table has a
+default_time_to_live, a TTL of 0 will remove the TTL for the inserted or updated values. A TTL of <code class="docutils literal notranslate"><span class="pre">null</span></code> is equivalent
+to inserting with a TTL of 0.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="delete">
+<span id="delete-statement"></span><h2>DELETE<a class="headerlink" href="#delete" title="Permalink to this headline">¶</a></h2>
+<p>Deleting rows or parts of rows uses the <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-delete-statement">delete_statement</strong> ::=  DELETE [ <a class="reference internal" href="#grammar-token-simple-selection"><code class="xref docutils literal notranslate"><span class="pre">simple_selection</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-simple-selection"><code class="xref docutils literal notranslate"><span class="pre">simple_selection</span></code></a> ) ]
+                      FROM <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+                      [ USING <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> ( AND <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> )* ]
+                      WHERE <a class="reference internal" href="#grammar-token-where-clause"><code class="xref docutils literal notranslate"><span class="pre">where_clause</span></code></a>
+                      [ IF ( EXISTS | <a class="reference internal" href="#grammar-token-condition"><code class="xref docutils literal notranslate"><span class="pre">condition</span></code></a> ( AND <a class="reference internal" href="#grammar-token-condition"><code class="xref docutils literal notranslate"><span class="pre">condition</span></code></a> )*) ]
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DELETE</span> <span class="k">FROM</span> <span class="n">NerdMovies</span> <span class="k">USING</span> <span class="nb">TIMESTAMP</span> <span class="mf">1240003134</span>
+ <span class="k">WHERE</span> <span class="n">movie</span> <span class="o">=</span> <span class="s1">&#39;Serenity&#39;</span><span class="p">;</span>
+
+<span class="k">DELETE</span> <span class="n">phone</span> <span class="k">FROM</span> <span class="k">Users</span>
+ <span class="k">WHERE</span> <span class="n">userid</span> <span class="k">IN</span> <span class="p">(</span><span class="m">C73DE1D3-AF08-40F3-B124-3FF3E5109F22</span><span class="p">,</span> <span class="m">B70DE1D0-9908-4AE3-BE34-5573E5B09F14</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statement deletes columns and rows. If column names are provided directly after the <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> keyword,
+only those columns are deleted from the row indicated by the <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clause. Otherwise, whole rows are removed.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clause specifies which rows are to be deleted. Multiple rows may be deleted with one statement by using an
+<code class="docutils literal notranslate"><span class="pre">IN</span></code> operator. A range of rows may be deleted using an inequality operator (such as <code class="docutils literal notranslate"><span class="pre">&gt;=</span></code>).</p>
+<p><code class="docutils literal notranslate"><span class="pre">DELETE</span></code> supports the <code class="docutils literal notranslate"><span class="pre">TIMESTAMP</span></code> option with the same semantics as in <a class="reference internal" href="#update-parameters"><span class="std std-ref">updates</span></a>.</p>
+<p>In a <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statement, all deletions within the same partition key are applied atomically and in isolation.</p>
+<p>A <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> operation can be conditional through the use of an <code class="docutils literal notranslate"><span class="pre">IF</span></code> clause, similar to <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> and <code class="docutils literal notranslate"><span class="pre">INSERT</span></code>
+statements. However, as with <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statements, this will incur a non-negligible performance cost
+(internally, Paxos will be used) and so should be used sparingly.</p>
+</div>
+<div class="section" id="batch">
+<span id="batch-statement"></span><h2>BATCH<a class="headerlink" href="#batch" title="Permalink to this headline">¶</a></h2>
+<p>Multiple <code class="docutils literal notranslate"><span class="pre">INSERT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> can be executed in a single statement by grouping them through a
+<code class="docutils literal notranslate"><span class="pre">BATCH</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-batch-statement">batch_statement       </strong> ::=  BEGIN [ UNLOGGED | COUNTER ] BATCH
+                            [ USING <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> ( AND <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> )* ]
+                            <a class="reference internal" href="#grammar-token-modification-statement"><code class="xref docutils literal notranslate"><span class="pre">modification_statement</span></code></a> ( ';' <a class="reference internal" href="#grammar-token-modification-statement"><code class="xref docutils literal notranslate"><span class="pre">modification_statement</span></code></a> )*
+                            APPLY BATCH
+<strong id="grammar-token-modification-statement">modification_statement</strong> ::=  <a class="reference internal" href="#grammar-token-insert-statement"><code class="xref docutils literal notranslate"><span class="pre">insert_statement</span></code></a> | <a class="reference internal" href="#grammar-token-update-statement"><code class="xref docutils literal notranslate"><span class="pre">update_statement</span></code></a> | <a class="reference internal" href="#grammar-token-delete-statement"><code class="xref docutils literal notranslate"><span class="pre">delete_statement</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">BEGIN</span> <span class="k">BATCH</span>
+   <span class="k">INSERT</span> <span class="k">INTO</span> <span class="k">users</span> <span class="p">(</span><span class="n">userid</span><span class="p">,</span> <span class="k">password</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;user2&#39;</span><span class="p">,</span> <span class="s1">&#39;ch@ngem3b&#39;</span><span class="p">,</span> <span class="s1">&#39;second user&#39;</span><span class="p">);</span>
+   <span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="k">password</span> <span class="o">=</span> <span class="s1">&#39;ps22dhds&#39;</span> <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;user3&#39;</span><span class="p">;</span>
+   <span class="k">INSERT</span> <span class="k">INTO</span> <span class="k">users</span> <span class="p">(</span><span class="n">userid</span><span class="p">,</span> <span class="k">password</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;user4&#39;</span><span class="p">,</span> <span class="s1">&#39;ch@ngem3c&#39;</span><span class="p">);</span>
+   <span class="k">DELETE</span> <span class="n">name</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;user1&#39;</span><span class="p">;</span>
+<span class="k">APPLY</span> <span class="k">BATCH</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">BATCH</span></code> statement group multiple modification statements (insertions/updates and deletions) into a single
+statement. It serves several purposes:</p>
+<ul class="simple">
+<li>It saves network round-trips between the client and the server (and sometimes between the server coordinator and the
+replicas) when batching multiple updates.</li>
+<li>All updates in a <code class="docutils literal notranslate"><span class="pre">BATCH</span></code> belonging to a given partition key are performed in isolation.</li>
+<li>By default, all operations in the batch are performed as <em>logged</em>, to ensure all mutations eventually complete (or
+none will). See the notes on <a class="reference internal" href="#unlogged-batches"><span class="std std-ref">UNLOGGED batches</span></a> for more details.</li>
+</ul>
+<p>Note that:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">BATCH</span></code> statements may only contain <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statements (not other batches for instance).</li>
+<li>Batches are <em>not</em> a full analogue for SQL transactions.</li>
+<li>If a timestamp is not specified for each operation, then all operations will be applied with the same timestamp
+(either one generated automatically, or the timestamp provided at the batch level). Due to Cassandra’s conflict
+resolution procedure in the case of <a class="reference external" href="http://wiki.apache.org/cassandra/FAQ#clocktie">timestamp ties</a>, operations may
+be applied in an order that is different from the order they are listed in the <code class="docutils literal notranslate"><span class="pre">BATCH</span></code> statement. To force a
+particular operation ordering, you must specify per-operation timestamps.</li>
+<li>A LOGGED batch to a single partition will be converted to an UNLOGGED batch as an optimization.</li>
+</ul>
+<div class="section" id="unlogged-batches">
+<span id="id4"></span><h3><code class="docutils literal notranslate"><span class="pre">UNLOGGED</span></code> batches<a class="headerlink" href="#unlogged-batches" title="Permalink to this headline">¶</a></h3>
+<p>By default, Cassandra uses a batch log to ensure all operations in a batch eventually complete or none will (note
+however that operations are only isolated within a single partition).</p>
+<p>There is a performance penalty for batch atomicity when a batch spans multiple partitions. If you do not want to incur
+this penalty, you can tell Cassandra to skip the batchlog with the <code class="docutils literal notranslate"><span class="pre">UNLOGGED</span></code> option. If the <code class="docutils literal notranslate"><span class="pre">UNLOGGED</span></code> option is
+used, a failed batch might leave the patch only partly applied.</p>
+</div>
+<div class="section" id="counter-batches">
+<h3><code class="docutils literal notranslate"><span class="pre">COUNTER</span></code> batches<a class="headerlink" href="#counter-batches" title="Permalink to this headline">¶</a></h3>
+<p>Use the <code class="docutils literal notranslate"><span class="pre">COUNTER</span></code> option for batched counter updates. Unlike other
+updates in Cassandra, counter updates are not idempotent.</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="indexes.html" class="btn btn-default pull-right " role="button" title="Secondary Indexes" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="ddl.html" class="btn btn-default" role="button" title="Data Definition" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/cql/functions.html b/src/doc/3.11.11/cql/functions.html
new file mode 100644
index 0000000..a2d92b7
--- /dev/null
+++ b/src/doc/3.11.11/cql/functions.html
@@ -0,0 +1,666 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Functions"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="JSON Support" href="json.html"/>
+      <link rel="prev" title="Security" href="security.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Functions</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#scalar-functions">Scalar functions</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#aggregate-functions">Aggregate functions</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <span class="target" id="cql-functions"></span><div class="section" id="functions">
+<span id="native-functions"></span><span id="udfs"></span><h1>Functions<a class="headerlink" href="#functions" title="Permalink to this headline">¶</a></h1>
+<p>CQL supports 2 main categories of functions:</p>
+<ul class="simple">
+<li>the <a class="reference internal" href="#scalar-functions"><span class="std std-ref">scalar functions</span></a>, which simply take a number of values and produce an output with it.</li>
+<li>the <a class="reference internal" href="#aggregate-functions"><span class="std std-ref">aggregate functions</span></a>, which are used to aggregate multiple rows results from a
+<code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement.</li>
+</ul>
+<p>In both cases, CQL provides a number of native “hard-coded” functions as well as the ability to create new user-defined
+functions.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">By default, the use of user-defined functions is disabled by default for security concerns (even when
+enabled, the execution of user-defined functions is sandboxed and a “rogue” function should not be allowed to do
+evil, but no sandbox is perfect so using user-defined functions is opt-in). See the <code class="docutils literal notranslate"><span class="pre">enable_user_defined_functions</span></code>
+in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> to enable them.</p>
+</div>
+<p>A function is identifier by its name:</p>
+<pre>
+<strong id="grammar-token-function-name">function_name</strong> ::=  [ <a class="reference internal" href="ddl.html#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a> '.' ] <a class="reference internal" href="ddl.html#grammar-token-name"><code class="xref docutils literal notranslate"><span class="pre">name</span></code></a>
+</pre>
+<div class="section" id="scalar-functions">
+<span id="id1"></span><h2>Scalar functions<a class="headerlink" href="#scalar-functions" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="scalar-native-functions">
+<span id="id2"></span><h3>Native functions<a class="headerlink" href="#scalar-native-functions" title="Permalink to this headline">¶</a></h3>
+<div class="section" id="cast">
+<h4>Cast<a class="headerlink" href="#cast" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">cast</span></code> function can be used to converts one native datatype to another.</p>
+<p>The following table describes the conversions supported by the <code class="docutils literal notranslate"><span class="pre">cast</span></code> function. Cassandra will silently ignore any
+cast converting a datatype into its own datatype.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="13%" />
+<col width="87%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">From</th>
+<th class="head">To</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ascii</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">bigint</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">boolean</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">counter</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>,
+<code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">date</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">decimal</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">double</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">float</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">inet</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">int</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">smallint</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">time</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">date</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code>, <code class="docutils literal notranslate"><span class="pre">date</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>,
+<code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">uuid</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">varint</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+</tbody>
+</table>
+<p>The conversions rely strictly on Java’s semantics. For example, the double value 1 will be converted to the text value
+‘1.0’. For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">avg</span><span class="p">(</span><span class="k">cast</span><span class="p">(</span><span class="k">count</span> <span class="k">as</span> <span class="nb">double</span><span class="p">))</span> <span class="k">FROM</span> <span class="n">myTable</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="token">
+<h4>Token<a class="headerlink" href="#token" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">token</span></code> function allows to compute the token for a given partition key. The exact signature of the token function
+depends on the table concerned and of the partitioner used by the cluster.</p>
+<p>The type of the arguments of the <code class="docutils literal notranslate"><span class="pre">token</span></code> depend on the type of the partition key columns. The return type depend on
+the partitioner in use:</p>
+<ul class="simple">
+<li>For Murmur3Partitioner, the return type is <code class="docutils literal notranslate"><span class="pre">bigint</span></code>.</li>
+<li>For RandomPartitioner, the return type is <code class="docutils literal notranslate"><span class="pre">varint</span></code>.</li>
+<li>For ByteOrderedPartitioner, the return type is <code class="docutils literal notranslate"><span class="pre">blob</span></code>.</li>
+</ul>
+<p>For instance, in a cluster using the default Murmur3Partitioner, if a table is defined by:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="k">users</span> <span class="p">(</span>
+    <span class="n">userid</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">username</span> <span class="nb">text</span><span class="p">,</span>
+<span class="p">)</span>
+</pre></div>
+</div>
+<p>then the <code class="docutils literal notranslate"><span class="pre">token</span></code> function will take a single argument of type <code class="docutils literal notranslate"><span class="pre">text</span></code> (in that case, the partition key is <code class="docutils literal notranslate"><span class="pre">userid</span></code>
+(there is no clustering columns so the partition key is the same than the primary key)), and the return type will be
+<code class="docutils literal notranslate"><span class="pre">bigint</span></code>.</p>
+</div>
+<div class="section" id="uuid">
+<h4>Uuid<a class="headerlink" href="#uuid" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">uuid</span></code> function takes no parameters and generates a random type 4 uuid suitable for use in <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> or
+<code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statements.</p>
+</div>
+<div class="section" id="timeuuid-functions">
+<span id="id3"></span><h4>Timeuuid functions<a class="headerlink" href="#timeuuid-functions" title="Permalink to this headline">¶</a></h4>
+<div class="section" id="now">
+<h5><code class="docutils literal notranslate"><span class="pre">now</span></code><a class="headerlink" href="#now" title="Permalink to this headline">¶</a></h5>
+<p>The <code class="docutils literal notranslate"><span class="pre">now</span></code> function takes no arguments and generates, on the coordinator node, a new unique timeuuid (at the time where
+the statement using it is executed). Note that this method is useful for insertion but is largely non-sensical in
+<code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clauses. For instance, a query of the form:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">myTable</span> <span class="k">WHERE</span> <span class="n">t</span> <span class="o">=</span> <span class="n">now</span><span class="p">()</span>
+</pre></div>
+</div>
+<p>will never return any result by design, since the value returned by <code class="docutils literal notranslate"><span class="pre">now()</span></code> is guaranteed to be unique.</p>
+</div>
+<div class="section" id="mintimeuuid-and-maxtimeuuid">
+<h5><code class="docutils literal notranslate"><span class="pre">minTimeuuid</span></code> and <code class="docutils literal notranslate"><span class="pre">maxTimeuuid</span></code><a class="headerlink" href="#mintimeuuid-and-maxtimeuuid" title="Permalink to this headline">¶</a></h5>
+<p>The <code class="docutils literal notranslate"><span class="pre">minTimeuuid</span></code> (resp. <code class="docutils literal notranslate"><span class="pre">maxTimeuuid</span></code>) function takes a <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> value <code class="docutils literal notranslate"><span class="pre">t</span></code> (which can be <cite>either a timestamp
+or a date string &lt;timestamps&gt;</cite>) and return a <em>fake</em> <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> corresponding to the <em>smallest</em> (resp. <em>biggest</em>)
+possible <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> having for timestamp <code class="docutils literal notranslate"><span class="pre">t</span></code>. So for instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">myTable</span>
+ <span class="k">WHERE</span> <span class="n">t</span> <span class="o">&gt;</span> <span class="n">maxTimeuuid</span><span class="p">(</span><span class="s1">&#39;2013-01-01 00:05+0000&#39;</span><span class="p">)</span>
+   <span class="k">AND</span> <span class="n">t</span> <span class="o">&lt;</span> <span class="n">minTimeuuid</span><span class="p">(</span><span class="s1">&#39;2013-02-02 10:00+0000&#39;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>will select all rows where the <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> column <code class="docutils literal notranslate"><span class="pre">t</span></code> is strictly older than <code class="docutils literal notranslate"><span class="pre">'2013-01-01</span> <span class="pre">00:05+0000'</span></code> but strictly
+younger than <code class="docutils literal notranslate"><span class="pre">'2013-02-02</span> <span class="pre">10:00+0000'</span></code>. Please note that <code class="docutils literal notranslate"><span class="pre">t</span> <span class="pre">&gt;=</span> <span class="pre">maxTimeuuid('2013-01-01</span> <span class="pre">00:05+0000')</span></code> would still
+<em>not</em> select a <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> generated exactly at ‘2013-01-01 00:05+0000’ and is essentially equivalent to <code class="docutils literal notranslate"><span class="pre">t</span> <span class="pre">&gt;</span>
+<span class="pre">maxTimeuuid('2013-01-01</span> <span class="pre">00:05+0000')</span></code>.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">We called the values generated by <code class="docutils literal notranslate"><span class="pre">minTimeuuid</span></code> and <code class="docutils literal notranslate"><span class="pre">maxTimeuuid</span></code> <em>fake</em> UUID because they do no respect
+the Time-Based UUID generation process specified by the <a class="reference external" href="http://www.ietf.org/rfc/rfc4122.txt">RFC 4122</a>. In
+particular, the value returned by these 2 methods will not be unique. This means you should only use those methods
+for querying (as in the example above). Inserting the result of those methods is almost certainly <em>a bad idea</em>.</p>
+</div>
+</div>
+</div>
+<div class="section" id="time-conversion-functions">
+<h4>Time conversion functions<a class="headerlink" href="#time-conversion-functions" title="Permalink to this headline">¶</a></h4>
+<p>A number of functions are provided to “convert” a <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code>, a <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> or a <code class="docutils literal notranslate"><span class="pre">date</span></code> into another <code class="docutils literal notranslate"><span class="pre">native</span></code>
+type.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="20%" />
+<col width="15%" />
+<col width="65%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Function name</th>
+<th class="head">Input type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">toDate</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">date</span></code> type</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">toDate</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">date</span></code> type</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">toTimestamp</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> type</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">toTimestamp</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">date</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">date</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> type</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">toUnixTimestamp</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">bigInt</span></code> raw value</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">toUnixTimestamp</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">bigInt</span></code> raw value</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">toUnixTimestamp</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">date</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">date</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">bigInt</span></code> raw value</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">dateOf</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td>Similar to <code class="docutils literal notranslate"><span class="pre">toTimestamp(timeuuid)</span></code> (DEPRECATED)</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">unixTimestampOf</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td>Similar to <code class="docutils literal notranslate"><span class="pre">toUnixTimestamp(timeuuid)</span></code> (DEPRECATED)</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="blob-conversion-functions">
+<h4>Blob conversion functions<a class="headerlink" href="#blob-conversion-functions" title="Permalink to this headline">¶</a></h4>
+<p>A number of functions are provided to “convert” the native types into binary data (<code class="docutils literal notranslate"><span class="pre">blob</span></code>). For every
+<code class="docutils literal notranslate"><span class="pre">&lt;native-type&gt;</span></code> <code class="docutils literal notranslate"><span class="pre">type</span></code> supported by CQL (a notable exceptions is <code class="docutils literal notranslate"><span class="pre">blob</span></code>, for obvious reasons), the function
+<code class="docutils literal notranslate"><span class="pre">typeAsBlob</span></code> takes a argument of type <code class="docutils literal notranslate"><span class="pre">type</span></code> and return it as a <code class="docutils literal notranslate"><span class="pre">blob</span></code>. Conversely, the function <code class="docutils literal notranslate"><span class="pre">blobAsType</span></code>
+takes a 64-bit <code class="docutils literal notranslate"><span class="pre">blob</span></code> argument and convert it to a <code class="docutils literal notranslate"><span class="pre">bigint</span></code> value. And so for instance, <code class="docutils literal notranslate"><span class="pre">bigintAsBlob(3)</span></code> is
+<code class="docutils literal notranslate"><span class="pre">0x0000000000000003</span></code> and <code class="docutils literal notranslate"><span class="pre">blobAsBigint(0x0000000000000003)</span></code> is <code class="docutils literal notranslate"><span class="pre">3</span></code>.</p>
+</div>
+</div>
+<div class="section" id="user-defined-functions">
+<span id="user-defined-scalar-functions"></span><h3>User-defined functions<a class="headerlink" href="#user-defined-functions" title="Permalink to this headline">¶</a></h3>
+<p>User-defined functions allow execution of user-provided code in Cassandra. By default, Cassandra supports defining
+functions in <em>Java</em> and <em>JavaScript</em>. Support for other JSR 223 compliant scripting languages (such as Python, Ruby, and
+Scala) can be added by adding a JAR to the classpath.</p>
+<p>UDFs are part of the Cassandra schema. As such, they are automatically propagated to all nodes in the cluster.</p>
+<p>UDFs can be <em>overloaded</em> - i.e. multiple UDFs with different argument types but the same function name. Example:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">sample</span> <span class="p">(</span> <span class="n">arg</span> <span class="nb">int</span> <span class="p">)</span> <span class="mf">...</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">sample</span> <span class="p">(</span> <span class="n">arg</span> <span class="nb">text</span> <span class="p">)</span> <span class="mf">...</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>User-defined functions are susceptible to all of the normal problems with the chosen programming language. Accordingly,
+implementations should be safe against null pointer exceptions, illegal arguments, or any other potential source of
+exceptions. An exception during function execution will result in the entire statement failing.</p>
+<p>It is valid to use <em>complex</em> types like collections, tuple types and user-defined types as argument and return types.
+Tuple types and user-defined types are handled by the conversion functions of the DataStax Java Driver. Please see the
+documentation of the Java Driver for details on handling tuple types and user-defined types.</p>
+<p>Arguments for functions can be literals or terms. Prepared statement placeholders can be used, too.</p>
+<p>Note that you can use the double-quoted string syntax to enclose the UDF source code. For example:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">some_function</span> <span class="p">(</span> <span class="n">arg</span> <span class="nb">int</span> <span class="p">)</span>
+    <span class="k">RETURNS</span> <span class="k">NULL</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="nb">int</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span> <span class="k">return</span> <span class="n">arg</span><span class="p">;</span> <span class="s">$$</span><span class="p">;</span>
+
+<span class="k">SELECT</span> <span class="n">some_function</span><span class="p">(</span><span class="n">column</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">atable</span> <span class="mf">...</span><span class="p">;</span>
+<span class="k">UPDATE</span> <span class="n">atable</span> <span class="k">SET</span> <span class="n">col</span> <span class="o">=</span> <span class="n">some_function</span><span class="p">(</span><span class="o">?</span><span class="p">)</span> <span class="mf">...</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">custom_type</span> <span class="p">(</span><span class="n">txt</span> <span class="nb">text</span><span class="p">,</span> <span class="n">i</span> <span class="nb">int</span><span class="p">);</span>
+<span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">fct_using_udt</span> <span class="p">(</span> <span class="n">udtarg</span> <span class="k">frozen</span> <span class="p">)</span>
+    <span class="k">RETURNS</span> <span class="k">NULL</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="nb">text</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span> <span class="k">return</span> <span class="n">udtarg</span><span class="p">.</span><span class="na">getString</span><span class="p">(</span><span class="s">&quot;txt&quot;</span><span class="p">);</span> <span class="s">$$</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>User-defined functions can be used in <code class="docutils literal notranslate"><span class="pre">SELECT</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statements.</p>
+<p>The implicitly available <code class="docutils literal notranslate"><span class="pre">udfContext</span></code> field (or binding for script UDFs) provides the necessary functionality to
+create new UDT and tuple values:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">custom_type</span> <span class="p">(</span><span class="n">txt</span> <span class="nb">text</span><span class="p">,</span> <span class="n">i</span> <span class="nb">int</span><span class="p">);</span>
+<span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">fct</span><span class="err">\</span><span class="n">_using</span><span class="err">\</span><span class="n">_udt</span> <span class="p">(</span> <span class="n">somearg</span> <span class="nb">int</span> <span class="p">)</span>
+    <span class="k">RETURNS</span> <span class="k">NULL</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="n">custom_type</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span>
+        <span class="n">UDTValue</span> <span class="n">udt</span> <span class="o">=</span> <span class="n">udfContext</span><span class="p">.</span><span class="na">newReturnUDTValue</span><span class="p">();</span>
+        <span class="n">udt</span><span class="p">.</span><span class="na">setString</span><span class="p">(</span><span class="s">&quot;txt&quot;</span><span class="p">,</span> <span class="s">&quot;some string&quot;</span><span class="p">);</span>
+        <span class="n">udt</span><span class="p">.</span><span class="na">setInt</span><span class="p">(</span><span class="s">&quot;i&quot;</span><span class="p">,</span> <span class="mi">42</span><span class="p">);</span>
+        <span class="k">return</span> <span class="n">udt</span><span class="p">;</span>
+    <span class="s">$$</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The definition of the <code class="docutils literal notranslate"><span class="pre">UDFContext</span></code> interface can be found in the Apache Cassandra source code for
+<code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.cql3.functions.UDFContext</span></code>.</p>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kd">public</span> <span class="kd">interface</span> <span class="nc">UDFContext</span>
+<span class="p">{</span>
+    <span class="n">UDTValue</span> <span class="nf">newArgUDTValue</span><span class="p">(</span><span class="n">String</span> <span class="n">argName</span><span class="p">);</span>
+    <span class="n">UDTValue</span> <span class="nf">newArgUDTValue</span><span class="p">(</span><span class="kt">int</span> <span class="n">argNum</span><span class="p">);</span>
+    <span class="n">UDTValue</span> <span class="nf">newReturnUDTValue</span><span class="p">();</span>
+    <span class="n">UDTValue</span> <span class="nf">newUDTValue</span><span class="p">(</span><span class="n">String</span> <span class="n">udtName</span><span class="p">);</span>
+    <span class="n">TupleValue</span> <span class="nf">newArgTupleValue</span><span class="p">(</span><span class="n">String</span> <span class="n">argName</span><span class="p">);</span>
+    <span class="n">TupleValue</span> <span class="nf">newArgTupleValue</span><span class="p">(</span><span class="kt">int</span> <span class="n">argNum</span><span class="p">);</span>
+    <span class="n">TupleValue</span> <span class="nf">newReturnTupleValue</span><span class="p">();</span>
+    <span class="n">TupleValue</span> <span class="nf">newTupleValue</span><span class="p">(</span><span class="n">String</span> <span class="n">cqlDefinition</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Java UDFs already have some imports for common interfaces and classes defined. These imports are:</p>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">java.nio.ByteBuffer</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java.util.List</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java.util.Map</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java.util.Set</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.cassandra.cql3.functions.UDFContext</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">com.datastax.driver.core.TypeCodec</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">com.datastax.driver.core.TupleValue</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">com.datastax.driver.core.UDTValue</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Please note, that these convenience imports are not available for script UDFs.</p>
+<div class="section" id="create-function">
+<span id="create-function-statement"></span><h4>CREATE FUNCTION<a class="headerlink" href="#create-function" title="Permalink to this headline">¶</a></h4>
+<p>Creating a new user-defined function uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-function-statement">create_function_statement</strong> ::=  CREATE [ OR REPLACE ] FUNCTION [ IF NOT EXISTS]
+                                   <a class="reference internal" href="#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> '(' <a class="reference internal" href="#grammar-token-arguments-declaration"><code class="xref docutils literal notranslate"><span class="pre">arguments_declaration</span></code></a> ')'
+                                   [ CALLED | RETURNS NULL ] ON NULL INPUT
+                                   RETURNS <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a>
+                                   LANGUAGE <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a>
+                                   AS <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a>
+<strong id="grammar-token-arguments-declaration">arguments_declaration    </strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> )*
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">OR</span> <span class="k">REPLACE</span> <span class="k">FUNCTION</span> <span class="n">somefunction</span><span class="p">(</span><span class="n">somearg</span> <span class="nb">int</span><span class="p">,</span> <span class="n">anotherarg</span> <span class="nb">text</span><span class="p">,</span> <span class="n">complexarg</span> <span class="k">frozen</span><span class="o">&lt;</span><span class="n">someUDT</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">listarg</span> <span class="k">list</span><span class="p">)</span>
+    <span class="k">RETURNS</span> <span class="k">NULL</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="nb">text</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span>
+        <span class="c1">// some Java code</span>
+    <span class="s">$$</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="k">IF</span> <span class="k">NOT</span> <span class="k">EXISTS</span> <span class="n">akeyspace</span><span class="mf">.</span><span class="n">fname</span><span class="p">(</span><span class="n">someArg</span> <span class="nb">int</span><span class="p">)</span>
+    <span class="k">CALLED</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="nb">text</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span>
+        <span class="c1">// some Java code</span>
+    <span class="s">$$</span><span class="p">;</span>
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> with the optional <code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> keywords either creates a function or replaces an existing one with
+the same signature. A <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> without <code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> fails if a function with the same signature already
+exists.</p>
+<p>If the optional <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> keywords are used, the function will
+only be created if another function with the same signature does not
+exist.</p>
+<p><code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> and <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> cannot be used together.</p>
+<p>Behavior on invocation with <code class="docutils literal notranslate"><span class="pre">null</span></code> values must be defined for each
+function. There are two options:</p>
+<ol class="arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">RETURNS</span> <span class="pre">NULL</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code> declares that the function will always
+return <code class="docutils literal notranslate"><span class="pre">null</span></code> if any of the input arguments is <code class="docutils literal notranslate"><span class="pre">null</span></code>.</li>
+<li><code class="docutils literal notranslate"><span class="pre">CALLED</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code> declares that the function will always be
+executed.</li>
+</ol>
+<div class="section" id="function-signature">
+<h5>Function Signature<a class="headerlink" href="#function-signature" title="Permalink to this headline">¶</a></h5>
+<p>Signatures are used to distinguish individual functions. The signature consists of:</p>
+<ol class="arabic simple">
+<li>The fully qualified function name - i.e <em>keyspace</em> plus <em>function-name</em></li>
+<li>The concatenated list of all argument types</li>
+</ol>
+<p>Note that keyspace names, function names and argument types are subject to the default naming conventions and
+case-sensitivity rules.</p>
+<p>Functions belong to a keyspace. If no keyspace is specified in <code class="docutils literal notranslate"><span class="pre">&lt;function-name&gt;</span></code>, the current keyspace is used (i.e.
+the keyspace specified using the <code class="docutils literal notranslate"><span class="pre">USE</span></code> statement). It is not possible to create a user-defined function in one of the
+system keyspaces.</p>
+</div>
+</div>
+<div class="section" id="drop-function">
+<span id="drop-function-statement"></span><h4>DROP FUNCTION<a class="headerlink" href="#drop-function" title="Permalink to this headline">¶</a></h4>
+<p>Dropping a function uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-function-statement">drop_function_statement</strong> ::=  DROP FUNCTION [ IF EXISTS ] <a class="reference internal" href="#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> [ '(' <a class="reference internal" href="#grammar-token-arguments-signature"><code class="xref docutils literal notranslate"><span class="pre">arguments_signature</span></code></a> ')' ]
+<strong id="grammar-token-arguments-signature">arguments_signature    </strong> ::=  <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> )*
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DROP</span> <span class="k">FUNCTION</span> <span class="n">myfunction</span><span class="p">;</span>
+<span class="k">DROP</span> <span class="k">FUNCTION</span> <span class="n">mykeyspace</span><span class="mf">.</span><span class="n">afunction</span><span class="p">;</span>
+<span class="k">DROP</span> <span class="k">FUNCTION</span> <span class="n">afunction</span> <span class="p">(</span> <span class="nb">int</span> <span class="p">);</span>
+<span class="k">DROP</span> <span class="k">FUNCTION</span> <span class="n">afunction</span> <span class="p">(</span> <span class="nb">text</span> <span class="p">);</span>
+</pre></div>
+</div>
+<p>You must specify the argument types (<a class="reference internal" href="#grammar-token-arguments-signature"><code class="xref std std-token docutils literal notranslate"><span class="pre">arguments_signature</span></code></a>) of the function to drop if there are multiple
+functions with the same name but a different signature (overloaded functions).</p>
+<p><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code> with the optional <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> keywords drops a function if it exists, but does not throw an error if
+it doesn’t</p>
+</div>
+</div>
+</div>
+<div class="section" id="aggregate-functions">
+<span id="id4"></span><h2>Aggregate functions<a class="headerlink" href="#aggregate-functions" title="Permalink to this headline">¶</a></h2>
+<p>Aggregate functions work on a set of rows. They receive values for each row and returns one value for the whole set.</p>
+<p>If <code class="docutils literal notranslate"><span class="pre">normal</span></code> columns, <code class="docutils literal notranslate"><span class="pre">scalar</span> <span class="pre">functions</span></code>, <code class="docutils literal notranslate"><span class="pre">UDT</span></code> fields, <code class="docutils literal notranslate"><span class="pre">writetime</span></code> or <code class="docutils literal notranslate"><span class="pre">ttl</span></code> are selected together with
+aggregate functions, the values returned for them will be the ones of the first row matching the query.</p>
+<div class="section" id="native-aggregates">
+<h3>Native aggregates<a class="headerlink" href="#native-aggregates" title="Permalink to this headline">¶</a></h3>
+<div class="section" id="count">
+<span id="count-function"></span><h4>Count<a class="headerlink" href="#count" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">count</span></code> function can be used to count the rows returned by a query. Example:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="k">COUNT</span> <span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
+<span class="k">SELECT</span> <span class="k">COUNT</span> <span class="p">(</span><span class="mf">1</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>It also can be used to count the non null value of a given column:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="k">COUNT</span> <span class="p">(</span><span class="n">scores</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="max-and-min">
+<h4>Max and Min<a class="headerlink" href="#max-and-min" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">max</span></code> and <code class="docutils literal notranslate"><span class="pre">min</span></code> functions can be used to compute the maximum and the minimum value returned by a query for a
+given column. For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">MIN</span> <span class="p">(</span><span class="n">players</span><span class="p">),</span> <span class="n">MAX</span> <span class="p">(</span><span class="n">players</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span> <span class="k">WHERE</span> <span class="n">game</span> <span class="o">=</span> <span class="s1">&#39;quake&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="sum">
+<h4>Sum<a class="headerlink" href="#sum" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">sum</span></code> function can be used to sum up all the values returned by a query for a given column. For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">SUM</span> <span class="p">(</span><span class="n">players</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="avg">
+<h4>Avg<a class="headerlink" href="#avg" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">avg</span></code> function can be used to compute the average of all the values returned by a query for a given column. For
+instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">AVG</span> <span class="p">(</span><span class="n">players</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="user-defined-aggregates">
+<span id="user-defined-aggregates-functions"></span><h3>User-Defined Aggregates<a class="headerlink" href="#user-defined-aggregates" title="Permalink to this headline">¶</a></h3>
+<p>User-defined aggregates allow the creation of custom aggregate functions. Common examples of aggregate functions are
+<em>count</em>, <em>min</em>, and <em>max</em>.</p>
+<p>Each aggregate requires an <em>initial state</em> (<code class="docutils literal notranslate"><span class="pre">INITCOND</span></code>, which defaults to <code class="docutils literal notranslate"><span class="pre">null</span></code>) of type <code class="docutils literal notranslate"><span class="pre">STYPE</span></code>. The first
+argument of the state function must have type <code class="docutils literal notranslate"><span class="pre">STYPE</span></code>. The remaining arguments of the state function must match the
+types of the user-defined aggregate arguments. The state function is called once for each row, and the value returned by
+the state function becomes the new state. After all rows are processed, the optional <code class="docutils literal notranslate"><span class="pre">FINALFUNC</span></code> is executed with last
+state value as its argument.</p>
+<p><code class="docutils literal notranslate"><span class="pre">STYPE</span></code> is mandatory in order to be able to distinguish possibly overloaded versions of the state and/or final
+function (since the overload can appear after creation of the aggregate).</p>
+<p>User-defined aggregates can be used in <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement.</p>
+<p>A complete working example for user-defined aggregates (assuming that a keyspace has been selected using the <code class="docutils literal notranslate"><span class="pre">USE</span></code>
+statement):</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">OR</span> <span class="k">REPLACE</span> <span class="k">FUNCTION</span> <span class="n">averageState</span><span class="p">(</span><span class="n">state</span> <span class="k">tuple</span><span class="o">&lt;</span><span class="nb">int</span><span class="p">,</span><span class="nb">bigint</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">val</span> <span class="nb">int</span><span class="p">)</span>
+    <span class="k">CALLED</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="k">tuple</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">val</span> <span class="o">!=</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">state</span><span class="p">.</span><span class="na">setInt</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">state</span><span class="p">.</span><span class="na">getInt</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
+            <span class="n">state</span><span class="p">.</span><span class="na">setLong</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">state</span><span class="p">.</span><span class="na">getLong</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">val</span><span class="p">.</span><span class="na">intValue</span><span class="p">());</span>
+        <span class="p">}</span>
+        <span class="k">return</span> <span class="n">state</span><span class="p">;</span>
+    <span class="s">$$</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">OR</span> <span class="k">REPLACE</span> <span class="k">FUNCTION</span> <span class="n">averageFinal</span> <span class="p">(</span><span class="n">state</span> <span class="k">tuple</span><span class="o">&lt;</span><span class="nb">int</span><span class="p">,</span><span class="nb">bigint</span><span class="o">&gt;</span><span class="p">)</span>
+    <span class="k">CALLED</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="nb">double</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span>
+        <span class="kt">double</span> <span class="n">r</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="p">.</span><span class="na">getInt</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
+        <span class="n">r</span> <span class="o">=</span> <span class="n">state</span><span class="p">.</span><span class="na">getLong</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+        <span class="n">r</span> <span class="o">/=</span> <span class="n">state</span><span class="p">.</span><span class="na">getInt</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+        <span class="k">return</span> <span class="n">Double</span><span class="p">.</span><span class="na">valueOf</span><span class="p">(</span><span class="n">r</span><span class="p">);</span>
+    <span class="s">$$</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">OR</span> <span class="k">REPLACE</span> <span class="k">AGGREGATE</span> <span class="n">average</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span>
+    <span class="k">SFUNC</span> <span class="n">averageState</span>
+    <span class="k">STYPE</span> <span class="k">tuple</span>
+    <span class="k">FINALFUNC</span> <span class="n">averageFinal</span>
+    <span class="k">INITCOND</span> <span class="p">(</span><span class="mf">0</span><span class="p">,</span> <span class="mf">0</span><span class="p">);</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">atable</span> <span class="p">(</span>
+    <span class="n">pk</span> <span class="nb">int</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">val</span> <span class="nb">int</span>
+<span class="p">);</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">atable</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">1</span><span class="p">,</span><span class="mf">1</span><span class="p">);</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">atable</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">2</span><span class="p">,</span><span class="mf">2</span><span class="p">);</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">atable</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="mf">3</span><span class="p">);</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">atable</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">4</span><span class="p">,</span><span class="mf">4</span><span class="p">);</span>
+
+<span class="k">SELECT</span> <span class="n">average</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">atable</span><span class="p">;</span>
+</pre></div>
+</div>
+<div class="section" id="create-aggregate">
+<span id="create-aggregate-statement"></span><h4>CREATE AGGREGATE<a class="headerlink" href="#create-aggregate" title="Permalink to this headline">¶</a></h4>
+<p>Creating (or replacing) a user-defined aggregate function uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-aggregate-statement">create_aggregate_statement</strong> ::=  CREATE [ OR REPLACE ] AGGREGATE [ IF NOT EXISTS ]
+                                    <a class="reference internal" href="#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> '(' <a class="reference internal" href="#grammar-token-arguments-signature"><code class="xref docutils literal notranslate"><span class="pre">arguments_signature</span></code></a> ')'
+                                    SFUNC <a class="reference internal" href="#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a>
+                                    STYPE <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a>
+                                    [ FINALFUNC <a class="reference internal" href="#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> ]
+                                    [ INITCOND <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> ]
+</pre>
+<p>See above for a complete example.</p>
+<p><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> with the optional <code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> keywords either creates an aggregate or replaces an existing one
+with the same signature. A <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> without <code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> fails if an aggregate with the same signature
+already exists.</p>
+<p><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> with the optional <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> keywords either creates an aggregate if it does not already
+exist.</p>
+<p><code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> and <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> cannot be used together.</p>
+<p><code class="docutils literal notranslate"><span class="pre">STYPE</span></code> defines the type of the state value and must be specified.</p>
+<p>The optional <code class="docutils literal notranslate"><span class="pre">INITCOND</span></code> defines the initial state value for the aggregate. It defaults to <code class="docutils literal notranslate"><span class="pre">null</span></code>. A non-<code class="docutils literal notranslate"><span class="pre">null</span></code>
+<code class="docutils literal notranslate"><span class="pre">INITCOND</span></code> must be specified for state functions that are declared with <code class="docutils literal notranslate"><span class="pre">RETURNS</span> <span class="pre">NULL</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code>.</p>
+<p><code class="docutils literal notranslate"><span class="pre">SFUNC</span></code> references an existing function to be used as the state modifying function. The type of first argument of the
+state function must match <code class="docutils literal notranslate"><span class="pre">STYPE</span></code>. The remaining argument types of the state function must match the argument types of
+the aggregate function. State is not updated for state functions declared with <code class="docutils literal notranslate"><span class="pre">RETURNS</span> <span class="pre">NULL</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code> and called
+with <code class="docutils literal notranslate"><span class="pre">null</span></code>.</p>
+<p>The optional <code class="docutils literal notranslate"><span class="pre">FINALFUNC</span></code> is called just before the aggregate result is returned. It must take only one argument with
+type <code class="docutils literal notranslate"><span class="pre">STYPE</span></code>. The return type of the <code class="docutils literal notranslate"><span class="pre">FINALFUNC</span></code> may be a different type. A final function declared with <code class="docutils literal notranslate"><span class="pre">RETURNS</span>
+<span class="pre">NULL</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code> means that the aggregate’s return value will be <code class="docutils literal notranslate"><span class="pre">null</span></code>, if the last state is <code class="docutils literal notranslate"><span class="pre">null</span></code>.</p>
+<p>If no <code class="docutils literal notranslate"><span class="pre">FINALFUNC</span></code> is defined, the overall return type of the aggregate function is <code class="docutils literal notranslate"><span class="pre">STYPE</span></code>. If a <code class="docutils literal notranslate"><span class="pre">FINALFUNC</span></code> is
+defined, it is the return type of that function.</p>
+</div>
+<div class="section" id="drop-aggregate">
+<span id="drop-aggregate-statement"></span><h4>DROP AGGREGATE<a class="headerlink" href="#drop-aggregate" title="Permalink to this headline">¶</a></h4>
+<p>Dropping an user-defined aggregate function uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-aggregate-statement">drop_aggregate_statement</strong> ::=  DROP AGGREGATE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> [ '(' <a class="reference internal" href="#grammar-token-arguments-signature"><code class="xref docutils literal notranslate"><span class="pre">arguments_signature</span></code></a> ')' ]
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DROP</span> <span class="k">AGGREGATE</span> <span class="n">myAggregate</span><span class="p">;</span>
+<span class="k">DROP</span> <span class="k">AGGREGATE</span> <span class="n">myKeyspace</span><span class="mf">.</span><span class="n">anAggregate</span><span class="p">;</span>
+<span class="k">DROP</span> <span class="k">AGGREGATE</span> <span class="n">someAggregate</span> <span class="p">(</span> <span class="nb">int</span> <span class="p">);</span>
+<span class="k">DROP</span> <span class="k">AGGREGATE</span> <span class="n">someAggregate</span> <span class="p">(</span> <span class="nb">text</span> <span class="p">);</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> statement removes an aggregate created using <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code>. You must specify the argument
+types of the aggregate to drop if there are multiple aggregates with the same name but a different signature (overloaded
+aggregates).</p>
+<p><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> with the optional <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> keywords drops an aggregate if it exists, and does nothing if a
+function with the signature does not exist.</p>
+</div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="json.html" class="btn btn-default pull-right " role="button" title="JSON Support" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="security.html" class="btn btn-default" role="button" title="Security" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/cql/index.html b/src/doc/3.11.11/cql/index.html
new file mode 100644
index 0000000..2d27861
--- /dev/null
+++ b/src/doc/3.11.11/cql/index.html
@@ -0,0 +1,239 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "The Cassandra Query Language (CQL)"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="next" title="Definitions" href="definitions.html"/>
+      <link rel="prev" title="Data Modeling" href="../data_modeling/index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">The Cassandra Query Language (CQL)</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="the-cassandra-query-language-cql">
+<span id="cql"></span><h1>The Cassandra Query Language (CQL)<a class="headerlink" href="#the-cassandra-query-language-cql" title="Permalink to this headline">¶</a></h1>
+<p>This document describes the Cassandra Query Language (CQL) <a class="footnote-reference" href="#id2" id="id1">[1]</a>. Note that this document describes the last version of
+the languages. However, the <a class="reference external" href="#changes">changes</a> section provides the diff between the different versions of CQL.</p>
+<p>CQL offers a model close to SQL in the sense that data is put in <em>tables</em> containing <em>rows</em> of <em>columns</em>. For
+that reason, when used in this document, these terms (tables, rows and columns) have the same definition than they have
+in SQL. But please note that as such, they do <strong>not</strong> refer to the concept of rows and columns found in the deprecated
+thrift API (and earlier version 1 and 2 of CQL).</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="definitions.html">Definitions</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#conventions">Conventions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#identifiers">Identifiers and keywords</a></li>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#constants">Constants</a></li>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#terms">Terms</a></li>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#comments">Comments</a></li>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#statements">Statements</a></li>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#prepared-statements">Prepared Statements</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="types.html">Data Types</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="types.html#native-types">Native Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#working-with-timestamps">Working with timestamps</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#working-with-dates">Working with dates</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#working-with-times">Working with times</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#working-with-durations">Working with durations</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#collections">Collections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#user-defined-types">User-Defined Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#tuples">Tuples</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#custom-types">Custom Types</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="ddl.html">Data Definition</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#common-definitions">Common definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#create-keyspace">CREATE KEYSPACE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#use">USE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#alter-keyspace">ALTER KEYSPACE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#drop-keyspace">DROP KEYSPACE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#create-table">CREATE TABLE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#alter-table">ALTER TABLE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#drop-table">DROP TABLE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#truncate">TRUNCATE</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="dml.html">Data Manipulation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="dml.html#select">SELECT</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html#insert">INSERT</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html#update">UPDATE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html#delete">DELETE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html#batch">BATCH</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="indexes.html">Secondary Indexes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html#create-index">CREATE INDEX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html#drop-index">DROP INDEX</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="mvs.html">Materialized Views</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html#create-materialized-view">CREATE MATERIALIZED VIEW</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html#alter-materialized-view">ALTER MATERIALIZED VIEW</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html#drop-materialized-view">DROP MATERIALIZED VIEW</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="security.html#database-roles">Database Roles</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#users">Users</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#data-control">Data Control</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="functions.html">Functions</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="functions.html#scalar-functions">Scalar functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html#aggregate-functions">Aggregate functions</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="json.html">JSON Support</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="json.html#select-json">SELECT JSON</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html#insert-json">INSERT JSON</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html#json-encoding-of-cassandra-data-types">JSON Encoding of Cassandra Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html#the-fromjson-function">The fromJson() Function</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html#the-tojson-function">The toJson() Function</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="triggers.html">Triggers</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html#create-trigger">CREATE TRIGGER</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html#drop-trigger">DROP TRIGGER</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="appendices.html">Appendices</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html#appendix-a-cql-keywords">Appendix A: CQL Keywords</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html#appendix-b-cql-reserved-types">Appendix B: CQL Reserved Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html#appendix-c-dropping-compact-storage">Appendix C: Dropping Compact Storage</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="changes.html">Changes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id1">3.4.4</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id2">3.4.3</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id5">3.4.2</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id6">3.4.1</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id7">3.4.0</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id8">3.3.1</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id9">3.3.0</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id10">3.2.0</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id11">3.1.7</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id12">3.1.6</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id13">3.1.5</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id14">3.1.4</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id15">3.1.3</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id16">3.1.2</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id17">3.1.1</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id18">3.1.0</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id19">3.0.5</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id20">3.0.4</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id21">3.0.3</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id22">3.0.2</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id23">3.0.1</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#versioning">Versioning</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<table class="docutils footnote" frame="void" id="id2" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td>Technically, this document CQL version 3, which is not backward compatible with CQL version 1 and 2 (which have
+been deprecated and remove) and differs from it in numerous ways.</td></tr>
+</tbody>
+</table>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="definitions.html" class="btn btn-default pull-right " role="button" title="Definitions" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../data_modeling/index.html" class="btn btn-default" role="button" title="Data Modeling" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/cql/indexes.html b/src/doc/3.11.11/cql/indexes.html
new file mode 100644
index 0000000..f6d7cbd
--- /dev/null
+++ b/src/doc/3.11.11/cql/indexes.html
@@ -0,0 +1,168 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Secondary Indexes"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Materialized Views" href="mvs.html"/>
+      <link rel="prev" title="Data Manipulation" href="dml.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Secondary Indexes</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#create-index">CREATE INDEX</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#drop-index">DROP INDEX</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="secondary-indexes">
+<span id="id1"></span><h1>Secondary Indexes<a class="headerlink" href="#secondary-indexes" title="Permalink to this headline">¶</a></h1>
+<p>CQL supports creating secondary indexes on tables, allowing queries on the table to use those indexes. A secondary index
+is identified by a name defined by:</p>
+<pre>
+<strong id="grammar-token-index-name">index_name</strong> ::=  re('[a-zA-Z_0-9]+')
+</pre>
+<div class="section" id="create-index">
+<span id="create-index-statement"></span><h2>CREATE INDEX<a class="headerlink" href="#create-index" title="Permalink to this headline">¶</a></h2>
+<p>Creating a secondary index on a table uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-index-statement">create_index_statement</strong> ::=  CREATE [ CUSTOM ] INDEX [ IF NOT EXISTS ] [ <a class="reference internal" href="#grammar-token-index-name"><code class="xref docutils literal notranslate"><span class="pre">index_name</span></code></a> ]
+                                ON <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a> '(' <a class="reference internal" href="#grammar-token-index-identifier"><code class="xref docutils literal notranslate"><span class="pre">index_identifier</span></code></a> ')'
+                                [ USING <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a> [ WITH OPTIONS = <a class="reference internal" href="types.html#grammar-token-map-literal"><code class="xref docutils literal notranslate"><span class="pre">map_literal</span></code></a> ] ]
+<strong id="grammar-token-index-identifier">index_identifier      </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a>
+                           | ( KEYS | VALUES | ENTRIES | FULL ) '(' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ')'
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">INDEX</span> <span class="n">userIndex</span> <span class="k">ON</span> <span class="n">NerdMovies</span> <span class="p">(</span><span class="k">user</span><span class="p">);</span>
+<span class="k">CREATE</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="n">Mutants</span> <span class="p">(</span><span class="n">abilityId</span><span class="p">);</span>
+<span class="k">CREATE</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="k">users</span> <span class="p">(</span><span class="k">keys</span><span class="p">(</span><span class="n">favs</span><span class="p">));</span>
+<span class="k">CREATE</span> <span class="k">CUSTOM</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="k">users</span> <span class="p">(</span><span class="n">email</span><span class="p">)</span> <span class="k">USING</span> <span class="s1">&#39;path.to.the.IndexClass&#39;</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">CUSTOM</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="k">users</span> <span class="p">(</span><span class="n">email</span><span class="p">)</span> <span class="k">USING</span> <span class="s1">&#39;path.to.the.IndexClass&#39;</span> <span class="k">WITH</span> <span class="k">OPTIONS</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;storage&#39;</span><span class="p">:</span> <span class="s1">&#39;/mnt/ssd/indexes/&#39;</span><span class="p">};</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> statement is used to create a new (automatic) secondary index for a given (existing) column in a
+given table. A name for the index itself can be specified before the <code class="docutils literal notranslate"><span class="pre">ON</span></code> keyword, if desired. If data already exists
+for the column, it will be indexed asynchronously. After the index is created, new data for the column is indexed
+automatically at insertion time.</p>
+<p>Attempting to create an already existing index will return an error unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is used. If it
+is used, the statement will be a no-op if the index already exists.</p>
+<div class="section" id="indexes-on-map-keys">
+<h3>Indexes on Map Keys<a class="headerlink" href="#indexes-on-map-keys" title="Permalink to this headline">¶</a></h3>
+<p>When creating an index on a <a class="reference internal" href="types.html#maps"><span class="std std-ref">maps</span></a>, you may index either the keys or the values. If the column identifier is
+placed within the <code class="docutils literal notranslate"><span class="pre">keys()</span></code> function, the index will be on the map keys, allowing you to use <code class="docutils literal notranslate"><span class="pre">CONTAINS</span> <span class="pre">KEY</span></code> in
+<code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clauses. Otherwise, the index will be on the map values.</p>
+</div>
+</div>
+<div class="section" id="drop-index">
+<span id="drop-index-statement"></span><h2>DROP INDEX<a class="headerlink" href="#drop-index" title="Permalink to this headline">¶</a></h2>
+<p>Dropping a secondary index uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">INDEX</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-index-statement">drop_index_statement</strong> ::=  DROP INDEX [ IF EXISTS ] <a class="reference internal" href="#grammar-token-index-name"><code class="xref docutils literal notranslate"><span class="pre">index_name</span></code></a>
+</pre>
+<p>The <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">INDEX</span></code> statement is used to drop an existing secondary index. The argument of the statement is the index
+name, which may optionally specify the keyspace of the index.</p>
+<p>If the index does not exists, the statement will return an error, unless <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used in which case the
+operation is a no-op.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="mvs.html" class="btn btn-default pull-right " role="button" title="Materialized Views" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="dml.html" class="btn btn-default" role="button" title="Data Manipulation" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/cql/json.html b/src/doc/3.11.11/cql/json.html
new file mode 100644
index 0000000..a514b7c
--- /dev/null
+++ b/src/doc/3.11.11/cql/json.html
@@ -0,0 +1,315 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "JSON Support"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Triggers" href="triggers.html"/>
+      <link rel="prev" title="Functions" href="functions.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">JSON Support</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#select-json">SELECT JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#insert-json">INSERT JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#json-encoding-of-cassandra-data-types">JSON Encoding of Cassandra Data Types</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#the-fromjson-function">The fromJson() Function</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#the-tojson-function">The toJson() Function</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="json-support">
+<span id="cql-json"></span><h1>JSON Support<a class="headerlink" href="#json-support" title="Permalink to this headline">¶</a></h1>
+<p>Cassandra 2.2 introduces JSON support to <a class="reference internal" href="dml.html#select-statement"><span class="std std-ref">SELECT</span></a> and <a class="reference internal" href="dml.html#insert-statement"><span class="std std-ref">INSERT</span></a>
+statements. This support does not fundamentally alter the CQL API (for example, the schema is still enforced), it simply
+provides a convenient way to work with JSON documents.</p>
+<div class="section" id="select-json">
+<h2>SELECT JSON<a class="headerlink" href="#select-json" title="Permalink to this headline">¶</a></h2>
+<p>With <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statements, the <code class="docutils literal notranslate"><span class="pre">JSON</span></code> keyword can be used to return each row as a single <code class="docutils literal notranslate"><span class="pre">JSON</span></code> encoded map. The
+remainder of the <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement behavior is the same.</p>
+<p>The result map keys are the same as the column names in a normal result set. For example, a statement like <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">JSON</span>
+<span class="pre">a,</span> <span class="pre">ttl(b)</span> <span class="pre">FROM</span> <span class="pre">...</span></code> would result in a map with keys <code class="docutils literal notranslate"><span class="pre">&quot;a&quot;</span></code> and <code class="docutils literal notranslate"><span class="pre">&quot;ttl(b)&quot;</span></code>. However, this is one notable exception:
+for symmetry with <code class="docutils literal notranslate"><span class="pre">INSERT</span> <span class="pre">JSON</span></code> behavior, case-sensitive column names with upper-case letters will be surrounded with
+double quotes. For example, <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">JSON</span> <span class="pre">myColumn</span> <span class="pre">FROM</span> <span class="pre">...</span></code> would result in a map key <code class="docutils literal notranslate"><span class="pre">&quot;\&quot;myColumn\&quot;&quot;</span></code> (note the
+escaped quotes).</p>
+<p>The map values will <code class="docutils literal notranslate"><span class="pre">JSON</span></code>-encoded representations (as described below) of the result set values.</p>
+</div>
+<div class="section" id="insert-json">
+<h2>INSERT JSON<a class="headerlink" href="#insert-json" title="Permalink to this headline">¶</a></h2>
+<p>With <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statements, the new <code class="docutils literal notranslate"><span class="pre">JSON</span></code> keyword can be used to enable inserting a <code class="docutils literal notranslate"><span class="pre">JSON</span></code> encoded map as a single
+row. The format of the <code class="docutils literal notranslate"><span class="pre">JSON</span></code> map should generally match that returned by a <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">JSON</span></code> statement on the same
+table. In particular, case-sensitive column names should be surrounded with double quotes. For example, to insert into a
+table with two columns named “myKey” and “value”, you would do the following:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">mytable</span> <span class="k">JSON</span> <span class="s1">&#39;{ &quot;\&quot;myKey\&quot;&quot;: 0, &quot;value&quot;: 0}&#39;</span>
+</pre></div>
+</div>
+<p>By default (or if <code class="docutils literal notranslate"><span class="pre">DEFAULT</span> <span class="pre">NULL</span></code> is explicitly used), a column omitted from the <code class="docutils literal notranslate"><span class="pre">JSON</span></code> map will be set to <code class="docutils literal notranslate"><span class="pre">NULL</span></code>,
+meaning that any pre-existing value for that column will be removed (resulting in a tombstone being created).
+Alternatively, if the <code class="docutils literal notranslate"><span class="pre">DEFAULT</span> <span class="pre">UNSET</span></code> directive is used after the value, omitted column values will be left unset,
+meaning that pre-existing values for those column will be preserved.</p>
+</div>
+<div class="section" id="json-encoding-of-cassandra-data-types">
+<h2>JSON Encoding of Cassandra Data Types<a class="headerlink" href="#json-encoding-of-cassandra-data-types" title="Permalink to this headline">¶</a></h2>
+<p>Where possible, Cassandra will represent and accept data types in their native <code class="docutils literal notranslate"><span class="pre">JSON</span></code> representation. Cassandra will
+also accept string representations matching the CQL literal format for all single-field types. For example, floats,
+ints, UUIDs, and dates can be represented by CQL literal strings. However, compound types, such as collections, tuples,
+and user-defined types must be represented by native <code class="docutils literal notranslate"><span class="pre">JSON</span></code> collections (maps and lists) or a JSON-encoded string
+representation of the collection.</p>
+<p>The following table describes the encodings that Cassandra will accept in <code class="docutils literal notranslate"><span class="pre">INSERT</span> <span class="pre">JSON</span></code> values (and <code class="docutils literal notranslate"><span class="pre">fromJson()</span></code>
+arguments) as well as the format Cassandra will use when returning data for <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">JSON</span></code> statements (and
+<code class="docutils literal notranslate"><span class="pre">fromJson()</span></code>):</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="13%" />
+<col width="21%" />
+<col width="13%" />
+<col width="54%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Type</th>
+<th class="head">Formats accepted</th>
+<th class="head">Return format</th>
+<th class="head">Notes</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ascii</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>Uses JSON’s <code class="docutils literal notranslate"><span class="pre">\u</span></code> character escape</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">bigint</span></code></td>
+<td>integer, string</td>
+<td>integer</td>
+<td>String must be valid 64 bit integer</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">blob</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>String should be 0x followed by an even number of hex digits</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">boolean</span></code></td>
+<td>boolean, string</td>
+<td>boolean</td>
+<td>String must be “true” or “false”</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">date</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>Date in format <code class="docutils literal notranslate"><span class="pre">YYYY-MM-DD</span></code>, timezone UTC</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">decimal</span></code></td>
+<td>integer, float, string</td>
+<td>float</td>
+<td>May exceed 32 or 64-bit IEEE-754 floating point precision in
+client-side decoder</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">double</span></code></td>
+<td>integer, float, string</td>
+<td>float</td>
+<td>String must be valid integer or float</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">float</span></code></td>
+<td>integer, float, string</td>
+<td>float</td>
+<td>String must be valid integer or float</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">inet</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>IPv4 or IPv6 address</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">int</span></code></td>
+<td>integer, string</td>
+<td>integer</td>
+<td>String must be valid 32 bit integer</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">list</span></code></td>
+<td>list, string</td>
+<td>list</td>
+<td>Uses JSON’s native list representation</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">map</span></code></td>
+<td>map, string</td>
+<td>map</td>
+<td>Uses JSON’s native map representation</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">smallint</span></code></td>
+<td>integer, string</td>
+<td>integer</td>
+<td>String must be valid 16 bit integer</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">set</span></code></td>
+<td>list, string</td>
+<td>list</td>
+<td>Uses JSON’s native list representation</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">text</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>Uses JSON’s <code class="docutils literal notranslate"><span class="pre">\u</span></code> character escape</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">time</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>Time of day in format <code class="docutils literal notranslate"><span class="pre">HH-MM-SS[.fffffffff]</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code></td>
+<td>integer, string</td>
+<td>string</td>
+<td>A timestamp. Strings constant allows to input <a class="reference internal" href="types.html#timestamps"><span class="std std-ref">timestamps
+as dates</span></a>. Datestamps with format <code class="docutils literal notranslate"><span class="pre">YYYY-MM-DD</span>
+<span class="pre">HH:MM:SS.SSS</span></code> are returned.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>Type 1 UUID. See <a class="reference internal" href="definitions.html#grammar-token-constant"><code class="xref std std-token docutils literal notranslate"><span class="pre">constant</span></code></a> for the UUID format</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code></td>
+<td>integer, string</td>
+<td>integer</td>
+<td>String must be valid 8 bit integer</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">tuple</span></code></td>
+<td>list, string</td>
+<td>list</td>
+<td>Uses JSON’s native list representation</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">UDT</span></code></td>
+<td>map, string</td>
+<td>map</td>
+<td>Uses JSON’s native map representation with field names as keys</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">uuid</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>See <a class="reference internal" href="definitions.html#grammar-token-constant"><code class="xref std std-token docutils literal notranslate"><span class="pre">constant</span></code></a> for the UUID format</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>Uses JSON’s <code class="docutils literal notranslate"><span class="pre">\u</span></code> character escape</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">varint</span></code></td>
+<td>integer, string</td>
+<td>integer</td>
+<td>Variable length; may overflow 32 or 64 bit integers in
+client-side decoder</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="the-fromjson-function">
+<h2>The fromJson() Function<a class="headerlink" href="#the-fromjson-function" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">fromJson()</span></code> function may be used similarly to <code class="docutils literal notranslate"><span class="pre">INSERT</span> <span class="pre">JSON</span></code>, but for a single column value. It may only be used
+in the <code class="docutils literal notranslate"><span class="pre">VALUES</span></code> clause of an <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statement or as one of the column values in an <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">DELETE</span></code>, or
+<code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement. For example, it cannot be used in the selection clause of a <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement.</p>
+</div>
+<div class="section" id="the-tojson-function">
+<h2>The toJson() Function<a class="headerlink" href="#the-tojson-function" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">toJson()</span></code> function may be used similarly to <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">JSON</span></code>, but for a single column value. It may only be used
+in the selection clause of a <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="triggers.html" class="btn btn-default pull-right " role="button" title="Triggers" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="functions.html" class="btn btn-default" role="button" title="Functions" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/cql/mvs.html b/src/doc/3.11.11/cql/mvs.html
new file mode 100644
index 0000000..f6172eb
--- /dev/null
+++ b/src/doc/3.11.11/cql/mvs.html
@@ -0,0 +1,241 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Materialized Views"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Security" href="security.html"/>
+      <link rel="prev" title="Secondary Indexes" href="indexes.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Materialized Views</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#create-materialized-view">CREATE MATERIALIZED VIEW</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#alter-materialized-view">ALTER MATERIALIZED VIEW</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#drop-materialized-view">DROP MATERIALIZED VIEW</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="materialized-views">
+<span id="id1"></span><h1>Materialized Views<a class="headerlink" href="#materialized-views" title="Permalink to this headline">¶</a></h1>
+<p>Materialized views names are defined by:</p>
+<pre>
+<strong id="grammar-token-view-name">view_name</strong> ::=  re('[a-zA-Z_0-9]+')
+</pre>
+<div class="section" id="create-materialized-view">
+<span id="create-materialized-view-statement"></span><h2>CREATE MATERIALIZED VIEW<a class="headerlink" href="#create-materialized-view" title="Permalink to this headline">¶</a></h2>
+<p>You can create a materialized view on a table using a <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">MATERIALIZED</span> <span class="pre">VIEW</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-materialized-view-statement">create_materialized_view_statement</strong> ::=  CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-view-name"><code class="xref docutils literal notranslate"><span class="pre">view_name</span></code></a> AS
+                                            <a class="reference internal" href="dml.html#grammar-token-select-statement"><code class="xref docutils literal notranslate"><span class="pre">select_statement</span></code></a>
+                                            PRIMARY KEY '(' <a class="reference internal" href="ddl.html#grammar-token-primary-key"><code class="xref docutils literal notranslate"><span class="pre">primary_key</span></code></a> ')'
+                                            WITH <a class="reference internal" href="ddl.html#grammar-token-table-options"><code class="xref docutils literal notranslate"><span class="pre">table_options</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">monkeySpecies_by_population</span> <span class="k">AS</span>
+    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">monkeySpecies</span>
+    <span class="k">WHERE</span> <span class="n">population</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">species</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">population</span><span class="p">,</span> <span class="n">species</span><span class="p">)</span>
+    <span class="k">WITH</span> <span class="n">comment</span><span class="o">=</span><span class="s1">&#39;Allow query by population instead of species&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">MATERIALIZED</span> <span class="pre">VIEW</span></code> statement creates a new materialized view. Each such view is a set of <em>rows</em> which
+corresponds to rows which are present in the underlying, or base, table specified in the <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement. A
+materialized view cannot be directly updated, but updates to the base table will cause corresponding updates in the
+view.</p>
+<p>Creating a materialized view has 3 main parts:</p>
+<ul class="simple">
+<li>The <a class="reference internal" href="#mv-select"><span class="std std-ref">select statement</span></a> that restrict the data included in the view.</li>
+<li>The <a class="reference internal" href="#mv-primary-key"><span class="std std-ref">primary key</span></a> definition for the view.</li>
+<li>The <a class="reference internal" href="#mv-options"><span class="std std-ref">options</span></a> for the view.</li>
+</ul>
+<p>Attempting to create an already existing materialized view will return an error unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is
+used. If it is used, the statement will be a no-op if the materialized view already exists.</p>
+<div class="section" id="mv-select-statement">
+<span id="mv-select"></span><h3>MV select statement<a class="headerlink" href="#mv-select-statement" title="Permalink to this headline">¶</a></h3>
+<p>The select statement of a materialized view creation defines which of the base table is included in the view. That
+statement is limited in a number of ways:</p>
+<ul class="simple">
+<li>the <a class="reference internal" href="dml.html#selection-clause"><span class="std std-ref">selection</span></a> is limited to those that only select columns of the base table. In other
+words, you can’t use any function (aggregate or not), casting, term, etc. Aliases are also not supported. You can
+however use <cite>*</cite> as a shortcut of selecting all columns. Further, <a class="reference internal" href="ddl.html#static-columns"><span class="std std-ref">static columns</span></a> cannot be
+included in a materialized view (which means <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">*</span></code> isn’t allowed if the base table has static columns).</li>
+<li>the <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clause have the following restrictions:<ul>
+<li>it cannot include any <a class="reference internal" href="definitions.html#grammar-token-bind-marker"><code class="xref std std-token docutils literal notranslate"><span class="pre">bind_marker</span></code></a>.</li>
+<li>the columns that are not part of the <em>base table</em> primary key can only be restricted by an <code class="docutils literal notranslate"><span class="pre">IS</span> <span class="pre">NOT</span> <span class="pre">NULL</span></code>
+restriction. No other restriction is allowed.</li>
+<li>as the columns that are part of the <em>view</em> primary key cannot be null, they must always be at least restricted by a
+<code class="docutils literal notranslate"><span class="pre">IS</span> <span class="pre">NOT</span> <span class="pre">NULL</span></code> restriction (or any other restriction, but they must have one).</li>
+</ul>
+</li>
+<li>it cannot have neither an <a class="reference internal" href="dml.html#ordering-clause"><span class="std std-ref">ordering clause</span></a>, nor a <a class="reference internal" href="dml.html#limit-clause"><span class="std std-ref">limit</span></a>, nor <a class="reference internal" href="dml.html#allow-filtering"><span class="std std-ref">ALLOW
+FILTERING</span></a>.</li>
+</ul>
+</div>
+<div class="section" id="mv-primary-key">
+<span id="id2"></span><h3>MV primary key<a class="headerlink" href="#mv-primary-key" title="Permalink to this headline">¶</a></h3>
+<p>A view must have a primary key and that primary key must conform to the following restrictions:</p>
+<ul class="simple">
+<li>it must contain all the primary key columns of the base table. This ensures that every row of the view correspond to
+exactly one row of the base table.</li>
+<li>it can only contain a single column that is not a primary key column in the base table.</li>
+</ul>
+<p>So for instance, give the following base table definition:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span>
+    <span class="n">k</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">c1</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">c2</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">v1</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">v2</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">c1</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
+<span class="p">)</span>
+</pre></div>
+</div>
+<p>then the following view definitions are allowed:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">mv1</span> <span class="k">AS</span>
+    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span> <span class="k">WHERE</span> <span class="n">k</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c2</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">c1</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
+
+<span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">mv1</span> <span class="k">AS</span>
+    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span> <span class="k">WHERE</span> <span class="n">k</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c2</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">v1</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">c1</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>but the following ones are <strong>not</strong> allowed:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="c1">// Error: cannot include both v1 and v2 in the primary key as both are not in the base table primary key</span>
+<span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">mv1</span> <span class="k">AS</span>
+    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span> <span class="k">WHERE</span> <span class="n">k</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c2</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">v1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">v1</span><span class="p">,</span> <span class="n">v2</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">c1</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
+
+<span class="c1">// Error: must include k in the primary as it&#39;s a base table primary key column</span>
+<span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">mv1</span> <span class="k">AS</span>
+    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span> <span class="k">WHERE</span> <span class="n">c1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c2</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">c1</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="mv-options">
+<span id="id3"></span><h3>MV options<a class="headerlink" href="#mv-options" title="Permalink to this headline">¶</a></h3>
+<p>A materialized view is internally implemented by a table and as such, creating a MV allows the <a class="reference internal" href="ddl.html#create-table-options"><span class="std std-ref">same options than
+creating a table</span></a>.</p>
+</div>
+</div>
+<div class="section" id="alter-materialized-view">
+<span id="alter-materialized-view-statement"></span><h2>ALTER MATERIALIZED VIEW<a class="headerlink" href="#alter-materialized-view" title="Permalink to this headline">¶</a></h2>
+<p>After creation, you can alter the options of a materialized view using the <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">MATERIALIZED</span> <span class="pre">VIEW</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-alter-materialized-view-statement">alter_materialized_view_statement</strong> ::=  ALTER MATERIALIZED VIEW <a class="reference internal" href="#grammar-token-view-name"><code class="xref docutils literal notranslate"><span class="pre">view_name</span></code></a> WITH <a class="reference internal" href="ddl.html#grammar-token-table-options"><code class="xref docutils literal notranslate"><span class="pre">table_options</span></code></a>
+</pre>
+<p>The options that can be updated are the same than at creation time and thus the <a class="reference internal" href="ddl.html#create-table-options"><span class="std std-ref">same than for tables</span></a>.</p>
+</div>
+<div class="section" id="drop-materialized-view">
+<span id="drop-materialized-view-statement"></span><h2>DROP MATERIALIZED VIEW<a class="headerlink" href="#drop-materialized-view" title="Permalink to this headline">¶</a></h2>
+<p>Dropping a materialized view users the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">MATERIALIZED</span> <span class="pre">VIEW</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-materialized-view-statement">drop_materialized_view_statement</strong> ::=  DROP MATERIALIZED VIEW [ IF EXISTS ] <a class="reference internal" href="#grammar-token-view-name"><code class="xref docutils literal notranslate"><span class="pre">view_name</span></code></a>;
+</pre>
+<p>If the materialized view does not exists, the statement will return an error, unless <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used in which case
+the operation is a no-op.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="security.html" class="btn btn-default pull-right " role="button" title="Security" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="indexes.html" class="btn btn-default" role="button" title="Secondary Indexes" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/cql/security.html b/src/doc/3.11.11/cql/security.html
new file mode 100644
index 0000000..17c7f59
--- /dev/null
+++ b/src/doc/3.11.11/cql/security.html
@@ -0,0 +1,704 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Security"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Functions" href="functions.html"/>
+      <link rel="prev" title="Materialized Views" href="mvs.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Security</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#database-roles">Database Roles</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#users">Users</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#data-control">Data Control</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="security">
+<span id="cql-security"></span><h1>Security<a class="headerlink" href="#security" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="database-roles">
+<span id="cql-roles"></span><h2>Database Roles<a class="headerlink" href="#database-roles" title="Permalink to this headline">¶</a></h2>
+<p>CQL uses database roles to represent users and group of users. Syntactically, a role is defined by:</p>
+<pre>
+<strong id="grammar-token-role-name">role_name</strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a>
+</pre>
+<div class="section" id="create-role">
+<span id="create-role-statement"></span><h3>CREATE ROLE<a class="headerlink" href="#create-role" title="Permalink to this headline">¶</a></h3>
+<p>Creating a role uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-role-statement">create_role_statement</strong> ::=  CREATE ROLE [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+                               [ WITH <a class="reference internal" href="#grammar-token-role-options"><code class="xref docutils literal notranslate"><span class="pre">role_options</span></code></a> ]
+<strong id="grammar-token-role-options">role_options         </strong> ::=  <a class="reference internal" href="#grammar-token-role-option"><code class="xref docutils literal notranslate"><span class="pre">role_option</span></code></a> ( AND <a class="reference internal" href="#grammar-token-role-option"><code class="xref docutils literal notranslate"><span class="pre">role_option</span></code></a> )*
+<strong id="grammar-token-role-option">role_option          </strong> ::=  PASSWORD '=' <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a>
+                          | LOGIN '=' <a class="reference internal" href="definitions.html#grammar-token-boolean"><code class="xref docutils literal notranslate"><span class="pre">boolean</span></code></a>
+                          | SUPERUSER '=' <a class="reference internal" href="definitions.html#grammar-token-boolean"><code class="xref docutils literal notranslate"><span class="pre">boolean</span></code></a>
+                          | OPTIONS '=' <a class="reference internal" href="types.html#grammar-token-map-literal"><code class="xref docutils literal notranslate"><span class="pre">map_literal</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">new_role</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">bob</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_b&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">carlos</span> <span class="k">WITH</span> <span class="k">OPTIONS</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;custom_option1&#39;</span> <span class="p">:</span> <span class="s1">&#39;option1_value&#39;</span><span class="p">,</span> <span class="s1">&#39;custom_option2&#39;</span> <span class="p">:</span> <span class="mf">99</span> <span class="p">};</span>
+</pre></div>
+</div>
+<p>By default roles do not possess <code class="docutils literal notranslate"><span class="pre">LOGIN</span></code> privileges or <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code> status.</p>
+<p><a class="reference internal" href="#cql-permissions"><span class="std std-ref">Permissions</span></a> on database resources are granted to roles; types of resources include keyspaces,
+tables, functions and roles themselves. Roles may be granted to other roles to create hierarchical permissions
+structures; in these hierarchies, permissions and <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code> status are inherited, but the <code class="docutils literal notranslate"><span class="pre">LOGIN</span></code> privilege is
+not.</p>
+<p>If a role has the <code class="docutils literal notranslate"><span class="pre">LOGIN</span></code> privilege, clients may identify as that role when connecting. For the duration of that
+connection, the client will acquire any roles and privileges granted to that role.</p>
+<p>Only a client with with the <code class="docutils literal notranslate"><span class="pre">CREATE</span></code> permission on the database roles resource may issue <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code> requests (see
+the <a class="reference internal" href="#cql-permissions"><span class="std std-ref">relevant section</span></a> below), unless the client is a <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code>. Role management in Cassandra
+is pluggable and custom implementations may support only a subset of the listed options.</p>
+<p>Role names should be quoted if they contain non-alphanumeric characters.</p>
+<div class="section" id="setting-credentials-for-internal-authentication">
+<span id="id1"></span><h4>Setting credentials for internal authentication<a class="headerlink" href="#setting-credentials-for-internal-authentication" title="Permalink to this headline">¶</a></h4>
+<p>Use the <code class="docutils literal notranslate"><span class="pre">WITH</span> <span class="pre">PASSWORD</span></code> clause to set a password for internal authentication, enclosing the password in single
+quotation marks.</p>
+<p>If internal authentication has not been set up or the role does not have <code class="docutils literal notranslate"><span class="pre">LOGIN</span></code> privileges, the <code class="docutils literal notranslate"><span class="pre">WITH</span> <span class="pre">PASSWORD</span></code>
+clause is not necessary.</p>
+</div>
+<div class="section" id="creating-a-role-conditionally">
+<h4>Creating a role conditionally<a class="headerlink" href="#creating-a-role-conditionally" title="Permalink to this headline">¶</a></h4>
+<p>Attempting to create an existing role results in an invalid query condition unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is used.
+If the option is used and the role exists, the statement is a no-op:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">other_role</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="k">IF</span> <span class="k">NOT</span> <span class="k">EXISTS</span> <span class="n">other_role</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="alter-role">
+<span id="alter-role-statement"></span><h3>ALTER ROLE<a class="headerlink" href="#alter-role" title="Permalink to this headline">¶</a></h3>
+<p>Altering a role options uses the <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">ROLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-alter-role-statement">alter_role_statement</strong> ::=  ALTER ROLE <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> WITH <a class="reference internal" href="#grammar-token-role-options"><code class="xref docutils literal notranslate"><span class="pre">role_options</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">ROLE</span> <span class="n">bob</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;PASSWORD_B&#39;</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">false</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Conditions on executing <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">ROLE</span></code> statements:</p>
+<ul class="simple">
+<li>A client must have <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code> status to alter the <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code> status of another role</li>
+<li>A client cannot alter the <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code> status of any role it currently holds</li>
+<li>A client can only modify certain properties of the role with which it identified at login (e.g. <code class="docutils literal notranslate"><span class="pre">PASSWORD</span></code>)</li>
+<li>To modify properties of a role, the client must be granted <code class="docutils literal notranslate"><span class="pre">ALTER</span></code> <a class="reference internal" href="#cql-permissions"><span class="std std-ref">permission</span></a> on that role</li>
+</ul>
+</div>
+<div class="section" id="drop-role">
+<span id="drop-role-statement"></span><h3>DROP ROLE<a class="headerlink" href="#drop-role" title="Permalink to this headline">¶</a></h3>
+<p>Dropping a role uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">ROLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-role-statement">drop_role_statement</strong> ::=  DROP ROLE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+</pre>
+<p><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">ROLE</span></code> requires the client to have <code class="docutils literal notranslate"><span class="pre">DROP</span></code> <a class="reference internal" href="#cql-permissions"><span class="std std-ref">permission</span></a> on the role in question. In
+addition, client may not <code class="docutils literal notranslate"><span class="pre">DROP</span></code> the role with which it identified at login. Finally, only a client with <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code>
+status may <code class="docutils literal notranslate"><span class="pre">DROP</span></code> another <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code> role.</p>
+<p>Attempting to drop a role which does not exist results in an invalid query condition unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> option is
+used. If the option is used and the role does not exist the statement is a no-op.</p>
+</div>
+<div class="section" id="grant-role">
+<span id="grant-role-statement"></span><h3>GRANT ROLE<a class="headerlink" href="#grant-role" title="Permalink to this headline">¶</a></h3>
+<p>Granting a role to another uses the <code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">ROLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-grant-role-statement">grant_role_statement</strong> ::=  GRANT <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> TO <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="n">report_writer</span> <span class="k">TO</span> <span class="n">alice</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This statement grants the <code class="docutils literal notranslate"><span class="pre">report_writer</span></code> role to <code class="docutils literal notranslate"><span class="pre">alice</span></code>. Any permissions granted to <code class="docutils literal notranslate"><span class="pre">report_writer</span></code> are also
+acquired by <code class="docutils literal notranslate"><span class="pre">alice</span></code>.</p>
+<p>Roles are modelled as a directed acyclic graph, so circular grants are not permitted. The following examples result in
+error conditions:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="n">role_a</span> <span class="k">TO</span> <span class="n">role_b</span><span class="p">;</span>
+<span class="k">GRANT</span> <span class="n">role_b</span> <span class="k">TO</span> <span class="n">role_a</span><span class="p">;</span>
+
+<span class="k">GRANT</span> <span class="n">role_a</span> <span class="k">TO</span> <span class="n">role_b</span><span class="p">;</span>
+<span class="k">GRANT</span> <span class="n">role_b</span> <span class="k">TO</span> <span class="n">role_c</span><span class="p">;</span>
+<span class="k">GRANT</span> <span class="n">role_c</span> <span class="k">TO</span> <span class="n">role_a</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="revoke-role">
+<span id="revoke-role-statement"></span><h3>REVOKE ROLE<a class="headerlink" href="#revoke-role" title="Permalink to this headline">¶</a></h3>
+<p>Revoking a role uses the <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">ROLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-revoke-role-statement">revoke_role_statement</strong> ::=  REVOKE <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> FROM <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">REVOKE</span> <span class="n">report_writer</span> <span class="k">FROM</span> <span class="n">alice</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This statement revokes the <code class="docutils literal notranslate"><span class="pre">report_writer</span></code> role from <code class="docutils literal notranslate"><span class="pre">alice</span></code>. Any permissions that <code class="docutils literal notranslate"><span class="pre">alice</span></code> has acquired via the
+<code class="docutils literal notranslate"><span class="pre">report_writer</span></code> role are also revoked.</p>
+</div>
+<div class="section" id="list-roles">
+<span id="list-roles-statement"></span><h3>LIST ROLES<a class="headerlink" href="#list-roles" title="Permalink to this headline">¶</a></h3>
+<p>All the known roles (in the system or granted to specific role) can be listed using the <code class="docutils literal notranslate"><span class="pre">LIST</span> <span class="pre">ROLES</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-list-roles-statement">list_roles_statement</strong> ::=  LIST ROLES [ OF <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> ] [ NORECURSIVE ]
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ROLES</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>returns all known roles in the system, this requires <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code> permission on the database roles resource. And:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ROLES</span> <span class="k">OF</span> <span class="n">alice</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>enumerates all roles granted to <code class="docutils literal notranslate"><span class="pre">alice</span></code>, including those transitively acquired. But:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ROLES</span> <span class="k">OF</span> <span class="n">bob</span> <span class="k">NORECURSIVE</span>
+</pre></div>
+</div>
+<p>lists all roles directly granted to <code class="docutils literal notranslate"><span class="pre">bob</span></code> without including any of the transitively acquired ones.</p>
+</div>
+</div>
+<div class="section" id="users">
+<h2>Users<a class="headerlink" href="#users" title="Permalink to this headline">¶</a></h2>
+<p>Prior to the introduction of roles in Cassandra 2.2, authentication and authorization were based around the concept of a
+<code class="docutils literal notranslate"><span class="pre">USER</span></code>. For backward compatibility, the legacy syntax has been preserved with <code class="docutils literal notranslate"><span class="pre">USER</span></code> centric statements becoming
+synonyms for the <code class="docutils literal notranslate"><span class="pre">ROLE</span></code> based equivalents. In other words, creating/updating a user is just a different syntax for
+creating/updating a role.</p>
+<div class="section" id="create-user">
+<span id="create-user-statement"></span><h3>CREATE USER<a class="headerlink" href="#create-user" title="Permalink to this headline">¶</a></h3>
+<p>Creating a user uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">USER</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-user-statement">create_user_statement</strong> ::=  CREATE USER [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> [ WITH PASSWORD <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a> ] [ <a class="reference internal" href="#grammar-token-user-option"><code class="xref docutils literal notranslate"><span class="pre">user_option</span></code></a> ]
+<strong id="grammar-token-user-option">user_option          </strong> ::=  SUPERUSER | NOSUPERUSER
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">SUPERUSER</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">USER</span> <span class="n">bob</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_b&#39;</span> <span class="k">NOSUPERUSER</span><span class="p">;</span>
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">USER</span></code> is equivalent to <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code> where the <code class="docutils literal notranslate"><span class="pre">LOGIN</span></code> option is <code class="docutils literal notranslate"><span class="pre">true</span></code>. So, the following pairs of
+statements are equivalent:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">SUPERUSER</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">USER</span> <span class="k">IF</span> <span class="k">NOT</span> <span class="k">EXISTS</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">SUPERUSER</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="k">IF</span> <span class="k">NOT</span> <span class="k">EXISTS</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">NOSUPERUSER</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">false</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">NOSUPERUSER</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="alter-user">
+<span id="alter-user-statement"></span><h3>ALTER USER<a class="headerlink" href="#alter-user" title="Permalink to this headline">¶</a></h3>
+<p>Altering the options of a user uses the <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">USER</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-alter-user-statement">alter_user_statement</strong> ::=  ALTER USER <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> [ WITH PASSWORD <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a> ] [ <a class="reference internal" href="#grammar-token-user-option"><code class="xref docutils literal notranslate"><span class="pre">user_option</span></code></a> ]
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;PASSWORD_A&#39;</span><span class="p">;</span>
+<span class="k">ALTER</span> <span class="k">USER</span> <span class="n">bob</span> <span class="k">SUPERUSER</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="drop-user">
+<span id="drop-user-statement"></span><h3>DROP USER<a class="headerlink" href="#drop-user" title="Permalink to this headline">¶</a></h3>
+<p>Dropping a user uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">USER</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-user-statement">drop_user_statement</strong> ::=  DROP USER [ IF EXISTS ] <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+</pre>
+</div>
+<div class="section" id="list-users">
+<span id="list-users-statement"></span><h3>LIST USERS<a class="headerlink" href="#list-users" title="Permalink to this headline">¶</a></h3>
+<p>Existing users can be listed using the <code class="docutils literal notranslate"><span class="pre">LIST</span> <span class="pre">USERS</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-list-users-statement">list_users_statement</strong> ::=  LIST USERS
+</pre>
+<p>Note that this statement is equivalent to:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ROLES</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>but only roles with the <code class="docutils literal notranslate"><span class="pre">LOGIN</span></code> privilege are included in the output.</p>
+</div>
+</div>
+<div class="section" id="data-control">
+<h2>Data Control<a class="headerlink" href="#data-control" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="permissions">
+<span id="cql-permissions"></span><h3>Permissions<a class="headerlink" href="#permissions" title="Permalink to this headline">¶</a></h3>
+<p>Permissions on resources are granted to roles; there are several different types of resources in Cassandra and each type
+is modelled hierarchically:</p>
+<ul class="simple">
+<li>The hierarchy of Data resources, Keyspaces and Tables has the structure <code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code> -&gt;
+<code class="docutils literal notranslate"><span class="pre">TABLE</span></code>.</li>
+<li>Function resources have the structure <code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">FUNCTION</span></code></li>
+<li>Resources representing roles have the structure <code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">ROLES</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">ROLE</span></code></li>
+<li>Resources representing JMX ObjectNames, which map to sets of MBeans/MXBeans, have the structure <code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code> -&gt;
+<code class="docutils literal notranslate"><span class="pre">MBEAN</span></code></li>
+</ul>
+<p>Permissions can be granted at any level of these hierarchies and they flow downwards. So granting a permission on a
+resource higher up the chain automatically grants that same permission on all resources lower down. For example,
+granting <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> on a <code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code> automatically grants it on all <code class="docutils literal notranslate"><span class="pre">TABLES</span></code> in that <code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code>. Likewise, granting
+a permission on <code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code> grants it on every defined function, regardless of which keyspace it is scoped in. It
+is also possible to grant permissions on all functions scoped to a particular keyspace.</p>
+<p>Modifications to permissions are visible to existing client sessions; that is, connections need not be re-established
+following permissions changes.</p>
+<p>The full set of available permissions is:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">DROP</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></li>
+</ul>
+<p>Not all permissions are applicable to every type of resource. For instance, <code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code> is only relevant in the context
+of functions or mbeans; granting <code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code> on a resource representing a table is nonsensical. Attempting to <code class="docutils literal notranslate"><span class="pre">GRANT</span></code>
+a permission on resource to which it cannot be applied results in an error response. The following illustrates which
+permissions can be granted on which types of resource, and which statements are enabled by that permission.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="13%" />
+<col width="26%" />
+<col width="61%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Permission</th>
+<th class="head">Resource</th>
+<th class="head">Operations</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">KEYSPACE</span></code> and <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> in any keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> in specified keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> in any keyspace and <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> in any
+keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> in specified keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">KEYSPACE</span></code> and <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> in any keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">KEYSPACE</span></code> and <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> in specified keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">TABLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code>: replacing any existing</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code>: replacing existing in
+specified keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">FUNCTION</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code>: replacing existing</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">ROLE</span></code> on any role</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ROLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">ROLE</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">KEYSPACE</span></code> and <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">TABLE</span></code> in any keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">TABLE</span></code> in specified keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">TABLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">TABLE</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> in any keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> in specified keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">FUNCTION</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">ROLE</span></code> on any role</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ROLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">ROLE</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> on any table</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> on any table in specified keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">TABLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> on specified table</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
+<td>Call getter methods on any mbean</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEANS</span></code></td>
+<td>Call getter methods on any mbean matching a wildcard pattern</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEAN</span></code></td>
+<td>Call getter methods on named mbean</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">INSERT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> and <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code> on any table</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">INSERT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> and <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code> on any table in
+specified keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">TABLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">INSERT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> and <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code> on specified table</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
+<td>Call setter methods on any mbean</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEANS</span></code></td>
+<td>Call setter methods on any mbean matching a wildcard pattern</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEAN</span></code></td>
+<td>Call setter methods on named mbean</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any table</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any table in
+specified keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">TABLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on specified table</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any function</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> in specified keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">FUNCTION</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on specified function</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any mbean</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEANS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any mbean matching
+a wildcard pattern</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEAN</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on named mbean</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">ROLE</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">ROLE</span></code> on any role</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ROLES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">ROLE</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">ROLE</span></code> on specified roles</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">LIST</span> <span class="pre">ROLES</span></code> on all roles or only roles granted to another,
+specified role</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
+<td>Retrieve metadata about any mbean from the platform’s MBeanServer</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEANS</span></code></td>
+<td>Retrieve metadata about any mbean matching a wildcard patter from the
+platform’s MBeanServer</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEAN</span></code></td>
+<td>Retrieve metadata about a named mbean from the platform’s MBeanServer</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> using any function, and use of
+any function in <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> using any function in specified
+keyspace and use of any function in keyspace in <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">FUNCTION</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> using specified function and use
+of the function in <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
+<td>Execute operations on any mbean</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEANS</span></code></td>
+<td>Execute operations on any mbean matching a wildcard pattern</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEAN</span></code></td>
+<td>Execute operations on named mbean</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="grant-permission">
+<span id="grant-permission-statement"></span><h3>GRANT PERMISSION<a class="headerlink" href="#grant-permission" title="Permalink to this headline">¶</a></h3>
+<p>Granting a permission uses the <code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-grant-permission-statement">grant_permission_statement</strong> ::=  GRANT <a class="reference internal" href="#grammar-token-permissions"><code class="xref docutils literal notranslate"><span class="pre">permissions</span></code></a> ON <a class="reference internal" href="#grammar-token-resource"><code class="xref docutils literal notranslate"><span class="pre">resource</span></code></a> TO <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+<strong id="grammar-token-permissions">permissions               </strong> ::=  ALL [ PERMISSIONS ] | <a class="reference internal" href="#grammar-token-permission"><code class="xref docutils literal notranslate"><span class="pre">permission</span></code></a> [ PERMISSION ]
+<strong id="grammar-token-permission">permission                </strong> ::=  CREATE | ALTER | DROP | SELECT | MODIFY | AUTHORIZE | DESCRIBE | EXECUTE
+<strong id="grammar-token-resource">resource                  </strong> ::=  ALL KEYSPACES
+                               | KEYSPACE <a class="reference internal" href="ddl.html#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a>
+                               | [ TABLE ] <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+                               | ALL ROLES
+                               | ROLE <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+                               | ALL FUNCTIONS [ IN KEYSPACE <a class="reference internal" href="ddl.html#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a> ]
+                               | FUNCTION <a class="reference internal" href="functions.html#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> '(' [ <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> )* ] ')'
+                               | ALL MBEANS
+                               | ( MBEAN | MBEANS ) <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">SELECT</span> <span class="k">ON</span> <span class="k">ALL</span> <span class="k">KEYSPACES</span> <span class="k">TO</span> <span class="n">data_reader</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This gives any user with the role <code class="docutils literal notranslate"><span class="pre">data_reader</span></code> permission to execute <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statements on any table across all
+keyspaces:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">MODIFY</span> <span class="k">ON</span> <span class="k">KEYSPACE</span> <span class="n">keyspace1</span> <span class="k">TO</span> <span class="n">data_writer</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This give any user with the role <code class="docutils literal notranslate"><span class="pre">data_writer</span></code> permission to perform <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">DELETE</span></code>
+and <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code> queries on all tables in the <code class="docutils literal notranslate"><span class="pre">keyspace1</span></code> keyspace:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">DROP</span> <span class="k">ON</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">table1</span> <span class="k">TO</span> <span class="n">schema_owner</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This gives any user with the <code class="docutils literal notranslate"><span class="pre">schema_owner</span></code> role permissions to <code class="docutils literal notranslate"><span class="pre">DROP</span></code> <code class="docutils literal notranslate"><span class="pre">keyspace1.table1</span></code>:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">EXECUTE</span> <span class="k">ON</span> <span class="k">FUNCTION</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">user_function</span><span class="p">(</span> <span class="nb">int</span> <span class="p">)</span> <span class="k">TO</span> <span class="n">report_writer</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This grants any user with the <code class="docutils literal notranslate"><span class="pre">report_writer</span></code> role permission to execute <code class="docutils literal notranslate"><span class="pre">SELECT</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> queries
+which use the function <code class="docutils literal notranslate"><span class="pre">keyspace1.user_function(</span> <span class="pre">int</span> <span class="pre">)</span></code>:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">DESCRIBE</span> <span class="k">ON</span> <span class="k">ALL</span> <span class="k">ROLES</span> <span class="k">TO</span> <span class="n">role_admin</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This grants any user with the <code class="docutils literal notranslate"><span class="pre">role_admin</span></code> role permission to view any and all roles in the system with a <code class="docutils literal notranslate"><span class="pre">LIST</span>
+<span class="pre">ROLES</span></code> statement</p>
+<div class="section" id="grant-all">
+<span id="id2"></span><h4>GRANT ALL<a class="headerlink" href="#grant-all" title="Permalink to this headline">¶</a></h4>
+<p>When the <code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">ALL</span></code> form is used, the appropriate set of permissions is determined automatically based on the target
+resource.</p>
+</div>
+<div class="section" id="automatic-granting">
+<h4>Automatic Granting<a class="headerlink" href="#automatic-granting" title="Permalink to this headline">¶</a></h4>
+<p>When a resource is created, via a <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">KEYSPACE</span></code>, <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code>, <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code>, <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> or
+<code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code> statement, the creator (the role the database user who issues the statement is identified as), is
+automatically granted all applicable permissions on the new resource.</p>
+</div>
+</div>
+<div class="section" id="revoke-permission">
+<span id="revoke-permission-statement"></span><h3>REVOKE PERMISSION<a class="headerlink" href="#revoke-permission" title="Permalink to this headline">¶</a></h3>
+<p>Revoking a permission from a role uses the <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-revoke-permission-statement">revoke_permission_statement</strong> ::=  REVOKE <a class="reference internal" href="#grammar-token-permissions"><code class="xref docutils literal notranslate"><span class="pre">permissions</span></code></a> ON <a class="reference internal" href="#grammar-token-resource"><code class="xref docutils literal notranslate"><span class="pre">resource</span></code></a> FROM <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">REVOKE</span> <span class="k">SELECT</span> <span class="k">ON</span> <span class="k">ALL</span> <span class="k">KEYSPACES</span> <span class="k">FROM</span> <span class="n">data_reader</span><span class="p">;</span>
+<span class="k">REVOKE</span> <span class="k">MODIFY</span> <span class="k">ON</span> <span class="k">KEYSPACE</span> <span class="n">keyspace1</span> <span class="k">FROM</span> <span class="n">data_writer</span><span class="p">;</span>
+<span class="k">REVOKE</span> <span class="k">DROP</span> <span class="k">ON</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">table1</span> <span class="k">FROM</span> <span class="n">schema_owner</span><span class="p">;</span>
+<span class="k">REVOKE</span> <span class="k">EXECUTE</span> <span class="k">ON</span> <span class="k">FUNCTION</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">user_function</span><span class="p">(</span> <span class="nb">int</span> <span class="p">)</span> <span class="k">FROM</span> <span class="n">report_writer</span><span class="p">;</span>
+<span class="k">REVOKE</span> <span class="k">DESCRIBE</span> <span class="k">ON</span> <span class="k">ALL</span> <span class="k">ROLES</span> <span class="k">FROM</span> <span class="n">role_admin</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="list-permissions">
+<span id="list-permissions-statement"></span><h3>LIST PERMISSIONS<a class="headerlink" href="#list-permissions" title="Permalink to this headline">¶</a></h3>
+<p>Listing granted permissions uses the <code class="docutils literal notranslate"><span class="pre">LIST</span> <span class="pre">PERMISSIONS</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-list-permissions-statement">list_permissions_statement</strong> ::=  LIST <a class="reference internal" href="#grammar-token-permissions"><code class="xref docutils literal notranslate"><span class="pre">permissions</span></code></a> [ ON <a class="reference internal" href="#grammar-token-resource"><code class="xref docutils literal notranslate"><span class="pre">resource</span></code></a> ] [ OF <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> [ NORECURSIVE ] ]
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ALL</span> <span class="k">PERMISSIONS</span> <span class="k">OF</span> <span class="n">alice</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Show all permissions granted to <code class="docutils literal notranslate"><span class="pre">alice</span></code>, including those acquired transitively from any other roles:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ALL</span> <span class="k">PERMISSIONS</span> <span class="k">ON</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">table1</span> <span class="k">OF</span> <span class="n">bob</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Show all permissions on <code class="docutils literal notranslate"><span class="pre">keyspace1.table1</span></code> granted to <code class="docutils literal notranslate"><span class="pre">bob</span></code>, including those acquired transitively from any other
+roles. This also includes any permissions higher up the resource hierarchy which can be applied to <code class="docutils literal notranslate"><span class="pre">keyspace1.table1</span></code>.
+For example, should <code class="docutils literal notranslate"><span class="pre">bob</span></code> have <code class="docutils literal notranslate"><span class="pre">ALTER</span></code> permission on <code class="docutils literal notranslate"><span class="pre">keyspace1</span></code>, that would be included in the results of this
+query. Adding the <code class="docutils literal notranslate"><span class="pre">NORECURSIVE</span></code> switch restricts the results to only those permissions which were directly granted to
+<code class="docutils literal notranslate"><span class="pre">bob</span></code> or one of <code class="docutils literal notranslate"><span class="pre">bob</span></code>’s roles:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">SELECT</span> <span class="k">PERMISSIONS</span> <span class="k">OF</span> <span class="n">carlos</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Show any permissions granted to <code class="docutils literal notranslate"><span class="pre">carlos</span></code> or any of <code class="docutils literal notranslate"><span class="pre">carlos</span></code>’s roles, limited to <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> permissions on any
+resource.</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="functions.html" class="btn btn-default pull-right " role="button" title="Functions" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="mvs.html" class="btn btn-default" role="button" title="Materialized Views" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/cql/triggers.html b/src/doc/3.11.11/cql/triggers.html
new file mode 100644
index 0000000..1ad7275
--- /dev/null
+++ b/src/doc/3.11.11/cql/triggers.html
@@ -0,0 +1,153 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Triggers"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Appendices" href="appendices.html"/>
+      <link rel="prev" title="JSON Support" href="json.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Triggers</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#create-trigger">CREATE TRIGGER</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#drop-trigger">DROP TRIGGER</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="triggers">
+<span id="cql-triggers"></span><h1>Triggers<a class="headerlink" href="#triggers" title="Permalink to this headline">¶</a></h1>
+<p>Triggers are identified by a name defined by:</p>
+<pre>
+<strong id="grammar-token-trigger-name">trigger_name</strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a>
+</pre>
+<div class="section" id="create-trigger">
+<span id="create-trigger-statement"></span><h2>CREATE TRIGGER<a class="headerlink" href="#create-trigger" title="Permalink to this headline">¶</a></h2>
+<p>Creating a new trigger uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TRIGGER</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-trigger-statement">create_trigger_statement</strong> ::=  CREATE TRIGGER [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-trigger-name"><code class="xref docutils literal notranslate"><span class="pre">trigger_name</span></code></a>
+                                  ON <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+                                  USING <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TRIGGER</span> <span class="n">myTrigger</span> <span class="k">ON</span> <span class="n">myTable</span> <span class="k">USING</span> <span class="s1">&#39;org.apache.cassandra.triggers.InvertedIndex&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The actual logic that makes up the trigger can be written in any Java (JVM) language and exists outside the database.
+You place the trigger code in a <code class="docutils literal notranslate"><span class="pre">lib/triggers</span></code> subdirectory of the Cassandra installation directory, it loads during
+cluster startup, and exists on every node that participates in a cluster. The trigger defined on a table fires before a
+requested DML statement occurs, which ensures the atomicity of the transaction.</p>
+</div>
+<div class="section" id="drop-trigger">
+<span id="drop-trigger-statement"></span><h2>DROP TRIGGER<a class="headerlink" href="#drop-trigger" title="Permalink to this headline">¶</a></h2>
+<p>Dropping a trigger uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">TRIGGER</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-trigger-statement">drop_trigger_statement</strong> ::=  DROP TRIGGER [ IF EXISTS ] <a class="reference internal" href="#grammar-token-trigger-name"><code class="xref docutils literal notranslate"><span class="pre">trigger_name</span></code></a> ON <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DROP</span> <span class="k">TRIGGER</span> <span class="n">myTrigger</span> <span class="k">ON</span> <span class="n">myTable</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="appendices.html" class="btn btn-default pull-right " role="button" title="Appendices" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="json.html" class="btn btn-default" role="button" title="JSON Support" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/cql/types.html b/src/doc/3.11.11/cql/types.html
new file mode 100644
index 0000000..7077526
--- /dev/null
+++ b/src/doc/3.11.11/cql/types.html
@@ -0,0 +1,697 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Data Types"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Data Definition" href="ddl.html"/>
+      <link rel="prev" title="Definitions" href="definitions.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Data Types</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#native-types">Native Types</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#working-with-timestamps">Working with timestamps</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#working-with-dates">Working with dates</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#working-with-times">Working with times</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#working-with-durations">Working with durations</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#collections">Collections</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#user-defined-types">User-Defined Types</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tuples">Tuples</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#custom-types">Custom Types</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="data-types">
+<span id="id1"></span><h1>Data Types<a class="headerlink" href="#data-types" title="Permalink to this headline">¶</a></h1>
+<p>CQL is a typed language and supports a rich set of data types, including <a class="reference internal" href="#native-types"><span class="std std-ref">native types</span></a>,
+<a class="reference internal" href="#collections"><span class="std std-ref">collection types</span></a>, <a class="reference internal" href="#udts"><span class="std std-ref">user-defined types</span></a>, <a class="reference internal" href="#tuples"><span class="std std-ref">tuple types</span></a> and <a class="reference internal" href="#custom-types"><span class="std std-ref">custom
+types</span></a>:</p>
+<pre>
+<strong id="grammar-token-cql-type">cql_type</strong> ::=  <a class="reference internal" href="#grammar-token-native-type"><code class="xref docutils literal notranslate"><span class="pre">native_type</span></code></a> | <a class="reference internal" href="#grammar-token-collection-type"><code class="xref docutils literal notranslate"><span class="pre">collection_type</span></code></a> | <a class="reference internal" href="#grammar-token-user-defined-type"><code class="xref docutils literal notranslate"><span class="pre">user_defined_type</span></code></a> | <a class="reference internal" href="#grammar-token-tuple-type"><code class="xref docutils literal notranslate"><span class="pre">tuple_type</span></code></a> | <a class="reference internal" href="#grammar-token-custom-type"><code class="xref docutils literal notranslate"><span class="pre">custom_type</span></code></a>
+</pre>
+<div class="section" id="native-types">
+<span id="id2"></span><h2>Native Types<a class="headerlink" href="#native-types" title="Permalink to this headline">¶</a></h2>
+<p>The native types supported by CQL are:</p>
+<pre>
+<strong id="grammar-token-native-type">native_type</strong> ::=  ASCII
+                 | BIGINT
+                 | BLOB
+                 | BOOLEAN
+                 | COUNTER
+                 | DATE
+                 | DECIMAL
+                 | DOUBLE
+                 | DURATION
+                 | FLOAT
+                 | INET
+                 | INT
+                 | SMALLINT
+                 | TEXT
+                 | TIME
+                 | TIMESTAMP
+                 | TIMEUUID
+                 | TINYINT
+                 | UUID
+                 | VARCHAR
+                 | VARINT
+</pre>
+<p>The following table gives additional informations on the native data types, and on which kind of <a class="reference internal" href="definitions.html#constants"><span class="std std-ref">constants</span></a> each type supports:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="13%" />
+<col width="18%" />
+<col width="69%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">type</th>
+<th class="head">constants supported</th>
+<th class="head">description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ascii</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>ASCII character string</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">bigint</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a></td>
+<td>64-bit signed long</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">blob</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-blob"><code class="xref std std-token docutils literal notranslate"><span class="pre">blob</span></code></a></td>
+<td>Arbitrary bytes (no validation)</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">boolean</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-boolean"><code class="xref std std-token docutils literal notranslate"><span class="pre">boolean</span></code></a></td>
+<td>Either <code class="docutils literal notranslate"><span class="pre">true</span></code> or <code class="docutils literal notranslate"><span class="pre">false</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">counter</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a></td>
+<td>Counter column (64-bit signed value). See <a class="reference internal" href="#counters"><span class="std std-ref">Counters</span></a> for details</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">date</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>,
+<a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>A date (with no corresponding time value). See <a class="reference internal" href="#dates"><span class="std std-ref">Working with dates</span></a> below for details</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">decimal</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>,
+<a class="reference internal" href="definitions.html#grammar-token-float"><code class="xref std std-token docutils literal notranslate"><span class="pre">float</span></code></a></td>
+<td>Variable-precision decimal</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">double</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>
+<a class="reference internal" href="definitions.html#grammar-token-float"><code class="xref std std-token docutils literal notranslate"><span class="pre">float</span></code></a></td>
+<td>64-bit IEEE-754 floating point</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">duration</span></code></td>
+<td><code class="xref std std-token docutils literal notranslate"><span class="pre">duration</span></code>,</td>
+<td>A duration with nanosecond precision. See <a class="reference internal" href="#durations"><span class="std std-ref">Working with durations</span></a> below for details</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">float</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>,
+<a class="reference internal" href="definitions.html#grammar-token-float"><code class="xref std std-token docutils literal notranslate"><span class="pre">float</span></code></a></td>
+<td>32-bit IEEE-754 floating point</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">inet</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>An IP address, either IPv4 (4 bytes long) or IPv6 (16 bytes long). Note that
+there is no <code class="docutils literal notranslate"><span class="pre">inet</span></code> constant, IP address should be input as strings</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">int</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a></td>
+<td>32-bit signed int</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">smallint</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a></td>
+<td>16-bit signed int</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">text</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>UTF8 encoded string</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">time</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>,
+<a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>A time (with no corresponding date value) with nanosecond precision. See
+<a class="reference internal" href="#times"><span class="std std-ref">Working with times</span></a> below for details</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>,
+<a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>A timestamp (date and time) with millisecond precision. See <a class="reference internal" href="#timestamps"><span class="std std-ref">Working with timestamps</span></a>
+below for details</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-uuid"><code class="xref std std-token docutils literal notranslate"><span class="pre">uuid</span></code></a></td>
+<td>Version 1 <a class="reference external" href="https://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a>, generally used as a “conflict-free” timestamp. Also see
+<a class="reference internal" href="functions.html#timeuuid-functions"><span class="std std-ref">Timeuuid functions</span></a></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a></td>
+<td>8-bit signed int</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">uuid</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-uuid"><code class="xref std std-token docutils literal notranslate"><span class="pre">uuid</span></code></a></td>
+<td>A <a class="reference external" href="https://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a> (of any version)</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>UTF8 encoded string</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">varint</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a></td>
+<td>Arbitrary-precision integer</td>
+</tr>
+</tbody>
+</table>
+<div class="section" id="counters">
+<span id="id3"></span><h3>Counters<a class="headerlink" href="#counters" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">counter</span></code> type is used to define <em>counter columns</em>. A counter column is a column whose value is a 64-bit signed
+integer and on which 2 operations are supported: incrementing and decrementing (see the <a class="reference internal" href="dml.html#update-statement"><span class="std std-ref">UPDATE statement</span></a> for syntax). Note that the value of a counter cannot be set: a counter does not exist until first
+incremented/decremented, and that first increment/decrement is made as if the prior value was 0.</p>
+<p id="counter-limitations">Counters have a number of important limitations:</p>
+<ul class="simple">
+<li>They cannot be used for columns part of the <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> of a table.</li>
+<li>A table that contains a counter can only contain counters. In other words, either all the columns of a table outside
+the <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> have the <code class="docutils literal notranslate"><span class="pre">counter</span></code> type, or none of them have it.</li>
+<li>Counters do not support <span class="xref std std-ref">expiration</span>.</li>
+<li>The deletion of counters is supported, but is only guaranteed to work the first time you delete a counter. In other
+words, you should not re-update a counter that you have deleted (if you do, proper behavior is not guaranteed).</li>
+<li>Counter updates are, by nature, not <a class="reference external" href="https://en.wikipedia.org/wiki/Idempotence">idemptotent</a>. An important
+consequence is that if a counter update fails unexpectedly (timeout or loss of connection to the coordinator node),
+the client has no way to know if the update has been applied or not. In particular, replaying the update may or may
+not lead to an over count.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="working-with-timestamps">
+<span id="timestamps"></span><h2>Working with timestamps<a class="headerlink" href="#working-with-timestamps" title="Permalink to this headline">¶</a></h2>
+<p>Values of the <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> type are encoded as 64-bit signed integers representing a number of milliseconds since the
+standard base time known as <a class="reference external" href="https://en.wikipedia.org/wiki/Unix_time">the epoch</a>: January 1 1970 at 00:00:00 GMT.</p>
+<p>Timestamps can be input in CQL either using their value as an <a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>, or using a <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a> that
+represents an <a class="reference external" href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> date. For instance, all of the values below are
+valid <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> values for  Mar 2, 2011, at 04:05:00 AM, GMT:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">1299038700000</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'2011-02-03</span> <span class="pre">04:05+0000'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'2011-02-03</span> <span class="pre">04:05:00+0000'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'2011-02-03</span> <span class="pre">04:05:00.000+0000'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'2011-02-03T04:05+0000'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'2011-02-03T04:05:00+0000'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'2011-02-03T04:05:00.000+0000'</span></code></li>
+</ul>
+<p>The <code class="docutils literal notranslate"><span class="pre">+0000</span></code> above is an RFC 822 4-digit time zone specification; <code class="docutils literal notranslate"><span class="pre">+0000</span></code> refers to GMT. US Pacific Standard Time is
+<code class="docutils literal notranslate"><span class="pre">-0800</span></code>. The time zone may be omitted if desired (<code class="docutils literal notranslate"><span class="pre">'2011-02-03</span> <span class="pre">04:05:00'</span></code>), and if so, the date will be interpreted
+as being in the time zone under which the coordinating Cassandra node is configured. There are however difficulties
+inherent in relying on the time zone configuration being as expected, so it is recommended that the time zone always be
+specified for timestamps when feasible.</p>
+<p>The time of day may also be omitted (<code class="docutils literal notranslate"><span class="pre">'2011-02-03'</span></code> or <code class="docutils literal notranslate"><span class="pre">'2011-02-03+0000'</span></code>), in which case the time of day will
+default to 00:00:00 in the specified or default time zone. However, if only the date part is relevant, consider using
+the <a class="reference internal" href="#dates"><span class="std std-ref">date</span></a> type.</p>
+</div>
+<div class="section" id="working-with-dates">
+<span id="dates"></span><h2>Working with dates<a class="headerlink" href="#working-with-dates" title="Permalink to this headline">¶</a></h2>
+<p>Values of the <code class="docutils literal notranslate"><span class="pre">date</span></code> type are encoded as 32-bit unsigned integers representing a number of days with “the epoch” at
+the center of the range (2^31). Epoch is January 1st, 1970</p>
+<p>As for <a class="reference internal" href="#timestamps"><span class="std std-ref">timestamp</span></a>, a date can be input either as an <a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a> or using a date
+<a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a>. In the later case, the format should be <code class="docutils literal notranslate"><span class="pre">yyyy-mm-dd</span></code> (so <code class="docutils literal notranslate"><span class="pre">'2011-02-03'</span></code> for instance).</p>
+</div>
+<div class="section" id="working-with-times">
+<span id="times"></span><h2>Working with times<a class="headerlink" href="#working-with-times" title="Permalink to this headline">¶</a></h2>
+<p>Values of the <code class="docutils literal notranslate"><span class="pre">time</span></code> type are encoded as 64-bit signed integers representing the number of nanoseconds since midnight.</p>
+<p>As for <a class="reference internal" href="#timestamps"><span class="std std-ref">timestamp</span></a>, a time can be input either as an <a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a> or using a <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a>
+representing the time. In the later case, the format should be <code class="docutils literal notranslate"><span class="pre">hh:mm:ss[.fffffffff]</span></code> (where the sub-second precision
+is optional and if provided, can be less than the nanosecond). So for instance, the following are valid inputs for a
+time:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">'08:12:54'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'08:12:54.123'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'08:12:54.123456'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'08:12:54.123456789'</span></code></li>
+</ul>
+</div>
+<div class="section" id="working-with-durations">
+<span id="durations"></span><h2>Working with durations<a class="headerlink" href="#working-with-durations" title="Permalink to this headline">¶</a></h2>
+<p>Values of the <code class="docutils literal notranslate"><span class="pre">duration</span></code> type are encoded as 3 signed integer of variable lengths. The first integer represents the
+number of months, the second the number of days and the third the number of nanoseconds. This is due to the fact that
+the number of days in a month can change, and a day can have 23 or 25 hours depending on the daylight saving.
+Internally, the number of months and days are decoded as 32 bits integers whereas the number of nanoseconds is decoded
+as a 64 bits integer.</p>
+<p>A duration can be input as:</p>
+<blockquote>
+<div><ol class="arabic">
+<li><p class="first"><code class="docutils literal notranslate"><span class="pre">(quantity</span> <span class="pre">unit)+</span></code> like <code class="docutils literal notranslate"><span class="pre">12h30m</span></code> where the unit can be:</p>
+<blockquote>
+<div><ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">y</span></code>: years (12 months)</li>
+<li><code class="docutils literal notranslate"><span class="pre">mo</span></code>: months (1 month)</li>
+<li><code class="docutils literal notranslate"><span class="pre">w</span></code>: weeks (7 days)</li>
+<li><code class="docutils literal notranslate"><span class="pre">d</span></code>: days (1 day)</li>
+<li><code class="docutils literal notranslate"><span class="pre">h</span></code>: hours (3,600,000,000,000 nanoseconds)</li>
+<li><code class="docutils literal notranslate"><span class="pre">m</span></code>: minutes (60,000,000,000 nanoseconds)</li>
+<li><code class="docutils literal notranslate"><span class="pre">s</span></code>: seconds (1,000,000,000 nanoseconds)</li>
+<li><code class="docutils literal notranslate"><span class="pre">ms</span></code>: milliseconds (1,000,000 nanoseconds)</li>
+<li><code class="docutils literal notranslate"><span class="pre">us</span></code> or <code class="docutils literal notranslate"><span class="pre">µs</span></code> : microseconds (1000 nanoseconds)</li>
+<li><code class="docutils literal notranslate"><span class="pre">ns</span></code>: nanoseconds (1 nanosecond)</li>
+</ul>
+</div></blockquote>
+</li>
+<li><p class="first">ISO 8601 format:  <code class="docutils literal notranslate"><span class="pre">P[n]Y[n]M[n]DT[n]H[n]M[n]S</span> <span class="pre">or</span> <span class="pre">P[n]W</span></code></p>
+</li>
+<li><p class="first">ISO 8601 alternative format: <code class="docutils literal notranslate"><span class="pre">P[YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]</span></code></p>
+</li>
+</ol>
+</div></blockquote>
+<p>For example:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">RiderResults</span> <span class="p">(</span><span class="n">rider</span><span class="p">,</span> <span class="n">race</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;Christopher Froome&#39;</span><span class="p">,</span> <span class="s1">&#39;Tour de France&#39;</span><span class="p">,</span> <span class="mf">89</span><span class="n">h4m48s</span><span class="p">);</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">RiderResults</span> <span class="p">(</span><span class="n">rider</span><span class="p">,</span> <span class="n">race</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;BARDET Romain&#39;</span><span class="p">,</span> <span class="s1">&#39;Tour de France&#39;</span><span class="p">,</span> <span class="n">PT89H8M53S</span><span class="p">);</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">RiderResults</span> <span class="p">(</span><span class="n">rider</span><span class="p">,</span> <span class="n">race</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;QUINTANA Nairo&#39;</span><span class="p">,</span> <span class="s1">&#39;Tour de France&#39;</span><span class="p">,</span> <span class="n">P0000</span><span class="o">-</span><span class="mf">00</span><span class="o">-</span><span class="mf">00</span><span class="n">T89</span><span class="p">:</span><span class="mf">09</span><span class="p">:</span><span class="mf">09</span><span class="p">);</span>
+</pre></div>
+</div>
+<p id="duration-limitation">Duration columns cannot be used in a table’s <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code>. This limitation is due to the fact that
+durations cannot be ordered. It is effectively not possible to know if <code class="docutils literal notranslate"><span class="pre">1mo</span></code> is greater than <code class="docutils literal notranslate"><span class="pre">29d</span></code> without a date
+context.</p>
+<p>A <code class="docutils literal notranslate"><span class="pre">1d</span></code> duration is not equals to a <code class="docutils literal notranslate"><span class="pre">24h</span></code> one as the duration type has been created to be able to support daylight
+saving.</p>
+</div>
+<div class="section" id="collections">
+<span id="id4"></span><h2>Collections<a class="headerlink" href="#collections" title="Permalink to this headline">¶</a></h2>
+<p>CQL supports 3 kind of collections: <a class="reference internal" href="#maps"><span class="std std-ref">Maps</span></a>, <a class="reference internal" href="#sets"><span class="std std-ref">Sets</span></a> and <a class="reference internal" href="#lists"><span class="std std-ref">Lists</span></a>. The types of those collections is defined
+by:</p>
+<pre>
+<strong id="grammar-token-collection-type">collection_type</strong> ::=  MAP '&lt;' <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ',' <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> '&gt;'
+                     | SET '&lt;' <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> '&gt;'
+                     | LIST '&lt;' <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> '&gt;'
+</pre>
+<p>and their values can be inputd using collection literals:</p>
+<pre>
+<strong id="grammar-token-collection-literal">collection_literal</strong> ::=  <a class="reference internal" href="#grammar-token-map-literal"><code class="xref docutils literal notranslate"><span class="pre">map_literal</span></code></a> | <a class="reference internal" href="#grammar-token-set-literal"><code class="xref docutils literal notranslate"><span class="pre">set_literal</span></code></a> | <a class="reference internal" href="#grammar-token-list-literal"><code class="xref docutils literal notranslate"><span class="pre">list_literal</span></code></a>
+<strong id="grammar-token-map-literal">map_literal       </strong> ::=  '{' [ <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> ':' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> (',' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> : <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>)* ] '}'
+<strong id="grammar-token-set-literal">set_literal       </strong> ::=  '{' [ <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> (',' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>)* ] '}'
+<strong id="grammar-token-list-literal">list_literal      </strong> ::=  '[' [ <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> (',' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>)* ] ']'
+</pre>
+<p>Note however that neither <a class="reference internal" href="definitions.html#grammar-token-bind-marker"><code class="xref std std-token docutils literal notranslate"><span class="pre">bind_marker</span></code></a> nor <code class="docutils literal notranslate"><span class="pre">NULL</span></code> are supported inside collection literals.</p>
+<div class="section" id="noteworthy-characteristics">
+<h3>Noteworthy characteristics<a class="headerlink" href="#noteworthy-characteristics" title="Permalink to this headline">¶</a></h3>
+<p>Collections are meant for storing/denormalizing relatively small amount of data. They work well for things like “the
+phone numbers of a given user”, “labels applied to an email”, etc. But when items are expected to grow unbounded (“all
+messages sent by a user”, “events registered by a sensor”…), then collections are not appropriate and a specific table
+(with clustering columns) should be used. Concretely, (non-frozen) collections have the following noteworthy
+characteristics and limitations:</p>
+<ul class="simple">
+<li>Individual collections are not indexed internally. Which means that even to access a single element of a collection,
+the while collection has to be read (and reading one is not paged internally).</li>
+<li>While insertion operations on sets and maps never incur a read-before-write internally, some operations on lists do.
+Further, some lists operations are not idempotent by nature (see the section on <a class="reference internal" href="#lists"><span class="std std-ref">lists</span></a> below for
+details), making their retry in case of timeout problematic. It is thus advised to prefer sets over lists when
+possible.</li>
+</ul>
+<p>Please note that while some of those limitations may or may not be removed/improved upon in the future, it is a
+anti-pattern to use a (single) collection to store large amounts of data.</p>
+</div>
+<div class="section" id="maps">
+<span id="id5"></span><h3>Maps<a class="headerlink" href="#maps" title="Permalink to this headline">¶</a></h3>
+<p>A <code class="docutils literal notranslate"><span class="pre">map</span></code> is a (sorted) set of key-value pairs, where keys are unique and the map is sorted by its keys. You can define
+and insert a map with:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="k">users</span> <span class="p">(</span>
+    <span class="n">id</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">name</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">favs</span> <span class="k">map</span><span class="o">&lt;</span><span class="nb">text</span><span class="p">,</span> <span class="nb">text</span><span class="o">&gt;</span> <span class="c1">// A map of text keys, and text values</span>
+<span class="p">);</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="k">users</span> <span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">favs</span><span class="p">)</span>
+           <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;jsmith&#39;</span><span class="p">,</span> <span class="s1">&#39;John Smith&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="s1">&#39;fruit&#39;</span> <span class="p">:</span> <span class="s1">&#39;Apple&#39;</span><span class="p">,</span> <span class="s1">&#39;band&#39;</span> <span class="p">:</span> <span class="s1">&#39;Beatles&#39;</span> <span class="p">});</span>
+
+<span class="c1">// Replace the existing map entirely.</span>
+<span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="n">favs</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;fruit&#39;</span> <span class="p">:</span> <span class="s1">&#39;Banana&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Further, maps support:</p>
+<ul>
+<li><p class="first">Updating or inserting one or more elements:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="n">favs</span><span class="p">[</span><span class="s1">&#39;author&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;Ed Poe&#39;</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
+<span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="n">favs</span> <span class="o">=</span> <span class="n">favs</span> <span class="o">+</span> <span class="p">{</span> <span class="s1">&#39;movie&#39;</span> <span class="p">:</span> <span class="s1">&#39;Cassablanca&#39;</span><span class="p">,</span> <span class="s1">&#39;band&#39;</span> <span class="p">:</span> <span class="s1">&#39;ZZ Top&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">Removing one or more element (if an element doesn’t exist, removing it is a no-op but no error is thrown):</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DELETE</span> <span class="n">favs</span><span class="p">[</span><span class="s1">&#39;author&#39;</span><span class="p">]</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
+<span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="n">favs</span> <span class="o">=</span> <span class="n">favs</span> <span class="o">-</span> <span class="p">{</span> <span class="s1">&#39;movie&#39;</span><span class="p">,</span> <span class="s1">&#39;band&#39;</span><span class="p">}</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Note that for removing multiple elements in a <code class="docutils literal notranslate"><span class="pre">map</span></code>, you remove from it a <code class="docutils literal notranslate"><span class="pre">set</span></code> of keys.</p>
+</li>
+</ul>
+<p>Lastly, TTLs are allowed for both <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, but in both case the TTL set only apply to the newly
+inserted/updated elements. In other words:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="k">users</span> <span class="k">USING</span> <span class="k">TTL</span> <span class="mf">10</span> <span class="k">SET</span> <span class="n">favs</span><span class="p">[</span><span class="s1">&#39;color&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;green&#39;</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>will only apply the TTL to the <code class="docutils literal notranslate"><span class="pre">{</span> <span class="pre">'color'</span> <span class="pre">:</span> <span class="pre">'green'</span> <span class="pre">}</span></code> record, the rest of the map remaining unaffected.</p>
+</div>
+<div class="section" id="sets">
+<span id="id6"></span><h3>Sets<a class="headerlink" href="#sets" title="Permalink to this headline">¶</a></h3>
+<p>A <code class="docutils literal notranslate"><span class="pre">set</span></code> is a (sorted) collection of unique values. You can define and insert a map with:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">images</span> <span class="p">(</span>
+    <span class="n">name</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">owner</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">tags</span> <span class="k">set</span><span class="o">&lt;</span><span class="nb">text</span><span class="o">&gt;</span> <span class="c1">// A set of text values</span>
+<span class="p">);</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">images</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">owner</span><span class="p">,</span> <span class="n">tags</span><span class="p">)</span>
+            <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;cat.jpg&#39;</span><span class="p">,</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="s1">&#39;pet&#39;</span><span class="p">,</span> <span class="s1">&#39;cute&#39;</span> <span class="p">});</span>
+
+<span class="c1">// Replace the existing set entirely</span>
+<span class="k">UPDATE</span> <span class="n">images</span> <span class="k">SET</span> <span class="n">tags</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;kitten&#39;</span><span class="p">,</span> <span class="s1">&#39;cat&#39;</span><span class="p">,</span> <span class="s1">&#39;lol&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">name</span> <span class="o">=</span> <span class="s1">&#39;cat.jpg&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Further, sets support:</p>
+<ul>
+<li><p class="first">Adding one or multiple elements (as this is a set, inserting an already existing element is a no-op):</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">images</span> <span class="k">SET</span> <span class="n">tags</span> <span class="o">=</span> <span class="n">tags</span> <span class="o">+</span> <span class="p">{</span> <span class="s1">&#39;gray&#39;</span><span class="p">,</span> <span class="s1">&#39;cuddly&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">name</span> <span class="o">=</span> <span class="s1">&#39;cat.jpg&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">Removing one or multiple elements (if an element doesn’t exist, removing it is a no-op but no error is thrown):</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">images</span> <span class="k">SET</span> <span class="n">tags</span> <span class="o">=</span> <span class="n">tags</span> <span class="o">-</span> <span class="p">{</span> <span class="s1">&#39;cat&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">name</span> <span class="o">=</span> <span class="s1">&#39;cat.jpg&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+</ul>
+<p>Lastly, as for <a class="reference internal" href="#maps"><span class="std std-ref">maps</span></a>, TTLs if used only apply to the newly inserted values.</p>
+</div>
+<div class="section" id="lists">
+<span id="id7"></span><h3>Lists<a class="headerlink" href="#lists" title="Permalink to this headline">¶</a></h3>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">As mentioned above and further discussed at the end of this section, lists have limitations and specific
+performance considerations that you should take into account before using them. In general, if you can use a
+<a class="reference internal" href="#sets"><span class="std std-ref">set</span></a> instead of list, always prefer a set.</p>
+</div>
+<p>A <code class="docutils literal notranslate"><span class="pre">list</span></code> is a (sorted) collection of non-unique values where elements are ordered by there position in the list. You
+can define and insert a list with:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">plays</span> <span class="p">(</span>
+    <span class="n">id</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">game</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">players</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">scores</span> <span class="k">list</span><span class="o">&lt;</span><span class="nb">int</span><span class="o">&gt;</span> <span class="c1">// A list of integers</span>
+<span class="p">)</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">plays</span> <span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">game</span><span class="p">,</span> <span class="n">players</span><span class="p">,</span> <span class="n">scores</span><span class="p">)</span>
+           <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;123-afde&#39;</span><span class="p">,</span> <span class="s1">&#39;quake&#39;</span><span class="p">,</span> <span class="mf">3</span><span class="p">,</span> <span class="p">[</span><span class="mf">17</span><span class="p">,</span> <span class="mf">4</span><span class="p">,</span> <span class="mf">2</span><span class="p">]);</span>
+
+<span class="c1">// Replace the existing list entirely</span>
+<span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">scores</span> <span class="o">=</span> <span class="p">[</span> <span class="mf">3</span><span class="p">,</span> <span class="mf">9</span><span class="p">,</span> <span class="mf">4</span><span class="p">]</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Further, lists support:</p>
+<ul>
+<li><p class="first">Appending and prepending values to a list:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">players</span> <span class="o">=</span> <span class="mf">5</span><span class="p">,</span> <span class="n">scores</span> <span class="o">=</span> <span class="n">scores</span> <span class="o">+</span> <span class="p">[</span> <span class="mf">14</span><span class="p">,</span> <span class="mf">21</span> <span class="p">]</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
+<span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">players</span> <span class="o">=</span> <span class="mf">6</span><span class="p">,</span> <span class="n">scores</span> <span class="o">=</span> <span class="p">[</span> <span class="mf">3</span> <span class="p">]</span> <span class="o">+</span> <span class="n">scores</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">Setting the value at a particular position in the list. This imply that the list has a pre-existing element for that
+position or an error will be thrown that the list is too small:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">scores</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span> <span class="o">=</span> <span class="mf">7</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">Removing an element by its position in the list. This imply that the list has a pre-existing element for that position
+or an error will be thrown that the list is too small. Further, as the operation removes an element from the list, the
+list size will be diminished by 1, shifting the position of all the elements following the one deleted:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DELETE</span> <span class="n">scores</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span> <span class="k">FROM</span> <span class="n">plays</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">Deleting <em>all</em> the occurrences of particular values in the list (if a particular element doesn’t occur at all in the
+list, it is simply ignored and no error is thrown):</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">scores</span> <span class="o">=</span> <span class="n">scores</span> <span class="o">-</span> <span class="p">[</span> <span class="mf">12</span><span class="p">,</span> <span class="mf">21</span> <span class="p">]</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+</ul>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">The append and prepend operations are not idempotent by nature. So in particular, if one of these operation
+timeout, then retrying the operation is not safe and it may (or may not) lead to appending/prepending the value
+twice.</p>
+</div>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">Setting and removing an element by position and removing occurences of particular values incur an internal
+<em>read-before-write</em>. They will thus run more slowly and take more ressources than usual updates (with the exclusion
+of conditional write that have their own cost).</p>
+</div>
+<p>Lastly, as for <a class="reference internal" href="#maps"><span class="std std-ref">maps</span></a>, TTLs when used only apply to the newly inserted values.</p>
+</div>
+</div>
+<div class="section" id="user-defined-types">
+<span id="udts"></span><h2>User-Defined Types<a class="headerlink" href="#user-defined-types" title="Permalink to this headline">¶</a></h2>
+<p>CQL support the definition of user-defined types (UDT for short). Such a type can be created, modified and removed using
+the <a class="reference internal" href="#grammar-token-create-type-statement"><code class="xref std std-token docutils literal notranslate"><span class="pre">create_type_statement</span></code></a>, <a class="reference internal" href="#grammar-token-alter-type-statement"><code class="xref std std-token docutils literal notranslate"><span class="pre">alter_type_statement</span></code></a> and <a class="reference internal" href="#grammar-token-drop-type-statement"><code class="xref std std-token docutils literal notranslate"><span class="pre">drop_type_statement</span></code></a> described below. But
+once created, a UDT is simply referred to by its name:</p>
+<pre>
+<strong id="grammar-token-user-defined-type">user_defined_type</strong> ::=  <a class="reference internal" href="#grammar-token-udt-name"><code class="xref docutils literal notranslate"><span class="pre">udt_name</span></code></a>
+<strong id="grammar-token-udt-name">udt_name         </strong> ::=  [ <a class="reference internal" href="ddl.html#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a> '.' ] <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a>
+</pre>
+<div class="section" id="creating-a-udt">
+<h3>Creating a UDT<a class="headerlink" href="#creating-a-udt" title="Permalink to this headline">¶</a></h3>
+<p>Creating a new user-defined type is done using a <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TYPE</span></code> statement defined by:</p>
+<pre>
+<strong id="grammar-token-create-type-statement">create_type_statement</strong> ::=  CREATE TYPE [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-udt-name"><code class="xref docutils literal notranslate"><span class="pre">udt_name</span></code></a>
+                               '(' <a class="reference internal" href="#grammar-token-field-definition"><code class="xref docutils literal notranslate"><span class="pre">field_definition</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-field-definition"><code class="xref docutils literal notranslate"><span class="pre">field_definition</span></code></a> )* ')'
+<strong id="grammar-token-field-definition">field_definition     </strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a>
+</pre>
+<p>A UDT has a name (used to declared columns of that type) and is a set of named and typed fields. Fields name can be any
+type, including collections or other UDT. For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">phone</span> <span class="p">(</span>
+    <span class="n">country_code</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">number</span> <span class="nb">text</span><span class="p">,</span>
+<span class="p">)</span>
+
+<span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">address</span> <span class="p">(</span>
+    <span class="n">street</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">city</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">zip</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">phones</span> <span class="k">map</span><span class="o">&lt;</span><span class="nb">text</span><span class="p">,</span> <span class="n">phone</span><span class="o">&gt;</span>
+<span class="p">)</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="k">user</span> <span class="p">(</span>
+    <span class="n">name</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">addresses</span> <span class="k">map</span><span class="o">&lt;</span><span class="nb">text</span><span class="p">,</span> <span class="k">frozen</span><span class="o">&lt;</span><span class="n">address</span><span class="o">&gt;&gt;</span>
+<span class="p">)</span>
+</pre></div>
+</div>
+<p>Note that:</p>
+<ul class="simple">
+<li>Attempting to create an already existing type will result in an error unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is used. If
+it is used, the statement will be a no-op if the type already exists.</li>
+<li>A type is intrinsically bound to the keyspace in which it is created, and can only be used in that keyspace. At
+creation, if the type name is prefixed by a keyspace name, it is created in that keyspace. Otherwise, it is created in
+the current keyspace.</li>
+<li>As of Cassandra 3.11.11, UDT have to be frozen in most cases, hence the <code class="docutils literal notranslate"><span class="pre">frozen&lt;address&gt;</span></code> in the table definition
+above. Please see the section on <span class="xref std std-ref">frozen</span> for more details.</li>
+</ul>
+</div>
+<div class="section" id="udt-literals">
+<h3>UDT literals<a class="headerlink" href="#udt-literals" title="Permalink to this headline">¶</a></h3>
+<p>Once a used-defined type has been created, value can be input using a UDT literal:</p>
+<pre>
+<strong id="grammar-token-udt-literal">udt_literal</strong> ::=  '{' <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> ':' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> ( ',' <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> ':' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> )* '}'
+</pre>
+<p>In other words, a UDT literal is like a <a class="reference internal" href="#maps"><span class="std std-ref">map</span></a> literal but its keys are the names of the fields of the type.
+For instance, one could insert into the table define in the previous section using:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">INSERT</span> <span class="k">INTO</span> <span class="k">user</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">addresses</span><span class="p">)</span>
+          <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;z3 Pr3z1den7&#39;</span><span class="p">,</span> <span class="p">{</span>
+              <span class="s1">&#39;home&#39;</span> <span class="p">:</span> <span class="p">{</span>
+                  <span class="n">street</span><span class="p">:</span> <span class="s1">&#39;1600 Pennsylvania Ave NW&#39;</span><span class="p">,</span>
+                  <span class="n">city</span><span class="p">:</span> <span class="s1">&#39;Washington&#39;</span><span class="p">,</span>
+                  <span class="n">zip</span><span class="p">:</span> <span class="s1">&#39;20500&#39;</span><span class="p">,</span>
+                  <span class="n">phones</span><span class="p">:</span> <span class="p">{</span> <span class="s1">&#39;cell&#39;</span> <span class="p">:</span> <span class="p">{</span> <span class="n">country_code</span><span class="p">:</span> <span class="mf">1</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="s1">&#39;202 456-1111&#39;</span> <span class="p">},</span>
+                            <span class="s1">&#39;landline&#39;</span> <span class="p">:</span> <span class="p">{</span> <span class="n">country_code</span><span class="p">:</span> <span class="mf">1</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="s1">&#39;...&#39;</span> <span class="p">}</span> <span class="p">}</span>
+              <span class="p">},</span>
+              <span class="s1">&#39;work&#39;</span> <span class="p">:</span> <span class="p">{</span>
+                  <span class="n">street</span><span class="p">:</span> <span class="s1">&#39;1600 Pennsylvania Ave NW&#39;</span><span class="p">,</span>
+                  <span class="n">city</span><span class="p">:</span> <span class="s1">&#39;Washington&#39;</span><span class="p">,</span>
+                  <span class="n">zip</span><span class="p">:</span> <span class="s1">&#39;20500&#39;</span><span class="p">,</span>
+                  <span class="n">phones</span><span class="p">:</span> <span class="p">{</span> <span class="s1">&#39;fax&#39;</span> <span class="p">:</span> <span class="p">{</span> <span class="n">country_code</span><span class="p">:</span> <span class="mf">1</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="s1">&#39;...&#39;</span> <span class="p">}</span> <span class="p">}</span>
+              <span class="p">}</span>
+          <span class="p">})</span>
+</pre></div>
+</div>
+<p>To be valid, a UDT literal should only include fields defined by the type it is a literal of, but it can omit some field
+(in which case those will be <code class="docutils literal notranslate"><span class="pre">null</span></code>).</p>
+</div>
+<div class="section" id="altering-a-udt">
+<h3>Altering a UDT<a class="headerlink" href="#altering-a-udt" title="Permalink to this headline">¶</a></h3>
+<p>An existing user-defined type can be modified using an <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TYPE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-alter-type-statement">alter_type_statement   </strong> ::=  ALTER TYPE <a class="reference internal" href="#grammar-token-udt-name"><code class="xref docutils literal notranslate"><span class="pre">udt_name</span></code></a> <a class="reference internal" href="#grammar-token-alter-type-modification"><code class="xref docutils literal notranslate"><span class="pre">alter_type_modification</span></code></a>
+<strong id="grammar-token-alter-type-modification">alter_type_modification</strong> ::=  ADD <a class="reference internal" href="#grammar-token-field-definition"><code class="xref docutils literal notranslate"><span class="pre">field_definition</span></code></a>
+                             | RENAME <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> TO <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> ( <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> TO <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> )*
+</pre>
+<p>You can:</p>
+<ul class="simple">
+<li>add a new field to the type (<code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TYPE</span> <span class="pre">address</span> <span class="pre">ADD</span> <span class="pre">country</span> <span class="pre">text</span></code>). That new field will be <code class="docutils literal notranslate"><span class="pre">null</span></code> for any values
+of the type created before the addition.</li>
+<li>rename the fields of the type (<code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TYPE</span> <span class="pre">address</span> <span class="pre">RENAME</span> <span class="pre">zip</span> <span class="pre">TO</span> <span class="pre">zipcode</span></code>).</li>
+</ul>
+</div>
+<div class="section" id="dropping-a-udt">
+<h3>Dropping a UDT<a class="headerlink" href="#dropping-a-udt" title="Permalink to this headline">¶</a></h3>
+<p>You can drop an existing user-defined type using a <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">TYPE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-type-statement">drop_type_statement</strong> ::=  DROP TYPE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-udt-name"><code class="xref docutils literal notranslate"><span class="pre">udt_name</span></code></a>
+</pre>
+<p>Dropping a type results in the immediate, irreversible removal of that type. However, attempting to drop a type that is
+still in use by another type, table or function will result in an error.</p>
+<p>If the type dropped does not exist, an error will be returned unless <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used, in which case the operation
+is a no-op.</p>
+</div>
+</div>
+<div class="section" id="tuples">
+<span id="id8"></span><h2>Tuples<a class="headerlink" href="#tuples" title="Permalink to this headline">¶</a></h2>
+<p>CQL also support tuples and tuple types (where the elements can be of different types). Functionally, tuples can be
+though as anonymous UDT with anonymous fields. Tuple types and tuple literals are defined by:</p>
+<pre>
+<strong id="grammar-token-tuple-type">tuple_type   </strong> ::=  TUPLE '&lt;' <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> )* '&gt;'
+<strong id="grammar-token-tuple-literal">tuple_literal</strong> ::=  '(' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> ( ',' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> )* ')'
+</pre>
+<p>and can be used thusly:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">durations</span> <span class="p">(</span>
+    <span class="n">event</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">duration</span> <span class="k">tuple</span><span class="o">&lt;</span><span class="nb">int</span><span class="p">,</span> <span class="nb">text</span><span class="o">&gt;</span><span class="p">,</span>
+<span class="p">)</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">durations</span> <span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="n">duration</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;ev1&#39;</span><span class="p">,</span> <span class="p">(</span><span class="mf">3</span><span class="p">,</span> <span class="s1">&#39;hours&#39;</span><span class="p">));</span>
+</pre></div>
+</div>
+<p>Unlike other “composed” types (collections and UDT), a tuple is always <span class="xref std std-ref">frozen</span> (without the need of the
+<cite>frozen</cite> keyword) and it is not possible to update only some elements of a tuple (without updating the whole tuple).
+Also, a tuple literal should always have the same number of value than declared in the type it is a tuple of (some of
+those values can be null but they need to be explicitly declared as so).</p>
+</div>
+<div class="section" id="custom-types">
+<span id="id9"></span><h2>Custom Types<a class="headerlink" href="#custom-types" title="Permalink to this headline">¶</a></h2>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Custom types exists mostly for backward compatiliby purposes and their usage is discouraged. Their usage is
+complex, not user friendly and the other provided types, particularly <a class="reference internal" href="#udts"><span class="std std-ref">user-defined types</span></a>, should almost
+always be enough.</p>
+</div>
+<p>A custom type is defined by:</p>
+<pre>
+<strong id="grammar-token-custom-type">custom_type</strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a>
+</pre>
+<p>A custom type is a <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a> that contains the name of Java class that extends the server side <code class="docutils literal notranslate"><span class="pre">AbstractType</span></code>
+class and that can be loaded by Cassandra (it should thus be in the <code class="docutils literal notranslate"><span class="pre">CLASSPATH</span></code> of every node running Cassandra). That
+class will define what values are valid for the type and how the time sorts when used for a clustering column. For any
+other purpose, a value of a custom type is the same than that of a <code class="docutils literal notranslate"><span class="pre">blob</span></code>, and can in particular be input using the
+<a class="reference internal" href="definitions.html#grammar-token-blob"><code class="xref std std-token docutils literal notranslate"><span class="pre">blob</span></code></a> literal syntax.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="ddl.html" class="btn btn-default pull-right " role="button" title="Data Definition" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="definitions.html" class="btn btn-default" role="button" title="Definitions" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/data_modeling/index.html b/src/doc/3.11.11/data_modeling/index.html
new file mode 100644
index 0000000..ed01160
--- /dev/null
+++ b/src/doc/3.11.11/data_modeling/index.html
@@ -0,0 +1,104 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Data Modeling"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="next" title="The Cassandra Query Language (CQL)" href="../cql/index.html"/>
+      <link rel="prev" title="Guarantees" href="../architecture/guarantees.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="data-modeling">
+<h1>Data Modeling<a class="headerlink" href="#data-modeling" title="Permalink to this headline">¶</a></h1>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">TODO</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../cql/index.html" class="btn btn-default pull-right " role="button" title="The Cassandra Query Language (CQL)" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../architecture/guarantees.html" class="btn btn-default" role="button" title="Guarantees" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/development/code_style.html b/src/doc/3.11.11/development/code_style.html
new file mode 100644
index 0000000..0d1bfaf
--- /dev/null
+++ b/src/doc/3.11.11/development/code_style.html
@@ -0,0 +1,209 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Development"
+
+doc-title: "Code Style"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Cassandra Development" href="index.html"/>
+      <link rel="next" title="License Compliance" href="license_compliance.html"/>
+      <link rel="prev" title="Contributing Code Changes" href="patches.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Development</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Code Style</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#general-code-conventions">General Code Conventions</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#exception-handling">Exception handling</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#boilerplate">Boilerplate</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#multiline-statements">Multiline statements</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#whitespace">Whitespace</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#imports">Imports</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#format-files-for-ides">Format files for IDEs</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="code-style">
+<h1>Code Style<a class="headerlink" href="#code-style" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="general-code-conventions">
+<h2>General Code Conventions<a class="headerlink" href="#general-code-conventions" title="Permalink to this headline">¶</a></h2>
+<blockquote>
+<div><ul class="simple">
+<li>The Cassandra project follows <a class="reference external" href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Sun’s Java coding conventions</a> with an important exception: <code class="docutils literal notranslate"><span class="pre">{</span></code> and <code class="docutils literal notranslate"><span class="pre">}</span></code> are always placed on a new line</li>
+</ul>
+</div></blockquote>
+</div>
+<div class="section" id="exception-handling">
+<h2>Exception handling<a class="headerlink" href="#exception-handling" title="Permalink to this headline">¶</a></h2>
+<blockquote>
+<div><ul class="simple">
+<li>Never ever write <code class="docutils literal notranslate"><span class="pre">catch</span> <span class="pre">(...)</span> <span class="pre">{}</span></code> or <code class="docutils literal notranslate"><span class="pre">catch</span> <span class="pre">(...)</span> <span class="pre">{</span> <span class="pre">logger.error()</span> <span class="pre">}</span></code> merely to satisfy Java’s compile-time exception checking. Always propagate the exception up or throw <code class="docutils literal notranslate"><span class="pre">RuntimeException</span></code> (or, if it “can’t happen,” <code class="docutils literal notranslate"><span class="pre">AssertionError</span></code>). This makes the exceptions visible to automated tests.</li>
+<li>Avoid propagating up checked exceptions that no caller handles. Rethrow as <code class="docutils literal notranslate"><span class="pre">RuntimeException</span></code> (or <code class="docutils literal notranslate"><span class="pre">IOError</span></code>, if that is more applicable).</li>
+<li>Similarly, logger.warn() is often a cop-out: is this an error or not? If it is don’t hide it behind a warn; if it isn’t, no need for the warning.</li>
+<li>If you genuinely know an exception indicates an expected condition, it’s okay to ignore it BUT this must be explicitly explained in a comment.</li>
+</ul>
+</div></blockquote>
+</div>
+<div class="section" id="boilerplate">
+<h2>Boilerplate<a class="headerlink" href="#boilerplate" title="Permalink to this headline">¶</a></h2>
+<blockquote>
+<div><ul class="simple">
+<li>Avoid redundant <code class="docutils literal notranslate"><span class="pre">&#64;Override</span></code> annotations when implementing abstract or interface methods.</li>
+<li>Do not implement equals or hashcode methods unless they are actually needed.</li>
+<li>Prefer public final fields to private fields with getters. (But prefer encapsulating behavior in “real” methods to either.)</li>
+<li>Prefer requiring initialization in the constructor to setters.</li>
+<li>Avoid redundant <code class="docutils literal notranslate"><span class="pre">this</span></code> references to member fields or methods.</li>
+<li>Do not extract interfaces (or abstract classes) unless you actually need multiple implementations of it.</li>
+<li>Always include braces for nested levels of conditionals and loops. Only avoid braces for single level.</li>
+</ul>
+</div></blockquote>
+</div>
+<div class="section" id="multiline-statements">
+<h2>Multiline statements<a class="headerlink" href="#multiline-statements" title="Permalink to this headline">¶</a></h2>
+<blockquote>
+<div><ul class="simple">
+<li>Try to keep lines under 120 characters, but use good judgement – it’s better to exceed 120 by a little, than split a line that has no natural splitting points.</li>
+<li>When splitting inside a method call, use one line per parameter and align them, like this:</li>
+</ul>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>SSTableWriter writer = new SSTableWriter(cfs.getTempSSTablePath(),
+                                         columnFamilies.size(),
+                                         StorageService.getPartitioner());
+</pre></div>
+</div>
+<ul class="simple">
+<li>When splitting a ternary, use one line per clause, carry the operator, and align like this:</li>
+</ul>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>var = bar == null
+    ? doFoo()
+    : doBar();
+</pre></div>
+</div>
+</div></blockquote>
+</div>
+<div class="section" id="whitespace">
+<h2>Whitespace<a class="headerlink" href="#whitespace" title="Permalink to this headline">¶</a></h2>
+<blockquote>
+<div><ul class="simple">
+<li>Please make sure to use 4 spaces instead of the tab character for all your indentation.</li>
+<li>Many lines in many files have a bunch of trailing whitespace… Please either clean these up in a separate patch, or leave them alone, so that reviewers now and anyone reading code history later doesn’t have to pay attention to whitespace diffs.</li>
+</ul>
+</div></blockquote>
+</div>
+<div class="section" id="imports">
+<h2>Imports<a class="headerlink" href="#imports" title="Permalink to this headline">¶</a></h2>
+<p>Please observe the following order for your imports:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>java
+[blank line]
+com.google.common
+org.apache.commons
+org.junit
+org.slf4j
+[blank line]
+everything else alphabetically
+</pre></div>
+</div>
+</div>
+<div class="section" id="format-files-for-ides">
+<h2>Format files for IDEs<a class="headerlink" href="#format-files-for-ides" title="Permalink to this headline">¶</a></h2>
+<blockquote>
+<div><ul class="simple">
+<li>IntelliJ: <a class="reference external" href="https://wiki.apache.org/cassandra/CodeStyle?action=AttachFile&amp;do=view&amp;target=intellij-codestyle.jar">intellij-codestyle.jar</a></li>
+<li>IntelliJ 13: <a class="reference external" href="https://gist.github.com/jdsumsion/9ab750a05c2a567c6afc">gist for IntelliJ 13</a> (this is a work in progress, still working on javadoc, ternary style, line continuations, etc)</li>
+<li>Eclipse (<a class="reference external" href="https://github.com/tjake/cassandra-style-eclipse">https://github.com/tjake/cassandra-style-eclipse</a>)</li>
+</ul>
+</div></blockquote>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="license_compliance.html" class="btn btn-default pull-right " role="button" title="License Compliance" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="patches.html" class="btn btn-default" role="button" title="Contributing Code Changes" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/development/how_to_commit.html b/src/doc/3.11.11/development/how_to_commit.html
new file mode 100644
index 0000000..38b743f
--- /dev/null
+++ b/src/doc/3.11.11/development/how_to_commit.html
@@ -0,0 +1,181 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Development"
+
+doc-title: "How-to Commit"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Cassandra Development" href="index.html"/>
+      <link rel="next" title="Frequently Asked Questions" href="../faq/index.html"/>
+      <link rel="prev" title="Review Checklist" href="how_to_review.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Development</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">How-to Commit</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="how-to-commit">
+<h1>How-to Commit<a class="headerlink" href="#how-to-commit" title="Permalink to this headline">¶</a></h1>
+<p>If you are a committer, feel free to pick any process that works for you - so long as you are planning to commit the work yourself.</p>
+<p>Here is how committing and merging will usually look for merging and pushing for tickets that follow the convention (if patch-based):</p>
+<p>Hypothetical CASSANDRA-12345 ticket is a cassandra-3.0 based bug fix that requires different code for cassandra-3.3, and trunk. Contributor Jackie supplied a patch for the root branch (12345-3.0.patch), and patches for the remaining branches (12345-3.3.patch, 12345-trunk.patch).</p>
+<dl class="docutils">
+<dt>On cassandra-3.0:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">am</span> <span class="pre">-3</span> <span class="pre">12345-3.0.patch</span></code> (if we have a problem b/c of CHANGES.txt not merging anymore, we fix  it ourselves, in place)</li>
+</ol>
+</dd>
+<dt>On cassandra-3.3:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">merge</span> <span class="pre">cassandra-3.0</span> <span class="pre">-s</span> <span class="pre">ours</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">apply</span> <span class="pre">-3</span> <span class="pre">12345-3.3.patch</span></code> (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)</li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">commit</span> <span class="pre">—amend</span></code></li>
+</ol>
+</dd>
+<dt>On trunk:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">merge</span> <span class="pre">cassandra-3.3</span> <span class="pre">-s</span> <span class="pre">ours</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">apply</span> <span class="pre">-3</span> <span class="pre">12345-trunk.patch</span></code> (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)</li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">commit</span> <span class="pre">—amend</span></code></li>
+</ol>
+</dd>
+<dt>On any branch:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">push</span> <span class="pre">origin</span> <span class="pre">cassandra-3.0</span> <span class="pre">cassandra-3.3</span> <span class="pre">trunk</span> <span class="pre">—atomic</span></code></li>
+</ol>
+</dd>
+</dl>
+<p>Same scenario, but a branch-based contribution:</p>
+<dl class="docutils">
+<dt>On cassandra-3.0:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">cherry-pick</span> <span class="pre">&lt;sha-of-3.0-commit&gt;</span></code> (if we have a problem b/c of CHANGES.txt not merging anymore, we fix it ourselves, in place)</li>
+</ol>
+</dd>
+<dt>On cassandra-3.3:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">merge</span> <span class="pre">cassandra-3.0</span> <span class="pre">-s</span> <span class="pre">ours</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">format-patch</span> <span class="pre">-1</span> <span class="pre">&lt;sha-of-3.3-commit&gt;</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">apply</span> <span class="pre">-3</span> <span class="pre">&lt;sha-of-3.3-commit&gt;.patch</span></code> (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)</li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">commit</span> <span class="pre">—amend</span></code></li>
+</ol>
+</dd>
+<dt>On trunk:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">merge</span> <span class="pre">cassandra-3.3</span> <span class="pre">-s</span> <span class="pre">ours</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">format-patch</span> <span class="pre">-1</span> <span class="pre">&lt;sha-of-trunk-commit&gt;</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">apply</span> <span class="pre">-3</span> <span class="pre">&lt;sha-of-trunk-commit&gt;.patch</span></code> (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)</li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">commit</span> <span class="pre">—amend</span></code></li>
+</ol>
+</dd>
+<dt>On any branch:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">push</span> <span class="pre">origin</span> <span class="pre">cassandra-3.0</span> <span class="pre">cassandra-3.3</span> <span class="pre">trunk</span> <span class="pre">—atomic</span></code></li>
+</ol>
+</dd>
+</dl>
+<div class="admonition tip">
+<p class="first admonition-title">Tip</p>
+<p>Notes on git flags:
+<code class="docutils literal notranslate"><span class="pre">-3</span></code> flag to am and apply will instruct git to perform a 3-way merge for you. If a conflict is detected, you can either resolve it manually or invoke git mergetool - for both am and apply.</p>
+<p class="last"><code class="docutils literal notranslate"><span class="pre">—atomic</span></code> flag to git push does the obvious thing: pushes all or nothing. Without the flag, the command is equivalent to running git push once per each branch. This is nifty in case a race condition happens - you won’t push half the branches, blocking other committers’ progress while you are resolving the issue.</p>
+</div>
+<div class="admonition tip">
+<p class="first admonition-title">Tip</p>
+<p class="last">The fastest way to get a patch from someone’s commit in a branch on GH - if you don’t have their repo in remotes -  is to append .patch to the commit url, e.g.
+curl -O <a class="reference external" href="https://github.com/apache/cassandra/commit/7374e9b5ab08c1f1e612bf72293ea14c959b0c3c.patch">https://github.com/apache/cassandra/commit/7374e9b5ab08c1f1e612bf72293ea14c959b0c3c.patch</a></p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../faq/index.html" class="btn btn-default pull-right " role="button" title="Frequently Asked Questions" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="how_to_review.html" class="btn btn-default" role="button" title="Review Checklist" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/development/how_to_review.html b/src/doc/3.11.11/development/how_to_review.html
new file mode 100644
index 0000000..0722402
--- /dev/null
+++ b/src/doc/3.11.11/development/how_to_review.html
@@ -0,0 +1,173 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Development"
+
+doc-title: "Review Checklist"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Cassandra Development" href="index.html"/>
+      <link rel="next" title="How-to Commit" href="how_to_commit.html"/>
+      <link rel="prev" title="License Compliance" href="license_compliance.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Development</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="review-checklist">
+<h1>Review Checklist<a class="headerlink" href="#review-checklist" title="Permalink to this headline">¶</a></h1>
+<p>When reviewing tickets in Apache JIRA, the following items should be covered as part of the review process:</p>
+<p><strong>General</strong></p>
+<blockquote>
+<div><ul class="simple">
+<li>Does it conform to the <a class="reference internal" href="code_style.html"><span class="doc">Code Style</span></a> guidelines?</li>
+<li>Is there any redundant or duplicate code?</li>
+<li>Is the code as modular as possible?</li>
+<li>Can any singletons be avoided?</li>
+<li>Can any of the code be replaced with library functions?</li>
+<li>Are units of measurement used in the code consistent, both internally and with the rest of the ecosystem?</li>
+</ul>
+</div></blockquote>
+<p><strong>Error-Handling</strong></p>
+<blockquote>
+<div><ul class="simple">
+<li>Are all data inputs and outputs checked (for the correct type, length, format, and range) and encoded?</li>
+<li>Where third-party utilities are used, are returning errors being caught?</li>
+<li>Are invalid parameter values handled?</li>
+<li>Are any Throwable/Exceptions passed to the JVMStabilityInspector?</li>
+<li>Are errors well-documented? Does the error message tell the user how to proceed?</li>
+<li>Do exceptions propagate to the appropriate level in the code?</li>
+</ul>
+</div></blockquote>
+<p><strong>Documentation</strong></p>
+<blockquote>
+<div><ul class="simple">
+<li>Do comments exist and describe the intent of the code (the “why”, not the “how”)?</li>
+<li>Are javadocs added where appropriate?</li>
+<li>Is any unusual behavior or edge-case handling described?</li>
+<li>Are data structures and units of measurement explained?</li>
+<li>Is there any incomplete code? If so, should it be removed or flagged with a suitable marker like ‘TODO’?</li>
+<li>Does the code self-document via clear naming, abstractions, and flow control?</li>
+<li>Have NEWS.txt, the cql3 docs, and the native protocol spec been updated if needed?</li>
+<li>Is the ticket tagged with “client-impacting” and “doc-impacting”, where appropriate?</li>
+<li>Has lib/licences been updated for third-party libs? Are they Apache License compatible?</li>
+<li>Is the Component on the JIRA ticket set appropriately?</li>
+</ul>
+</div></blockquote>
+<p><strong>Testing</strong></p>
+<blockquote>
+<div><ul class="simple">
+<li>Is the code testable? i.e. don’t add too many or hide dependencies, unable to initialize objects, test frameworks can use methods etc.</li>
+<li>Do tests exist and are they comprehensive?</li>
+<li>Do unit tests actually test that the code is performing the intended functionality?</li>
+<li>Could any test code use common functionality (e.g. ccm, dtest, or CqlTester methods) or abstract it there for reuse?</li>
+<li>If the code may be affected by multi-node clusters, are there dtests?</li>
+<li>If the code may take a long time to test properly, are there CVH tests?</li>
+<li>Is the test passing on CI for all affected branches (up to trunk, if applicable)? Are there any regressions?</li>
+<li>If patch affects read/write path, did we test for performance regressions w/multiple workloads?</li>
+<li>If adding a new feature, were tests added and performed confirming it meets the expected SLA/use-case requirements for the feature?</li>
+</ul>
+</div></blockquote>
+<p><strong>Logging</strong></p>
+<blockquote>
+<div><ul class="simple">
+<li>Are logging statements logged at the correct level?</li>
+<li>Are there logs in the critical path that could affect performance?</li>
+<li>Is there any log that could be added to communicate status or troubleshoot potential problems in this feature?</li>
+<li>Can any unnecessary logging statement be removed?</li>
+</ul>
+</div></blockquote>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="how_to_commit.html" class="btn btn-default pull-right " role="button" title="How-to Commit" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="license_compliance.html" class="btn btn-default" role="button" title="License Compliance" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/development/ide.html b/src/doc/3.11.11/development/ide.html
new file mode 100644
index 0000000..602a17f
--- /dev/null
+++ b/src/doc/3.11.11/development/ide.html
@@ -0,0 +1,235 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Development"
+
+doc-title: "Building and IDE Integration"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Cassandra Development" href="index.html"/>
+      <link rel="next" title="Testing" href="testing.html"/>
+      <link rel="prev" title="Cassandra Development" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Development</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Building and IDE Integration</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#building-from-source">Building From Source</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#setting-up-cassandra-in-intellij-idea">Setting up Cassandra in IntelliJ IDEA</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#setting-up-cassandra-in-eclipse">Setting up Cassandra in Eclipse</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="building-and-ide-integration">
+<h1>Building and IDE Integration<a class="headerlink" href="#building-and-ide-integration" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="building-from-source">
+<h2>Building From Source<a class="headerlink" href="#building-from-source" title="Permalink to this headline">¶</a></h2>
+<p>Getting started with Cassandra and IntelliJ IDEA or Eclipse is simple, once you manage to build Cassandra from source using <a class="reference external" href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java 8</a>, <a class="reference external" href="https://git-scm.com/">Git</a> and <a class="reference external" href="http://ant.apache.org/">Ant</a>.</p>
+<p>The source code for Cassandra is shared through the central Apache Git repository and organized by different branches. You can access the code for the current development branch through git as follows:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">clone</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">git</span><span class="o">-</span><span class="n">wip</span><span class="o">-</span><span class="n">us</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="o">/</span><span class="n">repos</span><span class="o">/</span><span class="n">asf</span><span class="o">/</span><span class="n">cassandra</span><span class="o">.</span><span class="n">git</span> <span class="n">cassandra</span><span class="o">-</span><span class="n">trunk</span>
+</pre></div>
+</div>
+<p>Other branches will point to different versions of Cassandra. Switching to a different branch requires checking out the branch by its name:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">checkout</span> <span class="n">cassandra</span><span class="o">-</span><span class="mf">3.0</span>
+</pre></div>
+</div>
+<p>You can get a list of available branches with <code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">branch</span></code>.</p>
+<p>Finally build Cassandra using ant:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ant</span>
+</pre></div>
+</div>
+<p>This may take a significant amount of time depending on whether artifacts have to be downloaded and the number of classes that need to be compiled.</p>
+<div class="admonition hint">
+<p class="first admonition-title">Hint</p>
+<p class="last">You can setup multiple working trees for different Cassandra versions from the same repository using <a class="reference external" href="https://git-scm.com/docs/git-worktree">git-worktree</a>.</p>
+</div>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last"><a class="reference external" href="http://cassci.datastax.com/job/trunk/lastSuccessfulBuild/">Bleeding edge development snapshots</a> of Cassandra are available from Jenkins continuous integration.</p>
+</div>
+</div>
+<div class="section" id="setting-up-cassandra-in-intellij-idea">
+<h2>Setting up Cassandra in IntelliJ IDEA<a class="headerlink" href="#setting-up-cassandra-in-intellij-idea" title="Permalink to this headline">¶</a></h2>
+<p><a class="reference external" href="https://www.jetbrains.com/idea/">IntelliJ IDEA</a> by JetBrains is one of the most popular IDEs for Cassandra and Java development in general. The Community Edition is provided as a free download with all features needed to get started developing Cassandra.</p>
+<div class="section" id="setup-cassandra-as-a-project-c-2-1-and-newer">
+<h3>Setup Cassandra as a Project (C* 2.1 and newer)<a class="headerlink" href="#setup-cassandra-as-a-project-c-2-1-and-newer" title="Permalink to this headline">¶</a></h3>
+<p>Since 2.1.5, there is a new ant target: <code class="docutils literal notranslate"><span class="pre">generate-idea-files</span></code>. Please see our <a class="reference external" href="https://wiki.apache.org/cassandra/RunningCassandraInIDEA">wiki</a> for instructions for older Cassandra versions.</p>
+<p>Please clone and build Cassandra as described above and execute the following steps:</p>
+<ol class="arabic simple">
+<li>Once Cassandra is built, generate the IDEA files using ant:</li>
+</ol>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ant</span> <span class="n">generate</span><span class="o">-</span><span class="n">idea</span><span class="o">-</span><span class="n">files</span>
+</pre></div>
+</div>
+<ol class="arabic simple" start="2">
+<li>Start IDEA</li>
+<li>Open the IDEA project from the checked out Cassandra directory using the menu item Open in IDEA’s File menu</li>
+</ol>
+<p>The project generated by the ant task <code class="docutils literal notranslate"><span class="pre">generate-idea-files</span></code> contains nearly everything you need to debug Cassandra and execute unit tests.</p>
+<blockquote>
+<div><ul class="simple">
+<li>Run/debug defaults for JUnit</li>
+<li>Run/debug configuration for Cassandra daemon</li>
+<li>License header for Java source files</li>
+<li>Cassandra code style</li>
+<li>Inspections</li>
+</ul>
+</div></blockquote>
+</div>
+</div>
+<div class="section" id="setting-up-cassandra-in-eclipse">
+<h2>Setting up Cassandra in Eclipse<a class="headerlink" href="#setting-up-cassandra-in-eclipse" title="Permalink to this headline">¶</a></h2>
+<p>Eclipse is a popular open source IDE that can be used for Cassandra development. Various Eclipse environments are available from the <a class="reference external" href="https://www.eclipse.org/downloads/eclipse-packages/">download page</a>. The following guide was created with “Eclipse IDE for Java Developers”.</p>
+<p>These instructions were tested on Ubuntu 16.04 with Eclipse Neon (4.6) using Cassandra 2.1, 2.2 and 3.x.</p>
+<div class="section" id="project-settings">
+<h3>Project Settings<a class="headerlink" href="#project-settings" title="Permalink to this headline">¶</a></h3>
+<p><strong>It is important that you generate the Eclipse files with Ant before trying to set up the Eclipse project.</strong></p>
+<blockquote>
+<div><ul class="simple">
+<li>Clone and build Cassandra as described above.</li>
+<li>Run <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">generate-eclipse-files</span></code> to create the Eclipse settings.</li>
+<li>Start Eclipse.</li>
+<li>Select <code class="docutils literal notranslate"><span class="pre">File-&gt;Import-&gt;Existing</span> <span class="pre">Projects</span> <span class="pre">into</span> <span class="pre">Workspace-&gt;Select</span> <span class="pre">git</span> <span class="pre">directory</span></code>.</li>
+<li>Make sure “cassandra-trunk” is recognized and selected as a project (assuming you checked the code out into the folder cassandra-trunk as described above).</li>
+<li>Confirm “Finish” to have your project imported.</li>
+</ul>
+</div></blockquote>
+<p>You should now be able to find the project as part of the “Package Explorer” or “Project Explorer” without having Eclipse complain about any errors after building the project automatically.</p>
+</div>
+<div class="section" id="unit-tests">
+<h3>Unit Tests<a class="headerlink" href="#unit-tests" title="Permalink to this headline">¶</a></h3>
+<p>Unit tests can be run from Eclipse by simply right-clicking the class file or method and selecting <code class="docutils literal notranslate"><span class="pre">Run</span> <span class="pre">As-&gt;JUnit</span> <span class="pre">Test</span></code>. Tests can be debugged this way as well by defining breakpoints (double-click line number) and selecting <code class="docutils literal notranslate"><span class="pre">Debug</span> <span class="pre">As-&gt;JUnit</span> <span class="pre">Test</span></code>.</p>
+<p>Alternatively all unit tests can be run from the command line as described in <a class="reference internal" href="testing.html"><span class="doc">Testing</span></a></p>
+</div>
+<div class="section" id="debugging-cassandra-using-eclipse">
+<h3>Debugging Cassandra Using Eclipse<a class="headerlink" href="#debugging-cassandra-using-eclipse" title="Permalink to this headline">¶</a></h3>
+<p>There are two ways how to start and debug a local Cassandra instance with Eclipse. You can either start Cassandra just as you normally would by using the <code class="docutils literal notranslate"><span class="pre">./bin/cassandra</span></code> script and connect to the JVM through <a class="reference external" href="https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/introclientissues005.html">remotely</a> from Eclipse or start Cassandra from Eclipse right away.</p>
+<div class="section" id="starting-cassandra-from-command-line">
+<h4>Starting Cassandra From Command Line<a class="headerlink" href="#starting-cassandra-from-command-line" title="Permalink to this headline">¶</a></h4>
+<blockquote>
+<div><ul class="simple">
+<li>Set environment variable to define remote debugging options for the JVM:
+<code class="docutils literal notranslate"><span class="pre">export</span> <span class="pre">JVM_EXTRA_OPTS=&quot;-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1414&quot;</span></code></li>
+<li>Start Cassandra by executing the <code class="docutils literal notranslate"><span class="pre">./bin/cassandra</span></code></li>
+</ul>
+</div></blockquote>
+<p>Afterwards you should be able to connect to the running Cassandra process through the following steps:</p>
+<p>From the menu, select <code class="docutils literal notranslate"><span class="pre">Run-&gt;Debug</span> <span class="pre">Configurations..</span></code></p>
+<img alt="../_images/eclipse_debug0.png" src="../_images/eclipse_debug0.png" />
+<p>Create new remote application</p>
+<img alt="../_images/eclipse_debug1.png" src="../_images/eclipse_debug1.png" />
+<p>Configure connection settings by specifying a name and port 1414</p>
+<img alt="../_images/eclipse_debug2.png" src="../_images/eclipse_debug2.png" />
+<p>Afterwards confirm “Debug” to connect to the JVM and start debugging Cassandra!</p>
+</div>
+<div class="section" id="starting-cassandra-from-eclipse">
+<h4>Starting Cassandra From Eclipse<a class="headerlink" href="#starting-cassandra-from-eclipse" title="Permalink to this headline">¶</a></h4>
+<p>Cassandra can also be started directly from Eclipse if you don’t want to use the command line.</p>
+<p>From the menu, select <code class="docutils literal notranslate"><span class="pre">Run-&gt;Run</span> <span class="pre">Configurations..</span></code></p>
+<img alt="../_images/eclipse_debug3.png" src="../_images/eclipse_debug3.png" />
+<p>Create new application</p>
+<img alt="../_images/eclipse_debug4.png" src="../_images/eclipse_debug4.png" />
+<p>Specify name, project and main class <code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.service.CassandraDaemon</span></code></p>
+<img alt="../_images/eclipse_debug5.png" src="../_images/eclipse_debug5.png" />
+<p>Configure additional JVM specific parameters that will start Cassandra with some of the settings created by the regular startup script. Change heap related values as needed.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-</span><span class="n">Xms1024M</span> <span class="o">-</span><span class="n">Xmx1024M</span> <span class="o">-</span><span class="n">Xmn220M</span> <span class="o">-</span><span class="n">Xss256k</span> <span class="o">-</span><span class="n">ea</span> <span class="o">-</span><span class="n">XX</span><span class="p">:</span><span class="o">+</span><span class="n">UseThreadPriorities</span> <span class="o">-</span><span class="n">XX</span><span class="p">:</span><span class="n">ThreadPriorityPolicy</span><span class="o">=</span><span class="mi">42</span> <span class="o">-</span><span class="n">XX</span><span class="p">:</span><span class="o">+</span><span class="n">UseParNewGC</span> <span class="o">-</span><span class="n">XX</span><span class="p">:</span><span class="o">+</span><span class="n">UseConcMarkSweepGC</span> <span class="o">-</span><span class="n">XX</span><span class="p">:</span><span class="o">+</span><span class="n">CMSParallelRemarkEnabled</span> <span class="o">-</span><span class="n">XX</span><span class="p">:</span><span class="o">+</span><span class="n">UseCondCardMark</span> <span class="o">-</span><span class="n">javaagent</span><span class="p">:</span><span class="o">./</span><span class="n">lib</span><span class="o">/</span><span class="n">jamm</span><span class="o">-</span><span class="mf">0.3</span><span class="o">.</span><span class="mf">0.</span><span class="n">jar</span> <span class="o">-</span><span class="n">Djava</span><span class="o">.</span><span class="n">net</span><span class="o">.</span><span class="n">preferIPv4Stack</span><span class="o">=</span><span class="n">true</span>
+</pre></div>
+</div>
+<img alt="../_images/eclipse_debug6.png" src="../_images/eclipse_debug6.png" />
+<p>Now just confirm “Debug” and you should see the output of Cassandra starting up in the Eclipse console and should be able to set breakpoints and start debugging!</p>
+</div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="testing.html" class="btn btn-default pull-right " role="button" title="Testing" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Cassandra Development" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/development/index.html b/src/doc/3.11.11/development/index.html
new file mode 100644
index 0000000..15f947c
--- /dev/null
+++ b/src/doc/3.11.11/development/index.html
@@ -0,0 +1,144 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Cassandra Development"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="next" title="Building and IDE Integration" href="ide.html"/>
+      <link rel="prev" title="Troubleshooting" href="../troubleshooting/index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Cassandra Development</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cassandra-development">
+<h1>Cassandra Development<a class="headerlink" href="#cassandra-development" title="Permalink to this headline">¶</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="ide.html">Building and IDE Integration</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="ide.html#building-from-source">Building From Source</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html#setting-up-cassandra-in-intellij-idea">Setting up Cassandra in IntelliJ IDEA</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html#setting-up-cassandra-in-eclipse">Setting up Cassandra in Eclipse</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="testing.html">Testing</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="testing.html#unit-testing">Unit Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html#dtests">DTests</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html#performance-testing">Performance Testing</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="patches.html">Contributing Code Changes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="patches.html#choosing-what-to-work-on">Choosing What to Work on</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html#before-you-start-coding">Before You Start Coding</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html#creating-a-patch">Creating a Patch</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="code_style.html">Code Style</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#general-code-conventions">General Code Conventions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#exception-handling">Exception handling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#boilerplate">Boilerplate</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#multiline-statements">Multiline statements</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#whitespace">Whitespace</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#imports">Imports</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#format-files-for-ides">Format files for IDEs</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l1"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l1"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="ide.html" class="btn btn-default pull-right " role="button" title="Building and IDE Integration" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../troubleshooting/index.html" class="btn btn-default" role="button" title="Troubleshooting" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/development/license_compliance.html b/src/doc/3.11.11/development/license_compliance.html
new file mode 100644
index 0000000..b02d3ba
--- /dev/null
+++ b/src/doc/3.11.11/development/license_compliance.html
@@ -0,0 +1,122 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Development"
+
+doc-title: "License Compliance"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Cassandra Development" href="index.html"/>
+      <link rel="next" title="Review Checklist" href="how_to_review.html"/>
+      <link rel="prev" title="Code Style" href="code_style.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Development</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="license-compliance">
+<span id="id1"></span><h1>License Compliance<a class="headerlink" href="#license-compliance" title="Permalink to this headline">¶</a></h1>
+<p>The target of this document is to provide an overview and guidance how the Apache Cassandra project’s source code and
+artifacts maintain compliance with the <cite>ASF Licensing policy &lt;http://www.apache.org/legal/release-policy.html#licensing&gt;</cite>.</p>
+<p>The repository contains a LICENSE file, and a NOTICE file.</p>
+<p>The Apache Cassandra project enforces and verifies ASF License header conformance on all source files using the Apache RAT tool.</p>
+<p>With a few exceptions, source files consisting of works submitted directly to the ASF by the copyright owner or owner’s
+agent must contain the appropriate ASF license header. Files without any degree of creativity don’t require a license header.</p>
+<p>Currently, RAT checks all .bat, .btm, .cql, .css, .g, .hmtl, .iml, .java, .jflex, .jks, .md, .mod, .name, .pom, .py, .sh, .spec, .textile, .yml, .yaml, .xml files for a LICENSE header.</p>
+<p>If there is an incompliance, the build will fail with the following warning:</p>
+<blockquote>
+<div>Some files have missing or incorrect license information. Check RAT report in build/rat.txt for more details!</div></blockquote>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="how_to_review.html" class="btn btn-default pull-right " role="button" title="Review Checklist" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="code_style.html" class="btn btn-default" role="button" title="Code Style" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/development/patches.html b/src/doc/3.11.11/development/patches.html
new file mode 100644
index 0000000..0e96985
--- /dev/null
+++ b/src/doc/3.11.11/development/patches.html
@@ -0,0 +1,248 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Development"
+
+doc-title: "Contributing Code Changes"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Cassandra Development" href="index.html"/>
+      <link rel="next" title="Code Style" href="code_style.html"/>
+      <link rel="prev" title="Testing" href="testing.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Development</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Contributing Code Changes</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#choosing-what-to-work-on">Choosing What to Work on</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#before-you-start-coding">Before You Start Coding</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#creating-a-patch">Creating a Patch</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="contributing-code-changes">
+<h1>Contributing Code Changes<a class="headerlink" href="#contributing-code-changes" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="choosing-what-to-work-on">
+<h2>Choosing What to Work on<a class="headerlink" href="#choosing-what-to-work-on" title="Permalink to this headline">¶</a></h2>
+<p>Submitted patches can include bug fixes, changes to the Java code base, improvements for tooling (both Java or Python), documentation, testing or any other changes that requires changing the code base. Although the process of contributing code is always the same, the amount of work and time it takes to get a patch accepted also depends on the kind of issue you’re addressing.</p>
+<dl class="docutils">
+<dt>As a general rule of thumb:</dt>
+<dd><ul class="first last simple">
+<li>Major new features and significant changes to the code based will likely not going to be accepted without deeper discussion within the <a class="reference external" href="http://cassandra.apache.org/community/">developer community</a></li>
+<li>Bug fixes take higher priority compared to features</li>
+<li>The extend to which tests are required depend on how likely your changes will effect the stability of Cassandra in production. Tooling changes requires fewer tests than storage engine changes.</li>
+<li>Less complex patches will be faster to review: consider breaking up an issue into individual tasks and contributions that can be reviewed separately</li>
+</ul>
+</dd>
+</dl>
+<div class="admonition hint">
+<p class="first admonition-title">Hint</p>
+<p class="last">Not sure what to work? Just pick an issue tagged with the <a class="reference external" href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&amp;jqlQuery=project+=+12310865+AND+labels+=+lhf+AND+status+!=+resolved">low hanging fruit label</a> in JIRA, which we use to flag issues that could turn out to be good starter tasks for beginners.</p>
+</div>
+</div>
+<div class="section" id="before-you-start-coding">
+<h2>Before You Start Coding<a class="headerlink" href="#before-you-start-coding" title="Permalink to this headline">¶</a></h2>
+<p>Although contributions are highly appreciated, we do not guarantee that each contribution will become a part of Cassandra. Therefor it’s generally a good idea to first get some feedback on the things you plan to work on, especially about any new features or major changes to the code base. You can reach out to other developers on the mailing list or IRC channel listed on our <a class="reference external" href="http://cassandra.apache.org/community/">community page</a>.</p>
+<dl class="docutils">
+<dt>You should also</dt>
+<dd><ul class="first last simple">
+<li>Avoid redundant work by searching for already reported issues in <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA">JIRA</a></li>
+<li>Create a new issue early in the process describing what you’re working on - not just after finishing your patch</li>
+<li>Link related JIRA issues with your own ticket to provide a better context</li>
+<li>Update your ticket from time to time by giving feedback on your progress and link a GitHub WIP branch with your current code</li>
+<li>Ping people who you actively like to ask for advice on JIRA by <a class="reference external" href="https://confluence.atlassian.com/conf54/confluence-user-s-guide/sharing-content/using-mentions">mentioning users</a></li>
+</ul>
+</dd>
+<dt>There are also some fixed rules that you need to be aware:</dt>
+<dd><ul class="first last simple">
+<li>Patches will only be applied to branches by following the release model</li>
+<li>Code must be testable</li>
+<li>Code must follow the <a class="reference internal" href="code_style.html"><span class="doc">Code Style</span></a> convention</li>
+<li>Changes must not break compatibility between different Cassandra versions</li>
+<li>Contributions must be covered by the Apache License</li>
+</ul>
+</dd>
+</dl>
+<div class="section" id="choosing-the-right-branches-to-work-on">
+<h3>Choosing the Right Branches to Work on<a class="headerlink" href="#choosing-the-right-branches-to-work-on" title="Permalink to this headline">¶</a></h3>
+<p>There are currently multiple Cassandra versions maintained in individual branches:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="77%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Version</th>
+<th class="head">Policy</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>3.x</td>
+<td>Tick-tock (see below)</td>
+</tr>
+<tr class="row-odd"><td>3.0</td>
+<td>Bug fixes only</td>
+</tr>
+<tr class="row-even"><td>2.2</td>
+<td>Bug fixes only</td>
+</tr>
+<tr class="row-odd"><td>2.1</td>
+<td>Critical bug fixes only</td>
+</tr>
+</tbody>
+</table>
+<p>Corresponding branches in git are easy to recognize as they are named <code class="docutils literal notranslate"><span class="pre">cassandra-&lt;release&gt;</span></code> (e.g. <code class="docutils literal notranslate"><span class="pre">cassandra-3.0</span></code>). The <code class="docutils literal notranslate"><span class="pre">trunk</span></code> branch is an exception, as it contains the most recent commits from all other branches and is used for creating new branches for future tick-tock releases.</p>
+<div class="section" id="tick-tock-releases">
+<h4>Tick-Tock Releases<a class="headerlink" href="#tick-tock-releases" title="Permalink to this headline">¶</a></h4>
+<p>New releases created as part of the <a class="reference external" href="http://www.planetcassandra.org/blog/cassandra-2-2-3-0-and-beyond/">tick-tock release process</a> will either focus on stability (odd version numbers) or introduce new features (even version numbers). Any code for new Cassandra features you should be based on the latest, unreleased 3.x branch with even version number or based on trunk.</p>
+</div>
+<div class="section" id="bug-fixes">
+<h4>Bug Fixes<a class="headerlink" href="#bug-fixes" title="Permalink to this headline">¶</a></h4>
+<p>Creating patches for bug fixes is a bit more complicated as this will depend on how many different versions of Cassandra are affected. In each case, the order for merging such changes will be <code class="docutils literal notranslate"><span class="pre">cassandra-2.1</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">cassandra-2.2</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">cassandra-3.0</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">cassandra-3.x</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">trunk</span></code>. But don’t worry, merging from 2.1 would be the worst case for bugs that affect all currently supported versions, which isn’t very common. As a contributor, you’re also not expected to provide a single patch for each version. What you need to do however is:</p>
+<blockquote>
+<div><ul class="simple">
+<li>Be clear about which versions you could verify to be affected by the bug</li>
+<li>For 2.x: ask if a bug qualifies to be fixed in this release line, as this may be handled on case by case bases</li>
+<li>If possible, create a patch against the lowest version in the branches listed above (e.g. if you found the bug in 3.9 you should try to fix it already in 3.0)</li>
+<li>Test if the patch can be merged cleanly across branches in the direction listed above</li>
+<li>Be clear which branches may need attention by the committer or even create custom patches for those if you can</li>
+</ul>
+</div></blockquote>
+</div>
+</div>
+</div>
+<div class="section" id="creating-a-patch">
+<h2>Creating a Patch<a class="headerlink" href="#creating-a-patch" title="Permalink to this headline">¶</a></h2>
+<p>So you’ve finished coding and the great moment arrives: it’s time to submit your patch!</p>
+<blockquote>
+<div><ol class="arabic simple">
+<li>Create a branch for your changes if you haven’t done already. Many contributors name their branches based on ticket number and Cassandra version, e.g. <code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">checkout</span> <span class="pre">-b</span> <span class="pre">12345-3.0</span></code></li>
+<li>Verify that you follow Cassandra’s <a class="reference internal" href="code_style.html"><span class="doc">Code Style</span></a></li>
+<li>Make sure all tests (including yours) pass using ant as described in <a class="reference internal" href="testing.html"><span class="doc">Testing</span></a>. If you suspect a test failure is unrelated to your change, it may be useful to check the test’s status by searching the issue tracker or looking at <a class="reference external" href="https://cassci.datastax.com/">CI</a> results for the relevant upstream version.  Note that the full test suites take many hours to complete, so it is common to only run specific relevant tests locally before uploading a patch.  Once a patch has been uploaded, the reviewer or committer can help setup CI jobs to run the full test suites.</li>
+<li>Consider going through the <a class="reference internal" href="how_to_review.html"><span class="doc">Review Checklist</span></a> for your code. This will help you to understand how others will consider your change for inclusion.</li>
+<li>Don’t make the committer squash commits for you in the root branch either. Multiple commits are fine - and often preferable - during review stage, especially for incremental review, but once +1d, do either:</li>
+</ol>
+<blockquote>
+<div><ol class="loweralpha simple">
+<li>Attach a patch to JIRA with a single squashed commit in it (per branch), or</li>
+<li>Squash the commits in-place in your branches into one</li>
+</ol>
+</div></blockquote>
+<ol class="arabic simple" start="6">
+<li>Include a CHANGES.txt entry (put it at the top of the list), and format the commit message appropriately in your patch ending with the following statement on the last line: <code class="docutils literal notranslate"><span class="pre">patch</span> <span class="pre">by</span> <span class="pre">X;</span> <span class="pre">reviewed</span> <span class="pre">by</span> <span class="pre">Y</span> <span class="pre">for</span> <span class="pre">CASSANDRA-ZZZZZ</span></code></li>
+<li>When you’re happy with the result, create a patch:</li>
+</ol>
+<blockquote>
+<div><div class="highlight-none notranslate"><div class="highlight"><pre><span></span>git add &lt;any new or modified file&gt;
+git commit -m &#39;&lt;message&gt;&#39;
+git format-patch HEAD~1
+mv &lt;patch-file&gt; &lt;ticket-branchname.txt&gt; (e.g. 12345-trunk.txt, 12345-3.0.txt)
+</pre></div>
+</div>
+<p>Alternatively, many contributors prefer to make their branch available on GitHub. In this case, fork the Cassandra repository on GitHub and push your branch:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>git push --set-upstream origin 12345-3.0
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="8">
+<li>To make life easier for your reviewer/committer, you may want to make sure your patch applies cleanly to later branches and create additional patches/branches for later Cassandra versions to which your original patch does not apply cleanly. That said, this is not critical, and you will receive feedback on your patch regardless.</li>
+<li>Attach the newly generated patch to the ticket/add a link to your branch and click “Submit Patch” at the top of the ticket. This will move the ticket into “Patch Available” status, indicating that your submission is ready for review.</li>
+<li>Wait for other developers or committers to review it and hopefully +1 the ticket (see <a class="reference internal" href="how_to_review.html"><span class="doc">Review Checklist</span></a>). If your change does not receive a +1, do not be discouraged. If possible, the reviewer will give suggestions to improve your patch or explain why it is not suitable.</li>
+<li>If the reviewer has given feedback to improve the patch, make the necessary changes and move the ticket into “Patch Available” once again.</li>
+</ol>
+</div></blockquote>
+<p>Once the review process is complete, you will receive a +1. Wait for a committer to commit it. Do not delete your branches immediately after they’ve been committed - keep them on GitHub for a while. Alternatively, attach a patch to JIRA for historical record. It’s not that uncommon for a committer to mess up a merge. In case of that happening, access to the original code is required, or else you’ll have to redo some of the work.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="code_style.html" class="btn btn-default pull-right " role="button" title="Code Style" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="testing.html" class="btn btn-default" role="button" title="Testing" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/development/testing.html b/src/doc/3.11.11/development/testing.html
new file mode 100644
index 0000000..30c73cc
--- /dev/null
+++ b/src/doc/3.11.11/development/testing.html
@@ -0,0 +1,172 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Development"
+
+doc-title: "Testing"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Cassandra Development" href="index.html"/>
+      <link rel="next" title="Contributing Code Changes" href="patches.html"/>
+      <link rel="prev" title="Building and IDE Integration" href="ide.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Development</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Testing</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#unit-testing">Unit Testing</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#dtests">DTests</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#performance-testing">Performance Testing</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="testing">
+<h1>Testing<a class="headerlink" href="#testing" title="Permalink to this headline">¶</a></h1>
+<p>Creating tests is one of the most important and also most difficult parts of developing Cassandra. There are different ways to test your code depending on what you’re working on.</p>
+<div class="section" id="unit-testing">
+<h2>Unit Testing<a class="headerlink" href="#unit-testing" title="Permalink to this headline">¶</a></h2>
+<p>The most simple way to test code in Cassandra is probably by writing a unit test. Cassandra uses JUnit as a testing framework and test cases can be found in the <code class="docutils literal notranslate"><span class="pre">test/unit</span></code> directory. Ideally you’d be able to create a unit test for your implementation that would exclusively cover the class you created (the unit under test). Unfortunately this is not always possible and Cassandra doesn’t have a very mock friendly code base. Often you’ll find yourself in a situation where you have to make use of an embedded Cassandra instance that you’ll be able to interact with in your test. If you want to make use of CQL in your test, you can simply extend CQLTester and use some of the convenient helper methods such as in the following example.</p>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="nd">@Test</span>
+<span class="kd">public</span> <span class="kt">void</span> <span class="nf">testBatchAndList</span><span class="p">()</span> <span class="kd">throws</span> <span class="n">Throwable</span>
+<span class="p">{</span>
+   <span class="n">createTable</span><span class="p">(</span><span class="s">&quot;CREATE TABLE %s (k int PRIMARY KEY, l list&lt;int&gt;)&quot;</span><span class="p">);</span>
+   <span class="n">execute</span><span class="p">(</span><span class="s">&quot;BEGIN BATCH &quot;</span> <span class="o">+</span>
+           <span class="s">&quot;UPDATE %1$s SET l = l +[ 1 ] WHERE k = 0; &quot;</span> <span class="o">+</span>
+           <span class="s">&quot;UPDATE %1$s SET l = l + [ 2 ] WHERE k = 0; &quot;</span> <span class="o">+</span>
+           <span class="s">&quot;UPDATE %1$s SET l = l + [ 3 ] WHERE k = 0; &quot;</span> <span class="o">+</span>
+           <span class="s">&quot;APPLY BATCH&quot;</span><span class="p">);</span>
+
+   <span class="n">assertRows</span><span class="p">(</span><span class="n">execute</span><span class="p">(</span><span class="s">&quot;SELECT l FROM %s WHERE k = 0&quot;</span><span class="p">),</span>
+              <span class="n">row</span><span class="p">(</span><span class="n">list</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)));</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Unit tests can be run from the command line using the <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">test</span></code> command, <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">test</span> <span class="pre">-Dtest.name=&lt;simple_classname&gt;</span></code> to execute a test suite or <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">testsome</span> <span class="pre">-Dtest.name=&lt;FQCN&gt;</span> <span class="pre">-Dtest.methods=&lt;testmethod1&gt;[,testmethod2]</span></code> for individual tests.  For example, to run all test methods in the <code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.cql3.SimpleQueryTest</span></code> class, you would run:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ant test -Dtest.name=SimpleQueryTest
+</pre></div>
+</div>
+<p>To run only the <code class="docutils literal notranslate"><span class="pre">testStaticCompactTables()</span></code> test method from that class, you would run:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ant testsome -Dtest.name=org.apache.cassandra.cql3.SimpleQueryTest -Dtest.methods=testStaticCompactTables
+</pre></div>
+</div>
+<div class="section" id="long-running-tests">
+<h3>Long running tests<a class="headerlink" href="#long-running-tests" title="Permalink to this headline">¶</a></h3>
+<p>Test that consume a significant amount of time during execution can be found in the <code class="docutils literal notranslate"><span class="pre">test/long</span></code> directory and executed as a regular JUnit test or standalone program. Except for the execution time, there’s nothing really special about them. However, ant will execute tests under <code class="docutils literal notranslate"><span class="pre">test/long</span></code> only when using the <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">long-test</span></code> target.</p>
+</div>
+</div>
+<div class="section" id="dtests">
+<h2>DTests<a class="headerlink" href="#dtests" title="Permalink to this headline">¶</a></h2>
+<p>One way of doing integration or system testing at larger scale is by using <a class="reference external" href="https://github.com/riptano/cassandra-dtest">dtest</a>, which stands for “Cassandra Distributed Tests”. The idea is to automatically setup Cassandra clusters using various configurations and simulate certain use cases you want to test. This is done using Python scripts and <code class="docutils literal notranslate"><span class="pre">ccmlib</span></code> from the <a class="reference external" href="https://github.com/pcmanus/ccm">ccm</a> project. Dtests will setup clusters using this library just as you do running ad-hoc <code class="docutils literal notranslate"><span class="pre">ccm</span></code> commands on your local machine. Afterwards dtests will use the <a class="reference external" href="http://datastax.github.io/python-driver/installation.html">Python driver</a> to interact with the nodes, manipulate the file system, analyze logs or mess with individual nodes.</p>
+<p>Using dtests helps us to prevent regression bugs by continually executing tests on the <a class="reference external" href="http://cassci.datastax.com/">CI server</a> against new patches. For frequent contributors, this Jenkins is set up to build branches from their GitHub repositories. It is likely that your reviewer will use this Jenkins instance to run tests for your patch. Read more on the motivation behind the CI server <a class="reference external" href="http://www.datastax.com/dev/blog/cassandra-testing-improvements-for-developer-convenience-and-confidence">here</a>.</p>
+<p>The best way to learn how to write dtests is probably by reading the introduction “<a class="reference external" href="http://www.datastax.com/dev/blog/how-to-write-a-dtest">How to Write a Dtest</a>” and by looking at existing, recently updated tests in the project. New tests must follow certain <a class="reference external" href="https://github.com/apache/cassandra-dtest/blob/trunk/CONTRIBUTING.md">style conventions</a> that are being checked before accepting contributions. In contrast to Cassandra, dtest issues and pull-requests are managed on github, therefor you should make sure to link any created dtests in your Cassandra ticket and also refer to the ticket number in your dtest PR.</p>
+<p>Creating a good dtest can be tough, but it should not prevent you from submitting patches! Please ask in the corresponding JIRA ticket how to write a good dtest for the patch. In most cases a reviewer or committer will able to support you, and in some cases they may offer to write a dtest for you.</p>
+</div>
+<div class="section" id="performance-testing">
+<h2>Performance Testing<a class="headerlink" href="#performance-testing" title="Permalink to this headline">¶</a></h2>
+<p>Performance tests for Cassandra are a special breed of tests that are not part of the usual patch contribution process. In fact you can contribute tons of patches to Cassandra without ever running performance tests. They are important however when working on performance improvements, as such improvements must be measurable.</p>
+<div class="section" id="cassandra-stress-tool">
+<h3>Cassandra Stress Tool<a class="headerlink" href="#cassandra-stress-tool" title="Permalink to this headline">¶</a></h3>
+<p>TODO: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12365">CASSANDRA-12365</a></p>
+</div>
+<div class="section" id="cstar-perf">
+<h3>cstar_perf<a class="headerlink" href="#cstar-perf" title="Permalink to this headline">¶</a></h3>
+<p>Another tool available on github is <a class="reference external" href="https://github.com/datastax/cstar_perf">cstar_perf</a> that can be used for intensive performance testing in large clusters or locally. Please refer to the project page on how to set it up and how to use it.</p>
+</div>
+<div class="section" id="circleci">
+<h3>CircleCI<a class="headerlink" href="#circleci" title="Permalink to this headline">¶</a></h3>
+<p>Cassandra ships with a default <a class="reference external" href="https://circleci.com">CircleCI</a> configuration, to enable running tests on your branches, you need to go the CircleCI website, click “Login” and log in with your github account. Then you need to give CircleCI permission to watch your repositories. Once you have done that, you can optionally configure CircleCI to run tests in parallel - click “Projects”, then your github account and then click the settings for the project. If you leave the parallelism at 1 for Cassandra, only <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">eclipse-warnings</span></code> and <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">test</span></code> will be run. If you up the parallelism to 4, it also runs <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">long-test</span></code>, <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">test-compression</span></code> and <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">stress-test</span></code></p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="patches.html" class="btn btn-default pull-right " role="button" title="Contributing Code Changes" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="ide.html" class="btn btn-default" role="button" title="Building and IDE Integration" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/faq/index.html b/src/doc/3.11.11/faq/index.html
new file mode 100644
index 0000000..eadb641
--- /dev/null
+++ b/src/doc/3.11.11/faq/index.html
@@ -0,0 +1,315 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Frequently Asked Questions"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="next" title="Reporting Bugs and Contributing" href="../bugs.html"/>
+      <link rel="prev" title="How-to Commit" href="../development/how_to_commit.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Frequently Asked Questions</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#why-can-t-i-set-listen-address-to-listen-on-0-0-0-0-all-my-addresses">Why can’t I set <code class="docutils literal notranslate"><span class="pre">listen_address</span></code> to listen on 0.0.0.0 (all my addresses)?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#what-ports-does-cassandra-use">What ports does Cassandra use?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#what-happens-to-existing-data-in-my-cluster-when-i-add-new-nodes">What happens to existing data in my cluster when I add new nodes?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#i-delete-data-from-cassandra-but-disk-usage-stays-the-same-what-gives">I delete data from Cassandra, but disk usage stays the same. What gives?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#why-does-nodetool-ring-only-show-one-entry-even-though-my-nodes-logged-that-they-see-each-other-joining-the-ring">Why does nodetool ring only show one entry, even though my nodes logged that they see each other joining the ring?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#can-i-change-the-replication-factor-a-a-keyspace-on-a-live-cluster">Can I change the replication factor (a a keyspace) on a live cluster?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#can-i-store-large-blobs-in-cassandra">Can I Store (large) BLOBs in Cassandra?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#nodetool-says-connection-refused-to-host-127-0-1-1-for-any-remote-host-what-gives">Nodetool says “Connection refused to host: 127.0.1.1” for any remote host. What gives?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#will-batching-my-operations-speed-up-my-bulk-load">Will batching my operations speed up my bulk load?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#on-rhel-nodes-are-unable-to-join-the-ring">On RHEL nodes are unable to join the ring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#how-do-i-unsubscribe-from-the-email-list">How do I unsubscribe from the email list?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#why-does-top-report-that-cassandra-is-using-a-lot-more-memory-than-the-java-heap-max">Why does top report that Cassandra is using a lot more memory than the Java heap max?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#what-are-seeds">What are seeds?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#does-single-seed-mean-single-point-of-failure">Does single seed mean single point of failure?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#why-can-t-i-call-jmx-method-x-on-jconsole">Why can’t I call jmx method X on jconsole?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#why-do-i-see-messages-dropped-in-the-logs">Why do I see “… messages dropped …” in the logs?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#cassandra-dies-with-java-lang-outofmemoryerror-map-failed">Cassandra dies with <code class="docutils literal notranslate"><span class="pre">java.lang.OutOfMemoryError:</span> <span class="pre">Map</span> <span class="pre">failed</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="#what-happens-if-two-updates-are-made-with-the-same-timestamp">What happens if two updates are made with the same timestamp?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#why-bootstrapping-a-new-node-fails-with-a-stream-failed-error">Why bootstrapping a new node fails with a “Stream failed” error?</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="frequently-asked-questions">
+<h1>Frequently Asked Questions<a class="headerlink" href="#frequently-asked-questions" title="Permalink to this headline">¶</a></h1>
+<ul class="simple">
+<li><a class="reference internal" href="#why-cant-list-all"><span class="std std-ref">Why can’t I set listen_address to listen on 0.0.0.0 (all my addresses)?</span></a></li>
+<li><a class="reference internal" href="#what-ports"><span class="std std-ref">What ports does Cassandra use?</span></a></li>
+<li><a class="reference internal" href="#what-happens-on-joins"><span class="std std-ref">What happens to existing data in my cluster when I add new nodes?</span></a></li>
+<li><a class="reference internal" href="#asynch-deletes"><span class="std std-ref">I delete data from Cassandra, but disk usage stays the same. What gives?</span></a></li>
+<li><a class="reference internal" href="#one-entry-ring"><span class="std std-ref">Why does nodetool ring only show one entry, even though my nodes logged that they see each other joining the ring?</span></a></li>
+<li><a class="reference internal" href="#can-large-blob"><span class="std std-ref">Can I Store (large) BLOBs in Cassandra?</span></a></li>
+<li><a class="reference internal" href="#nodetool-connection-refused"><span class="std std-ref">Nodetool says “Connection refused to host: 127.0.1.1” for any remote host. What gives?</span></a></li>
+<li><a class="reference internal" href="#to-batch-or-not-to-batch"><span class="std std-ref">Will batching my operations speed up my bulk load?</span></a></li>
+<li><a class="reference internal" href="#selinux"><span class="std std-ref">On RHEL nodes are unable to join the ring</span></a></li>
+<li><a class="reference internal" href="#how-to-unsubscribe"><span class="std std-ref">How do I unsubscribe from the email list?</span></a></li>
+<li><a class="reference internal" href="#cassandra-eats-all-my-memory"><span class="std std-ref">Why does top report that Cassandra is using a lot more memory than the Java heap max?</span></a></li>
+<li><a class="reference internal" href="#what-are-seeds"><span class="std std-ref">What are seeds?</span></a></li>
+<li><a class="reference internal" href="#are-seeds-spof"><span class="std std-ref">Does single seed mean single point of failure?</span></a></li>
+<li><a class="reference internal" href="#why-message-dropped"><span class="std std-ref">Why do I see “… messages dropped …” in the logs?</span></a></li>
+<li><a class="reference internal" href="#oom-map-failed"><span class="std std-ref">Cassandra dies with java.lang.OutOfMemoryError: Map failed</span></a></li>
+<li><a class="reference internal" href="#what-on-same-timestamp-update"><span class="std std-ref">What happens if two updates are made with the same timestamp?</span></a></li>
+<li><a class="reference internal" href="#why-bootstrapping-stream-error"><span class="std std-ref">Why bootstrapping a new node fails with a “Stream failed” error?</span></a></li>
+</ul>
+<div class="section" id="why-can-t-i-set-listen-address-to-listen-on-0-0-0-0-all-my-addresses">
+<span id="why-cant-list-all"></span><h2>Why can’t I set <code class="docutils literal notranslate"><span class="pre">listen_address</span></code> to listen on 0.0.0.0 (all my addresses)?<a class="headerlink" href="#why-can-t-i-set-listen-address-to-listen-on-0-0-0-0-all-my-addresses" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra is a gossip-based distributed system and <code class="docutils literal notranslate"><span class="pre">listen_address</span></code> is the address a node tells other nodes to reach
+it at. Telling other nodes “contact me on any of my addresses” is a bad idea; if different nodes in the cluster pick
+different addresses for you, Bad Things happen.</p>
+<p>If you don’t want to manually specify an IP to <code class="docutils literal notranslate"><span class="pre">listen_address</span></code> for each node in your cluster (understandable!), leave
+it blank and Cassandra will use <code class="docutils literal notranslate"><span class="pre">InetAddress.getLocalHost()</span></code> to pick an address. Then it’s up to you or your ops team
+to make things resolve correctly (<code class="docutils literal notranslate"><span class="pre">/etc/hosts/</span></code>, dns, etc).</p>
+<p>One exception to this process is JMX, which by default binds to 0.0.0.0 (Java bug 6425769).</p>
+<p>See <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-256">CASSANDRA-256</a> and <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-43">CASSANDRA-43</a> for more gory details.</p>
+</div>
+<div class="section" id="what-ports-does-cassandra-use">
+<span id="what-ports"></span><h2>What ports does Cassandra use?<a class="headerlink" href="#what-ports-does-cassandra-use" title="Permalink to this headline">¶</a></h2>
+<p>By default, Cassandra uses 7000 for cluster communication (7001 if SSL is enabled),  9042 for native protocol clients,
+and 7199 for JMX (and 9160 for the deprecated Thrift interface). The internode communication and native protocol ports
+are configurable in the <a class="reference internal" href="../configuration/cassandra_config_file.html#cassandra-yaml"><span class="std std-ref">Cassandra Configuration File</span></a>. The JMX port is configurable in <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> (through JVM
+options). All ports are TCP.</p>
+</div>
+<div class="section" id="what-happens-to-existing-data-in-my-cluster-when-i-add-new-nodes">
+<span id="what-happens-on-joins"></span><h2>What happens to existing data in my cluster when I add new nodes?<a class="headerlink" href="#what-happens-to-existing-data-in-my-cluster-when-i-add-new-nodes" title="Permalink to this headline">¶</a></h2>
+<p>When a new nodes joins a cluster, it will automatically contact the other nodes in the cluster and copy the right data
+to itself. See <a class="reference internal" href="../operating/topo_changes.html#topology-changes"><span class="std std-ref">Adding, replacing, moving and removing nodes</span></a>.</p>
+</div>
+<div class="section" id="i-delete-data-from-cassandra-but-disk-usage-stays-the-same-what-gives">
+<span id="asynch-deletes"></span><h2>I delete data from Cassandra, but disk usage stays the same. What gives?<a class="headerlink" href="#i-delete-data-from-cassandra-but-disk-usage-stays-the-same-what-gives" title="Permalink to this headline">¶</a></h2>
+<p>Data you write to Cassandra gets persisted to SSTables. Since SSTables are immutable, the data can’t actually be removed
+when you perform a delete, instead, a marker (also called a “tombstone”) is written to indicate the value’s new status.
+Never fear though, on the first compaction that occurs between the data and the tombstone, the data will be expunged
+completely and the corresponding disk space recovered. See <a class="reference internal" href="../operating/compaction.html#compaction"><span class="std std-ref">Compaction</span></a> for more detail.</p>
+</div>
+<div class="section" id="why-does-nodetool-ring-only-show-one-entry-even-though-my-nodes-logged-that-they-see-each-other-joining-the-ring">
+<span id="one-entry-ring"></span><h2>Why does nodetool ring only show one entry, even though my nodes logged that they see each other joining the ring?<a class="headerlink" href="#why-does-nodetool-ring-only-show-one-entry-even-though-my-nodes-logged-that-they-see-each-other-joining-the-ring" title="Permalink to this headline">¶</a></h2>
+<p>This happens when you have the same token assigned to each node. Don’t do that.</p>
+<p>Most often this bites people who deploy by installing Cassandra on a VM (especially when using the Debian package, which
+auto-starts Cassandra after installation, thus generating and saving a token), then cloning that VM to other nodes.</p>
+<p>The easiest fix is to wipe the data and commitlog directories, thus making sure that each node will generate a random
+token on the next restart.</p>
+</div>
+<div class="section" id="can-i-change-the-replication-factor-a-a-keyspace-on-a-live-cluster">
+<span id="change-replication-factor"></span><h2>Can I change the replication factor (a a keyspace) on a live cluster?<a class="headerlink" href="#can-i-change-the-replication-factor-a-a-keyspace-on-a-live-cluster" title="Permalink to this headline">¶</a></h2>
+<p>Yes, but it will require running repair (or cleanup) to change the replica count of existing data:</p>
+<ul class="simple">
+<li><a class="reference internal" href="../cql/ddl.html#alter-keyspace-statement"><span class="std std-ref">Alter</span></a> the replication factor for desired keyspace (using cqlsh for instance).</li>
+<li>If you’re reducing the replication factor, run <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">cleanup</span></code> on the cluster to remove surplus replicated data.
+Cleanup runs on a per-node basis.</li>
+<li>If you’re increasing the replication factor, run <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">repair</span></code> to ensure data is replicated according to the new
+configuration. Repair runs on a per-replica set basis. This is an intensive process that may result in adverse cluster
+performance. It’s highly recommended to do rolling repairs, as an attempt to repair the entire cluster at once will
+most likely swamp it.</li>
+</ul>
+</div>
+<div class="section" id="can-i-store-large-blobs-in-cassandra">
+<span id="can-large-blob"></span><h2>Can I Store (large) BLOBs in Cassandra?<a class="headerlink" href="#can-i-store-large-blobs-in-cassandra" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra isn’t optimized for large file or BLOB storage and a single <code class="docutils literal notranslate"><span class="pre">blob</span></code> value is always read and send to the
+client entirely. As such, storing small blobs (less than single digit MB) should not be a problem, but it is advised to
+manually split large blobs into smaller chunks.</p>
+<p>Please note in particular that by default, any value greater than 16MB will be rejected by Cassandra due the
+<code class="docutils literal notranslate"><span class="pre">max_mutation_size_in_kb</span></code> configuration of the <a class="reference internal" href="../configuration/cassandra_config_file.html#cassandra-yaml"><span class="std std-ref">Cassandra Configuration File</span></a> file (which default to half of
+<code class="docutils literal notranslate"><span class="pre">commitlog_segment_size_in_mb</span></code>, which itself default to 32MB).</p>
+</div>
+<div class="section" id="nodetool-says-connection-refused-to-host-127-0-1-1-for-any-remote-host-what-gives">
+<span id="nodetool-connection-refused"></span><h2>Nodetool says “Connection refused to host: 127.0.1.1” for any remote host. What gives?<a class="headerlink" href="#nodetool-says-connection-refused-to-host-127-0-1-1-for-any-remote-host-what-gives" title="Permalink to this headline">¶</a></h2>
+<p>Nodetool relies on JMX, which in turn relies on RMI, which in turn sets up its own listeners and connectors as needed on
+each end of the exchange. Normally all of this happens behind the scenes transparently, but incorrect name resolution
+for either the host connecting, or the one being connected to, can result in crossed wires and confusing exceptions.</p>
+<p>If you are not using DNS, then make sure that your <code class="docutils literal notranslate"><span class="pre">/etc/hosts</span></code> files are accurate on both ends. If that fails, try
+setting the <code class="docutils literal notranslate"><span class="pre">-Djava.rmi.server.hostname=&lt;public</span> <span class="pre">name&gt;</span></code> JVM option near the bottom of <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> to an
+interface that you can reach from the remote machine.</p>
+</div>
+<div class="section" id="will-batching-my-operations-speed-up-my-bulk-load">
+<span id="to-batch-or-not-to-batch"></span><h2>Will batching my operations speed up my bulk load?<a class="headerlink" href="#will-batching-my-operations-speed-up-my-bulk-load" title="Permalink to this headline">¶</a></h2>
+<p>No. Using batches to load data will generally just add “spikes” of latency. Use asynchronous INSERTs instead, or use
+true <a class="reference internal" href="../operating/bulk_loading.html#bulk-loading"><span class="std std-ref">Bulk Loading</span></a>.</p>
+<p>An exception is batching updates to a single partition, which can be a Good Thing (as long as the size of a single batch
+stay reasonable). But never ever blindly batch everything!</p>
+</div>
+<div class="section" id="on-rhel-nodes-are-unable-to-join-the-ring">
+<span id="selinux"></span><h2>On RHEL nodes are unable to join the ring<a class="headerlink" href="#on-rhel-nodes-are-unable-to-join-the-ring" title="Permalink to this headline">¶</a></h2>
+<p>Check if <a class="reference external" href="https://en.wikipedia.org/wiki/Security-Enhanced_Linux">SELinux</a> is on; if it is, turn it off.</p>
+</div>
+<div class="section" id="how-do-i-unsubscribe-from-the-email-list">
+<span id="how-to-unsubscribe"></span><h2>How do I unsubscribe from the email list?<a class="headerlink" href="#how-do-i-unsubscribe-from-the-email-list" title="Permalink to this headline">¶</a></h2>
+<p>Send an email to <code class="docutils literal notranslate"><span class="pre">user-unsubscribe&#64;cassandra.apache.org</span></code>.</p>
+</div>
+<div class="section" id="why-does-top-report-that-cassandra-is-using-a-lot-more-memory-than-the-java-heap-max">
+<span id="cassandra-eats-all-my-memory"></span><h2>Why does top report that Cassandra is using a lot more memory than the Java heap max?<a class="headerlink" href="#why-does-top-report-that-cassandra-is-using-a-lot-more-memory-than-the-java-heap-max" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra uses <a class="reference external" href="https://en.wikipedia.org/wiki/Memory-mapped_file">Memory Mapped Files</a> (mmap) internally. That is, we
+use the operating system’s virtual memory system to map a number of on-disk files into the Cassandra process’ address
+space. This will “use” virtual memory; i.e. address space, and will be reported by tools like top accordingly, but on 64
+bit systems virtual address space is effectively unlimited so you should not worry about that.</p>
+<p>What matters from the perspective of “memory use” in the sense as it is normally meant, is the amount of data allocated
+on brk() or mmap’d /dev/zero, which represent real memory used. The key issue is that for a mmap’d file, there is never
+a need to retain the data resident in physical memory. Thus, whatever you do keep resident in physical memory is
+essentially just there as a cache, in the same way as normal I/O will cause the kernel page cache to retain data that
+you read/write.</p>
+<p>The difference between normal I/O and mmap() is that in the mmap() case the memory is actually mapped to the process,
+thus affecting the virtual size as reported by top. The main argument for using mmap() instead of standard I/O is the
+fact that reading entails just touching memory - in the case of the memory being resident, you just read it - you don’t
+even take a page fault (so no overhead in entering the kernel and doing a semi-context switch). This is covered in more
+detail <a class="reference external" href="http://www.varnish-cache.org/trac/wiki/ArchitectNotes">here</a>.</p>
+</div>
+<div class="section" id="what-are-seeds">
+<span id="id1"></span><h2>What are seeds?<a class="headerlink" href="#what-are-seeds" title="Permalink to this headline">¶</a></h2>
+<p>Seeds are used during startup to discover the cluster.</p>
+<p>If you configure your nodes to refer some node as seed, nodes in your ring tend to send Gossip message to seeds more
+often (also see the <a class="reference internal" href="../architecture/dynamo.html#gossip"><span class="std std-ref">section on gossip</span></a>) than to non-seeds. In other words, seeds are worked as hubs of
+Gossip network. With seeds, each node can detect status changes of other nodes quickly.</p>
+<p>Seeds are also referred by new nodes on bootstrap to learn other nodes in ring. When you add a new node to ring, you
+need to specify at least one live seed to contact. Once a node join the ring, it learns about the other nodes, so it
+doesn’t need seed on subsequent boot.</p>
+<p>You can make a seed a node at any time. There is nothing special about seed nodes. If you list the node in seed list it
+is a seed</p>
+<p>Seeds do not auto bootstrap (i.e. if a node has itself in its seed list it will not automatically transfer data to itself)
+If you want a node to do that, bootstrap it first and then add it to seeds later. If you have no data (new install) you
+do not have to worry about bootstrap at all.</p>
+<p>Recommended usage of seeds:</p>
+<ul class="simple">
+<li>pick two (or more) nodes per data center as seed nodes.</li>
+<li>sync the seed list to all your nodes</li>
+</ul>
+</div>
+<div class="section" id="does-single-seed-mean-single-point-of-failure">
+<span id="are-seeds-spof"></span><h2>Does single seed mean single point of failure?<a class="headerlink" href="#does-single-seed-mean-single-point-of-failure" title="Permalink to this headline">¶</a></h2>
+<p>The ring can operate or boot without a seed; however, you will not be able to add new nodes to the cluster. It is
+recommended to configure multiple seeds in production system.</p>
+</div>
+<div class="section" id="why-can-t-i-call-jmx-method-x-on-jconsole">
+<span id="cant-call-jmx-method"></span><h2>Why can’t I call jmx method X on jconsole?<a class="headerlink" href="#why-can-t-i-call-jmx-method-x-on-jconsole" title="Permalink to this headline">¶</a></h2>
+<p>Some of JMX operations use array argument and as jconsole doesn’t support array argument, those operations can’t be
+called with jconsole (the buttons are inactive for them). You need to write a JMX client to call such operations or need
+array-capable JMX monitoring tool.</p>
+</div>
+<div class="section" id="why-do-i-see-messages-dropped-in-the-logs">
+<span id="why-message-dropped"></span><h2>Why do I see “… messages dropped …” in the logs?<a class="headerlink" href="#why-do-i-see-messages-dropped-in-the-logs" title="Permalink to this headline">¶</a></h2>
+<p>This is a symptom of load shedding – Cassandra defending itself against more requests than it can handle.</p>
+<p>Internode messages which are received by a node, but do not get not to be processed within their proper timeout (see
+<code class="docutils literal notranslate"><span class="pre">read_request_timeout</span></code>, <code class="docutils literal notranslate"><span class="pre">write_request_timeout</span></code>, … in the <a class="reference internal" href="../configuration/cassandra_config_file.html#cassandra-yaml"><span class="std std-ref">Cassandra Configuration File</span></a>), are dropped rather than
+processed (since the as the coordinator node will no longer be waiting for a response).</p>
+<p>For writes, this means that the mutation was not applied to all replicas it was sent to. The inconsistency will be
+repaired by read repair, hints or a manual repair. The write operation may also have timeouted as a result.</p>
+<p>For reads, this means a read request may not have completed.</p>
+<p>Load shedding is part of the Cassandra architecture, if this is a persistent issue it is generally a sign of an
+overloaded node or cluster.</p>
+</div>
+<div class="section" id="cassandra-dies-with-java-lang-outofmemoryerror-map-failed">
+<span id="oom-map-failed"></span><h2>Cassandra dies with <code class="docutils literal notranslate"><span class="pre">java.lang.OutOfMemoryError:</span> <span class="pre">Map</span> <span class="pre">failed</span></code><a class="headerlink" href="#cassandra-dies-with-java-lang-outofmemoryerror-map-failed" title="Permalink to this headline">¶</a></h2>
+<p>If Cassandra is dying <strong>specifically</strong> with the “Map failed” message, it means the OS is denying java the ability to
+lock more memory. In linux, this typically means memlock is limited. Check <code class="docutils literal notranslate"><span class="pre">/proc/&lt;pid</span> <span class="pre">of</span> <span class="pre">cassandra&gt;/limits</span></code> to verify
+this and raise it (eg, via ulimit in bash). You may also need to increase <code class="docutils literal notranslate"><span class="pre">vm.max_map_count.</span></code> Note that the debian
+package handles this for you automatically.</p>
+</div>
+<div class="section" id="what-happens-if-two-updates-are-made-with-the-same-timestamp">
+<span id="what-on-same-timestamp-update"></span><h2>What happens if two updates are made with the same timestamp?<a class="headerlink" href="#what-happens-if-two-updates-are-made-with-the-same-timestamp" title="Permalink to this headline">¶</a></h2>
+<p>Updates must be commutative, since they may arrive in different orders on different replicas. As long as Cassandra has a
+deterministic way to pick the winner (in a timestamp tie), the one selected is as valid as any other, and the specifics
+should be treated as an implementation detail. That said, in the case of a timestamp tie, Cassandra follows two rules:
+first, deletes take precedence over inserts/updates. Second, if there are two updates, the one with the lexically larger
+value is selected.</p>
+</div>
+<div class="section" id="why-bootstrapping-a-new-node-fails-with-a-stream-failed-error">
+<span id="why-bootstrapping-stream-error"></span><h2>Why bootstrapping a new node fails with a “Stream failed” error?<a class="headerlink" href="#why-bootstrapping-a-new-node-fails-with-a-stream-failed-error" title="Permalink to this headline">¶</a></h2>
+<p>Two main possibilities:</p>
+<ol class="arabic simple">
+<li>the GC may be creating long pauses disrupting the streaming process</li>
+<li>compactions happening in the background hold streaming long enough that the TCP connection fails</li>
+</ol>
+<p>In the first case, regular GC tuning advices apply. In the second case, you need to set TCP keepalive to a lower value
+(default is very high on Linux). Try to just run the following:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo /sbin/sysctl -w net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_intvl=60 net.ipv4.tcp_keepalive_probes=5
+</pre></div>
+</div>
+<p>To make those settings permanent, add them to your <code class="docutils literal notranslate"><span class="pre">/etc/sysctl.conf</span></code> file.</p>
+<p>Note: <a class="reference external" href="https://cloud.google.com/compute/">GCE</a>’s firewall will always interrupt TCP connections that are inactive for
+more than 10 min. Running the above command is highly recommended in that environment.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../bugs.html" class="btn btn-default pull-right " role="button" title="Reporting Bugs and Contributing" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../development/how_to_commit.html" class="btn btn-default" role="button" title="How-to Commit" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/genindex.html b/src/doc/3.11.11/genindex.html
new file mode 100644
index 0000000..51860e8
--- /dev/null
+++ b/src/doc/3.11.11/genindex.html
@@ -0,0 +1,93 @@
+
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Index"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="index.html"/>
+'
+doc-search-path: "search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+ 
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/getting_started/configuring.html b/src/doc/3.11.11/getting_started/configuring.html
new file mode 100644
index 0000000..c450c33
--- /dev/null
+++ b/src/doc/3.11.11/getting_started/configuring.html
@@ -0,0 +1,158 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Getting Started"
+
+doc-title: "Configuring Cassandra"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Getting Started" href="index.html"/>
+      <link rel="next" title="Inserting and querying" href="querying.html"/>
+      <link rel="prev" title="Installing Cassandra" href="installing.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="installing.html">Installing Cassandra</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Configuring Cassandra</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#main-runtime-properties">Main runtime properties</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#changing-the-location-of-directories">Changing the location of directories</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#environment-variables">Environment variables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#logging">Logging</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="querying.html">Inserting and querying</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html">Client drivers</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="configuring-cassandra">
+<h1>Configuring Cassandra<a class="headerlink" href="#configuring-cassandra" title="Permalink to this headline">¶</a></h1>
+<p>For running Cassandra on a single node, the steps above are enough, you don’t really need to change any configuration.
+However, when you deploy a cluster of nodes, or use clients that are not on the same host, then there are some
+parameters that must be changed.</p>
+<p>The Cassandra configuration files can be found in the <code class="docutils literal notranslate"><span class="pre">conf</span></code> directory of tarballs. For packages, the configuration
+files will be located in <code class="docutils literal notranslate"><span class="pre">/etc/cassandra</span></code>.</p>
+<div class="section" id="main-runtime-properties">
+<h2>Main runtime properties<a class="headerlink" href="#main-runtime-properties" title="Permalink to this headline">¶</a></h2>
+<p>Most of configuration in Cassandra is done via yaml properties that can be set in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>. At a minimum you
+should consider setting the following properties:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">cluster_name</span></code>: the name of your cluster.</li>
+<li><code class="docutils literal notranslate"><span class="pre">seeds</span></code>: a comma separated list of the IP addresses of your cluster seeds.</li>
+<li><code class="docutils literal notranslate"><span class="pre">storage_port</span></code>: you don’t necessarily need to change this but make sure that there are no firewalls blocking this
+port.</li>
+<li><code class="docutils literal notranslate"><span class="pre">listen_address</span></code>: the IP address of your node, this is what allows other nodes to communicate with this node so it
+is important that you change it. Alternatively, you can set <code class="docutils literal notranslate"><span class="pre">listen_interface</span></code> to tell Cassandra which interface to
+use, and consecutively which address to use. Set only one, not both.</li>
+<li><code class="docutils literal notranslate"><span class="pre">native_transport_port</span></code>: as for storage_port, make sure this port is not blocked by firewalls as clients will
+communicate with Cassandra on this port.</li>
+</ul>
+</div>
+<div class="section" id="changing-the-location-of-directories">
+<h2>Changing the location of directories<a class="headerlink" href="#changing-the-location-of-directories" title="Permalink to this headline">¶</a></h2>
+<p>The following yaml properties control the location of directories:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">data_file_directories</span></code>: one or more directories where data files are located.</li>
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_directory</span></code>: the directory where commitlog files are located.</li>
+<li><code class="docutils literal notranslate"><span class="pre">saved_caches_directory</span></code>: the directory where saved caches are located.</li>
+<li><code class="docutils literal notranslate"><span class="pre">hints_directory</span></code>: the directory where hints are located.</li>
+</ul>
+<p>For performance reasons, if you have multiple disks, consider putting commitlog and data files on different disks.</p>
+</div>
+<div class="section" id="environment-variables">
+<h2>Environment variables<a class="headerlink" href="#environment-variables" title="Permalink to this headline">¶</a></h2>
+<p>JVM-level settings such as heap size can be set in <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code>.  You can add any additional JVM command line
+argument to the <code class="docutils literal notranslate"><span class="pre">JVM_OPTS</span></code> environment variable; when Cassandra starts these arguments will be passed to the JVM.</p>
+</div>
+<div class="section" id="logging">
+<h2>Logging<a class="headerlink" href="#logging" title="Permalink to this headline">¶</a></h2>
+<p>The logger in use is logback. You can change logging properties by editing <code class="docutils literal notranslate"><span class="pre">logback.xml</span></code>. By default it will log at
+INFO level into a file called <code class="docutils literal notranslate"><span class="pre">system.log</span></code> and at debug level into a file called <code class="docutils literal notranslate"><span class="pre">debug.log</span></code>. When running in the
+foreground, it will also log at INFO level to the console.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="querying.html" class="btn btn-default pull-right " role="button" title="Inserting and querying" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="installing.html" class="btn btn-default" role="button" title="Installing Cassandra" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/getting_started/drivers.html b/src/doc/3.11.11/getting_started/drivers.html
new file mode 100644
index 0000000..833bab5
--- /dev/null
+++ b/src/doc/3.11.11/getting_started/drivers.html
@@ -0,0 +1,223 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Getting Started"
+
+doc-title: "Client drivers"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Getting Started" href="index.html"/>
+      <link rel="next" title="Architecture" href="../architecture/index.html"/>
+      <link rel="prev" title="Inserting and querying" href="querying.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="installing.html">Installing Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="querying.html">Inserting and querying</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Client drivers</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#java">Java</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#python">Python</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#ruby">Ruby</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#c-net">C# / .NET</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#nodejs">Nodejs</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#php">PHP</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#c">C++</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#scala">Scala</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#clojure">Clojure</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#erlang">Erlang</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#go">Go</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#haskell">Haskell</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rust">Rust</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="client-drivers">
+<span id="id1"></span><h1>Client drivers<a class="headerlink" href="#client-drivers" title="Permalink to this headline">¶</a></h1>
+<p>Here are known Cassandra client drivers organized by language. Before choosing a driver, you should verify the Cassandra
+version and functionality supported by a specific driver.</p>
+<div class="section" id="java">
+<h2>Java<a class="headerlink" href="#java" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="http://achilles.archinnov.info/">Achilles</a></li>
+<li><a class="reference external" href="https://github.com/Netflix/astyanax/wiki/Getting-Started">Astyanax</a></li>
+<li><a class="reference external" href="https://github.com/noorq/casser">Casser</a></li>
+<li><a class="reference external" href="https://github.com/datastax/java-driver">Datastax Java driver</a></li>
+<li><a class="reference external" href="https://github.com/impetus-opensource/Kundera">Kundera</a></li>
+<li><a class="reference external" href="https://github.com/deanhiller/playorm">PlayORM</a></li>
+</ul>
+</div>
+<div class="section" id="python">
+<h2>Python<a class="headerlink" href="#python" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/datastax/python-driver">Datastax Python driver</a></li>
+</ul>
+</div>
+<div class="section" id="ruby">
+<h2>Ruby<a class="headerlink" href="#ruby" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/datastax/ruby-driver">Datastax Ruby driver</a></li>
+</ul>
+</div>
+<div class="section" id="c-net">
+<h2>C# / .NET<a class="headerlink" href="#c-net" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/pchalamet/cassandra-sharp">Cassandra Sharp</a></li>
+<li><a class="reference external" href="https://github.com/datastax/csharp-driver">Datastax C# driver</a></li>
+<li><a class="reference external" href="https://github.com/managedfusion/fluentcassandra">Fluent Cassandra</a></li>
+</ul>
+</div>
+<div class="section" id="nodejs">
+<h2>Nodejs<a class="headerlink" href="#nodejs" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/datastax/nodejs-driver">Datastax Nodejs driver</a></li>
+<li><a class="reference external" href="https://github.com/jorgebay/node-cassandra-cql">Node-Cassandra-CQL</a></li>
+</ul>
+</div>
+<div class="section" id="php">
+<h2>PHP<a class="headerlink" href="#php" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="http://code.google.com/a/apache-extras.org/p/cassandra-pdo">CQL | PHP</a></li>
+<li><a class="reference external" href="https://github.com/datastax/php-driver/">Datastax PHP driver</a></li>
+<li><a class="reference external" href="https://github.com/aparkhomenko/php-cassandra">PHP-Cassandra</a></li>
+<li><a class="reference external" href="http://evseevnn.github.io/php-cassandra-binary/">PHP Library for Cassandra</a></li>
+</ul>
+</div>
+<div class="section" id="c">
+<h2>C++<a class="headerlink" href="#c" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/datastax/cpp-driver">Datastax C++ driver</a></li>
+<li><a class="reference external" href="http://sourceforge.net/projects/libqtcassandra">libQTCassandra</a></li>
+</ul>
+</div>
+<div class="section" id="scala">
+<h2>Scala<a class="headerlink" href="#scala" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/datastax/spark-cassandra-connector">Datastax Spark connector</a></li>
+<li><a class="reference external" href="https://github.com/newzly/phantom">Phantom</a></li>
+<li><a class="reference external" href="https://github.com/getquill/quill">Quill</a></li>
+</ul>
+</div>
+<div class="section" id="clojure">
+<h2>Clojure<a class="headerlink" href="#clojure" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/mpenet/alia">Alia</a></li>
+<li><a class="reference external" href="https://github.com/clojurewerkz/cassaforte">Cassaforte</a></li>
+<li><a class="reference external" href="https://github.com/mpenet/hayt">Hayt</a></li>
+</ul>
+</div>
+<div class="section" id="erlang">
+<h2>Erlang<a class="headerlink" href="#erlang" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/matehat/cqerl">CQerl</a></li>
+<li><a class="reference external" href="https://github.com/silviucpp/erlcass">Erlcass</a></li>
+</ul>
+</div>
+<div class="section" id="go">
+<h2>Go<a class="headerlink" href="#go" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="http://relops.com/cqlc/">CQLc</a></li>
+<li><a class="reference external" href="https://github.com/hailocab/gocassa">Gocassa</a></li>
+<li><a class="reference external" href="https://github.com/gocql/gocql">GoCQL</a></li>
+</ul>
+</div>
+<div class="section" id="haskell">
+<h2>Haskell<a class="headerlink" href="#haskell" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/ozataman/cassy">Cassy</a></li>
+</ul>
+</div>
+<div class="section" id="rust">
+<h2>Rust<a class="headerlink" href="#rust" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/neich/rust-cql">Rust CQL</a></li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../architecture/index.html" class="btn btn-default pull-right " role="button" title="Architecture" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="querying.html" class="btn btn-default" role="button" title="Inserting and querying" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/getting_started/index.html b/src/doc/3.11.11/getting_started/index.html
new file mode 100644
index 0000000..6d05dcd
--- /dev/null
+++ b/src/doc/3.11.11/getting_started/index.html
@@ -0,0 +1,146 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Getting Started"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="next" title="Installing Cassandra" href="installing.html"/>
+      <link rel="prev" title="Welcome to Apache Cassandra’s documentation!" href="../index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Getting Started</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installing.html">Installing Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="querying.html">Inserting and querying</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html">Client drivers</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getting-started">
+<h1>Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this headline">¶</a></h1>
+<p>This section covers how to get started using Apache Cassandra and should be the first thing to read if you are new to
+Cassandra.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="installing.html">Installing Cassandra</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installing.html#prerequisites">Prerequisites</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installing.html#installation-from-binary-tarball-files">Installation from binary tarball files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installing.html#installation-from-debian-packages">Installation from Debian packages</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="configuring.html">Configuring Cassandra</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html#main-runtime-properties">Main runtime properties</a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html#changing-the-location-of-directories">Changing the location of directories</a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html#environment-variables">Environment variables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html#logging">Logging</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="querying.html">Inserting and querying</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="querying.html#cqlsh">CQLSH</a></li>
+<li class="toctree-l2"><a class="reference internal" href="querying.html#client-drivers">Client drivers</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="drivers.html">Client drivers</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#java">Java</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#python">Python</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#ruby">Ruby</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#c-net">C# / .NET</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#nodejs">Nodejs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#php">PHP</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#c">C++</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#scala">Scala</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#clojure">Clojure</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#erlang">Erlang</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#go">Go</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#haskell">Haskell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#rust">Rust</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="installing.html" class="btn btn-default pull-right " role="button" title="Installing Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../index.html" class="btn btn-default" role="button" title="Welcome to Apache Cassandra’s documentation!" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/getting_started/installing.html b/src/doc/3.11.11/getting_started/installing.html
new file mode 100644
index 0000000..19e7319
--- /dev/null
+++ b/src/doc/3.11.11/getting_started/installing.html
@@ -0,0 +1,196 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Getting Started"
+
+doc-title: "Installing Cassandra"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Getting Started" href="index.html"/>
+      <link rel="next" title="Configuring Cassandra" href="configuring.html"/>
+      <link rel="prev" title="Getting Started" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Installing Cassandra</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#prerequisites">Prerequisites</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#installation-from-binary-tarball-files">Installation from binary tarball files</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#installation-from-debian-packages">Installation from Debian packages</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="querying.html">Inserting and querying</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html">Client drivers</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="installing-cassandra">
+<h1>Installing Cassandra<a class="headerlink" href="#installing-cassandra" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="prerequisites">
+<h2>Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>The latest version of Java 8, either the <a class="reference external" href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Oracle Java Standard Edition 8</a> or <a class="reference external" href="http://openjdk.java.net/">OpenJDK 8</a>. To
+verify that you have the correct version of java installed, type <code class="docutils literal notranslate"><span class="pre">java</span> <span class="pre">-version</span></code>.</li>
+<li>For using cqlsh, the latest version of <a class="reference external" href="https://www.python.org/downloads/">Python 2.7</a>. To verify that you have
+the correct version of Python installed, type <code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">--version</span></code>.</li>
+</ul>
+</div>
+<div class="section" id="installation-from-binary-tarball-files">
+<h2>Installation from binary tarball files<a class="headerlink" href="#installation-from-binary-tarball-files" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Download the latest stable release from the <a class="reference external" href="http://cassandra.apache.org/download/">Apache Cassandra downloads website</a>.</li>
+<li>Untar the file somewhere, for example:</li>
+</ul>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>tar -xvf apache-cassandra-3.6-bin.tar.gz cassandra
+</pre></div>
+</div>
+<p>The files will be extracted into <code class="docutils literal notranslate"><span class="pre">apache-cassandra-3.6</span></code>, you need to substitute 3.6 with the release number that you
+have downloaded.</p>
+<ul class="simple">
+<li>Optionally add <code class="docutils literal notranslate"><span class="pre">apache-cassandra-3.6\bin</span></code> to your path.</li>
+<li>Start Cassandra in the foreground by invoking <code class="docutils literal notranslate"><span class="pre">bin/cassandra</span> <span class="pre">-f</span></code> from the command line. Press “Control-C” to stop
+Cassandra. Start Cassandra in the background by invoking <code class="docutils literal notranslate"><span class="pre">bin/cassandra</span></code> from the command line. Invoke <code class="docutils literal notranslate"><span class="pre">kill</span> <span class="pre">pid</span></code>
+or <code class="docutils literal notranslate"><span class="pre">pkill</span> <span class="pre">-f</span> <span class="pre">CassandraDaemon</span></code> to stop Cassandra, where pid is the Cassandra process id, which you can find for
+example by invoking <code class="docutils literal notranslate"><span class="pre">pgrep</span> <span class="pre">-f</span> <span class="pre">CassandraDaemon</span></code>.</li>
+<li>Verify that Cassandra is running by invoking <code class="docutils literal notranslate"><span class="pre">bin/nodetool</span> <span class="pre">status</span></code> from the command line.</li>
+<li>Configuration files are located in the <code class="docutils literal notranslate"><span class="pre">conf</span></code> sub-directory.</li>
+<li>Since Cassandra 2.1, log and data directories are located in the <code class="docutils literal notranslate"><span class="pre">logs</span></code> and <code class="docutils literal notranslate"><span class="pre">data</span></code> sub-directories respectively.
+Older versions defaulted to <code class="docutils literal notranslate"><span class="pre">/var/log/cassandra</span></code> and <code class="docutils literal notranslate"><span class="pre">/var/lib/cassandra</span></code>. Due to this, it is necessary to either
+start Cassandra with root privileges or change <code class="docutils literal notranslate"><span class="pre">conf/cassandra.yaml</span></code> to use directories owned by the current user,
+as explained below in the section on changing the location of directories.</li>
+</ul>
+</div>
+<div class="section" id="installation-from-debian-packages">
+<h2>Installation from Debian packages<a class="headerlink" href="#installation-from-debian-packages" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Add the Apache repository of Cassandra to <code class="docutils literal notranslate"><span class="pre">/etc/apt/sources.list.d/cassandra.sources.list</span></code>, for example for version
+3.6:</li>
+</ul>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>echo &quot;deb https://downloads.apache.org/cassandra/debian 36x main&quot; | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
+</pre></div>
+</div>
+<ul class="simple">
+<li>Add the Apache Cassandra repository keys:</li>
+</ul>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
+</pre></div>
+</div>
+<ul class="simple">
+<li>Update the repositories:</li>
+</ul>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sudo apt-get update
+</pre></div>
+</div>
+<ul class="simple">
+<li>If you encounter this error:</li>
+</ul>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>GPG error: http://www.apache.org 36x InRelease: The following signatures couldn&#39;t be verified because the public key is not available: NO_PUBKEY A278B781FE4B2BDA
+</pre></div>
+</div>
+<p>Then add the public key A278B781FE4B2BDA as follows:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-key A278B781FE4B2BDA
+</pre></div>
+</div>
+<p>and repeat <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">apt-get</span> <span class="pre">update</span></code>. The actual key may be different, you get it from the error message itself. For a
+full list of Apache contributors public keys, you can refer to <a class="reference external" href="https://downloads.apache.org/cassandra/KEYS">this link</a>.</p>
+<ul class="simple">
+<li>Install Cassandra:</li>
+</ul>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sudo apt-get install cassandra
+</pre></div>
+</div>
+<ul class="simple">
+<li>You can start Cassandra with <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">service</span> <span class="pre">cassandra</span> <span class="pre">start</span></code> and stop it with <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">service</span> <span class="pre">cassandra</span> <span class="pre">stop</span></code>.
+However, normally the service will start automatically. For this reason be sure to stop it if you need to make any
+configuration changes.</li>
+<li>Verify that Cassandra is running by invoking <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">status</span></code> from the command line.</li>
+<li>The default location of configuration files is <code class="docutils literal notranslate"><span class="pre">/etc/cassandra</span></code>.</li>
+<li>The default location of log and data directories is <code class="docutils literal notranslate"><span class="pre">/var/log/cassandra/</span></code> and <code class="docutils literal notranslate"><span class="pre">/var/lib/cassandra</span></code>.</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="configuring.html" class="btn btn-default pull-right " role="button" title="Configuring Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Getting Started" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/getting_started/querying.html b/src/doc/3.11.11/getting_started/querying.html
new file mode 100644
index 0000000..1d7b958
--- /dev/null
+++ b/src/doc/3.11.11/getting_started/querying.html
@@ -0,0 +1,144 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Getting Started"
+
+doc-title: "Inserting and querying"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Getting Started" href="index.html"/>
+      <link rel="next" title="Client drivers" href="drivers.html"/>
+      <link rel="prev" title="Configuring Cassandra" href="configuring.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="installing.html">Installing Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring Cassandra</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Inserting and querying</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#cqlsh">CQLSH</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#client-drivers">Client drivers</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html">Client drivers</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="inserting-and-querying">
+<h1>Inserting and querying<a class="headerlink" href="#inserting-and-querying" title="Permalink to this headline">¶</a></h1>
+<p>The API to Cassandra is <a class="reference internal" href="../cql/index.html#cql"><span class="std std-ref">CQL</span></a>, the Cassandra Query Language. To use CQL, you will need to connect to the
+cluster, which can be done:</p>
+<ul class="simple">
+<li>either using cqlsh,</li>
+<li>or through a client driver for Cassandra.</li>
+</ul>
+<div class="section" id="cqlsh">
+<h2>CQLSH<a class="headerlink" href="#cqlsh" title="Permalink to this headline">¶</a></h2>
+<p>cqlsh is a command line shell for interacting with Cassandra through CQL. It is shipped with every Cassandra package,
+and can be found in the bin/ directory alongside the cassandra executable. It connects to the single node specified on
+the command line. For example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ bin/cqlsh localhost
+Connected to Test Cluster at localhost:9042.
+[cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
+Use HELP for help.
+cqlsh&gt; SELECT cluster_name, listen_address FROM system.local;
+
+ cluster_name | listen_address
+--------------+----------------
+ Test Cluster |      127.0.0.1
+
+(1 rows)
+cqlsh&gt;
+</pre></div>
+</div>
+<p>See the <a class="reference internal" href="../tools/cqlsh.html#cqlsh"><span class="std std-ref">cqlsh section</span></a> for full documentation.</p>
+</div>
+<div class="section" id="client-drivers">
+<h2>Client drivers<a class="headerlink" href="#client-drivers" title="Permalink to this headline">¶</a></h2>
+<p>A lot of client drivers are provided by the Community and a list of known drivers is provided in <a class="reference internal" href="drivers.html#client-drivers"><span class="std std-ref">the next section</span></a>. You should refer to the documentation of each drivers for more information on how to use them.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="drivers.html" class="btn btn-default pull-right " role="button" title="Client drivers" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="configuring.html" class="btn btn-default" role="button" title="Configuring Cassandra" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/index.html b/src/doc/3.11.11/index.html
new file mode 100644
index 0000000..b0a2fa7
--- /dev/null
+++ b/src/doc/3.11.11/index.html
@@ -0,0 +1,154 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: ""
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="#"/>
+'
+doc-search-path: "search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <h1>Apache Cassandra Documentation v3.11.11</h1>
+  <p>
+  Welcome! This is the documentation for Apache Cassandra 3.11.11.
+  </p>
+<div id="wipwarning">This documentation is a work-in-progress.
+    <a href="bugs.html">Contributions</a> are welcome.</div>
+
+<h3>Main documentation</h3>
+
+<table class="contentstable doc-landing-table" align="center">
+  <tr>
+    <td class="left-column">
+      <p class="biglink"><a class="biglink" href="getting_started/index.html">Getting started</a><br/>
+      <span class="linkdescr">Newbie friendly starting point</span></p>
+    </td>
+    <td class="right-column">
+      <p class="biglink"><a class="biglink" href="operating/index.html">Operating Cassandra</a><br/>
+      <span class="linkdescr">The operator's corner</span></p>
+    </td>
+  </tr>
+  <tr>
+    <td class="left-column">
+      <p class="biglink"><a class="biglink" href="architecture/index.html">Cassandra Architecture</a><br/>
+      <span class="linkdescr">Cassandra's big picture</span></p>
+    </td>
+    <td class="right-column">
+      <p class="biglink"><a class="biglink" href="tools/index.html">Cassandra's Tools</a><br/>
+      <span class="linkdescr">cqlsh, nodetool, ...</span></p>
+    </td>
+  </tr>
+  <tr>
+    <td class="left-column">
+      <p class="biglink"><a class="biglink" href="data_modeling/index.html">Data Modeling</a><br/>
+      <span class="linkdescr">Or how to make square pegs fit round holes</span></p>
+    </td>
+    <td class="right-column">
+      <p class="biglink"><a class="biglink" href="troubleshooting/index.html">Troubleshooting</a><br/>
+      <span class="linkdescr">What to look for when you have a problem</span></p>
+    </td>
+  </tr>
+  <tr>
+    <td class="left-column">
+      <p class="biglink"><a class="biglink" href="cql/index.html">Cassandra Query Language</a><br/>
+      <span class="linkdescr">CQL reference documentation</span></p>
+    </td>
+    <td class="right-column">
+      <p class="biglink"><a class="biglink" href="development/index.html">Cassandra Development</a><br/>
+      <span class="linkdescr">Learn how to improve Cassandra and contribute patches</span></p>
+    </td>
+  </tr>
+  <tr>
+    <td class="left-column">
+      <p class="biglink"><a class="biglink" href="faq/index.html">FAQs</a><br/>
+      <span class="linkdescr">Frequently Asked Questions (with answers!)</span></p>
+    </td>
+    <td class="right-column">
+      <p class="biglink"><a class="biglink" href="configuration/index.html">Configuration</a><br/>
+      <span class="linkdescr">Cassandra's handles and knobs</span></p>
+    </td>
+  </tr>
+</table>
+
+<h3>Meta informations</h3>
+
+<ul>
+  <li><a class="biglink" href="bugs.html">Reporting bugs</a></li>
+  <li><a class="biglink" href="contactus.html">Contact us</a></li>
+</ul>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/objects.inv b/src/doc/3.11.11/objects.inv
new file mode 100644
index 0000000..e76b71b
--- /dev/null
+++ b/src/doc/3.11.11/objects.inv
Binary files differ
diff --git a/src/doc/3.11.11/operating/backups.html b/src/doc/3.11.11/operating/backups.html
new file mode 100644
index 0000000..6c6823a
--- /dev/null
+++ b/src/doc/3.11.11/operating/backups.html
@@ -0,0 +1,123 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Backups"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Bulk Loading" href="bulk_loading.html"/>
+      <link rel="prev" title="Change Data Capture" href="cdc.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="backups">
+<h1>Backups<a class="headerlink" href="#backups" title="Permalink to this headline">¶</a></h1>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">TODO</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="bulk_loading.html" class="btn btn-default pull-right " role="button" title="Bulk Loading" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="cdc.html" class="btn btn-default" role="button" title="Change Data Capture" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/bloom_filters.html b/src/doc/3.11.11/operating/bloom_filters.html
new file mode 100644
index 0000000..9b9a24a
--- /dev/null
+++ b/src/doc/3.11.11/operating/bloom_filters.html
@@ -0,0 +1,160 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Bloom Filters"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Compression" href="compression.html"/>
+      <link rel="prev" title="Compaction" href="compaction.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Bloom Filters</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#changing">Changing</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="bloom-filters">
+<h1>Bloom Filters<a class="headerlink" href="#bloom-filters" title="Permalink to this headline">¶</a></h1>
+<p>In the read path, Cassandra merges data on disk (in SSTables) with data in RAM (in memtables). To avoid checking every
+SSTable data file for the partition being requested, Cassandra employs a data structure known as a bloom filter.</p>
+<p>Bloom filters are a probabilistic data structure that allows Cassandra to determine one of two possible states: - The
+data definitely does not exist in the given file, or - The data probably exists in the given file.</p>
+<p>While bloom filters can not guarantee that the data exists in a given SSTable, bloom filters can be made more accurate
+by allowing them to consume more RAM. Operators have the opportunity to tune this behavior per table by adjusting the
+the <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> to a float between 0 and 1.</p>
+<p>The default value for <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> is 0.1 for tables using LeveledCompactionStrategy and 0.01 for all
+other cases.</p>
+<p>Bloom filters are stored in RAM, but are stored offheap, so operators should not consider bloom filters when selecting
+the maximum heap size.  As accuracy improves (as the <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> gets closer to 0), memory usage
+increases non-linearly - the bloom filter for <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span> <span class="pre">=</span> <span class="pre">0.01</span></code> will require about three times as much
+memory as the same table with <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span> <span class="pre">=</span> <span class="pre">0.1</span></code>.</p>
+<p>Typical values for <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> are usually between 0.01 (1%) to 0.1 (10%) false-positive chance, where
+Cassandra may scan an SSTable for a row, only to find that it does not exist on the disk. The parameter should be tuned
+by use case:</p>
+<ul class="simple">
+<li>Users with more RAM and slower disks may benefit from setting the <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> to a numerically lower
+number (such as 0.01) to avoid excess IO operations</li>
+<li>Users with less RAM, more dense nodes, or very fast disks may tolerate a higher <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> in order to
+save RAM at the expense of excess IO operations</li>
+<li>In workloads that rarely read, or that only perform reads by scanning the entire data set (such as analytics
+workloads), setting the <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> to a much higher number is acceptable.</li>
+</ul>
+<div class="section" id="changing">
+<h2>Changing<a class="headerlink" href="#changing" title="Permalink to this headline">¶</a></h2>
+<p>The bloom filter false positive chance is visible in the <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span> <span class="pre">TABLE</span></code> output as the field
+<code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code>. Operators can change the value with an <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ALTER TABLE keyspace.table WITH bloom_filter_fp_chance=0.01
+</pre></div>
+</div>
+<p>Operators should be aware, however, that this change is not immediate: the bloom filter is calculated when the file is
+written, and persisted on disk as the Filter component of the SSTable. Upon issuing an <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement, new
+files on disk will be written with the new <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code>, but existing sstables will not be modified until
+they are compacted - if an operator needs a change to <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> to take effect, they can trigger an
+SSTable rewrite using <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">scrub</span></code> or <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">upgradesstables</span> <span class="pre">-a</span></code>, both of which will rebuild the sstables on
+disk, regenerating the bloom filters in the progress.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="compression.html" class="btn btn-default pull-right " role="button" title="Compression" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="compaction.html" class="btn btn-default" role="button" title="Compaction" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/bulk_loading.html b/src/doc/3.11.11/operating/bulk_loading.html
new file mode 100644
index 0000000..2055a24
--- /dev/null
+++ b/src/doc/3.11.11/operating/bulk_loading.html
@@ -0,0 +1,123 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Bulk Loading"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Monitoring" href="metrics.html"/>
+      <link rel="prev" title="Backups" href="backups.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="bulk-loading">
+<span id="id1"></span><h1>Bulk Loading<a class="headerlink" href="#bulk-loading" title="Permalink to this headline">¶</a></h1>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">TODO</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="metrics.html" class="btn btn-default pull-right " role="button" title="Monitoring" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="backups.html" class="btn btn-default" role="button" title="Backups" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/cdc.html b/src/doc/3.11.11/operating/cdc.html
new file mode 100644
index 0000000..d8e6002
--- /dev/null
+++ b/src/doc/3.11.11/operating/cdc.html
@@ -0,0 +1,186 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Change Data Capture"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Backups" href="backups.html"/>
+      <link rel="prev" title="Compression" href="compression.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Change Data Capture</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#overview">Overview</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#configuration">Configuration</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#reading-commitlogsegments">Reading CommitLogSegments</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#warnings">Warnings</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#further-reading">Further Reading</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="change-data-capture">
+<h1>Change Data Capture<a class="headerlink" href="#change-data-capture" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="overview">
+<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
+<p>Change data capture (CDC) provides a mechanism to flag specific tables for archival as well as rejecting writes to those
+tables once a configurable size-on-disk for the combined flushed and unflushed CDC-log is reached. An operator can
+enable CDC on a table by setting the table property <code class="docutils literal notranslate"><span class="pre">cdc=true</span></code> (either when <a class="reference internal" href="../cql/ddl.html#create-table-statement"><span class="std std-ref">creating the table</span></a> or <a class="reference internal" href="../cql/ddl.html#alter-table-statement"><span class="std std-ref">altering it</span></a>), after which any CommitLogSegments containing
+data for a CDC-enabled table are moved to the directory specified in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> on segment discard. A threshold
+of total disk space allowed is specified in the yaml at which time newly allocated CommitLogSegments will not allow CDC
+data until a consumer parses and removes data from the destination archival directory.</p>
+</div>
+<div class="section" id="configuration">
+<h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="enabling-or-disable-cdc-on-a-table">
+<h3>Enabling or disable CDC on a table<a class="headerlink" href="#enabling-or-disable-cdc-on-a-table" title="Permalink to this headline">¶</a></h3>
+<p>CDC is enable or disable through the <cite>cdc</cite> table property, for instance:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CREATE TABLE foo (a int, b text, PRIMARY KEY(a)) WITH cdc=true;
+
+ALTER TABLE foo WITH cdc=true;
+
+ALTER TABLE foo WITH cdc=false;
+</pre></div>
+</div>
+</div>
+<div class="section" id="cassandra-yaml-parameters">
+<h3>cassandra.yaml parameters<a class="headerlink" href="#cassandra-yaml-parameters" title="Permalink to this headline">¶</a></h3>
+<p>The following <cite>cassandra.yaml</cite> are available for CDC:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">cdc_enabled</span></code> (default: false)</dt>
+<dd>Enable or disable CDC operations node-wide.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">cdc_raw_directory</span></code> (default: <code class="docutils literal notranslate"><span class="pre">$CASSANDRA_HOME/data/cdc_raw</span></code>)</dt>
+<dd>Destination for CommitLogSegments to be moved after all corresponding memtables are flushed.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">cdc_free_space_in_mb</span></code>: (default: min of 4096 and 1/8th volume space)</dt>
+<dd>Calculated as sum of all active CommitLogSegments that permit CDC + all flushed CDC segments in
+<code class="docutils literal notranslate"><span class="pre">cdc_raw_directory</span></code>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">cdc_free_space_check_interval_ms</span></code> (default: 250)</dt>
+<dd>When at capacity, we limit the frequency with which we re-calculate the space taken up by <code class="docutils literal notranslate"><span class="pre">cdc_raw_directory</span></code> to
+prevent burning CPU cycles unnecessarily. Default is to check 4 times per second.</dd>
+</dl>
+</div>
+</div>
+<div class="section" id="reading-commitlogsegments">
+<span id="id1"></span><h2>Reading CommitLogSegments<a class="headerlink" href="#reading-commitlogsegments" title="Permalink to this headline">¶</a></h2>
+<p>This implementation included a refactor of CommitLogReplayer into <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java">CommitLogReader.java</a>.
+Usage is <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java#L132-L140">fairly straightforward</a>
+with a <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java#L71-L103">variety of signatures</a>
+available for use. In order to handle mutations read from disk, implement <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReadHandler.java">CommitLogReadHandler</a>.</p>
+</div>
+<div class="section" id="warnings">
+<h2>Warnings<a class="headerlink" href="#warnings" title="Permalink to this headline">¶</a></h2>
+<p><strong>Do not enable CDC without some kind of consumption process in-place.</strong></p>
+<p>The initial implementation of Change Data Capture does not include a parser (see <a class="reference internal" href="#reading-commitlogsegments"><span class="std std-ref">Reading CommitLogSegments</span></a> above)
+so, if CDC is enabled on a node and then on a table, the <code class="docutils literal notranslate"><span class="pre">cdc_free_space_in_mb</span></code> will fill up and then writes to
+CDC-enabled tables will be rejected unless some consumption process is in place.</p>
+</div>
+<div class="section" id="further-reading">
+<h2>Further Reading<a class="headerlink" href="#further-reading" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://docs.google.com/document/d/1ZxCWYkeZTquxsvf5hdPc0fiUnUHna8POvgt6TIzML4Y/edit">Design doc</a></li>
+<li><a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-8844">JIRA ticket</a></li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="backups.html" class="btn btn-default pull-right " role="button" title="Backups" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="compression.html" class="btn btn-default" role="button" title="Compression" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/compaction.html b/src/doc/3.11.11/operating/compaction.html
new file mode 100644
index 0000000..6bd7205
--- /dev/null
+++ b/src/doc/3.11.11/operating/compaction.html
@@ -0,0 +1,514 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Compaction"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Bloom Filters" href="bloom_filters.html"/>
+      <link rel="prev" title="Hints" href="hints.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Compaction</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#types-of-compaction">Types of compaction</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#when-is-a-minor-compaction-triggered">When is a minor compaction triggered?</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#merging-sstables">Merging sstables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tombstones-and-garbage-collection-gc-grace">Tombstones and Garbage Collection (GC) Grace</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#ttl">TTL</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#fully-expired-sstables">Fully expired sstables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#repaired-unrepaired-data">Repaired/unrepaired data</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#data-directories">Data directories</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#single-sstable-tombstone-compaction">Single sstable tombstone compaction</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#common-options">Common options</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#compaction-nodetool-commands">Compaction nodetool commands</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#switching-the-compaction-strategy-and-options-using-jmx">Switching the compaction strategy and options using JMX</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#more-detailed-compaction-logging">More detailed compaction logging</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#size-tiered-compaction-strategy">Size Tiered Compaction Strategy</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#leveled-compaction-strategy">Leveled Compaction Strategy</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#time-window-compactionstrategy">Time Window CompactionStrategy</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="compaction">
+<span id="id1"></span><h1>Compaction<a class="headerlink" href="#compaction" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="types-of-compaction">
+<h2>Types of compaction<a class="headerlink" href="#types-of-compaction" title="Permalink to this headline">¶</a></h2>
+<p>The concept of compaction is used for different kinds of operations in Cassandra, the common thing about these
+operations is that it takes one or more sstables and output new sstables. The types of compactions are;</p>
+<dl class="docutils">
+<dt>Minor compaction</dt>
+<dd>triggered automatically in Cassandra.</dd>
+<dt>Major compaction</dt>
+<dd>a user executes a compaction over all sstables on the node.</dd>
+<dt>User defined compaction</dt>
+<dd>a user triggers a compaction on a given set of sstables.</dd>
+<dt>Scrub</dt>
+<dd>try to fix any broken sstables. This can actually remove valid data if that data is corrupted, if that happens you
+will need to run a full repair on the node.</dd>
+<dt>Upgradesstables</dt>
+<dd>upgrade sstables to the latest version. Run this after upgrading to a new major version.</dd>
+<dt>Cleanup</dt>
+<dd>remove any ranges this node does not own anymore, typically triggered on neighbouring nodes after a node has been
+bootstrapped since that node will take ownership of some ranges from those nodes.</dd>
+<dt>Secondary index rebuild</dt>
+<dd>rebuild the secondary indexes on the node.</dd>
+<dt>Anticompaction</dt>
+<dd>after repair the ranges that were actually repaired are split out of the sstables that existed when repair started.</dd>
+<dt>Sub range compaction</dt>
+<dd>It is possible to only compact a given sub range - this could be useful if you know a token that has been
+misbehaving - either gathering many updates or many deletes. (<code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">compact</span> <span class="pre">-st</span> <span class="pre">x</span> <span class="pre">-et</span> <span class="pre">y</span></code>) will pick
+all sstables containing the range between x and y and issue a compaction for those sstables. For STCS this will
+most likely include all sstables but with LCS it can issue the compaction for a subset of the sstables. With LCS
+the resulting sstable will end up in L0.</dd>
+</dl>
+</div>
+<div class="section" id="when-is-a-minor-compaction-triggered">
+<h2>When is a minor compaction triggered?<a class="headerlink" href="#when-is-a-minor-compaction-triggered" title="Permalink to this headline">¶</a></h2>
+<p>#  When an sstable is added to the node through flushing/streaming etc.
+#  When autocompaction is enabled after being disabled (<code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">enableautocompaction</span></code>)
+#  When compaction adds new sstables.
+#  A check for new minor compactions every 5 minutes.</p>
+</div>
+<div class="section" id="merging-sstables">
+<h2>Merging sstables<a class="headerlink" href="#merging-sstables" title="Permalink to this headline">¶</a></h2>
+<p>Compaction is about merging sstables, since partitions in sstables are sorted based on the hash of the partition key it
+is possible to efficiently merge separate sstables. Content of each partition is also sorted so each partition can be
+merged efficiently.</p>
+</div>
+<div class="section" id="tombstones-and-garbage-collection-gc-grace">
+<h2>Tombstones and Garbage Collection (GC) Grace<a class="headerlink" href="#tombstones-and-garbage-collection-gc-grace" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="why-tombstones">
+<h3>Why Tombstones<a class="headerlink" href="#why-tombstones" title="Permalink to this headline">¶</a></h3>
+<p>When a delete request is received by Cassandra it does not actually remove the data from the underlying store. Instead
+it writes a special piece of data known as a tombstone. The Tombstone represents the delete and causes all values which
+occurred before the tombstone to not appear in queries to the database. This approach is used instead of removing values
+because of the distributed nature of Cassandra.</p>
+</div>
+<div class="section" id="deletes-without-tombstones">
+<h3>Deletes without tombstones<a class="headerlink" href="#deletes-without-tombstones" title="Permalink to this headline">¶</a></h3>
+<p>Imagine a three node cluster which has the value [A] replicated to every node.:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[A], [A], [A]
+</pre></div>
+</div>
+<p>If one of the nodes fails and and our delete operation only removes existing values we can end up with a cluster that
+looks like:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[], [], [A]
+</pre></div>
+</div>
+<p>Then a repair operation would replace the value of [A] back onto the two
+nodes which are missing the value.:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[A], [A], [A]
+</pre></div>
+</div>
+<p>This would cause our data to be resurrected even though it had been
+deleted.</p>
+</div>
+<div class="section" id="deletes-with-tombstones">
+<h3>Deletes with Tombstones<a class="headerlink" href="#deletes-with-tombstones" title="Permalink to this headline">¶</a></h3>
+<p>Starting again with a three node cluster which has the value [A] replicated to every node.:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[A], [A], [A]
+</pre></div>
+</div>
+<p>If instead of removing data we add a tombstone record, our single node failure situation will look like this.:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[A, Tombstone[A]], [A, Tombstone[A]], [A]
+</pre></div>
+</div>
+<p>Now when we issue a repair the Tombstone will be copied to the replica, rather than the deleted data being
+resurrected.:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[A, Tombstone[A]], [A, Tombstone[A]], [A, Tombstone[A]]
+</pre></div>
+</div>
+<p>Our repair operation will correctly put the state of the system to what we expect with the record [A] marked as deleted
+on all nodes. This does mean we will end up accruing Tombstones which will permanently accumulate disk space. To avoid
+keeping tombstones forever we have a parameter known as <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code> for every table in Cassandra.</p>
+</div>
+<div class="section" id="the-gc-grace-seconds-parameter-and-tombstone-removal">
+<h3>The gc_grace_seconds parameter and Tombstone Removal<a class="headerlink" href="#the-gc-grace-seconds-parameter-and-tombstone-removal" title="Permalink to this headline">¶</a></h3>
+<p>The table level <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code> parameter controls how long Cassandra will retain tombstones through compaction
+events before finally removing them. This duration should directly reflect the amount of time a user expects to allow
+before recovering a failed node. After <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code> has expired the tombstone may be removed (meaning there will
+no longer be any record that a certain piece of data was deleted), but as a tombstone can live in one sstable and the
+data it covers in another, a compaction must also include both sstable for a tombstone to be removed. More precisely, to
+be able to drop an actual tombstone the following needs to be true;</p>
+<ul class="simple">
+<li>The tombstone must be older than <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code></li>
+<li>If partition X contains the tombstone, the sstable containing the partition plus all sstables containing data older
+than the tombstone containing X must be included in the same compaction. We don’t need to care if the partition is in
+an sstable if we can guarantee that all data in that sstable is newer than the tombstone. If the tombstone is older
+than the data it cannot shadow that data.</li>
+<li>If the option <code class="docutils literal notranslate"><span class="pre">only_purge_repaired_tombstones</span></code> is enabled, tombstones are only removed if the data has also been
+repaired.</li>
+</ul>
+<p>If a node remains down or disconnected for longer than <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code> it’s deleted data will be repaired back to
+the other nodes and re-appear in the cluster. This is basically the same as in the “Deletes without Tombstones” section.
+Note that tombstones will not be removed until a compaction event even if <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code> has elapsed.</p>
+<p>The default value for <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code> is 864000 which is equivalent to 10 days. This can be set when creating or
+altering a table using <code class="docutils literal notranslate"><span class="pre">WITH</span> <span class="pre">gc_grace_seconds</span></code>.</p>
+</div>
+</div>
+<div class="section" id="ttl">
+<h2>TTL<a class="headerlink" href="#ttl" title="Permalink to this headline">¶</a></h2>
+<p>Data in Cassandra can have an additional property called time to live - this is used to automatically drop data that has
+expired once the time is reached. Once the TTL has expired the data is converted to a tombstone which stays around for
+at least <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code>. Note that if you mix data with TTL and data without TTL (or just different length of the
+TTL) Cassandra will have a hard time dropping the tombstones created since the partition might span many sstables and
+not all are compacted at once.</p>
+</div>
+<div class="section" id="fully-expired-sstables">
+<h2>Fully expired sstables<a class="headerlink" href="#fully-expired-sstables" title="Permalink to this headline">¶</a></h2>
+<p>If an sstable contains only tombstones and it is guaranteed that that sstable is not shadowing data in any other sstable
+compaction can drop that sstable. If you see sstables with only tombstones (note that TTL:ed data is considered
+tombstones once the time to live has expired) but it is not being dropped by compaction, it is likely that other
+sstables contain older data. There is a tool called <code class="docutils literal notranslate"><span class="pre">sstableexpiredblockers</span></code> that will list which sstables are
+droppable and which are blocking them from being dropped. This is especially useful for time series compaction with
+<code class="docutils literal notranslate"><span class="pre">TimeWindowCompactionStrategy</span></code> (and the deprecated <code class="docutils literal notranslate"><span class="pre">DateTieredCompactionStrategy</span></code>).</p>
+</div>
+<div class="section" id="repaired-unrepaired-data">
+<h2>Repaired/unrepaired data<a class="headerlink" href="#repaired-unrepaired-data" title="Permalink to this headline">¶</a></h2>
+<p>With incremental repairs Cassandra must keep track of what data is repaired and what data is unrepaired. With
+anticompaction repaired data is split out into repaired and unrepaired sstables. To avoid mixing up the data again
+separate compaction strategy instances are run on the two sets of data, each instance only knowing about either the
+repaired or the unrepaired sstables. This means that if you only run incremental repair once and then never again, you
+might have very old data in the repaired sstables that block compaction from dropping tombstones in the unrepaired
+(probably newer) sstables.</p>
+</div>
+<div class="section" id="data-directories">
+<h2>Data directories<a class="headerlink" href="#data-directories" title="Permalink to this headline">¶</a></h2>
+<p>Since tombstones and data can live in different sstables it is important to realize that losing an sstable might lead to
+data becoming live again - the most common way of losing sstables is to have a hard drive break down. To avoid making
+data live tombstones and actual data are always in the same data directory. This way, if a disk is lost, all versions of
+a partition are lost and no data can get undeleted. To achieve this a compaction strategy instance per data directory is
+run in addition to the compaction strategy instances containing repaired/unrepaired data, this means that if you have 4
+data directories there will be 8 compaction strategy instances running. This has a few more benefits than just avoiding
+data getting undeleted:</p>
+<ul class="simple">
+<li>It is possible to run more compactions in parallel - leveled compaction will have several totally separate levelings
+and each one can run compactions independently from the others.</li>
+<li>Users can backup and restore a single data directory.</li>
+<li>Note though that currently all data directories are considered equal, so if you have a tiny disk and a big disk
+backing two data directories, the big one will be limited the by the small one. One work around to this is to create
+more data directories backed by the big disk.</li>
+</ul>
+</div>
+<div class="section" id="single-sstable-tombstone-compaction">
+<h2>Single sstable tombstone compaction<a class="headerlink" href="#single-sstable-tombstone-compaction" title="Permalink to this headline">¶</a></h2>
+<p>When an sstable is written a histogram with the tombstone expiry times is created and this is used to try to find
+sstables with very many tombstones and run single sstable compaction on that sstable in hope of being able to drop
+tombstones in that sstable. Before starting this it is also checked how likely it is that any tombstones will actually
+will be able to be dropped how much this sstable overlaps with other sstables. To avoid most of these checks the
+compaction option <code class="docutils literal notranslate"><span class="pre">unchecked_tombstone_compaction</span></code> can be enabled.</p>
+</div>
+<div class="section" id="common-options">
+<span id="compaction-options"></span><h2>Common options<a class="headerlink" href="#common-options" title="Permalink to this headline">¶</a></h2>
+<p>There is a number of common options for all the compaction strategies;</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">enabled</span></code> (default: true)</dt>
+<dd>Whether minor compactions should run. Note that you can have ‘enabled’: true as a compaction option and then do
+‘nodetool enableautocompaction’ to start running compactions.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">tombstone_threshold</span></code> (default: 0.2)</dt>
+<dd>How much of the sstable should be tombstones for us to consider doing a single sstable compaction of that sstable.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">tombstone_compaction_interval</span></code> (default: 86400s (1 day))</dt>
+<dd>Since it might not be possible to drop any tombstones when doing a single sstable compaction we need to make sure
+that one sstable is not constantly getting recompacted - this option states how often we should try for a given
+sstable.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">log_all</span></code> (default: false)</dt>
+<dd>New detailed compaction logging, see <a class="reference internal" href="#detailed-compaction-logging"><span class="std std-ref">below</span></a>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">unchecked_tombstone_compaction</span></code> (default: false)</dt>
+<dd>The single sstable compaction has quite strict checks for whether it should be started, this option disables those
+checks and for some usecases this might be needed.  Note that this does not change anything for the actual
+compaction, tombstones are only dropped if it is safe to do so - it might just rewrite an sstable without being able
+to drop any tombstones.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">only_purge_repaired_tombstone</span></code> (default: false)</dt>
+<dd>Option to enable the extra safety of making sure that tombstones are only dropped if the data has been repaired.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">min_threshold</span></code> (default: 4)</dt>
+<dd>Lower limit of number of sstables before a compaction is triggered. Not used for <code class="docutils literal notranslate"><span class="pre">LeveledCompactionStrategy</span></code>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">max_threshold</span></code> (default: 32)</dt>
+<dd>Upper limit of number of sstables before a compaction is triggered. Not used for <code class="docutils literal notranslate"><span class="pre">LeveledCompactionStrategy</span></code>.</dd>
+</dl>
+<p>Further, see the section on each strategy for specific additional options.</p>
+</div>
+<div class="section" id="compaction-nodetool-commands">
+<h2>Compaction nodetool commands<a class="headerlink" href="#compaction-nodetool-commands" title="Permalink to this headline">¶</a></h2>
+<p>The <a class="reference internal" href="../tools/nodetool.html#nodetool"><span class="std std-ref">nodetool</span></a> utility provides a number of commands related to compaction:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">enableautocompaction</span></code></dt>
+<dd>Enable compaction.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">disableautocompaction</span></code></dt>
+<dd>Disable compaction.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">setcompactionthroughput</span></code></dt>
+<dd>How fast compaction should run at most - defaults to 16MB/s, but note that it is likely not possible to reach this
+throughput.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">compactionstats</span></code></dt>
+<dd>Statistics about current and pending compactions.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">compactionhistory</span></code></dt>
+<dd>List details about the last compactions.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">setcompactionthreshold</span></code></dt>
+<dd>Set the min/max sstable count for when to trigger compaction, defaults to 4/32.</dd>
+</dl>
+</div>
+<div class="section" id="switching-the-compaction-strategy-and-options-using-jmx">
+<h2>Switching the compaction strategy and options using JMX<a class="headerlink" href="#switching-the-compaction-strategy-and-options-using-jmx" title="Permalink to this headline">¶</a></h2>
+<p>It is possible to switch compaction strategies and its options on just a single node using JMX, this is a great way to
+experiment with settings without affecting the whole cluster. The mbean is:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>org.apache.cassandra.db:type=ColumnFamilies,keyspace=&lt;keyspace_name&gt;,columnfamily=&lt;table_name&gt;
+</pre></div>
+</div>
+<p>and the attribute to change is <code class="docutils literal notranslate"><span class="pre">CompactionParameters</span></code> or <code class="docutils literal notranslate"><span class="pre">CompactionParametersJson</span></code> if you use jconsole or jmc. The
+syntax for the json version is the same as you would use in an <a class="reference internal" href="../cql/ddl.html#alter-table-statement"><span class="std std-ref">ALTER TABLE</span></a> statement -
+for example:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>{ &#39;class&#39;: &#39;LeveledCompactionStrategy&#39;, &#39;sstable_size_in_mb&#39;: 123, &#39;fanout_size&#39;: 10}
+</pre></div>
+</div>
+<p>The setting is kept until someone executes an <a class="reference internal" href="../cql/ddl.html#alter-table-statement"><span class="std std-ref">ALTER TABLE</span></a> that touches the compaction
+settings or restarts the node.</p>
+</div>
+<div class="section" id="more-detailed-compaction-logging">
+<span id="detailed-compaction-logging"></span><h2>More detailed compaction logging<a class="headerlink" href="#more-detailed-compaction-logging" title="Permalink to this headline">¶</a></h2>
+<p>Enable with the compaction option <code class="docutils literal notranslate"><span class="pre">log_all</span></code> and a more detailed compaction log file will be produced in your log
+directory.</p>
+</div>
+<div class="section" id="size-tiered-compaction-strategy">
+<span id="stcs"></span><h2>Size Tiered Compaction Strategy<a class="headerlink" href="#size-tiered-compaction-strategy" title="Permalink to this headline">¶</a></h2>
+<p>The basic idea of <code class="docutils literal notranslate"><span class="pre">SizeTieredCompactionStrategy</span></code> (STCS) is to merge sstables of approximately the same size. All
+sstables are put in different buckets depending on their size. An sstable is added to the bucket if size of the sstable
+is within <code class="docutils literal notranslate"><span class="pre">bucket_low</span></code> and <code class="docutils literal notranslate"><span class="pre">bucket_high</span></code> of the current average size of the sstables already in the bucket. This
+will create several buckets and the most interesting of those buckets will be compacted. The most interesting one is
+decided by figuring out which bucket’s sstables takes the most reads.</p>
+<div class="section" id="major-compaction">
+<h3>Major compaction<a class="headerlink" href="#major-compaction" title="Permalink to this headline">¶</a></h3>
+<p>When running a major compaction with STCS you will end up with two sstables per data directory (one for repaired data
+and one for unrepaired data). There is also an option (-s) to do a major compaction that splits the output into several
+sstables. The sizes of the sstables are approximately 50%, 25%, 12.5%… of the total size.</p>
+</div>
+<div class="section" id="stcs-options">
+<span id="id2"></span><h3>STCS options<a class="headerlink" href="#stcs-options" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">min_sstable_size</span></code> (default: 50MB)</dt>
+<dd>Sstables smaller than this are put in the same bucket.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">bucket_low</span></code> (default: 0.5)</dt>
+<dd>How much smaller than the average size of a bucket a sstable should be before not being included in the bucket. That
+is, if <code class="docutils literal notranslate"><span class="pre">bucket_low</span> <span class="pre">*</span> <span class="pre">avg_bucket_size</span> <span class="pre">&lt;</span> <span class="pre">sstable_size</span></code> (and the <code class="docutils literal notranslate"><span class="pre">bucket_high</span></code> condition holds, see below), then
+the sstable is added to the bucket.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">bucket_high</span></code> (default: 1.5)</dt>
+<dd>How much bigger than the average size of a bucket a sstable should be before not being included in the bucket. That
+is, if <code class="docutils literal notranslate"><span class="pre">sstable_size</span> <span class="pre">&lt;</span> <span class="pre">bucket_high</span> <span class="pre">*</span> <span class="pre">avg_bucket_size</span></code> (and the <code class="docutils literal notranslate"><span class="pre">bucket_low</span></code> condition holds, see above), then
+the sstable is added to the bucket.</dd>
+</dl>
+</div>
+<div class="section" id="defragmentation">
+<h3>Defragmentation<a class="headerlink" href="#defragmentation" title="Permalink to this headline">¶</a></h3>
+<p>Defragmentation is done when many sstables are touched during a read.  The result of the read is put in to the memtable
+so that the next read will not have to touch as many sstables. This can cause writes on a read-only-cluster.</p>
+</div>
+</div>
+<div class="section" id="leveled-compaction-strategy">
+<span id="lcs"></span><h2>Leveled Compaction Strategy<a class="headerlink" href="#leveled-compaction-strategy" title="Permalink to this headline">¶</a></h2>
+<p>The idea of <code class="docutils literal notranslate"><span class="pre">LeveledCompactionStrategy</span></code> (LCS) is that all sstables are put into different levels where we guarantee
+that no overlapping sstables are in the same level. By overlapping we mean that the first/last token of a single sstable
+are never overlapping with other sstables. This means that for a SELECT we will only have to look for the partition key
+in a single sstable per level. Each level is 10x the size of the previous one and each sstable is 160MB by default. L0
+is where sstables are streamed/flushed - no overlap guarantees are given here.</p>
+<p>When picking compaction candidates we have to make sure that the compaction does not create overlap in the target level.
+This is done by always including all overlapping sstables in the next level. For example if we select an sstable in L3,
+we need to guarantee that we pick all overlapping sstables in L4 and make sure that no currently ongoing compactions
+will create overlap if we start that compaction. We can start many parallel compactions in a level if we guarantee that
+we wont create overlap. For L0 -&gt; L1 compactions we almost always need to include all L1 sstables since most L0 sstables
+cover the full range. We also can’t compact all L0 sstables with all L1 sstables in a single compaction since that can
+use too much memory.</p>
+<p>When deciding which level to compact LCS checks the higher levels first (with LCS, a “higher” level is one with a higher
+number, L0 being the lowest one) and if the level is behind a compaction will be started in that level.</p>
+<div class="section" id="id3">
+<h3>Major compaction<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3>
+<p>It is possible to do a major compaction with LCS - it will currently start by filling out L1 and then once L1 is full,
+it continues with L2 etc. This is sub optimal and will change to create all the sstables in a high level instead,
+CASSANDRA-11817.</p>
+</div>
+<div class="section" id="bootstrapping">
+<h3>Bootstrapping<a class="headerlink" href="#bootstrapping" title="Permalink to this headline">¶</a></h3>
+<p>During bootstrap sstables are streamed from other nodes. The level of the remote sstable is kept to avoid many
+compactions after the bootstrap is done. During bootstrap the new node also takes writes while it is streaming the data
+from a remote node - these writes are flushed to L0 like all other writes and to avoid those sstables blocking the
+remote sstables from going to the correct level, we only do STCS in L0 until the bootstrap is done.</p>
+</div>
+<div class="section" id="stcs-in-l0">
+<h3>STCS in L0<a class="headerlink" href="#stcs-in-l0" title="Permalink to this headline">¶</a></h3>
+<p>If LCS gets very many L0 sstables reads are going to hit all (or most) of the L0 sstables since they are likely to be
+overlapping. To more quickly remedy this LCS does STCS compactions in L0 if there are more than 32 sstables there. This
+should improve read performance more quickly compared to letting LCS do its L0 -&gt; L1 compactions. If you keep getting
+too many sstables in L0 it is likely that LCS is not the best fit for your workload and STCS could work out better.</p>
+</div>
+<div class="section" id="starved-sstables">
+<h3>Starved sstables<a class="headerlink" href="#starved-sstables" title="Permalink to this headline">¶</a></h3>
+<p>If a node ends up with a leveling where there are a few very high level sstables that are not getting compacted they
+might make it impossible for lower levels to drop tombstones etc. For example, if there are sstables in L6 but there is
+only enough data to actually get a L4 on the node the left over sstables in L6 will get starved and not compacted.  This
+can happen if a user changes sstable_size_in_mb from 5MB to 160MB for example. To avoid this LCS tries to include
+those starved high level sstables in other compactions if there has been 25 compaction rounds where the highest level
+has not been involved.</p>
+</div>
+<div class="section" id="lcs-options">
+<span id="id4"></span><h3>LCS options<a class="headerlink" href="#lcs-options" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">sstable_size_in_mb</span></code> (default: 160MB)</dt>
+<dd>The target compressed (if using compression) sstable size - the sstables can end up being larger if there are very
+large partitions on the node.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">fanout_size</span></code> (default: 10)</dt>
+<dd>The target size of levels increases by this fanout_size multiplier. You can reduce the space amplification by tuning
+this option.</dd>
+</dl>
+<p>LCS also support the <code class="docutils literal notranslate"><span class="pre">cassandra.disable_stcs_in_l0</span></code> startup option (<code class="docutils literal notranslate"><span class="pre">-Dcassandra.disable_stcs_in_l0=true</span></code>) to avoid
+doing STCS in L0.</p>
+</div>
+</div>
+<div class="section" id="time-window-compactionstrategy">
+<span id="twcs"></span><h2>Time Window CompactionStrategy<a class="headerlink" href="#time-window-compactionstrategy" title="Permalink to this headline">¶</a></h2>
+<p><code class="docutils literal notranslate"><span class="pre">TimeWindowCompactionStrategy</span></code> (TWCS) is designed specifically for workloads where it’s beneficial to have data on
+disk grouped by the timestamp of the data, a common goal when the workload is time-series in nature or when all data is
+written with a TTL. In an expiring/TTL workload, the contents of an entire SSTable likely expire at approximately the
+same time, allowing them to be dropped completely, and space reclaimed much more reliably than when using
+<code class="docutils literal notranslate"><span class="pre">SizeTieredCompactionStrategy</span></code> or <code class="docutils literal notranslate"><span class="pre">LeveledCompactionStrategy</span></code>. The basic concept is that
+<code class="docutils literal notranslate"><span class="pre">TimeWindowCompactionStrategy</span></code> will create 1 sstable per file for a given window, where a window is simply calculated
+as the combination of two primary options:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">compaction_window_unit</span></code> (default: DAYS)</dt>
+<dd>A Java TimeUnit (MINUTES, HOURS, or DAYS).</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">compaction_window_size</span></code> (default: 1)</dt>
+<dd>The number of units that make up a window.</dd>
+</dl>
+<p>Taken together, the operator can specify windows of virtually any size, and <cite>TimeWindowCompactionStrategy</cite> will work to
+create a single sstable for writes within that window. For efficiency during writing, the newest window will be
+compacted using <cite>SizeTieredCompactionStrategy</cite>.</p>
+<p>Ideally, operators should select a <code class="docutils literal notranslate"><span class="pre">compaction_window_unit</span></code> and <code class="docutils literal notranslate"><span class="pre">compaction_window_size</span></code> pair that produces
+approximately 20-30 windows - if writing with a 90 day TTL, for example, a 3 Day window would be a reasonable choice
+(<code class="docutils literal notranslate"><span class="pre">'compaction_window_unit':'DAYS','compaction_window_size':3</span></code>).</p>
+<div class="section" id="timewindowcompactionstrategy-operational-concerns">
+<h3>TimeWindowCompactionStrategy Operational Concerns<a class="headerlink" href="#timewindowcompactionstrategy-operational-concerns" title="Permalink to this headline">¶</a></h3>
+<p>The primary motivation for TWCS is to separate data on disk by timestamp and to allow fully expired SSTables to drop
+more efficiently. One potential way this optimal behavior can be subverted is if data is written to SSTables out of
+order, with new data and old data in the same SSTable. Out of order data can appear in two ways:</p>
+<ul class="simple">
+<li>If the user mixes old data and new data in the traditional write path, the data will be comingled in the memtables
+and flushed into the same SSTable, where it will remain comingled.</li>
+<li>If the user’s read requests for old data cause read repairs that pull old data into the current memtable, that data
+will be comingled and flushed into the same SSTable.</li>
+</ul>
+<p>While TWCS tries to minimize the impact of comingled data, users should attempt to avoid this behavior.  Specifically,
+users should avoid queries that explicitly set the timestamp via CQL <code class="docutils literal notranslate"><span class="pre">USING</span> <span class="pre">TIMESTAMP</span></code>. Additionally, users should run
+frequent repairs (which streams data in such a way that it does not become comingled), and disable background read
+repair by setting the table’s <code class="docutils literal notranslate"><span class="pre">read_repair_chance</span></code> and <code class="docutils literal notranslate"><span class="pre">dclocal_read_repair_chance</span></code> to 0.</p>
+</div>
+<div class="section" id="changing-timewindowcompactionstrategy-options">
+<h3>Changing TimeWindowCompactionStrategy Options<a class="headerlink" href="#changing-timewindowcompactionstrategy-options" title="Permalink to this headline">¶</a></h3>
+<p>Operators wishing to enable <code class="docutils literal notranslate"><span class="pre">TimeWindowCompactionStrategy</span></code> on existing data should consider running a major compaction
+first, placing all existing data into a single (old) window. Subsequent newer writes will then create typical SSTables
+as expected.</p>
+<p>Operators wishing to change <code class="docutils literal notranslate"><span class="pre">compaction_window_unit</span></code> or <code class="docutils literal notranslate"><span class="pre">compaction_window_size</span></code> can do so, but may trigger
+additional compactions as adjacent windows are joined together. If the window size is decrease d (for example, from 24
+hours to 12 hours), then the existing SSTables will not be modified - TWCS can not split existing SSTables into multiple
+windows.</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="bloom_filters.html" class="btn btn-default pull-right " role="button" title="Bloom Filters" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="hints.html" class="btn btn-default" role="button" title="Hints" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/compression.html b/src/doc/3.11.11/operating/compression.html
new file mode 100644
index 0000000..372f04e
--- /dev/null
+++ b/src/doc/3.11.11/operating/compression.html
@@ -0,0 +1,187 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Compression"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Change Data Capture" href="cdc.html"/>
+      <link rel="prev" title="Bloom Filters" href="bloom_filters.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Compression</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#configuring-compression">Configuring Compression</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#benefits-and-uses">Benefits and Uses</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#operational-impact">Operational Impact</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#advanced-use">Advanced Use</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="compression">
+<h1>Compression<a class="headerlink" href="#compression" title="Permalink to this headline">¶</a></h1>
+<p>Cassandra offers operators the ability to configure compression on a per-table basis. Compression reduces the size of
+data on disk by compressing the SSTable in user-configurable compression <code class="docutils literal notranslate"><span class="pre">chunk_length_in_kb</span></code>. Because Cassandra
+SSTables are immutable, the CPU cost of compressing is only necessary when the SSTable is written - subsequent updates
+to data will land in different SSTables, so Cassandra will not need to decompress, overwrite, and recompress data when
+UPDATE commands are issued. On reads, Cassandra will locate the relevant compressed chunks on disk, decompress the full
+chunk, and then proceed with the remainder of the read path (merging data from disks and memtables, read repair, and so
+on).</p>
+<div class="section" id="configuring-compression">
+<h2>Configuring Compression<a class="headerlink" href="#configuring-compression" title="Permalink to this headline">¶</a></h2>
+<p>Compression is configured on a per-table basis as an optional argument to <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> or <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code>. By
+default, three options are relevant:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">class</span></code> specifies the compression class - Cassandra provides three classes (<code class="docutils literal notranslate"><span class="pre">LZ4Compressor</span></code>,
+<code class="docutils literal notranslate"><span class="pre">SnappyCompressor</span></code>, and <code class="docutils literal notranslate"><span class="pre">DeflateCompressor</span></code> ). The default is <code class="docutils literal notranslate"><span class="pre">LZ4Compressor</span></code>.</li>
+<li><code class="docutils literal notranslate"><span class="pre">chunk_length_in_kb</span></code> specifies the number of kilobytes of data per compression chunk. The default is 64KB.</li>
+<li><code class="docutils literal notranslate"><span class="pre">crc_check_chance</span></code> determines how likely Cassandra is to verify the checksum on each compression chunk during
+reads. The default is 1.0.</li>
+</ul>
+<p>Users can set compression using the following syntax:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CREATE TABLE keyspace.table (id int PRIMARY KEY) WITH compression = {&#39;class&#39;: &#39;LZ4Compressor&#39;};
+</pre></div>
+</div>
+<p>Or</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ALTER TABLE keyspace.table WITH compression = {&#39;class&#39;: &#39;SnappyCompressor&#39;, &#39;chunk_length_in_kb&#39;: 128, &#39;crc_check_chance&#39;: 0.5};
+</pre></div>
+</div>
+<p>Once enabled, compression can be disabled with <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> setting <code class="docutils literal notranslate"><span class="pre">enabled</span></code> to <code class="docutils literal notranslate"><span class="pre">false</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ALTER TABLE keyspace.table WITH compression = {&#39;enabled&#39;:&#39;false&#39;};
+</pre></div>
+</div>
+<p>Operators should be aware, however, that changing compression is not immediate. The data is compressed when the SSTable
+is written, and as SSTables are immutable, the compression will not be modified until the table is compacted. Upon
+issuing a change to the compression options via <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code>, the existing SSTables will not be modified until they
+are compacted - if an operator needs compression changes to take effect immediately, the operator can trigger an SSTable
+rewrite using <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">scrub</span></code> or <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">upgradesstables</span> <span class="pre">-a</span></code>, both of which will rebuild the SSTables on disk,
+re-compressing the data in the process.</p>
+</div>
+<div class="section" id="benefits-and-uses">
+<h2>Benefits and Uses<a class="headerlink" href="#benefits-and-uses" title="Permalink to this headline">¶</a></h2>
+<p>Compression’s primary benefit is that it reduces the amount of data written to disk. Not only does the reduced size save
+in storage requirements, it often increases read and write throughput, as the CPU overhead of compressing data is faster
+than the time it would take to read or write the larger volume of uncompressed data from disk.</p>
+<p>Compression is most useful in tables comprised of many rows, where the rows are similar in nature. Tables containing
+similar text columns (such as repeated JSON blobs) often compress very well.</p>
+</div>
+<div class="section" id="operational-impact">
+<h2>Operational Impact<a class="headerlink" href="#operational-impact" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Compression metadata is stored off-heap and scales with data on disk.  This often requires 1-3GB of off-heap RAM per
+terabyte of data on disk, though the exact usage varies with <code class="docutils literal notranslate"><span class="pre">chunk_length_in_kb</span></code> and compression ratios.</li>
+<li>Streaming operations involve compressing and decompressing data on compressed tables - in some code paths (such as
+non-vnode bootstrap), the CPU overhead of compression can be a limiting factor.</li>
+<li>The compression path checksums data to ensure correctness - while the traditional Cassandra read path does not have a
+way to ensure correctness of data on disk, compressed tables allow the user to set <code class="docutils literal notranslate"><span class="pre">crc_check_chance</span></code> (a float from
+0.0 to 1.0) to allow Cassandra to probabilistically validate chunks on read to verify bits on disk are not corrupt.</li>
+</ul>
+</div>
+<div class="section" id="advanced-use">
+<h2>Advanced Use<a class="headerlink" href="#advanced-use" title="Permalink to this headline">¶</a></h2>
+<p>Advanced users can provide their own compression class by implementing the interface at
+<code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.io.compress.ICompressor</span></code>.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="cdc.html" class="btn btn-default pull-right " role="button" title="Change Data Capture" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="bloom_filters.html" class="btn btn-default" role="button" title="Bloom Filters" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/hardware.html b/src/doc/3.11.11/operating/hardware.html
new file mode 100644
index 0000000..06efcdd
--- /dev/null
+++ b/src/doc/3.11.11/operating/hardware.html
@@ -0,0 +1,189 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Hardware Choices"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Cassandra Tools" href="../tools/index.html"/>
+      <link rel="prev" title="Security" href="security.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Hardware Choices</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#cpu">CPU</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memory">Memory</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#disks">Disks</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#common-cloud-choices">Common Cloud Choices</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="hardware-choices">
+<h1>Hardware Choices<a class="headerlink" href="#hardware-choices" title="Permalink to this headline">¶</a></h1>
+<p>Like most databases, Cassandra throughput improves with more CPU cores, more RAM, and faster disks. While Cassandra can
+be made to run on small servers for testing or development environments (including Raspberry Pis), a minimal production
+server requires at least 2 cores, and at least 8GB of RAM. Typical production servers have 8 or more cores and at least
+32GB of RAM.</p>
+<div class="section" id="cpu">
+<h2>CPU<a class="headerlink" href="#cpu" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra is highly concurrent, handling many simultaneous requests (both read and write) using multiple threads running
+on as many CPU cores as possible. The Cassandra write path tends to be heavily optimized (writing to the commitlog and
+then inserting the data into the memtable), so writes, in particular, tend to be CPU bound. Consequently, adding
+additional CPU cores often increases throughput of both reads and writes.</p>
+</div>
+<div class="section" id="memory">
+<h2>Memory<a class="headerlink" href="#memory" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra runs within a Java VM, which will pre-allocate a fixed size heap (java’s Xmx system parameter). In addition to
+the heap, Cassandra will use significant amounts of RAM offheap for compression metadata, bloom filters, row, key, and
+counter caches, and an in process page cache. Finally, Cassandra will take advantage of the operating system’s page
+cache, storing recently accessed portions files in RAM for rapid re-use.</p>
+<p>For optimal performance, operators should benchmark and tune their clusters based on their individual workload. However,
+basic guidelines suggest:</p>
+<ul class="simple">
+<li>ECC RAM should always be used, as Cassandra has few internal safeguards to protect against bit level corruption</li>
+<li>The Cassandra heap should be no less than 2GB, and no more than 50% of your system RAM</li>
+<li>Heaps smaller than 12GB should consider ParNew/ConcurrentMarkSweep garbage collection</li>
+<li>Heaps larger than 12GB should consider G1GC</li>
+</ul>
+</div>
+<div class="section" id="disks">
+<h2>Disks<a class="headerlink" href="#disks" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra persists data to disk for two very different purposes. The first is to the commitlog when a new write is made
+so that it can be replayed after a crash or system shutdown. The second is to the data directory when thresholds are
+exceeded and memtables are flushed to disk as SSTables.</p>
+<p>Commitlogs receive every write made to a Cassandra node and have the potential to block client operations, but they are
+only ever read on node start-up. SSTable (data file) writes on the other hand occur asynchronously, but are read to
+satisfy client look-ups. SSTables are also periodically merged and rewritten in a process called compaction.  The data
+held in the commitlog directory is data that has not been permanently saved to the SSTable data directories - it will be
+periodically purged once it is flushed to the SSTable data files.</p>
+<p>Cassandra performs very well on both spinning hard drives and solid state disks. In both cases, Cassandra’s sorted
+immutable SSTables allow for linear reads, few seeks, and few overwrites, maximizing throughput for HDDs and lifespan of
+SSDs by avoiding write amplification. However, when using spinning disks, it’s important that the commitlog
+(<code class="docutils literal notranslate"><span class="pre">commitlog_directory</span></code>) be on one physical disk (not simply a partition, but a physical disk), and the data files
+(<code class="docutils literal notranslate"><span class="pre">data_file_directories</span></code>) be set to a separate physical disk. By separating the commitlog from the data directory,
+writes can benefit from sequential appends to the commitlog without having to seek around the platter as reads request
+data from various SSTables on disk.</p>
+<p>In most cases, Cassandra is designed to provide redundancy via multiple independent, inexpensive servers. For this
+reason, using NFS or a SAN for data directories is an antipattern and should typically be avoided.  Similarly, servers
+with multiple disks are often better served by using RAID0 or JBOD than RAID1 or RAID5 - replication provided by
+Cassandra obsoletes the need for replication at the disk layer, so it’s typically recommended that operators take
+advantage of the additional throughput of RAID0 rather than protecting against failures with RAID1 or RAID5.</p>
+</div>
+<div class="section" id="common-cloud-choices">
+<h2>Common Cloud Choices<a class="headerlink" href="#common-cloud-choices" title="Permalink to this headline">¶</a></h2>
+<p>Many large users of Cassandra run in various clouds, including AWS, Azure, and GCE - Cassandra will happily run in any
+of these environments. Users should choose similar hardware to what would be needed in physical space. In EC2, popular
+options include:</p>
+<ul class="simple">
+<li>m1.xlarge instances, which provide 1.6TB of local ephemeral spinning storage and sufficient RAM to run moderate
+workloads</li>
+<li>i2 instances, which provide both a high RAM:CPU ratio and local ephemeral SSDs</li>
+<li>m4.2xlarge / c4.4xlarge instances, which provide modern CPUs, enhanced networking and work well with EBS GP2 (SSD)
+storage</li>
+</ul>
+<p>Generally, disk and network performance increases with instance size and generation, so newer generations of instances
+and larger instance types within each family often perform better than their smaller or older alternatives.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../tools/index.html" class="btn btn-default pull-right " role="button" title="Cassandra Tools" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="security.html" class="btn btn-default" role="button" title="Security" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/hints.html b/src/doc/3.11.11/operating/hints.html
new file mode 100644
index 0000000..0de8939
--- /dev/null
+++ b/src/doc/3.11.11/operating/hints.html
@@ -0,0 +1,123 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Hints"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Compaction" href="compaction.html"/>
+      <link rel="prev" title="Read repair" href="read_repair.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="hints">
+<h1>Hints<a class="headerlink" href="#hints" title="Permalink to this headline">¶</a></h1>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">todo</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="compaction.html" class="btn btn-default pull-right " role="button" title="Compaction" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="read_repair.html" class="btn btn-default" role="button" title="Read repair" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/index.html b/src/doc/3.11.11/operating/index.html
new file mode 100644
index 0000000..3a53a93
--- /dev/null
+++ b/src/doc/3.11.11/operating/index.html
@@ -0,0 +1,215 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Operating Cassandra"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="next" title="Snitch" href="snitch.html"/>
+      <link rel="prev" title="Cassandra Configuration File" href="../configuration/cassandra_config_file.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Operating Cassandra</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="operating-cassandra">
+<h1>Operating Cassandra<a class="headerlink" href="#operating-cassandra" title="Permalink to this headline">¶</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="snitch.html">Snitch</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="snitch.html#dynamic-snitching">Dynamic snitching</a></li>
+<li class="toctree-l2"><a class="reference internal" href="snitch.html#snitch-classes">Snitch classes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#bootstrap">Bootstrap</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#removing-nodes">Removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#moving-nodes">Moving nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#replacing-a-dead-node">Replacing a dead node</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#monitoring-progress">Monitoring progress</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#cleanup-data-after-range-movements">Cleanup data after range movements</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l1"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l1"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l1"><a class="reference internal" href="compaction.html">Compaction</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#types-of-compaction">Types of compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#when-is-a-minor-compaction-triggered">When is a minor compaction triggered?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#merging-sstables">Merging sstables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#tombstones-and-garbage-collection-gc-grace">Tombstones and Garbage Collection (GC) Grace</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#ttl">TTL</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#fully-expired-sstables">Fully expired sstables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#repaired-unrepaired-data">Repaired/unrepaired data</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#data-directories">Data directories</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#single-sstable-tombstone-compaction">Single sstable tombstone compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#common-options">Common options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#compaction-nodetool-commands">Compaction nodetool commands</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#switching-the-compaction-strategy-and-options-using-jmx">Switching the compaction strategy and options using JMX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#more-detailed-compaction-logging">More detailed compaction logging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#size-tiered-compaction-strategy">Size Tiered Compaction Strategy</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#leveled-compaction-strategy">Leveled Compaction Strategy</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html#time-window-compactionstrategy">Time Window CompactionStrategy</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html#changing">Changing</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="compression.html">Compression</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="compression.html#configuring-compression">Configuring Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html#benefits-and-uses">Benefits and Uses</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html#operational-impact">Operational Impact</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html#advanced-use">Advanced Use</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cdc.html">Change Data Capture</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html#overview">Overview</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html#configuration">Configuration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html#reading-commitlogsegments">Reading CommitLogSegments</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html#warnings">Warnings</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html#further-reading">Further Reading</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l1"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l1"><a class="reference internal" href="metrics.html">Monitoring</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#metric-types">Metric Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#table-metrics">Table Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#keyspace-metrics">Keyspace Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#threadpool-metrics">ThreadPool Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#client-request-metrics">Client Request Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#cache-metrics">Cache Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#cql-metrics">CQL Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#droppedmessage-metrics">DroppedMessage Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#streaming-metrics">Streaming Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#compaction-metrics">Compaction Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#commitlog-metrics">CommitLog Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#storage-metrics">Storage Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#hintedhandoff-metrics">HintedHandoff Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#sstable-index-metrics">SSTable Index Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#bufferpool-metrics">BufferPool Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#client-metrics">Client Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#jvm-metrics">JVM Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#jmx">JMX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#metric-reporters">Metric Reporters</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="security.html#tls-ssl-encryption">TLS/SSL Encryption</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#roles">Roles</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#authentication">Authentication</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#authorization">Authorization</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#caching">Caching</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#jmx-access">JMX access</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="hardware.html">Hardware Choices</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html#cpu">CPU</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html#memory">Memory</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html#disks">Disks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html#common-cloud-choices">Common Cloud Choices</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="snitch.html" class="btn btn-default pull-right " role="button" title="Snitch" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../configuration/cassandra_config_file.html" class="btn btn-default" role="button" title="Cassandra Configuration File" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/metrics.html b/src/doc/3.11.11/operating/metrics.html
new file mode 100644
index 0000000..6595e14
--- /dev/null
+++ b/src/doc/3.11.11/operating/metrics.html
@@ -0,0 +1,1382 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Monitoring"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Security" href="security.html"/>
+      <link rel="prev" title="Bulk Loading" href="bulk_loading.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Monitoring</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#metric-types">Metric Types</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#table-metrics">Table Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#keyspace-metrics">Keyspace Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#threadpool-metrics">ThreadPool Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#client-request-metrics">Client Request Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cache-metrics">Cache Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cql-metrics">CQL Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#droppedmessage-metrics">DroppedMessage Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#streaming-metrics">Streaming Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#compaction-metrics">Compaction Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-metrics">CommitLog Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#storage-metrics">Storage Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hintedhandoff-metrics">HintedHandoff Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#sstable-index-metrics">SSTable Index Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#bufferpool-metrics">BufferPool Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#client-metrics">Client Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#jvm-metrics">JVM Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#jmx">JMX</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#metric-reporters">Metric Reporters</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="monitoring">
+<h1>Monitoring<a class="headerlink" href="#monitoring" title="Permalink to this headline">¶</a></h1>
+<p>Metrics in Cassandra are managed using the <a class="reference external" href="http://metrics.dropwizard.io">Dropwizard Metrics</a> library. These metrics
+can be queried via JMX or pushed to external monitoring systems using a number of <a class="reference external" href="http://metrics.dropwizard.io/3.1.0/getting-started/#other-reporting">built in</a> and <a class="reference external" href="http://metrics.dropwizard.io/3.1.0/manual/third-party/">third party</a> reporter plugins.</p>
+<p>Metrics are collected for a single node. It’s up to the operator to use an external monitoring system to aggregate them.</p>
+<div class="section" id="metric-types">
+<h2>Metric Types<a class="headerlink" href="#metric-types" title="Permalink to this headline">¶</a></h2>
+<p>All metrics reported by cassandra fit into one of the following types.</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">Gauge</span></code></dt>
+<dd>An instantaneous measurement of a value.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Counter</span></code></dt>
+<dd>A gauge for an <code class="docutils literal notranslate"><span class="pre">AtomicLong</span></code> instance. Typically this is consumed by monitoring the change since the last call to
+see if there is a large increase compared to the norm.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Histogram</span></code></dt>
+<dd><p class="first">Measures the statistical distribution of values in a stream of data.</p>
+<p class="last">In addition to minimum, maximum, mean, etc., it also measures median, 75th, 90th, 95th, 98th, 99th, and 99.9th
+percentiles.</p>
+</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Timer</span></code></dt>
+<dd>Measures both the rate that a particular piece of code is called and the histogram of its duration.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Latency</span></code></dt>
+<dd>Special type that tracks latency (in microseconds) with a <code class="docutils literal notranslate"><span class="pre">Timer</span></code> plus a <code class="docutils literal notranslate"><span class="pre">Counter</span></code> that tracks the total latency
+accrued since starting. The former is useful if you track the change in total latency since the last check. Each
+metric name of this type will have ‘Latency’ and ‘TotalLatency’ appended to it.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Meter</span></code></dt>
+<dd>A meter metric which measures mean throughput and one-, five-, and fifteen-minute exponentially-weighted moving
+average throughputs.</dd>
+</dl>
+</div>
+<div class="section" id="table-metrics">
+<h2>Table Metrics<a class="headerlink" href="#table-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Each table in Cassandra has metrics responsible for tracking its state and performance.</p>
+<p>The metric names are all appended with the specific <code class="docutils literal notranslate"><span class="pre">Keyspace</span></code> and <code class="docutils literal notranslate"><span class="pre">Table</span></code> name.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Table.&lt;MetricName&gt;.&lt;Keyspace&gt;.&lt;Table&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Table</span> <span class="pre">keyspace=&lt;Keyspace&gt;</span> <span class="pre">scope=&lt;Table&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">There is a special table called ‘<code class="docutils literal notranslate"><span class="pre">all</span></code>’ without a keyspace. This represents the aggregation of metrics across
+<strong>all</strong> tables and keyspaces on the node.</p>
+</div>
+</div>
+<div class="section" id="keyspace-metrics">
+<h2>Keyspace Metrics<a class="headerlink" href="#keyspace-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Each keyspace in Cassandra has metrics responsible for tracking its state and performance.</p>
+<p>These metrics are the same as the <code class="docutils literal notranslate"><span class="pre">Table</span> <span class="pre">Metrics</span></code> above, only they are aggregated at the Keyspace level.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.keyspace.&lt;MetricName&gt;.&lt;Keyspace&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Keyspace</span> <span class="pre">scope=&lt;Keyspace&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+</div>
+<div class="section" id="threadpool-metrics">
+<h2>ThreadPool Metrics<a class="headerlink" href="#threadpool-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra splits work of a particular type into its own thread pool.  This provides back-pressure and asynchrony for
+requests on a node.  It’s important to monitor the state of these thread pools since they can tell you how saturated a
+node is.</p>
+<p>The metric names are all appended with the specific <code class="docutils literal notranslate"><span class="pre">ThreadPool</span></code> name.  The thread pools are also categorized under a
+specific type.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.ThreadPools.&lt;MetricName&gt;.&lt;Path&gt;.&lt;ThreadPoolName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=ThreadPools</span> <span class="pre">scope=&lt;ThreadPoolName&gt;</span> <span class="pre">type=&lt;Type&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="15%" />
+<col width="10%" />
+<col width="74%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>ActiveTasks</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>Number of tasks being actively worked on by this pool.</td>
+</tr>
+<tr class="row-odd"><td>PendingTasks</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>Number of queued tasks queued up on this pool.</td>
+</tr>
+<tr class="row-even"><td>CompletedTasks</td>
+<td>Counter</td>
+<td>Number of tasks completed.</td>
+</tr>
+<tr class="row-odd"><td>TotalBlockedTasks</td>
+<td>Counter</td>
+<td>Number of tasks that were blocked due to queue saturation.</td>
+</tr>
+<tr class="row-even"><td>CurrentlyBlockedTask</td>
+<td>Counter</td>
+<td>Number of tasks that are currently blocked due to queue saturation but on retry will become unblocked.</td>
+</tr>
+<tr class="row-odd"><td>MaxPoolSize</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>The maximum number of threads in this pool.</td>
+</tr>
+</tbody>
+</table>
+<p>The following thread pools can be monitored.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="26%" />
+<col width="13%" />
+<col width="61%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Native-Transport-Requests</td>
+<td>transport</td>
+<td>Handles client CQL requests</td>
+</tr>
+<tr class="row-odd"><td>CounterMutationStage</td>
+<td>request</td>
+<td>Responsible for counter writes</td>
+</tr>
+<tr class="row-even"><td>ViewMutationStage</td>
+<td>request</td>
+<td>Responsible for materialized view writes</td>
+</tr>
+<tr class="row-odd"><td>MutationStage</td>
+<td>request</td>
+<td>Responsible for all other writes</td>
+</tr>
+<tr class="row-even"><td>ReadRepairStage</td>
+<td>request</td>
+<td>ReadRepair happens on this thread pool</td>
+</tr>
+<tr class="row-odd"><td>ReadStage</td>
+<td>request</td>
+<td>Local reads run on this thread pool</td>
+</tr>
+<tr class="row-even"><td>RequestResponseStage</td>
+<td>request</td>
+<td>Coordinator requests to the cluster run on this thread pool</td>
+</tr>
+<tr class="row-odd"><td>AntiEntropyStage</td>
+<td>internal</td>
+<td>Builds merkle tree for repairs</td>
+</tr>
+<tr class="row-even"><td>CacheCleanupExecutor</td>
+<td>internal</td>
+<td>Cache maintenance performed on this thread pool</td>
+</tr>
+<tr class="row-odd"><td>CompactionExecutor</td>
+<td>internal</td>
+<td>Compactions are run on these threads</td>
+</tr>
+<tr class="row-even"><td>GossipStage</td>
+<td>internal</td>
+<td>Handles gossip requests</td>
+</tr>
+<tr class="row-odd"><td>HintsDispatcher</td>
+<td>internal</td>
+<td>Performs hinted handoff</td>
+</tr>
+<tr class="row-even"><td>InternalResponseStage</td>
+<td>internal</td>
+<td>Responsible for intra-cluster callbacks</td>
+</tr>
+<tr class="row-odd"><td>MemtableFlushWriter</td>
+<td>internal</td>
+<td>Writes memtables to disk</td>
+</tr>
+<tr class="row-even"><td>MemtablePostFlush</td>
+<td>internal</td>
+<td>Cleans up commit log after memtable is written to disk</td>
+</tr>
+<tr class="row-odd"><td>MemtableReclaimMemory</td>
+<td>internal</td>
+<td>Memtable recycling</td>
+</tr>
+<tr class="row-even"><td>MigrationStage</td>
+<td>internal</td>
+<td>Runs schema migrations</td>
+</tr>
+<tr class="row-odd"><td>MiscStage</td>
+<td>internal</td>
+<td>Misceleneous tasks run here</td>
+</tr>
+<tr class="row-even"><td>PendingRangeCalculator</td>
+<td>internal</td>
+<td>Calculates token range</td>
+</tr>
+<tr class="row-odd"><td>PerDiskMemtableFlushWriter_0</td>
+<td>internal</td>
+<td>Responsible for writing a spec (there is one of these per disk 0-N)</td>
+</tr>
+<tr class="row-even"><td>Sampler</td>
+<td>internal</td>
+<td>Responsible for re-sampling the index summaries of SStables</td>
+</tr>
+<tr class="row-odd"><td>SecondaryIndexManagement</td>
+<td>internal</td>
+<td>Performs updates to secondary indexes</td>
+</tr>
+<tr class="row-even"><td>ValidationExecutor</td>
+<td>internal</td>
+<td>Performs validation compaction or scrubbing</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="client-request-metrics">
+<h2>Client Request Metrics<a class="headerlink" href="#client-request-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Client requests have their own set of metrics that encapsulate the work happening at coordinator level.</p>
+<p>Different types of client requests are broken down by <code class="docutils literal notranslate"><span class="pre">RequestType</span></code>.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.ClientRequest.&lt;MetricName&gt;.&lt;RequestType&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=ClientRequest</span> <span class="pre">scope=&lt;RequestType&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">CASRead</p>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to transactional read requests.</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
+<colgroup>
+<col width="21%" />
+<col width="14%" />
+<col width="65%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Timeouts</td>
+<td>Counter</td>
+<td>Number of timeouts encountered.</td>
+</tr>
+<tr class="row-odd"><td>Failures</td>
+<td>Counter</td>
+<td>Number of transaction failures encountered.</td>
+</tr>
+<tr class="row-even"><td>&nbsp;</td>
+<td>Latency</td>
+<td>Transaction read latency.</td>
+</tr>
+<tr class="row-odd"><td>Unavailables</td>
+<td>Counter</td>
+<td>Number of unavailable exceptions encountered.</td>
+</tr>
+<tr class="row-even"><td>UnfinishedCommit</td>
+<td>Counter</td>
+<td>Number of transactions that were committed on read.</td>
+</tr>
+<tr class="row-odd"><td>ConditionNotMet</td>
+<td>Counter</td>
+<td>Number of transaction preconditions did not match current values.</td>
+</tr>
+<tr class="row-even"><td>ContentionHistogram</td>
+<td>Histogram</td>
+<td>How many contended reads were encountered</td>
+</tr>
+</tbody>
+</table>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">CASWrite</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to transactional write requests.</p>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
+<colgroup>
+<col width="21%" />
+<col width="14%" />
+<col width="65%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Timeouts</td>
+<td>Counter</td>
+<td>Number of timeouts encountered.</td>
+</tr>
+<tr class="row-odd"><td>Failures</td>
+<td>Counter</td>
+<td>Number of transaction failures encountered.</td>
+</tr>
+<tr class="row-even"><td>&nbsp;</td>
+<td>Latency</td>
+<td>Transaction write latency.</td>
+</tr>
+<tr class="row-odd"><td>UnfinishedCommit</td>
+<td>Counter</td>
+<td>Number of transactions that were committed on write.</td>
+</tr>
+<tr class="row-even"><td>ConditionNotMet</td>
+<td>Counter</td>
+<td>Number of transaction preconditions did not match current values.</td>
+</tr>
+<tr class="row-odd"><td>ContentionHistogram</td>
+<td>Histogram</td>
+<td>How many contended writes were encountered</td>
+</tr>
+</tbody>
+</table>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">Read</p>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to standard read requests.</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
+<colgroup>
+<col width="22%" />
+<col width="15%" />
+<col width="64%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Timeouts</td>
+<td>Counter</td>
+<td>Number of timeouts encountered.</td>
+</tr>
+<tr class="row-odd"><td>Failures</td>
+<td>Counter</td>
+<td>Number of read failures encountered.</td>
+</tr>
+<tr class="row-even"><td>&nbsp;</td>
+<td>Latency</td>
+<td>Read latency.</td>
+</tr>
+<tr class="row-odd"><td>Unavailables</td>
+<td>Counter</td>
+<td>Number of unavailable exceptions encountered.</td>
+</tr>
+</tbody>
+</table>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">RangeSlice</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to token range read requests.</p>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
+<colgroup>
+<col width="22%" />
+<col width="15%" />
+<col width="64%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Timeouts</td>
+<td>Counter</td>
+<td>Number of timeouts encountered.</td>
+</tr>
+<tr class="row-odd"><td>Failures</td>
+<td>Counter</td>
+<td>Number of range query failures encountered.</td>
+</tr>
+<tr class="row-even"><td>&nbsp;</td>
+<td>Latency</td>
+<td>Range query latency.</td>
+</tr>
+<tr class="row-odd"><td>Unavailables</td>
+<td>Counter</td>
+<td>Number of unavailable exceptions encountered.</td>
+</tr>
+</tbody>
+</table>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">Write</p>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to regular write requests.</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
+<colgroup>
+<col width="22%" />
+<col width="15%" />
+<col width="64%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Timeouts</td>
+<td>Counter</td>
+<td>Number of timeouts encountered.</td>
+</tr>
+<tr class="row-odd"><td>Failures</td>
+<td>Counter</td>
+<td>Number of write failures encountered.</td>
+</tr>
+<tr class="row-even"><td>&nbsp;</td>
+<td>Latency</td>
+<td>Write latency.</td>
+</tr>
+<tr class="row-odd"><td>Unavailables</td>
+<td>Counter</td>
+<td>Number of unavailable exceptions encountered.</td>
+</tr>
+</tbody>
+</table>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">ViewWrite</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to materialized view write wrtes.</p>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first last docutils">
+<colgroup>
+<col width="17%" />
+<col width="11%" />
+<col width="72%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Timeouts</td>
+<td>Counter</td>
+<td>Number of timeouts encountered.</td>
+</tr>
+<tr class="row-even"><td>Failures</td>
+<td>Counter</td>
+<td>Number of transaction failures encountered.</td>
+</tr>
+<tr class="row-odd"><td>Unavailables</td>
+<td>Counter</td>
+<td>Number of unavailable exceptions encountered.</td>
+</tr>
+<tr class="row-even"><td>ViewReplicasAttempted</td>
+<td>Counter</td>
+<td>Total number of attempted view replica writes.</td>
+</tr>
+<tr class="row-odd"><td>ViewReplicasSuccess</td>
+<td>Counter</td>
+<td>Total number of succeded view replica writes.</td>
+</tr>
+<tr class="row-even"><td>ViewPendingMutations</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>ViewReplicasAttempted - ViewReplicasSuccess.</td>
+</tr>
+<tr class="row-odd"><td>ViewWriteLatency</td>
+<td>Timer</td>
+<td>Time between when mutation is applied to base table and when CL.ONE is achieved on view.</td>
+</tr>
+</tbody>
+</table>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="cache-metrics">
+<h2>Cache Metrics<a class="headerlink" href="#cache-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra caches have metrics to track the effectivness of the caches. Though the <code class="docutils literal notranslate"><span class="pre">Table</span> <span class="pre">Metrics</span></code> might be more useful.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Cache.&lt;MetricName&gt;.&lt;CacheName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Cache</span> <span class="pre">scope=&lt;CacheName&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="33%" />
+<col width="18%" />
+<col width="49%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Capacity</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Cache capacity in bytes.</td>
+</tr>
+<tr class="row-odd"><td>Entries</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>Total number of cache entries.</td>
+</tr>
+<tr class="row-even"><td>FifteenMinuteCacheHitRate</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>15m cache hit rate.</td>
+</tr>
+<tr class="row-odd"><td>FiveMinuteCacheHitRate</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>5m cache hit rate.</td>
+</tr>
+<tr class="row-even"><td>OneMinuteCacheHitRate</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>1m cache hit rate.</td>
+</tr>
+<tr class="row-odd"><td>HitRate</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>All time cache hit rate.</td>
+</tr>
+<tr class="row-even"><td>Hits</td>
+<td>Meter</td>
+<td>Total number of cache hits.</td>
+</tr>
+<tr class="row-odd"><td>Misses</td>
+<td>Meter</td>
+<td>Total number of cache misses.</td>
+</tr>
+<tr class="row-even"><td>MissLatency</td>
+<td>Timer</td>
+<td>Latency of misses.</td>
+</tr>
+<tr class="row-odd"><td>Requests</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total number of cache requests.</td>
+</tr>
+<tr class="row-even"><td>Size</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total size of occupied cache, in bytes.</td>
+</tr>
+</tbody>
+</table>
+<p>The following caches are covered:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="38%" />
+<col width="62%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>CounterCache</td>
+<td>Keeps hot counters in memory for performance.</td>
+</tr>
+<tr class="row-odd"><td>ChunkCache</td>
+<td>In process uncompressed page cache.</td>
+</tr>
+<tr class="row-even"><td>KeyCache</td>
+<td>Cache for partition to sstable offsets.</td>
+</tr>
+<tr class="row-odd"><td>RowCache</td>
+<td>Cache for rows kept in memory.</td>
+</tr>
+</tbody>
+</table>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Misses and MissLatency are only defined for the ChunkCache</p>
+</div>
+</div>
+<div class="section" id="cql-metrics">
+<h2>CQL Metrics<a class="headerlink" href="#cql-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to CQL prepared statement caching.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.CQL.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=CQL</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="13%" />
+<col width="64%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>PreparedStatementsCount</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>Number of cached prepared statements.</td>
+</tr>
+<tr class="row-odd"><td>PreparedStatementsEvicted</td>
+<td>Counter</td>
+<td>Number of prepared statements evicted from the prepared statement cache</td>
+</tr>
+<tr class="row-even"><td>PreparedStatementsExecuted</td>
+<td>Counter</td>
+<td>Number of prepared statements executed.</td>
+</tr>
+<tr class="row-odd"><td>RegularStatementsExecuted</td>
+<td>Counter</td>
+<td>Number of <strong>non</strong> prepared statements executed.</td>
+</tr>
+<tr class="row-even"><td>PreparedStatementsRatio</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>Percentage of statements that are prepared vs unprepared.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="droppedmessage-metrics">
+<h2>DroppedMessage Metrics<a class="headerlink" href="#droppedmessage-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to tracking dropped messages for different types of requests.
+Dropped writes are stored and retried by <code class="docutils literal notranslate"><span class="pre">Hinted</span> <span class="pre">Handoff</span></code></p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.DroppedMessages.&lt;MetricName&gt;.&lt;Type&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=DroppedMetrics</span> <span class="pre">scope=&lt;Type&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="36%" />
+<col width="19%" />
+<col width="45%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>CrossNodeDroppedLatency</td>
+<td>Timer</td>
+<td>The dropped latency across nodes.</td>
+</tr>
+<tr class="row-odd"><td>InternalDroppedLatency</td>
+<td>Timer</td>
+<td>The dropped latency within node.</td>
+</tr>
+<tr class="row-even"><td>Dropped</td>
+<td>Meter</td>
+<td>Number of dropped messages.</td>
+</tr>
+</tbody>
+</table>
+<p>The different types of messages tracked are:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="39%" />
+<col width="61%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>BATCH_STORE</td>
+<td>Batchlog write</td>
+</tr>
+<tr class="row-odd"><td>BATCH_REMOVE</td>
+<td>Batchlog cleanup (after succesfully applied)</td>
+</tr>
+<tr class="row-even"><td>COUNTER_MUTATION</td>
+<td>Counter writes</td>
+</tr>
+<tr class="row-odd"><td>HINT</td>
+<td>Hint replay</td>
+</tr>
+<tr class="row-even"><td>MUTATION</td>
+<td>Regular writes</td>
+</tr>
+<tr class="row-odd"><td>READ</td>
+<td>Regular reads</td>
+</tr>
+<tr class="row-even"><td>READ_REPAIR</td>
+<td>Read repair</td>
+</tr>
+<tr class="row-odd"><td>PAGED_SLICE</td>
+<td>Paged read</td>
+</tr>
+<tr class="row-even"><td>RANGE_SLICE</td>
+<td>Token range read</td>
+</tr>
+<tr class="row-odd"><td>REQUEST_RESPONSE</td>
+<td>RPC Callbacks</td>
+</tr>
+<tr class="row-even"><td>_TRACE</td>
+<td>Tracing writes</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="streaming-metrics">
+<h2>Streaming Metrics<a class="headerlink" href="#streaming-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics reported during <code class="docutils literal notranslate"><span class="pre">Streaming</span></code> operations, such as repair, bootstrap, rebuild.</p>
+<p>These metrics are specific to a peer endpoint, with the source node being the node you are pulling the metrics from.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Streaming.&lt;MetricName&gt;.&lt;PeerIP&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Streaming</span> <span class="pre">scope=&lt;PeerIP&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="26%" />
+<col width="14%" />
+<col width="60%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>IncomingBytes</td>
+<td>Counter</td>
+<td>Number of bytes streamed to this node from the peer.</td>
+</tr>
+<tr class="row-odd"><td>OutgoingBytes</td>
+<td>Counter</td>
+<td>Number of bytes streamed to the peer endpoint from this node.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="compaction-metrics">
+<h2>Compaction Metrics<a class="headerlink" href="#compaction-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to <code class="docutils literal notranslate"><span class="pre">Compaction</span></code> work.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Compaction.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Compaction</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="13%" />
+<col width="20%" />
+<col width="68%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>BytesCompacted</td>
+<td>Counter</td>
+<td>Total number of bytes compacted since server [re]start.</td>
+</tr>
+<tr class="row-odd"><td>PendingTasks</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>Estimated number of compactions remaining to perform.</td>
+</tr>
+<tr class="row-even"><td>CompletedTasks</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Number of completed compactions since server [re]start.</td>
+</tr>
+<tr class="row-odd"><td>TotalCompactionsCompleted</td>
+<td>Meter</td>
+<td>Throughput of completed compactions since server [re]start.</td>
+</tr>
+<tr class="row-even"><td>PendingTasksByTableName</td>
+<td>Gauge&lt;Map&lt;String, Map&lt;String, Integer&gt;&gt;&gt;</td>
+<td>Estimated number of compactions remaining to perform, grouped by keyspace and then table name. This info is also kept in <code class="docutils literal notranslate"><span class="pre">Table</span> <span class="pre">Metrics</span></code>.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="commitlog-metrics">
+<h2>CommitLog Metrics<a class="headerlink" href="#commitlog-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to the <code class="docutils literal notranslate"><span class="pre">CommitLog</span></code></p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.CommitLog.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=CommitLog</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="17%" />
+<col width="9%" />
+<col width="74%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>CompletedTasks</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total number of commit log messages written since [re]start.</td>
+</tr>
+<tr class="row-odd"><td>PendingTasks</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Number of commit log messages written but yet to be fsync’d.</td>
+</tr>
+<tr class="row-even"><td>TotalCommitLogSize</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Current size, in bytes, used by all the commit log segments.</td>
+</tr>
+<tr class="row-odd"><td>WaitingOnSegmentAllocation</td>
+<td>Timer</td>
+<td>Time spent waiting for a CommitLogSegment to be allocated - under normal conditions this should be zero.</td>
+</tr>
+<tr class="row-even"><td>WaitingOnCommit</td>
+<td>Timer</td>
+<td>The time spent waiting on CL fsync; for Periodic this is only occurs when the sync is lagging its sync interval.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="storage-metrics">
+<h2>Storage Metrics<a class="headerlink" href="#storage-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to the storage engine.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Storage.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Storage</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="17%" />
+<col width="9%" />
+<col width="75%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Exceptions</td>
+<td>Counter</td>
+<td>Number of internal exceptions caught. Under normal exceptions this should be zero.</td>
+</tr>
+<tr class="row-odd"><td>Load</td>
+<td>Counter</td>
+<td>Size, in bytes, of the on disk data size this node manages.</td>
+</tr>
+<tr class="row-even"><td>TotalHints</td>
+<td>Counter</td>
+<td>Number of hint messages written to this node since [re]start. Includes one entry for each host to be hinted per hint.</td>
+</tr>
+<tr class="row-odd"><td>TotalHintsInProgress</td>
+<td>Counter</td>
+<td>Number of hints attemping to be sent currently.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="hintedhandoff-metrics">
+<h2>HintedHandoff Metrics<a class="headerlink" href="#hintedhandoff-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to Hinted Handoff.  There are also some metrics related to hints tracked in <code class="docutils literal notranslate"><span class="pre">Storage</span> <span class="pre">Metrics</span></code></p>
+<p>These metrics include the peer endpoint <strong>in the metric name</strong></p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.HintedHandOffManager.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=HintedHandOffManager</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="20%" />
+<col width="10%" />
+<col width="69%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Hints_created-&lt;PeerIP&gt;</td>
+<td>Counter</td>
+<td>Number of hints on disk for this peer.</td>
+</tr>
+<tr class="row-odd"><td>Hints_not_stored-&lt;PeerIP&gt;</td>
+<td>Counter</td>
+<td>Number of hints not stored for this peer, due to being down past the configured hint window.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="sstable-index-metrics">
+<h2>SSTable Index Metrics<a class="headerlink" href="#sstable-index-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to the SSTable index metadata.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Index.&lt;MetricName&gt;.RowIndexEntry</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Index</span> <span class="pre">scope=RowIndexEntry</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="12%" />
+<col width="65%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>IndexedEntrySize</td>
+<td>Histogram</td>
+<td>Histogram of the on-heap size, in bytes, of the index across all SSTables.</td>
+</tr>
+<tr class="row-odd"><td>IndexInfoCount</td>
+<td>Histogram</td>
+<td>Histogram of the number of on-heap index entries managed across all SSTables.</td>
+</tr>
+<tr class="row-even"><td>IndexInfoGets</td>
+<td>Histogram</td>
+<td>Histogram of the number index seeks performed per SSTable.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="bufferpool-metrics">
+<h2>BufferPool Metrics<a class="headerlink" href="#bufferpool-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to the internal recycled buffer pool Cassandra manages.  This pool is meant to keep allocations and GC
+lower by recycling on and off heap buffers.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.BufferPool.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=BufferPool</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="22%" />
+<col width="11%" />
+<col width="67%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Size</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Size, in bytes, of the managed buffer pool</td>
+</tr>
+<tr class="row-odd"><td>Misses</td>
+<td>Meter</td>
+<td>The rate of misses in the pool. The higher this is the more allocations incurred.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="client-metrics">
+<h2>Client Metrics<a class="headerlink" href="#client-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specifc to client managment.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Client.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Client</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="26%" />
+<col width="13%" />
+<col width="61%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>connectedNativeClients</td>
+<td>Counter</td>
+<td>Number of clients connected to this nodes native protocol server</td>
+</tr>
+<tr class="row-odd"><td>connectedThriftClients</td>
+<td>Counter</td>
+<td>Number of clients connected to this nodes thrift protocol server</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="jvm-metrics">
+<h2>JVM Metrics<a class="headerlink" href="#jvm-metrics" title="Permalink to this headline">¶</a></h2>
+<p>JVM metrics such as memory and garbage collection statistics can either be accessed by connecting to the JVM using JMX or can be exported using <a class="reference internal" href="#metric-reporters">Metric Reporters</a>.</p>
+<div class="section" id="bufferpool">
+<h3>BufferPool<a class="headerlink" href="#bufferpool" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">jvm.buffers.&lt;direct|mapped&gt;.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">java.nio:type=BufferPool</span> <span class="pre">name=&lt;direct|mapped&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="22%" />
+<col width="12%" />
+<col width="66%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Capacity</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Estimated total capacity of the buffers in this pool</td>
+</tr>
+<tr class="row-odd"><td>Count</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Estimated number of buffers in the pool</td>
+</tr>
+<tr class="row-even"><td>Used</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Estimated memory that the Java virtual machine is using for this buffer pool</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="filedescriptorratio">
+<h3>FileDescriptorRatio<a class="headerlink" href="#filedescriptorratio" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">jvm.fd.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">java.lang:type=OperatingSystem</span> <span class="pre">name=&lt;OpenFileDescriptorCount|MaxFileDescriptorCount&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="33%" />
+<col width="18%" />
+<col width="49%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Usage</td>
+<td>Ratio</td>
+<td>Ratio of used to total file descriptors</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="garbagecollector">
+<h3>GarbageCollector<a class="headerlink" href="#garbagecollector" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">jvm.gc.&lt;gc_type&gt;.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">java.lang:type=GarbageCollector</span> <span class="pre">name=&lt;gc_type&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="25%" />
+<col width="14%" />
+<col width="61%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Count</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total number of collections that have occurred</td>
+</tr>
+<tr class="row-odd"><td>Time</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Approximate accumulated collection elapsed time in milliseconds</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="memory">
+<h3>Memory<a class="headerlink" href="#memory" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">jvm.memory.&lt;heap/non-heap/total&gt;.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">java.lang:type=Memory</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="13%" />
+<col width="64%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Committed</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of memory in bytes that is committed for the JVM to use</td>
+</tr>
+<tr class="row-even"><td>Init</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of memory in bytes that the JVM initially requests from the OS</td>
+</tr>
+<tr class="row-odd"><td>Max</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Maximum amount of memory in bytes that can be used for memory management</td>
+</tr>
+<tr class="row-even"><td>Usage</td>
+<td>Ratio</td>
+<td>Ratio of used to maximum memory</td>
+</tr>
+<tr class="row-odd"><td>Used</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of used memory in bytes</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="memorypool">
+<h3>MemoryPool<a class="headerlink" href="#memorypool" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">jvm.memory.pools.&lt;memory_pool&gt;.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">java.lang:type=MemoryPool</span> <span class="pre">name=&lt;memory_pool&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="13%" />
+<col width="64%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Committed</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of memory in bytes that is committed for the JVM to use</td>
+</tr>
+<tr class="row-even"><td>Init</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of memory in bytes that the JVM initially requests from the OS</td>
+</tr>
+<tr class="row-odd"><td>Max</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Maximum amount of memory in bytes that can be used for memory management</td>
+</tr>
+<tr class="row-even"><td>Usage</td>
+<td>Ratio</td>
+<td>Ratio of used to maximum memory</td>
+</tr>
+<tr class="row-odd"><td>Used</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of used memory in bytes</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="section" id="jmx">
+<h2>JMX<a class="headerlink" href="#jmx" title="Permalink to this headline">¶</a></h2>
+<p>Any JMX based client can access metrics from cassandra.</p>
+<p>If you wish to access JMX metrics over http it’s possible to download <a class="reference external" href="http://mx4j.sourceforge.net/">Mx4jTool</a> and
+place <code class="docutils literal notranslate"><span class="pre">mx4j-tools.jar</span></code> into the classpath.  On startup you will see in the log:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>HttpAdaptor version 3.0.2 started on port 8081
+</pre></div>
+</div>
+<p>To choose a different port (8081 is the default) or a different listen address (0.0.0.0 is not the default) edit
+<code class="docutils literal notranslate"><span class="pre">conf/cassandra-env.sh</span></code> and uncomment:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>#MX4J_ADDRESS=&quot;-Dmx4jaddress=0.0.0.0&quot;
+
+#MX4J_PORT=&quot;-Dmx4jport=8081&quot;
+</pre></div>
+</div>
+</div>
+<div class="section" id="metric-reporters">
+<h2>Metric Reporters<a class="headerlink" href="#metric-reporters" title="Permalink to this headline">¶</a></h2>
+<p>As mentioned at the top of this section on monitoring the Cassandra metrics can be exported to a number of monitoring
+system a number of <a class="reference external" href="http://metrics.dropwizard.io/3.1.0/getting-started/#other-reporting">built in</a> and <a class="reference external" href="http://metrics.dropwizard.io/3.1.0/manual/third-party/">third party</a> reporter plugins.</p>
+<p>The configuration of these plugins is managed by the <a class="reference external" href="https://github.com/addthis/metrics-reporter-config">metrics reporter config project</a>. There is a sample configuration file located at
+<code class="docutils literal notranslate"><span class="pre">conf/metrics-reporter-config-sample.yaml</span></code>.</p>
+<p>Once configured, you simply start cassandra with the flag
+<code class="docutils literal notranslate"><span class="pre">-Dcassandra.metricsReporterConfigFile=metrics-reporter-config.yaml</span></code>. The specified .yaml file plus any 3rd party
+reporter jars must all be in Cassandra’s classpath.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="security.html" class="btn btn-default pull-right " role="button" title="Security" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="bulk_loading.html" class="btn btn-default" role="button" title="Bulk Loading" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/read_repair.html b/src/doc/3.11.11/operating/read_repair.html
new file mode 100644
index 0000000..a030fc0
--- /dev/null
+++ b/src/doc/3.11.11/operating/read_repair.html
@@ -0,0 +1,123 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Read repair"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Hints" href="hints.html"/>
+      <link rel="prev" title="Repair" href="repair.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="read-repair">
+<h1>Read repair<a class="headerlink" href="#read-repair" title="Permalink to this headline">¶</a></h1>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">todo</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="hints.html" class="btn btn-default pull-right " role="button" title="Hints" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="repair.html" class="btn btn-default" role="button" title="Repair" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/repair.html b/src/doc/3.11.11/operating/repair.html
new file mode 100644
index 0000000..0e203d1
--- /dev/null
+++ b/src/doc/3.11.11/operating/repair.html
@@ -0,0 +1,123 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Repair"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Read repair" href="read_repair.html"/>
+      <link rel="prev" title="Adding, replacing, moving and removing nodes" href="topo_changes.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="repair">
+<h1>Repair<a class="headerlink" href="#repair" title="Permalink to this headline">¶</a></h1>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">todo</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="read_repair.html" class="btn btn-default pull-right " role="button" title="Read repair" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="topo_changes.html" class="btn btn-default" role="button" title="Adding, replacing, moving and removing nodes" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/security.html b/src/doc/3.11.11/operating/security.html
new file mode 100644
index 0000000..568d7e6
--- /dev/null
+++ b/src/doc/3.11.11/operating/security.html
@@ -0,0 +1,446 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Security"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Hardware Choices" href="hardware.html"/>
+      <link rel="prev" title="Monitoring" href="metrics.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Security</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#tls-ssl-encryption">TLS/SSL Encryption</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#roles">Roles</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#authentication">Authentication</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#authorization">Authorization</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#caching">Caching</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#jmx-access">JMX access</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="security">
+<h1>Security<a class="headerlink" href="#security" title="Permalink to this headline">¶</a></h1>
+<p>There are three main components to the security features provided by Cassandra:</p>
+<ul class="simple">
+<li>TLS/SSL encryption for client and inter-node communication</li>
+<li>Client authentication</li>
+<li>Authorization</li>
+</ul>
+<div class="section" id="tls-ssl-encryption">
+<h2>TLS/SSL Encryption<a class="headerlink" href="#tls-ssl-encryption" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra provides secure communication between a client machine and a database cluster and between nodes within a
+cluster. Enabling encryption ensures that data in flight is not compromised and is transferred securely. The options for
+client-to-node and node-to-node encryption are managed separately and may be configured independently.</p>
+<p>In both cases, the JVM defaults for supported protocols and cipher suites are used when encryption is enabled. These can
+be overidden using the settings in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>, but this is not recommended unless there are policies in place
+which dictate certain settings or a need to disable vulnerable ciphers or protocols in cases where the JVM cannot be
+updated.</p>
+<p>FIPS compliant settings can be configured at the JVM level and should not involve changing encryption settings in
+cassandra.yaml. See <a class="reference external" href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html">the java document on FIPS</a>
+for more details.</p>
+<p>For information on generating the keystore and truststore files used in SSL communications, see the
+<a class="reference external" href="http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore">java documentation on creating keystores</a></p>
+<div class="section" id="inter-node-encryption">
+<h3>Inter-node Encryption<a class="headerlink" href="#inter-node-encryption" title="Permalink to this headline">¶</a></h3>
+<p>The settings for managing inter-node encryption are found in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> in the <code class="docutils literal notranslate"><span class="pre">server_encryption_options</span></code>
+section. To enable inter-node encryption, change the <code class="docutils literal notranslate"><span class="pre">internode_encryption</span></code> setting from its default value of <code class="docutils literal notranslate"><span class="pre">none</span></code>
+to one value from: <code class="docutils literal notranslate"><span class="pre">rack</span></code>, <code class="docutils literal notranslate"><span class="pre">dc</span></code> or <code class="docutils literal notranslate"><span class="pre">all</span></code>.</p>
+</div>
+<div class="section" id="client-to-node-encryption">
+<h3>Client to Node Encryption<a class="headerlink" href="#client-to-node-encryption" title="Permalink to this headline">¶</a></h3>
+<p>The settings for managing client to node encryption are found in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> in the <code class="docutils literal notranslate"><span class="pre">client_encryption_options</span></code>
+section. There are two primary toggles here for enabling encryption, <code class="docutils literal notranslate"><span class="pre">enabled</span></code> and <code class="docutils literal notranslate"><span class="pre">optional</span></code>.</p>
+<ul class="simple">
+<li>If neither is set to <code class="docutils literal notranslate"><span class="pre">true</span></code>, client connections are entirely unencrypted.</li>
+<li>If <code class="docutils literal notranslate"><span class="pre">enabled</span></code> is set to <code class="docutils literal notranslate"><span class="pre">true</span></code> and <code class="docutils literal notranslate"><span class="pre">optional</span></code> is set to <code class="docutils literal notranslate"><span class="pre">false</span></code>, all client connections must be secured.</li>
+<li>If both options are set to <code class="docutils literal notranslate"><span class="pre">true</span></code>, both encrypted and unencrypted connections are supported using the same port.
+Client connections using encryption with this configuration will be automatically detected and handled by the server.</li>
+</ul>
+<p>As an alternative to the <code class="docutils literal notranslate"><span class="pre">optional</span></code> setting, separate ports can also be configured for secure and unsecure connections
+where operational requirements demand it. To do so, set <code class="docutils literal notranslate"><span class="pre">optional</span></code> to false and use the <code class="docutils literal notranslate"><span class="pre">native_transport_port_ssl</span></code>
+setting in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> to specify the port to be used for secure client communication.</p>
+</div>
+</div>
+<div class="section" id="roles">
+<span id="operation-roles"></span><h2>Roles<a class="headerlink" href="#roles" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra uses database roles, which may represent either a single user or a group of users, in both authentication and
+permissions management. Role management is an extension point in Cassandra and may be configured using the
+<code class="docutils literal notranslate"><span class="pre">role_manager</span></code> setting in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>. The default setting uses <code class="docutils literal notranslate"><span class="pre">CassandraRoleManager</span></code>, an implementation
+which stores role information in the tables of the <code class="docutils literal notranslate"><span class="pre">system_auth</span></code> keyspace.</p>
+<p>See also the <a class="reference internal" href="../cql/security.html#cql-roles"><span class="std std-ref">CQL documentation on roles</span></a>.</p>
+</div>
+<div class="section" id="authentication">
+<h2>Authentication<a class="headerlink" href="#authentication" title="Permalink to this headline">¶</a></h2>
+<p>Authentication is pluggable in Cassandra and is configured using the <code class="docutils literal notranslate"><span class="pre">authenticator</span></code> setting in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>.
+Cassandra ships with two options included in the default distribution.</p>
+<p>By default, Cassandra is configured with <code class="docutils literal notranslate"><span class="pre">AllowAllAuthenticator</span></code> which performs no authentication checks and therefore
+requires no credentials. It is used to disable authentication completely. Note that authentication is a necessary
+condition of Cassandra’s permissions subsystem, so if authentication is disabled, effectively so are permissions.</p>
+<p>The default distribution also includes <code class="docutils literal notranslate"><span class="pre">PasswordAuthenticator</span></code>, which stores encrypted credentials in a system table.
+This can be used to enable simple username/password authentication.</p>
+<div class="section" id="enabling-password-authentication">
+<span id="password-authentication"></span><h3>Enabling Password Authentication<a class="headerlink" href="#enabling-password-authentication" title="Permalink to this headline">¶</a></h3>
+<p>Before enabling client authentication on the cluster, client applications should be pre-configured with their intended
+credentials. When a connection is initiated, the server will only ask for credentials once authentication is
+enabled, so setting up the client side config in advance is safe. In contrast, as soon as a server has authentication
+enabled, any connection attempt without proper credentials will be rejected which may cause availability problems for
+client applications. Once clients are setup and ready for authentication to be enabled, follow this procedure to enable
+it on the cluster.</p>
+<p>Pick a single node in the cluster on which to perform the initial configuration. Ideally, no clients should connect
+to this node during the setup process, so you may want to remove it from client config, block it at the network level
+or possibly add a new temporary node to the cluster for this purpose. On that node, perform the following steps:</p>
+<ol class="arabic simple">
+<li>Open a <code class="docutils literal notranslate"><span class="pre">cqlsh</span></code> session and change the replication factor of the <code class="docutils literal notranslate"><span class="pre">system_auth</span></code> keyspace. By default, this keyspace
+uses <code class="docutils literal notranslate"><span class="pre">SimpleReplicationStrategy</span></code> and a <code class="docutils literal notranslate"><span class="pre">replication_factor</span></code> of 1. It is recommended to change this for any
+non-trivial deployment to ensure that should nodes become unavailable, login is still possible. Best practice is to
+configure a replication factor of 3 to 5 per-DC.</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ALTER KEYSPACE system_auth WITH replication = {&#39;class&#39;: &#39;NetworkTopologyStrategy&#39;, &#39;DC1&#39;: 3, &#39;DC2&#39;: 3};
+</pre></div>
+</div>
+<ol class="arabic simple" start="2">
+<li>Edit <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> to change the <code class="docutils literal notranslate"><span class="pre">authenticator</span></code> option like so:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>authenticator: PasswordAuthenticator
+</pre></div>
+</div>
+<ol class="arabic simple" start="3">
+<li>Restart the node.</li>
+<li>Open a new <code class="docutils literal notranslate"><span class="pre">cqlsh</span></code> session using the credentials of the default superuser:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh -u cassandra -p cassandra
+</pre></div>
+</div>
+<ol class="arabic simple" start="5">
+<li>During login, the credentials for the default superuser are read with a consistency level of <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code>, whereas
+those for all other users (including superusers) are read at <code class="docutils literal notranslate"><span class="pre">LOCAL_ONE</span></code>. In the interests of performance and
+availability, as well as security, operators should create another superuser and disable the default one. This step
+is optional, but highly recommended. While logged in as the default superuser, create another superuser role which
+can be used to bootstrap further configuration.</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span># create a new superuser
+CREATE ROLE dba WITH SUPERUSER = true AND LOGIN = true AND PASSWORD = &#39;super&#39;;
+</pre></div>
+</div>
+<ol class="arabic simple" start="6">
+<li>Start a new cqlsh session, this time logging in as the new_superuser and disable the default superuser.</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ALTER ROLE cassandra WITH SUPERUSER = false AND LOGIN = false;
+</pre></div>
+</div>
+<ol class="arabic simple" start="7">
+<li>Finally, set up the roles and credentials for your application users with <a class="reference internal" href="../cql/security.html#create-role-statement"><span class="std std-ref">CREATE ROLE</span></a>
+statements.</li>
+</ol>
+<p>At the end of these steps, the one node is configured to use password authentication. To roll that out across the
+cluster, repeat steps 2 and 3 on each node in the cluster. Once all nodes have been restarted, authentication will be
+fully enabled throughout the cluster.</p>
+<p>Note that using <code class="docutils literal notranslate"><span class="pre">PasswordAuthenticator</span></code> also requires the use of <a class="reference internal" href="#operation-roles"><span class="std std-ref">CassandraRoleManager</span></a>.</p>
+<p>See also: <a class="reference internal" href="../cql/security.html#setting-credentials-for-internal-authentication"><span class="std std-ref">Setting credentials for internal authentication</span></a>, <a class="reference internal" href="../cql/security.html#create-role-statement"><span class="std std-ref">CREATE ROLE</span></a>,
+<a class="reference internal" href="../cql/security.html#alter-role-statement"><span class="std std-ref">ALTER ROLE</span></a>, <a class="reference internal" href="../cql/ddl.html#alter-keyspace-statement"><span class="std std-ref">ALTER KEYSPACE</span></a> and <a class="reference internal" href="../cql/security.html#grant-permission-statement"><span class="std std-ref">GRANT PERMISSION</span></a>,</p>
+</div>
+</div>
+<div class="section" id="authorization">
+<h2>Authorization<a class="headerlink" href="#authorization" title="Permalink to this headline">¶</a></h2>
+<p>Authorization is pluggable in Cassandra and is configured using the <code class="docutils literal notranslate"><span class="pre">authorizer</span></code> setting in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>.
+Cassandra ships with two options included in the default distribution.</p>
+<p>By default, Cassandra is configured with <code class="docutils literal notranslate"><span class="pre">AllowAllAuthorizer</span></code> which performs no checking and so effectively grants all
+permissions to all roles. This must be used if <code class="docutils literal notranslate"><span class="pre">AllowAllAuthenticator</span></code> is the configured authenticator.</p>
+<p>The default distribution also includes <code class="docutils literal notranslate"><span class="pre">CassandraAuthorizer</span></code>, which does implement full permissions management
+functionality and stores its data in Cassandra system tables.</p>
+<div class="section" id="enabling-internal-authorization">
+<h3>Enabling Internal Authorization<a class="headerlink" href="#enabling-internal-authorization" title="Permalink to this headline">¶</a></h3>
+<p>Permissions are modelled as a whitelist, with the default assumption that a given role has no access to any database
+resources. The implication of this is that once authorization is enabled on a node, all requests will be rejected until
+the required permissions have been granted. For this reason, it is strongly recommended to perform the initial setup on
+a node which is not processing client requests.</p>
+<p>The following assumes that authentication has already been enabled via the process outlined in
+<a class="reference internal" href="#password-authentication"><span class="std std-ref">Enabling Password Authentication</span></a>. Perform these steps to enable internal authorization across the cluster:</p>
+<ol class="arabic simple">
+<li>On the selected node, edit <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> to change the <code class="docutils literal notranslate"><span class="pre">authorizer</span></code> option like so:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>authorizer: CassandraAuthorizer
+</pre></div>
+</div>
+<ol class="arabic simple" start="2">
+<li>Restart the node.</li>
+<li>Open a new <code class="docutils literal notranslate"><span class="pre">cqlsh</span></code> session using the credentials of a role with superuser credentials:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh -u dba -p super
+</pre></div>
+</div>
+<ol class="arabic simple" start="4">
+<li>Configure the appropriate access privileges for your clients using <a class="reference external" href="cql.html#grant-permission">GRANT PERMISSION</a>
+statements. On the other nodes, until configuration is updated and the node restarted, this will have no effect so
+disruption to clients is avoided.</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>GRANT SELECT ON ks.t1 TO db_user;
+</pre></div>
+</div>
+<ol class="arabic simple" start="5">
+<li>Once all the necessary permissions have been granted, repeat steps 1 and 2 for each node in turn. As each node
+restarts and clients reconnect, the enforcement of the granted permissions will begin.</li>
+</ol>
+<p>See also: <a class="reference internal" href="../cql/security.html#grant-permission-statement"><span class="std std-ref">GRANT PERMISSION</span></a>, <cite>GRANT ALL &lt;grant-all&gt;</cite> and <a class="reference internal" href="../cql/security.html#revoke-permission-statement"><span class="std std-ref">REVOKE PERMISSION</span></a></p>
+</div>
+</div>
+<div class="section" id="caching">
+<h2>Caching<a class="headerlink" href="#caching" title="Permalink to this headline">¶</a></h2>
+<p>Enabling authentication and authorization places additional load on the cluster by frequently reading from the
+<code class="docutils literal notranslate"><span class="pre">system_auth</span></code> tables. Furthermore, these reads are in the critical paths of many client operations, and so has the
+potential to severely impact quality of service. To mitigate this, auth data such as credentials, permissions and role
+details are cached for a configurable period. The caching can be configured (and even disabled) from <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>
+or using a JMX client. The JMX interface also supports invalidation of the various caches, but any changes made via JMX
+are not persistent and will be re-read from <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> when the node is restarted.</p>
+<p>Each cache has 3 options which can be set:</p>
+<dl class="docutils">
+<dt>Validity Period</dt>
+<dd>Controls the expiration of cache entries. After this period, entries are invalidated and removed from the cache.</dd>
+<dt>Refresh Rate</dt>
+<dd>Controls the rate at which background reads are performed to pick up any changes to the underlying data. While these
+async refreshes are performed, caches will continue to serve (possibly) stale data. Typically, this will be set to a
+shorter time than the validity period.</dd>
+<dt>Max Entries</dt>
+<dd>Controls the upper bound on cache size.</dd>
+</dl>
+<p>The naming for these options in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> follows the convention:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">&lt;type&gt;_validity_in_ms</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">&lt;type&gt;_update_interval_in_ms</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">&lt;type&gt;_cache_max_entries</span></code></li>
+</ul>
+<p>Where <code class="docutils literal notranslate"><span class="pre">&lt;type&gt;</span></code> is one of <code class="docutils literal notranslate"><span class="pre">credentials</span></code>, <code class="docutils literal notranslate"><span class="pre">permissions</span></code>, or <code class="docutils literal notranslate"><span class="pre">roles</span></code>.</p>
+<p>As mentioned, these are also exposed via JMX in the mbeans under the <code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.auth</span></code> domain.</p>
+</div>
+<div class="section" id="jmx-access">
+<h2>JMX access<a class="headerlink" href="#jmx-access" title="Permalink to this headline">¶</a></h2>
+<p>Access control for JMX clients is configured separately to that for CQL. For both authentication and authorization, two
+providers are available; the first based on standard JMX security and the second which integrates more closely with
+Cassandra’s own auth subsystem.</p>
+<p>The default settings for Cassandra make JMX accessible only from localhost. To enable remote JMX connections, edit
+<code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> (or <code class="docutils literal notranslate"><span class="pre">cassandra-env.ps1</span></code> on Windows) to change the <code class="docutils literal notranslate"><span class="pre">LOCAL_JMX</span></code> setting to <code class="docutils literal notranslate"><span class="pre">yes</span></code>. Under the
+standard configuration, when remote JMX connections are enabled, <a class="reference internal" href="#standard-jmx-auth"><span class="std std-ref">standard JMX authentication</span></a>
+is also switched on.</p>
+<p>Note that by default, local-only connections are not subject to authentication, but this can be enabled.</p>
+<p>If enabling remote connections, it is recommended to also use <a class="reference internal" href="#jmx-with-ssl"><span class="std std-ref">SSL</span></a> connections.</p>
+<p>Finally, after enabling auth and/or SSL, ensure that tools which use JMX, such as <a class="reference internal" href="../tools/nodetool.html#nodetool"><span class="std std-ref">nodetool</span></a>, are
+correctly configured and working as expected.</p>
+<div class="section" id="standard-jmx-auth">
+<span id="id1"></span><h3>Standard JMX Auth<a class="headerlink" href="#standard-jmx-auth" title="Permalink to this headline">¶</a></h3>
+<p>Users permitted to connect to the JMX server are specified in a simple text file. The location of this file is set in
+<code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> by the line:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>JVM_OPTS=&quot;$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password&quot;
+</pre></div>
+</div>
+<p>Edit the password file to add username/password pairs:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>jmx_user jmx_password
+</pre></div>
+</div>
+<p>Secure the credentials file so that only the user running the Cassandra process can read it :</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ chown cassandra:cassandra /etc/cassandra/jmxremote.password
+$ chmod 400 /etc/cassandra/jmxremote.password
+</pre></div>
+</div>
+<p>Optionally, enable access control to limit the scope of what defined users can do via JMX. Note that this is a fairly
+blunt instrument in this context as most operational tools in Cassandra require full read/write access. To configure a
+simple access file, uncomment this line in <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>#JVM_OPTS=&quot;$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access&quot;
+</pre></div>
+</div>
+<p>Then edit the access file to grant your JMX user readwrite permission:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>jmx_user readwrite
+</pre></div>
+</div>
+<p>Cassandra must be restarted to pick up the new settings.</p>
+<p>See also : <a class="reference external" href="http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdenv">Using File-Based Password Authentication In JMX</a></p>
+</div>
+<div class="section" id="cassandra-integrated-auth">
+<h3>Cassandra Integrated Auth<a class="headerlink" href="#cassandra-integrated-auth" title="Permalink to this headline">¶</a></h3>
+<p>An alternative to the out-of-the-box JMX auth is to useeCassandra’s own authentication and/or authorization providers
+for JMX clients. This is potentially more flexible and secure but it come with one major caveat. Namely that it is not
+available until <cite>after</cite> a node has joined the ring, because the auth subsystem is not fully configured until that point
+However, it is often critical for monitoring purposes to have JMX access particularly during bootstrap. So it is
+recommended, where possible, to use local only JMX auth during bootstrap and then, if remote connectivity is required,
+to switch to integrated auth once the node has joined the ring and initial setup is complete.</p>
+<p>With this option, the same database roles used for CQL authentication can be used to control access to JMX, so updates
+can be managed centrally using just <code class="docutils literal notranslate"><span class="pre">cqlsh</span></code>. Furthermore, fine grained control over exactly which operations are
+permitted on particular MBeans can be acheived via <a class="reference internal" href="../cql/security.html#grant-permission-statement"><span class="std std-ref">GRANT PERMISSION</span></a>.</p>
+<p>To enable integrated authentication, edit <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> to uncomment these lines:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>#JVM_OPTS=&quot;$JVM_OPTS -Dcassandra.jmx.remote.login.config=CassandraLogin&quot;
+#JVM_OPTS=&quot;$JVM_OPTS -Djava.security.auth.login.config=$CASSANDRA_HOME/conf/cassandra-jaas.config&quot;
+</pre></div>
+</div>
+<p>And disable the JMX standard auth by commenting this line:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>JVM_OPTS=&quot;$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password&quot;
+</pre></div>
+</div>
+<p>To enable integrated authorization, uncomment this line:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>#JVM_OPTS=&quot;$JVM_OPTS -Dcassandra.jmx.authorizer=org.apache.cassandra.auth.jmx.AuthorizationProxy&quot;
+</pre></div>
+</div>
+<p>Check standard access control is off by ensuring this line is commented out:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>#JVM_OPTS=&quot;$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access&quot;
+</pre></div>
+</div>
+<p>With integrated authentication and authorization enabled, operators can define specific roles and grant them access to
+the particular JMX resources that they need. For example, a role with the necessary permissions to use tools such as
+jconsole or jmc in read-only mode would be defined as:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CREATE ROLE jmx WITH LOGIN = false;
+GRANT SELECT ON ALL MBEANS TO jmx;
+GRANT DESCRIBE ON ALL MBEANS TO jmx;
+GRANT EXECUTE ON MBEAN &#39;java.lang:type=Threading&#39; TO jmx;
+GRANT EXECUTE ON MBEAN &#39;com.sun.management:type=HotSpotDiagnostic&#39; TO jmx;
+
+# Grant the jmx role to one with login permissions so that it can access the JMX tooling
+CREATE ROLE ks_user WITH PASSWORD = &#39;password&#39; AND LOGIN = true AND SUPERUSER = false;
+GRANT jmx TO ks_user;
+</pre></div>
+</div>
+<p>Fine grained access control to individual MBeans is also supported:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>GRANT EXECUTE ON MBEAN &#39;org.apache.cassandra.db:type=Tables,keyspace=test_keyspace,table=t1&#39; TO ks_user;
+GRANT EXECUTE ON MBEAN &#39;org.apache.cassandra.db:type=Tables,keyspace=test_keyspace,table=*&#39; TO ks_owner;
+</pre></div>
+</div>
+<p>This permits the <code class="docutils literal notranslate"><span class="pre">ks_user</span></code> role to invoke methods on the MBean representing a single table in <code class="docutils literal notranslate"><span class="pre">test_keyspace</span></code>, while
+granting the same permission for all table level MBeans in that keyspace to the <code class="docutils literal notranslate"><span class="pre">ks_owner</span></code> role.</p>
+<p>Adding/removing roles and granting/revoking of permissions is handled dynamically once the initial setup is complete, so
+no further restarts are required if permissions are altered.</p>
+<p>See also: <a class="reference internal" href="../cql/security.html#cql-permissions"><span class="std std-ref">Permissions</span></a>.</p>
+</div>
+<div class="section" id="jmx-with-ssl">
+<span id="id2"></span><h3>JMX With SSL<a class="headerlink" href="#jmx-with-ssl" title="Permalink to this headline">¶</a></h3>
+<p>JMX SSL configuration is controlled by a number of system properties, some of which are optional. To turn on SSL, edit
+the relevant lines in <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> (or <code class="docutils literal notranslate"><span class="pre">cassandra-env.ps1</span></code> on Windows) to uncomment and set the values of these
+properties as required:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">com.sun.management.jmxremote.ssl</span></code></dt>
+<dd>set to true to enable SSL</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">com.sun.management.jmxremote.ssl.need.client.auth</span></code></dt>
+<dd>set to true to enable validation of client certificates</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">com.sun.management.jmxremote.registry.ssl</span></code></dt>
+<dd>enables SSL sockets for the RMI registry from which clients obtain the JMX connector stub</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">com.sun.management.jmxremote.ssl.enabled.protocols</span></code></dt>
+<dd>by default, the protocols supported by the JVM will be used, override with a comma-separated list. Note that this is
+not usually necessary and using the defaults is the preferred option.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">com.sun.management.jmxremote.ssl.enabled.cipher.suites</span></code></dt>
+<dd>by default, the cipher suites supported by the JVM will be used, override with a comma-separated list. Note that
+this is not usually necessary and using the defaults is the preferred option.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">javax.net.ssl.keyStore</span></code></dt>
+<dd>set the path on the local filesystem of the keystore containing server private keys and public certificates</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">javax.net.ssl.keyStorePassword</span></code></dt>
+<dd>set the password of the keystore file</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">javax.net.ssl.trustStore</span></code></dt>
+<dd>if validation of client certificates is required, use this property to specify the path of the truststore containing
+the public certificates of trusted clients</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">javax.net.ssl.trustStorePassword</span></code></dt>
+<dd>set the password of the truststore file</dd>
+</dl>
+<p>See also: <a class="reference external" href="http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdemv">Oracle Java7 Docs</a>,
+<a class="reference external" href="https://www.lullabot.com/articles/monitor-java-with-jmx">Monitor Java with JMX</a></p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="hardware.html" class="btn btn-default pull-right " role="button" title="Hardware Choices" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="metrics.html" class="btn btn-default" role="button" title="Monitoring" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/snitch.html b/src/doc/3.11.11/operating/snitch.html
new file mode 100644
index 0000000..56d6439
--- /dev/null
+++ b/src/doc/3.11.11/operating/snitch.html
@@ -0,0 +1,176 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Snitch"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Adding, replacing, moving and removing nodes" href="topo_changes.html"/>
+      <link rel="prev" title="Operating Cassandra" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Snitch</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#dynamic-snitching">Dynamic snitching</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#snitch-classes">Snitch classes</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="snitch">
+<h1>Snitch<a class="headerlink" href="#snitch" title="Permalink to this headline">¶</a></h1>
+<p>In cassandra, the snitch has two functions:</p>
+<ul class="simple">
+<li>it teaches Cassandra enough about your network topology to route requests efficiently.</li>
+<li>it allows Cassandra to spread replicas around your cluster to avoid correlated failures. It does this by grouping
+machines into “datacenters” and “racks.”  Cassandra will do its best not to have more than one replica on the same
+“rack” (which may not actually be a physical location).</li>
+</ul>
+<div class="section" id="dynamic-snitching">
+<h2>Dynamic snitching<a class="headerlink" href="#dynamic-snitching" title="Permalink to this headline">¶</a></h2>
+<p>The dynamic snitch monitor read latencies to avoid reading from hosts that have slowed down. The dynamic snitch is
+configured with the following properties on <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">dynamic_snitch</span></code>: whether the dynamic snitch should be enabled or disabled.</li>
+<li><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_update_interval_in_ms</span></code>: controls how often to perform the more expensive part of host score
+calculation.</li>
+<li><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_reset_interval_in_ms</span></code>: if set greater than zero and read_repair_chance is &lt; 1.0, this will allow
+‘pinning’ of replicas to hosts in order to increase cache capacity.</li>
+<li><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_badness_threshold:</span></code>: The badness threshold will control how much worse the pinned host has to be
+before the dynamic snitch will prefer other replicas over it.  This is expressed as a double which represents a
+percentage.  Thus, a value of 0.2 means Cassandra would continue to prefer the static snitch values until the pinned
+host was 20% worse than the fastest.</li>
+</ul>
+</div>
+<div class="section" id="snitch-classes">
+<h2>Snitch classes<a class="headerlink" href="#snitch-classes" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">endpoint_snitch</span></code> parameter in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> should be set to the class the class that implements
+<code class="docutils literal notranslate"><span class="pre">IEndPointSnitch</span></code> which will be wrapped by the dynamic snitch and decide if two endpoints are in the same data center
+or on the same rack. Out of the box, Cassandra provides the snitch implementations:</p>
+<dl class="docutils">
+<dt>GossipingPropertyFileSnitch</dt>
+<dd>This should be your go-to snitch for production use. The rack and datacenter for the local node are defined in
+cassandra-rackdc.properties and propagated to other nodes via gossip. If <code class="docutils literal notranslate"><span class="pre">cassandra-topology.properties</span></code> exists,
+it is used as a fallback, allowing migration from the PropertyFileSnitch.</dd>
+<dt>SimpleSnitch</dt>
+<dd>Treats Strategy order as proximity. This can improve cache locality when disabling read repair. Only appropriate for
+single-datacenter deployments.</dd>
+<dt>PropertyFileSnitch</dt>
+<dd>Proximity is determined by rack and data center, which are explicitly configured in
+<code class="docutils literal notranslate"><span class="pre">cassandra-topology.properties</span></code>.</dd>
+<dt>Ec2Snitch</dt>
+<dd>Appropriate for EC2 deployments in a single Region. Loads Region and Availability Zone information from the EC2 API.
+The Region is treated as the datacenter, and the Availability Zone as the rack. Only private IPs are used, so this
+will not work across multiple regions.</dd>
+<dt>Ec2MultiRegionSnitch</dt>
+<dd>Uses public IPs as broadcast_address to allow cross-region connectivity (thus, you should set seed addresses to the
+public IP as well). You will need to open the <code class="docutils literal notranslate"><span class="pre">storage_port</span></code> or <code class="docutils literal notranslate"><span class="pre">ssl_storage_port</span></code> on the public IP firewall
+(For intra-Region traffic, Cassandra will switch to the private IP after establishing a connection).</dd>
+<dt>RackInferringSnitch</dt>
+<dd>Proximity is determined by rack and data center, which are assumed to correspond to the 3rd and 2nd octet of each
+node’s IP address, respectively.  Unless this happens to match your deployment conventions, this is best used as an
+example of writing a custom Snitch class and is provided in that spirit.</dd>
+</dl>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="topo_changes.html" class="btn btn-default pull-right " role="button" title="Adding, replacing, moving and removing nodes" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Operating Cassandra" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/operating/topo_changes.html b/src/doc/3.11.11/operating/topo_changes.html
new file mode 100644
index 0000000..d526ea6
--- /dev/null
+++ b/src/doc/3.11.11/operating/topo_changes.html
@@ -0,0 +1,214 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Adding, replacing, moving and removing nodes"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Repair" href="repair.html"/>
+      <link rel="prev" title="Snitch" href="snitch.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Adding, replacing, moving and removing nodes</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#bootstrap">Bootstrap</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#removing-nodes">Removing nodes</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#moving-nodes">Moving nodes</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#replacing-a-dead-node">Replacing a dead node</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#monitoring-progress">Monitoring progress</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cleanup-data-after-range-movements">Cleanup data after range movements</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="adding-replacing-moving-and-removing-nodes">
+<span id="topology-changes"></span><h1>Adding, replacing, moving and removing nodes<a class="headerlink" href="#adding-replacing-moving-and-removing-nodes" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="bootstrap">
+<h2>Bootstrap<a class="headerlink" href="#bootstrap" title="Permalink to this headline">¶</a></h2>
+<p>Adding new nodes is called “bootstrapping”. The <code class="docutils literal notranslate"><span class="pre">num_tokens</span></code> parameter will define the amount of virtual nodes
+(tokens) the joining node will be assigned during bootstrap. The tokens define the sections of the ring (token ranges)
+the node will become responsible for.</p>
+<div class="section" id="token-allocation">
+<h3>Token allocation<a class="headerlink" href="#token-allocation" title="Permalink to this headline">¶</a></h3>
+<p>With the default token allocation algorithm the new node will pick <code class="docutils literal notranslate"><span class="pre">num_tokens</span></code> random tokens to become responsible
+for. Since tokens are distributed randomly, load distribution improves with a higher amount of virtual nodes, but it
+also increases token management overhead. The default of 256 virtual nodes should provide a reasonable load balance with
+acceptable overhead.</p>
+<p>On 3.0+ a new token allocation algorithm was introduced to allocate tokens based on the load of existing virtual nodes
+for a given keyspace, and thus yield an improved load distribution with a lower number of tokens. To use this approach,
+the new node must be started with the JVM option <code class="docutils literal notranslate"><span class="pre">-Dcassandra.allocate_tokens_for_keyspace=&lt;keyspace&gt;</span></code>, where
+<code class="docutils literal notranslate"><span class="pre">&lt;keyspace&gt;</span></code> is the keyspace from which the algorithm can find the load information to optimize token assignment for.</p>
+<div class="section" id="manual-token-assignment">
+<h4>Manual token assignment<a class="headerlink" href="#manual-token-assignment" title="Permalink to this headline">¶</a></h4>
+<p>You may specify a comma-separated list of tokens manually with the <code class="docutils literal notranslate"><span class="pre">initial_token</span></code> <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> parameter, and
+if that is specified Cassandra will skip the token allocation process. This may be useful when doing token assignment
+with an external tool or when restoring a node with its previous tokens.</p>
+</div>
+</div>
+<div class="section" id="range-streaming">
+<h3>Range streaming<a class="headerlink" href="#range-streaming" title="Permalink to this headline">¶</a></h3>
+<p>After the tokens are allocated, the joining node will pick current replicas of the token ranges it will become
+responsible for to stream data from. By default it will stream from the primary replica of each token range in order to
+guarantee data in the new node will be consistent with the current state.</p>
+<p>In the case of any unavailable replica, the consistent bootstrap process will fail. To override this behavior and
+potentially miss data from an unavailable replica, set the JVM flag <code class="docutils literal notranslate"><span class="pre">-Dcassandra.consistent.rangemovement=false</span></code>.</p>
+</div>
+<div class="section" id="resuming-failed-hanged-bootstrap">
+<h3>Resuming failed/hanged bootstrap<a class="headerlink" href="#resuming-failed-hanged-bootstrap" title="Permalink to this headline">¶</a></h3>
+<p>On 2.2+, if the bootstrap process fails, it’s possible to resume bootstrap from the previous saved state by calling
+<code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">bootstrap</span> <span class="pre">resume</span></code>. If for some reason the bootstrap hangs or stalls, it may also be resumed by simply
+restarting the node. In order to cleanup bootstrap state and start fresh, you may set the JVM startup flag
+<code class="docutils literal notranslate"><span class="pre">-Dcassandra.reset_bootstrap_progress=true</span></code>.</p>
+<p>On lower versions, when the bootstrap proces fails it is recommended to wipe the node (remove all the data), and restart
+the bootstrap process again.</p>
+</div>
+<div class="section" id="manual-bootstrapping">
+<h3>Manual bootstrapping<a class="headerlink" href="#manual-bootstrapping" title="Permalink to this headline">¶</a></h3>
+<p>It’s possible to skip the bootstrapping process entirely and join the ring straight away by setting the hidden parameter
+<code class="docutils literal notranslate"><span class="pre">auto_bootstrap:</span> <span class="pre">false</span></code>. This may be useful when restoring a node from a backup or creating a new data-center.</p>
+</div>
+</div>
+<div class="section" id="removing-nodes">
+<h2>Removing nodes<a class="headerlink" href="#removing-nodes" title="Permalink to this headline">¶</a></h2>
+<p>You can take a node out of the cluster with <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">decommission</span></code> to a live node, or <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">removenode</span></code> (to any
+other machine) to remove a dead one. This will assign the ranges the old node was responsible for to other nodes, and
+replicate the appropriate data there. If decommission is used, the data will stream from the decommissioned node. If
+removenode is used, the data will stream from the remaining replicas.</p>
+<p>No data is removed automatically from the node being decommissioned, so if you want to put the node back into service at
+a different token on the ring, it should be removed manually.</p>
+</div>
+<div class="section" id="moving-nodes">
+<h2>Moving nodes<a class="headerlink" href="#moving-nodes" title="Permalink to this headline">¶</a></h2>
+<p>When <code class="docutils literal notranslate"><span class="pre">num_tokens:</span> <span class="pre">1</span></code> it’s possible to move the node position in the ring with <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">move</span></code>. Moving is both a
+convenience over and more efficient than decommission + bootstrap. After moving a node, <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">cleanup</span></code> should be
+run to remove any unnecessary data.</p>
+</div>
+<div class="section" id="replacing-a-dead-node">
+<h2>Replacing a dead node<a class="headerlink" href="#replacing-a-dead-node" title="Permalink to this headline">¶</a></h2>
+<p>In order to replace a dead node, start cassandra with the JVM startup flag
+<code class="docutils literal notranslate"><span class="pre">-Dcassandra.replace_address_first_boot=&lt;dead_node_ip&gt;</span></code>. Once this property is enabled the node starts in a hibernate
+state, during which all the other nodes will see this node to be down.</p>
+<p>The replacing node will now start to bootstrap the data from the rest of the nodes in the cluster. The main difference
+between normal bootstrapping of a new node is that this new node will not accept any writes during this phase.</p>
+<p>Once the bootstrapping is complete the node will be marked “UP”, we rely on the hinted handoff’s for making this node
+consistent (since we don’t accept writes since the start of the bootstrap).</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">If the replacement process takes longer than <code class="docutils literal notranslate"><span class="pre">max_hint_window_in_ms</span></code> you <strong>MUST</strong> run repair to make the
+replaced node consistent again, since it missed ongoing writes during bootstrapping.</p>
+</div>
+</div>
+<div class="section" id="monitoring-progress">
+<h2>Monitoring progress<a class="headerlink" href="#monitoring-progress" title="Permalink to this headline">¶</a></h2>
+<p>Bootstrap, replace, move and remove progress can be monitored using <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">netstats</span></code> which will show the progress
+of the streaming operations.</p>
+</div>
+<div class="section" id="cleanup-data-after-range-movements">
+<h2>Cleanup data after range movements<a class="headerlink" href="#cleanup-data-after-range-movements" title="Permalink to this headline">¶</a></h2>
+<p>As a safety measure, Cassandra does not automatically remove data from nodes that “lose” part of their token range due
+to a range movement operation (bootstrap, move, replace). Run <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">cleanup</span></code> on the nodes that lost ranges to the
+joining node when you are satisfied the new node is up and working. If you do not do this the old data will still be
+counted against the load on that node.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="repair.html" class="btn btn-default pull-right " role="button" title="Repair" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="snitch.html" class="btn btn-default" role="button" title="Snitch" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/search.html b/src/doc/3.11.11/search.html
new file mode 100644
index 0000000..3fe9cc0
--- /dev/null
+++ b/src/doc/3.11.11/search.html
@@ -0,0 +1,103 @@
+---
+layout: docpage
+
+title: "Search"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: ""
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="index.html"/>
+'
+doc-search-path: "#"
+
+extra-footer: '
+  <script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+  </script>
+  <script type="text/javascript">
+    jQuery(function() { Search.loadIndex("searchindex.js"); });
+  </script>
+  
+  <script type="text/javascript" id="searchindexloader"></script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="#" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <noscript>
+  <div id="fallback" class="admonition warning">
+    <p class="last">
+      Please activate JavaScript to enable the search
+      functionality.
+    </p>
+  </div>
+  </noscript>
+
+  
+  <div id="search-results">
+  
+  </div>
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/searchindex.js b/src/doc/3.11.11/searchindex.js
new file mode 100644
index 0000000..89d66eb
--- /dev/null
+++ b/src/doc/3.11.11/searchindex.js
@@ -0,0 +1 @@
+Search.setIndex({docnames:["architecture/dynamo","architecture/guarantees","architecture/index","architecture/overview","architecture/storage_engine","bugs","configuration/cassandra_config_file","configuration/index","contactus","cql/appendices","cql/changes","cql/ddl","cql/definitions","cql/dml","cql/functions","cql/index","cql/indexes","cql/json","cql/mvs","cql/security","cql/triggers","cql/types","data_modeling/index","development/code_style","development/how_to_commit","development/how_to_review","development/ide","development/index","development/license_compliance","development/patches","development/testing","faq/index","getting_started/configuring","getting_started/drivers","getting_started/index","getting_started/installing","getting_started/querying","index","operating/backups","operating/bloom_filters","operating/bulk_loading","operating/cdc","operating/compaction","operating/compression","operating/hardware","operating/hints","operating/index","operating/metrics","operating/read_repair","operating/repair","operating/security","operating/snitch","operating/topo_changes","tools/cqlsh","tools/index","tools/nodetool","tools/nodetool/assassinate","tools/nodetool/bootstrap","tools/nodetool/cleanup","tools/nodetool/clearsnapshot","tools/nodetool/compact","tools/nodetool/compactionhistory","tools/nodetool/compactionstats","tools/nodetool/decommission","tools/nodetool/describecluster","tools/nodetool/describering","tools/nodetool/disableautocompaction","tools/nodetool/disablebackup","tools/nodetool/disablebinary","tools/nodetool/disablegossip","tools/nodetool/disablehandoff","tools/nodetool/disablehintsfordc","tools/nodetool/disablethrift","tools/nodetool/drain","tools/nodetool/enableautocompaction","tools/nodetool/enablebackup","tools/nodetool/enablebinary","tools/nodetool/enablegossip","tools/nodetool/enablehandoff","tools/nodetool/enablehintsfordc","tools/nodetool/enablethrift","tools/nodetool/failuredetector","tools/nodetool/flush","tools/nodetool/garbagecollect","tools/nodetool/gcstats","tools/nodetool/getcompactionthreshold","tools/nodetool/getcompactionthroughput","tools/nodetool/getconcurrentcompactors","tools/nodetool/getendpoints","tools/nodetool/getinterdcstreamthroughput","tools/nodetool/getlogginglevels","tools/nodetool/getsstables","tools/nodetool/getstreamthroughput","tools/nodetool/gettimeout","tools/nodetool/gettraceprobability","tools/nodetool/gossipinfo","tools/nodetool/help","tools/nodetool/info","tools/nodetool/invalidatecountercache","tools/nodetool/invalidatekeycache","tools/nodetool/invalidaterowcache","tools/nodetool/join","tools/nodetool/listsnapshots","tools/nodetool/move","tools/nodetool/netstats","tools/nodetool/nodetool","tools/nodetool/pausehandoff","tools/nodetool/proxyhistograms","tools/nodetool/rangekeysample","tools/nodetool/rebuild","tools/nodetool/rebuild_index","tools/nodetool/refresh","tools/nodetool/refreshsizeestimates","tools/nodetool/reloadlocalschema","tools/nodetool/reloadtriggers","tools/nodetool/relocatesstables","tools/nodetool/removenode","tools/nodetool/repair","tools/nodetool/replaybatchlog","tools/nodetool/resetlocalschema","tools/nodetool/resumehandoff","tools/nodetool/ring","tools/nodetool/scrub","tools/nodetool/setcachecapacity","tools/nodetool/setcachekeystosave","tools/nodetool/setcompactionthreshold","tools/nodetool/setcompactionthroughput","tools/nodetool/setconcurrentcompactors","tools/nodetool/sethintedhandoffthrottlekb","tools/nodetool/setinterdcstreamthroughput","tools/nodetool/setlogginglevel","tools/nodetool/setstreamthroughput","tools/nodetool/settimeout","tools/nodetool/settraceprobability","tools/nodetool/snapshot","tools/nodetool/status","tools/nodetool/statusbackup","tools/nodetool/statusbinary","tools/nodetool/statusgossip","tools/nodetool/statushandoff","tools/nodetool/statusthrift","tools/nodetool/stop","tools/nodetool/stopdaemon","tools/nodetool/tablehistograms","tools/nodetool/tablestats","tools/nodetool/toppartitions","tools/nodetool/tpstats","tools/nodetool/truncatehints","tools/nodetool/upgradesstables","tools/nodetool/verify","tools/nodetool/version","tools/nodetool/viewbuildstatus","troubleshooting/index"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.todo":1,sphinx:54},filenames:["architecture/dynamo.rst","architecture/guarantees.rst","architecture/index.rst","architecture/overview.rst","architecture/storage_engine.rst","bugs.rst","configuration/cassandra_config_file.rst","configuration/index.rst","contactus.rst","cql/appendices.rst","cql/changes.rst","cql/ddl.rst","cql/definitions.rst","cql/dml.rst","cql/functions.rst","cql/index.rst","cql/indexes.rst","cql/json.rst","cql/mvs.rst","cql/security.rst","cql/triggers.rst","cql/types.rst","data_modeling/index.rst","development/code_style.rst","development/how_to_commit.rst","development/how_to_review.rst","development/ide.rst","development/index.rst","development/license_compliance.rst","development/patches.rst","development/testing.rst","faq/index.rst","getting_started/configuring.rst","getting_started/drivers.rst","getting_started/index.rst","getting_started/installing.rst","getting_started/querying.rst","index.rst","operating/backups.rst","operating/bloom_filters.rst","operating/bulk_loading.rst","operating/cdc.rst","operating/compaction.rst","operating/compression.rst","operating/hardware.rst","operating/hints.rst","operating/index.rst","operating/metrics.rst","operating/read_repair.rst","operating/repair.rst","operating/security.rst","operating/snitch.rst","operating/topo_changes.rst","tools/cqlsh.rst","tools/index.rst","tools/nodetool.rst","tools/nodetool/assassinate.rst","tools/nodetool/bootstrap.rst","tools/nodetool/cleanup.rst","tools/nodetool/clearsnapshot.rst","tools/nodetool/compact.rst","tools/nodetool/compactionhistory.rst","tools/nodetool/compactionstats.rst","tools/nodetool/decommission.rst","tools/nodetool/describecluster.rst","tools/nodetool/describering.rst","tools/nodetool/disableautocompaction.rst","tools/nodetool/disablebackup.rst","tools/nodetool/disablebinary.rst","tools/nodetool/disablegossip.rst","tools/nodetool/disablehandoff.rst","tools/nodetool/disablehintsfordc.rst","tools/nodetool/disablethrift.rst","tools/nodetool/drain.rst","tools/nodetool/enableautocompaction.rst","tools/nodetool/enablebackup.rst","tools/nodetool/enablebinary.rst","tools/nodetool/enablegossip.rst","tools/nodetool/enablehandoff.rst","tools/nodetool/enablehintsfordc.rst","tools/nodetool/enablethrift.rst","tools/nodetool/failuredetector.rst","tools/nodetool/flush.rst","tools/nodetool/garbagecollect.rst","tools/nodetool/gcstats.rst","tools/nodetool/getcompactionthreshold.rst","tools/nodetool/getcompactionthroughput.rst","tools/nodetool/getconcurrentcompactors.rst","tools/nodetool/getendpoints.rst","tools/nodetool/getinterdcstreamthroughput.rst","tools/nodetool/getlogginglevels.rst","tools/nodetool/getsstables.rst","tools/nodetool/getstreamthroughput.rst","tools/nodetool/gettimeout.rst","tools/nodetool/gettraceprobability.rst","tools/nodetool/gossipinfo.rst","tools/nodetool/help.rst","tools/nodetool/info.rst","tools/nodetool/invalidatecountercache.rst","tools/nodetool/invalidatekeycache.rst","tools/nodetool/invalidaterowcache.rst","tools/nodetool/join.rst","tools/nodetool/listsnapshots.rst","tools/nodetool/move.rst","tools/nodetool/netstats.rst","tools/nodetool/nodetool.rst","tools/nodetool/pausehandoff.rst","tools/nodetool/proxyhistograms.rst","tools/nodetool/rangekeysample.rst","tools/nodetool/rebuild.rst","tools/nodetool/rebuild_index.rst","tools/nodetool/refresh.rst","tools/nodetool/refreshsizeestimates.rst","tools/nodetool/reloadlocalschema.rst","tools/nodetool/reloadtriggers.rst","tools/nodetool/relocatesstables.rst","tools/nodetool/removenode.rst","tools/nodetool/repair.rst","tools/nodetool/replaybatchlog.rst","tools/nodetool/resetlocalschema.rst","tools/nodetool/resumehandoff.rst","tools/nodetool/ring.rst","tools/nodetool/scrub.rst","tools/nodetool/setcachecapacity.rst","tools/nodetool/setcachekeystosave.rst","tools/nodetool/setcompactionthreshold.rst","tools/nodetool/setcompactionthroughput.rst","tools/nodetool/setconcurrentcompactors.rst","tools/nodetool/sethintedhandoffthrottlekb.rst","tools/nodetool/setinterdcstreamthroughput.rst","tools/nodetool/setlogginglevel.rst","tools/nodetool/setstreamthroughput.rst","tools/nodetool/settimeout.rst","tools/nodetool/settraceprobability.rst","tools/nodetool/snapshot.rst","tools/nodetool/status.rst","tools/nodetool/statusbackup.rst","tools/nodetool/statusbinary.rst","tools/nodetool/statusgossip.rst","tools/nodetool/statushandoff.rst","tools/nodetool/statusthrift.rst","tools/nodetool/stop.rst","tools/nodetool/stopdaemon.rst","tools/nodetool/tablehistograms.rst","tools/nodetool/tablestats.rst","tools/nodetool/toppartitions.rst","tools/nodetool/tpstats.rst","tools/nodetool/truncatehints.rst","tools/nodetool/upgradesstables.rst","tools/nodetool/verify.rst","tools/nodetool/version.rst","tools/nodetool/viewbuildstatus.rst","troubleshooting/index.rst"],objects:{},objnames:{},objtypes:{},terms:{"00t89":21,"03t04":21,"0x0000000000000003":14,"0x00000004":13,"100mb":6,"10mb":6,"10s":53,"10x":[6,42],"11e6":53,"128th":4,"12gb":44,"12h30m":21,"15m":47,"160mb":42,"16mb":[31,42],"180kb":6,"19t03":122,"1mo":21,"1st":21,"24h":21,"250m":6,"256mb":6,"256th":6,"29d":21,"2e10":10,"2gb":44,"2nd":[6,11,51],"2xlarg":44,"300s":6,"327e":53,"32gb":44,"32mb":[6,31],"36x":35,"3ff3e5109f22":13,"3gb":43,"3rd":[6,47,51],"40f3":13,"4ae3":13,"4kb":11,"4xlarg":44,"50kb":6,"50mb":[6,42],"512mb":6,"5573e5b09f14":13,"5kb":6,"5mb":42,"64k":6,"64kb":43,"6ms":6,"6tb":44,"7374e9b5ab08c1f1e612bf72293ea14c959b0c3c":24,"75th":47,"86400s":42,"89h4m48":21,"8gb":44,"8th":[6,41],"90th":47,"95ac6470":53,"95th":47,"98th":47,"99th":47,"9th":47,"\u00eatre":9,"abstract":[23,25],"boolean":[9,12,14,17,19,21,53],"break":[29,42],"byte":[6,9,13,21,47,62,104,144],"case":[4,6,10,11,12,13,14,16,17,18,21,24,25,29,30,31,39,44,50,52,53],"catch":23,"class":[6,11,14,21,23,26,30,42,43,46,50,105,114,130],"default":[4,6,10,11,13,14,17,19,21,26,30,31,32,35,39,41,42,43,47,50,52,53,58,83,104,105,109,117,122,133,134,145],"enum":9,"export":[26,47,53],"final":[14,19,23,26,42,44,50],"float":[9,10,11,12,14,17,21,39,43],"function":[6,9,10,11,12,15,16,18,19,21,25,33,37,50,51,53],"import":[11,14,21,26,27,30,32,42,44,47,53],"int":[9,10,11,13,14,17,18,19,21,30,41,43],"long":[6,13,21,24,25,31,42,47],"new":[0,4,6,10,11,14,16,17,18,19,20,21,23,25,26,29,30,34,37,39,42,44,50,52,103,105],"null":[9,10,12,13,14,17,18,21,23,53,105,130],"public":[6,14,23,30,31,35,50,51],"return":[6,9,11,13,14,16,17,18,19,21,25,117],"short":[4,6,21],"static":[6,9,10,18,51],"super":50,"switch":[6,10,19,26,31,46,50,51],"throw":[6,14,23,30],"true":[6,11,12,17,19,21,26,31,41,42,50,52,53,102,105],"try":[6,11,23,26,29,31,42,55],"var":[4,6,23,35],"void":30,"while":[4,6,9,10,11,12,13,21,24,29,39,42,43,44,50,53],AES:6,AND:[9,11,13,14,18,19,50,53],AWS:44,Added:10,Adding:[6,11,19,21,31,37,46,50],And:[11,14,19,50],Are:25,Ave:21,BUT:23,But:[13,15,19,21,23,29,31,53],CAS:6,CFs:[117,122],CLS:53,DCs:6,DNS:31,Doing:10,EBS:44,For:[0,4,6,9,10,11,12,13,14,15,16,17,18,19,20,21,29,30,31,32,35,36,42,44,50,51,53],GCs:6,Has:[6,25],IDE:[27,37],IDEs:[26,27],IDs:[105,135],INTO:[6,9,11,13,14,17,21],IPs:[6,51,121,135],Ids:141,JKS:6,KBs:6,LCS:11,NFS:44,NOT:[6,9,10,11,13,14,16,18,19,20,21],Not:[13,19,29,42,43],ONE:[0,6,47,53],One:[6,30,31,42],PFS:6,Pis:44,Such:21,THE:6,TLS:[6,46],That:[11,12,18,21,29,31,42,53],The:[0,4,6,8,9,10,12,14,16,18,19,20,21,23,24,26,28,29,30,31,32,35,36,37,39,41,43,44,47,50,51,52,53,58,60,65,66,71,74,79,82,83,85,88,91,93,103,105,110,111,115,117,122,124,125,130,134,135,143,145,148,149,151],Their:21,Then:[13,30,31,35,42,50],There:[0,6,10,11,12,13,14,21,26,29,30,31,42,47,50],These:[4,6,11,14,26,47,50,53],USE:[9,14,15],USING:[9,13,16,20,21,42],Use:[11,13,19,31,36,46,53,56,60,105,109,117,141,148],Used:47,Uses:[6,17,46,51],Using:[11,13,30,31,50],WILL:6,WITH:[9,11,12,16,18,19,39,41,42,43,50,53],Will:[6,37],With:[6,13,17,28,31,42,52,57],Yes:31,_cache_max_entri:50,_if_:6,_must_:6,_trace:47,_udt:14,_update_interval_in_m:50,_use:14,_validity_in_m:50,a278b781fe4b2bda:35,abil:[14,31,43],abilityid:16,abl:[6,14,21,26,30,31,42],about:[4,6,19,26,29,30,31,39,42,51,53,105,121],abov:[4,6,8,11,12,13,14,21,26,29,31,32,41,42,47],absenc:12,abstracttyp:21,accept:[0,6,10,11,12,13,17,29,30,39,52,73,105],access:[6,10,21,26,29,44,46,47],accompani:6,accord:[6,31],accordingli:[6,14,31],account:[6,21,30],accru:[42,47],accumul:[6,42,47],accur:[6,31,39,121,145],accuraci:39,acheiv:50,achiev:[42,47],achil:33,ack:[4,6],acquir:19,across:[6,11,19,29,47,50,51,105,108],action:[6,13],activ:[4,6,29,41,47,53,105,145],activetask:47,actual:[4,6,13,20,23,25,31,35,42,51,145],acycl:19,add:[0,6,9,10,11,21,24,25,29,32,35,37,42,50],addamsfamili:11,added:[0,6,10,11,14,25,42],adding:[6,13,14,25,44,53],addit:[0,6,9,11,13,19,21,26,29,32,42,44,47,50,53],addition:[11,13,42],address:[6,8,17,21,26,29,32,37,47,51,53,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,97,98,99,100,101,102,103,104,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],adher:10,adjac:42,adjust:[6,39],adv:35,advanc:[6,46,50],advantag:44,advers:31,advic:[29,31],advis:[6,12,21,31],af08:13,afd:21,affect:[6,25,29,31,42,122],afford:6,after:[5,6,9,10,11,12,13,14,16,17,18,26,29,31,41,42,44,46,47,50,51,53],afterward:[26,30],afunct:14,again:[6,29,42,52,53],against:[6,11,14,29,30,31,44,52,53,117],agent:[28,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,97,98,99,100,101,102,103,104,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],agentlib:26,aggreg:[6,9,10,13,15,18,19,47,53],aid:12,aim:6,akeyspac:14,algorithm:[6,11,52],alia:[10,13,33],alias:[6,10,18],alic:19,align:23,aliv:6,all:[0,4,6,9,11,12,13,14,17,18,21,23,24,25,26,28,29,30,37,39,41,42,47,50,52,53,58,59,73,83,97,102,105,108,115,122,133,134,145,147,148],alloc:[6,31,41,44,47],allocate_tokens_for_keyspac:52,allow:[0,4,6,9,10,11,12,14,16,17,18,21,32,39,41,42,43,44,51],allowallauthent:[6,50],allowallauthor:[6,50],allowallinternodeauthent:6,almost:[4,6,14,21,42],alon:[6,23],along:[6,13,102,105],alongsid:[36,53],alphabet:23,alphanumer:[11,19],alreadi:[6,11,14,16,18,21,29,42,50,148],also:[0,4,6,10,11,12,13,14,17,18,19,21,26,29,30,31,32,42,44,47,50,52,53,83],alter:[9,10,15,17,31,39,41,42,43,50],alter_keyspace_stat:12,alter_role_stat:12,alter_table_instruct:11,alter_table_stat:12,alter_type_modif:21,alter_type_stat:[12,21],alter_user_stat:12,altern:[6,10,11,12,13,17,21,26,29,32,44,50],although:[6,29],alwai:[0,4,6,9,10,11,13,14,18,21,23,29,30,31,42,44],amend:24,amongst:11,amount:[6,11,13,21,26,29,30,31,42,43,44,47,52,53],amplif:[42,44],anaggreg:14,analogu:13,analyt:39,analyz:30,ani:[0,4,6,10,11,12,13,14,17,18,19,20,21,24,25,26,28,29,30,32,35,37,41,42,44,47,50,52,53,56,105,109,122,133],annot:23,anonym:[12,21],anoth:[6,11,14,19,21,30,42,50,53],anotherarg:14,ant:[26,29,30],anti:[6,21],anticip:11,anticompact:[42,141],antientropystag:47,antipattern:44,anymor:[24,42],anyon:23,anyth:42,anywai:6,anywher:13,apach:[2,5,6,7,14,20,23,24,25,26,28,29,30,31,34,35,42,43,47,50,54],api:[6,8,11,15,17,36,51],appear:[12,14,42,53],append:[4,21,24,44,47,53],appendic:[15,37],appendix:[12,15],appl:21,appli:[4,6,9,10,11,12,13,19,21,24,29,30,31,47,53],applic:[6,11,19,23,25,26,50],appreci:29,approach:[4,42,52],appropri:[6,11,19,21,25,28,29,50,51,52],approxim:[42,47],apt:35,arbitrari:[11,12,21],architectur:[31,37],archiv:[4,6,41],aren:13,arg:[14,105],argnam:14,argnum:14,argument:[6,11,13,14,16,17,31,32,43,53,56,57,58,59,60,65,66,71,74,79,82,83,85,88,91,93,96,103,109,110,111,115,116,117,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,141,143,144,145,147,148,149,151],arguments_declar:14,arguments_signatur:14,around:[6,19,42,44,51],arrai:[6,31],arriv:[6,29,31],artifact:[26,28],artifici:11,asap:10,asc:[9,11,13],ascend:[11,13],ascii:[9,14,17,21],asf:[26,28],ask:[5,29,30,37,50],aspect:11,assassin:105,assertionerror:23,assertrow:30,assign:[6,13,31],associ:[6,11],assum:[6,11,14,26,50,51],assumpt:50,astyanax:33,async:[6,50],asynchron:[6,16,31,44],asynchroni:47,atabl:14,atom:[11,13,20,24],atomiclong:47,attach:29,attemp:47,attempt:[0,6,11,16,18,19,21,31,42,47,50,53],attent:[23,29],attribut:42,auth:6,authent:[10,46,53],authenticatedus:6,author:[9,19,21,46],authorizationproxi:50,auto:[6,31],auto_bootstrap:52,autocompact:[42,66,74,105],autogener:55,autom:[8,23],automat:[6,13,14,16,26,30,31,35,42,50,52],avail:[0,6,8,11,14,19,26,29,30,35,41,50,51,53,58,83,115,122,148],availabil:6,averag:[6,14,42,47],average_s:11,averagefin:14,averagest:14,avg_bucket_s:42,avoid:[6,11,12,23,25,29,39,42,44,50,51,53],awai:[26,52,53],awar:[0,11,29,39,43,121],azur:44,b124:13,b70de1d0:13,back:[6,42,47,52],backend:6,background:[31,35,42,50],backlog:6,backpressur:6,backpressurestrategi:6,backup:[6,37,42,46,52,53,67,75,105,136],backward:[6,10,11,15,19,21],bad:[6,14,31,51],balanc:52,banana:21,band:21,bar:[12,23],bardet:21,bare:6,base:[0,4,6,10,11,13,14,18,19,21,24,29,30,31,42,44,47,50,52],bash:31,basi:[6,31,43],basic:[11,42,44],bat:28,batch:[4,6,9,15,30,37,53],batch_remov:47,batch_stat:12,batch_stor:47,batchlog:[13,47,105,118],be34:13,beatl:21,beca:53,becaus:[4,6,13,14,35,42,43,50],becom:[4,6,11,14,19,29,42,47,50,52],been:[0,4,6,10,13,14,15,19,21,25,29,42,44,50,122],befor:[0,4,6,10,11,13,14,16,20,21,26,27,30,33,42,50,51,53,134],begin:[9,12,13,30,50,53],beginn:29,begintoken:53,behavior:[0,6,9,10,14,17,21,23,25,39,42,52],behind:[6,23,30,31,42],being:[4,6,11,13,17,21,25,30,31,39,42,47,52],belong:[11,13,14,58,105],below:[6,11,12,13,17,19,21,29,35,42,53],benchmark:44,benefici:42,benefit:[6,39,42,44,46],besid:6,best:[6,30,42,50,51],best_effort:6,better:[6,23,29,42,44],between:[0,4,6,9,10,13,15,29,31,39,42,47,50,52,133],beyond:[6,53,149],big:[42,60],bigger:[11,42],biggest:14,bigint:[9,14,17,21],bigintasblob:14,bin:[26,35,36,53],binari:[14,34,68,76,105,137],bind:[6,10,12,14,31],bind_mark:[12,13,18,21],biolog:11,birth:13,birth_year:13,bit:[6,14,17,21,29,31,43,44],bite:31,bitrot:11,bitstr:9,black:6,blank:[6,23,31],bleed:26,blindli:31,blob:[9,10,12,17,21,37,43],blobasbigint:14,blobastyp:14,block:[4,6,11,24,32,42,44,47,50],blockedonalloc:6,blog:[6,11,13],blog_til:13,blog_titl:13,bloom:[4,11,37,44,46],bloom_filter_fp_ch:[11,39],blunt:50,bnf:12,bob:[13,19],bodi:[11,12],boilerpl:27,boolstyl:53,boost:6,boot:31,bootstrap:[0,6,37,43,46,47,50,105,109],born:13,both:[0,6,11,13,14,18,21,24,25,29,31,32,39,42,43,44,47,50,52,53,105,130],bottleneck:6,bottom:31,bound:[6,11,12,21,44,50],box:[6,50,51],brace:23,bracket:12,braket:12,branch:[24,25,26,30],branchnam:29,breakpoint:26,breed:30,bring:6,brk:31,broadcast:6,broadcast_address:51,broken:[42,47],brows:6,browser:53,btm:28,bucket:42,bucket_high:42,bucket_low:42,buffer:[4,6,47],bufferpool:46,bug:[10,24,30,31,37],build:[8,27,28,30,37,47,105,151],built:[26,47],bulk:[37,46],bump:10,bunch:23,burn:41,button:31,bytebuff:14,byteorderedpartition:[6,14],bytescompact:47,bytestyp:9,c73de1d3:13,cach:[6,31,32,44,46,51,98,99,100,105,123,124],cachecleanupexecutor:47,cachenam:47,calcul:[6,39,41,42,47,51],call:[6,9,11,12,13,14,19,23,32,37,42,44,47,52],callback:47,caller:23,can:[0,4,5,6,8,9,10,11,12,13,14,16,17,18,19,20,21,23,24,25,26,29,30,32,35,36,37,39,41,42,43,44,47,50,51,52,53,56,58,59,60,65,66,71,74,79,82,83,85,88,91,93,96,103,109,110,111,115,116,117,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,141,143,144,145,147,148,149,151],cancel:10,candid:42,cannot:[6,9,11,13,14,17,18,19,21,42,50,56,105],cap:[12,86,89,92,105,126,129,131],capabl:[6,31,53],capac:[6,41,47,51,105,123,145],captur:[6,37,46],cardin:145,care:[6,42,117],carlo:19,carri:[23,117],cascontent:[93,132],casread:47,cassablanca:21,cassafort:33,cassandra:[0,2,4,5,8,10,11,13,14,19,20,21,23,24,28,29,33,34,36,39,42,43,44,47,51,52,53,105,122,142,150],cassandra_hom:[4,6,41,50],cassandraauthor:[6,50],cassandradaemon:[26,35],cassandralogin:50,cassandrarolemanag:[6,50],casser:33,cassi:33,cast:[10,13,18],caswrit:47,cat:21,categor:47,categori:[11,12,13,14],caught:[25,47],caus:[4,6,18,31,42,50],caution:6,caveat:50,cbc:6,ccm:[25,30],ccmlib:30,cdc:[6,11],cdc_enabl:41,cdc_free_space_check_interval_m:41,cdc_free_space_in_mb:41,cdc_raw:[6,41],cdc_raw_directori:41,cdccompactor:6,cell:[6,9,21,83,149],center:[6,11,21,31,51,52,71,79,105,117],central:[26,50,53],centric:19,certain:[4,6,9,11,19,30,42,50],certainli:14,certif:50,cfname:[91,145],cfs:23,chain:19,chanc:39,chang:[6,11,12,15,19,21,24,26,27,34,35,37,43,46,47,50,130],channel:[5,8,29],charact:[11,12,13,17,19,21,23,53],chat:8,cheap:6,check:[0,6,11,13,23,25,26,28,29,30,31,39,41,42,47,50,105,149],checklist:[27,29,37],checkout:[26,29],checksum:[11,43,105,149],cherri:24,chess:13,child:53,chmod:50,choic:[6,11,37,42,46],choos:[0,6,11,27,33,44,47],chosen:[0,6,11,14],chown:50,christoph:21,chrome:53,chunk:[4,6,31,43,53],chunk_length_in_kb:[11,43],chunk_length_kb:6,chunk_lenth_in_kb:11,chunkcach:47,chunksiz:53,churn:6,cipher:[6,50],cipher_suit:6,circular:19,citi:21,clash:12,class_nam:[4,6],classpath:[6,14,21,47],claus:[10,11,14,16,17,18,19,23],clean:[6,23,47,58,105],cleanli:29,cleanup:[31,42,46,47,83,105,141],clear:[25,29],clearsnapshot:105,click:[13,26,29,30],client:[0,6,8,10,11,13,17,19,21,25,31,32,34,37,44,46,53],client_encryption_opt:50,clientrequest:47,clock:6,clockr:6,clojur:34,clone:[26,31,53],close:[6,15,50],closer:[39,145],cloud:46,cluster:[0,4,6,9,10,13,14,20,21,25,30,32,36,37,42,44,47,50,51,52,53,64,81,95,105,135],cluster_nam:[32,36],clustering_column:11,clustering_ord:11,cmsparallelremarken:26,coalesc:6,coalescingstrategi:6,code:[6,10,12,14,20,24,25,26,27,28,30,37,43,47],codestyl:23,col:14,cold:6,collat:6,collect:[6,10,11,12,13,14,15,17,44,46,47,83],collection_liter:12,collection_typ:21,color:[21,53],column1:9,column:[6,9,10,12,13,14,15,16,17,18,21,43,53,91,105,122,134,145],column_definit:11,column_nam:[11,13,16],columnfamili:[4,6,9,23,42],com:[6,11,14,23,24,50],combin:[4,6,10,41,42],come:[6,9,50],comingl:42,comma:[6,11,12,13,32,50,52,53,109,145],command:[0,6,24,30,31,32,35,36,43,46,54,56,57,58,59,60,65,66,71,74,79,82,83,85,88,91,93,96,103,105,109,110,111,115,116,117,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,141,143,144,145,147,148,149,151],comment:[4,6,11,15,18,23,25,50],commit:[4,6,8,11,27,29,37,47],commitlog:[2,6,31,32,44,46],commitlog_archiv:[4,6],commitlog_compress:4,commitlog_directori:[4,32,44],commitlog_segment_size_in_mb:[4,31],commitlog_sync:4,commitlog_sync_batch_window_in_m:4,commitlog_sync_period_in_m:4,commitlog_total_space_in_mb:4,commitlogread:41,commitlogreadhandl:41,commitlogreplay:41,commitlogseg:[6,46,47],committ:[24,29,30],common:[0,14,15,23,25,29,46,53],common_nam:11,commonli:105,commun:[6,8,25,26,29,31,32,36,50],commut:31,compact:[4,6,15,31,37,39,43,44,46,58,61,62,83,85,86,105,115,122,125,126,141,148],compaction_:141,compaction_window_s:42,compaction_window_unit:42,compactionexecutor:47,compactionhistori:[42,105],compactionid:141,compactionparamet:42,compactionparametersjson:42,compactionstat:[42,105],compactionstrategi:46,compactor:[87,105,127],compar:[6,29,42,47],compat:[6,9,10,11,13,15,19,25,29],compatilibi:21,compet:6,compil:[23,26,53],complain:26,complet:[6,13,14,29,31,42,47,50,52,53,105,116],completedtask:47,complex:[4,6,9,14,21,29],complexarg:14,complianc:[27,37],compliant:[6,14,50],complic:29,compon:[4,11,25,39,50],compos:[11,13,21],composit:11,compound:17,comprehens:25,compress:[4,6,30,37,42,44,46],compressioninfo:4,compressor:[4,6,11],compris:[4,11,43],compromis:50,comput:[6,14],concaten:14,concept:[15,19,42],concern:[13,14],concret:[12,21],concurr:[6,44,87,105,117,127],concurrent_writ:4,concurrentmarksweep:44,condens:13,condit:[6,10,12,13,19,21,23,24,42,47,50,53],conditionnotmet:47,conf:[6,31,32,35,47,50,53],config:[47,50,53],configur:[0,4,11,21,26,30,31,34,35,37,46,47,50,51,53,105,130],confirm:[6,8,25,26],conflict:[13,21,24],conform:[18,25,28],confus:[10,12,31],conjunct:53,connect:[6,11,19,21,26,36,37,47,50,51,53,63,104,105],connectednativecli:47,connectedthriftcli:47,connector:[31,33,50],consecut:32,consequ:[11,13,21,44],conserv:6,consid:[0,6,13,21,29,32,39,42,44],consider:[13,21],consist:[2,6,11,12,13,14,25,28,50,52],consol:[26,32,53],constant:[10,11,15,17,21],constantli:[6,42],construct:12,constructor:[6,23],consum:[6,30,39,41,47],consumpt:41,contact:[6,11,31,37],contain:[0,6,8,9,10,11,12,13,15,16,18,19,21,26,28,29,41,42,43,50,53,134],contend:[6,47],content:[4,6,11,12,13,37,42,53],contentionhistogram:47,context:[6,9,19,21,29,31,50],contigu:13,continu:[0,6,9,23,26,30,42,50,51],contrarili:12,contrast:[30,50],contribut:[24,27,30,37],contributor:[24,29,30,35],control:[0,6,10,11,13,15,25,32,35,42,50,51,53],conveni:[9,12,14,17,30,52],convent:[6,11,14,15,24,27,29,30,50,51],convers:10,convert:[10,13,14,42],coordin:[0,6,11,13,14,21,31,47],cop:23,copi:[0,31,42],copyright:28,core:[6,14,44],correct:[10,25,35,42,43,105,115],correctli:[6,11,31,42,50],correl:[6,10,51],correspond:[6,9,11,13,14,18,21,29,30,31,41,51],corrupt:[6,11,42,43,44,122],cost:[6,13,21,43],could:[6,12,21,25,29,42,53],couldn:35,count:[6,9,13,21,31,42,47,52],counter:[6,9,14,44,47,98,105,122,123,124],counter_mut:47,countercach:47,countermutationstag:47,counterwrit:[93,132],countri:[13,21],country_cod:21,coupl:[0,6],cours:[6,13],cover:[25,29,30,31,34,42,47],cpu:[6,11,41,43,46],cqerl:33,cql3:[11,14,25,30,53],cql:[6,10,11,12,13,14,16,17,19,21,28,30,33,36,37,42,46,50,54],cql_type:[11,12,13,14,19,21],cqlc:33,cqldefinit:14,cqlsh:[31,34,35,37,50,54],cqltester:[25,30],crash:44,crc32:4,crc:4,crc_check_chanc:[11,43],creat:[4,6,9,10,12,13,15,17,26,27,30,31,41,42,43,50,52,53,60],create_aggregate_stat:12,create_function_stat:12,create_index_stat:12,create_keyspace_stat:12,create_materialized_view_stat:12,create_role_stat:12,create_table_stat:12,create_trigger_stat:12,create_type_stat:[12,21],create_user_stat:12,createkeystor:6,createt:30,creation:[6,10,11,13,14,18,21],creativ:28,creator:19,credenti:[6,50],critic:[25,29,50],cross:[6,31,51],crossnodedroppedlat:47,cryptographi:6,css:28,csv:53,cuddli:21,curl:[24,35],current:[6,9,11,13,14,19,21,26,28,29,35,42,47,52,53,78,94,105,116,139,148],currentlyblockedtask:47,custom:[6,9,10,11,14,15,16,19,29,51,53],custom_option1:19,custom_option2:19,custom_typ:[14,21],cute:21,cvh:25,cycl:[6,41],daemon:[26,105,142],dai:[17,21,42],danger:6,dash:12,data:[0,4,6,10,12,14,15,16,18,25,32,35,37,39,43,44,46,47,50,51,53,56,60,71,79,83,105,109,117,134,149],data_file_directori:[32,44],data_read:19,data_writ:19,databas:[12,13,15,20,42,44,50],datacent:[0,6,51,71,79,89,105,117,129],datacenter1:6,dataset:6,datastax:[6,11,14,33],datatyp:14,date:[9,10,14,15,17,122],dateof:[10,14],datestamp:17,datetieredcompactionstrategi:[11,42],daylight:21,db_user:50,dba:50,dc1:[6,11,50],dc2:[6,11,50],dcassandra:[42,47,50,52],dclocal_read_repair_ch:[0,11,42],dcom:50,dcpar:117,ddl:[11,53],ddl_statement:12,dead:[6,46,56,105],dead_node_ip:52,deb:35,debian:[31,34],debug:[32,53],decid:[9,42,51],decim:[9,14,17,21,53],decimalsep:53,declar:[11,12,14,21],decod:[17,21],decommiss:[6,52,105],decompress:43,decreas:[6,42],decrement:[13,21],decrypt:6,dedic:[4,6],deem:6,deeper:29,default_time_to_l:[10,11,13],default_weight:6,defend:31,defin:[0,6,9,10,11,12,13,15,16,17,18,19,20,26,42,47,50,51,52,53,60,105],definit:[9,13,14,15,18,21,37,39],deflat:[4,6],deflatecompressor:[11,43],degrad:6,degre:28,delai:4,delet:[4,6,9,10,11,12,15,17,19,21,29,37,53,83,105,147],delete_stat:[12,13],delimit:6,deliv:[0,6],deliveri:[6,105,106,120,128],demand:50,deni:31,denorm:21,denot:12,dens:39,depend:[4,6,11,12,13,14,21,25,26,29,30,42],deploi:[31,32],deploy:[6,50,51],deprec:[6,10,11,14,15,31,42],depth:6,desc:[9,11,13,53],descend:[11,13],describ:[2,6,7,9,10,11,12,13,14,15,17,19,21,25,26,29,39,50,54,105],describeclust:105,descript:[6,10,11,14,21,47,53],descriptor:47,design:[14,41,42,44],desir:[16,21,31],destin:[41,53],detail:[5,6,10,11,12,13,14,21,28,31,46,50,53],detect:[2,6,11,24,31,50],detector:[81,105],determin:[0,6,13,19,39,43,51],determinist:31,dev:[6,8,11,31],develop:[5,8,26,29,30,37,44],devic:4,dfb660d92ad8:53,dht:6,dictat:[6,50],did:[25,47],die:6,dies:37,diff:[15,23],differ:[0,6,11,12,13,14,15,19,21,24,26,29,30,31,32,35,42,43,44,47,52],difficult:[6,30],difficulti:21,digest:4,digit:[17,21,31],diminish:21,direct:[6,11,17,19,29,47],directli:[13,18,19,26,28,42],director:13,directori:[4,6,20,26,30,31,34,35,36,41,44,46,53],dirti:[4,6],disabl:[6,11,14,42,43,50,51,53,66,67,68,69,70,71,72,79,105,124,126,129,131,132,133],disable_stcs_in_l0:42,disableautocompact:[42,105],disablebackup:105,disablebinari:105,disablegossip:105,disablehandoff:105,disablehintsfordc:105,disablesnapshot:122,disablethrift:105,disallow:6,discard:[6,41],disconnect:42,discourag:[11,21,29],discov:31,discuss:[8,21,29],disk:[4,6,11,32,37,39,41,42,43,46,47,102,105,115],displai:[11,53,57,62,96,97,104,105,144],disrupt:[31,50],distinct:[0,9,10,13],distinguish:[9,14],distribut:[6,30,31,42,47,50,52],divid:12,djava:[26,31,50],dml:20,dml_statement:12,dmx4jaddress:47,dmx4jport:47,dns:31,dobar:23,doc:[6,25,41,50],document:[5,12,14,15,17,25,28,29,36,50,53],doe:[6,11,13,14,16,17,18,19,21,24,25,29,37,39,41,42,43,50,51,52],doesn:[6,14,21,23,30,31],dofoo:23,doing:[6,13,30,31,42,52],dollar:[10,12],domain:[50,121,135],don:[5,13,23,24,25,26,28,29,31,32,42,52],done:[6,11,13,21,29,30,32,36,42],doubl:[6,9,10,11,12,14,17,21,26,47,51],down:[6,19,42,47,51,52,69,105],download:[6,26,35,47],downward:19,drain:[4,105],drive:[6,42,44],driver:[6,12,14,30,34,37,53],drop:[6,10,15,37,42,47],drop_aggregate_stat:12,drop_function_stat:12,drop_index_stat:12,drop_keyspace_stat:12,drop_materialized_view_stat:12,drop_role_stat:12,drop_table_stat:12,drop_trigger_stat:12,drop_type_stat:[12,21],drop_user_stat:12,droppabl:[6,42],droppedmessag:46,droppedmetr:47,dropwizard:47,dt_socket:26,dtest:[25,27],due:[9,11,13,21,31,35,47,52],dump:53,duplic:25,durabl:4,durable_writ:11,durat:[6,10,15,19,42,47,145],dure:[6,11,14,20,29,30,31,42,43,47,50,52,53,122],dying:31,dynam:[6,46,50],dynamic_snitch:51,dynamic_snitch_badness_threshold:51,dynamic_snitch_reset_interval_in_m:51,dynamic_snitch_update_interval_in_m:51,dynamo:[2,37],each:[0,4,6,10,11,12,13,14,17,18,19,21,24,29,36,37,42,43,44,47,50,51,52,53,105,124,149],each_quorum:0,earli:[6,12,29],earlier:15,easi:[9,29],easier:[0,29],easiest:31,ec2:[6,44,51],ec2multiregionsnitch:[6,51],ec2snitch:[6,51],ecc:44,echo:35,eclips:[23,27,30],ecosystem:25,edg:[25,26],edit:[26,32,35,47,50],effect:[6,11,21,29,31,39,43,50,69,105],effectiv:47,effici:[6,11,42,51,52],effort:6,either:[4,6,8,12,13,14,16,21,23,24,26,29,31,35,36,41,42,47,50,147],elaps:[42,47],element:[21,53],elig:6,els:[11,13,23,29],email:[8,16,21,37],embed:30,emploi:39,empti:[6,9,10,11,12,53,105,130],emptytyp:9,enabl:[6,11,14,17,19,30,31,42,43,51,52,53,74,75,79,105,133],enable_user_defined_funct:14,enableautocompact:[42,105],enablebackup:105,enablebinari:105,enablegossip:105,enablehandoff:105,enablehintsfordc:105,enablethrift:105,encapsul:[23,47],enclos:[9,10,12,14,19],enclosur:12,encod:[15,21,25,53],encount:[5,13,35,47],encourag:[6,11],encrypt:[6,46],encryption_opt:6,end:[21,29,31,42,50,53,60,88,105,117],end_token:[60,117],end_token_1:109,end_token_2:109,end_token_n:109,endpoint:[47,51,56,88,105,147],endpoint_snitch:51,endtoken:53,enforc:[17,28,50],engin:[2,11,29,37,47],enhanc:44,enough:[0,6,21,31,32,42,51,53],enqueu:6,ensur:[6,11,13,18,20,31,43,50],entail:31,enter:[31,53],entir:[0,4,6,14,21,31,39,42,50,52,53],entri:[4,6,9,13,16,29,37,47,50,53],entropi:6,entry_titl:13,enumer:19,env:[31,32,47,50],environ:[0,5,6,26,31,34,44],ephemer:44,epoch:21,equal:[0,6,10,11,13,21,23,42],equival:[10,11,12,13,14,19,24,42],eras:11,erlang:34,erlcass:33,err:53,errfil:53,error:[6,11,12,14,16,18,19,21,23,25,26,35,37,53],escap:[12,17],especi:[29,31,42,53],essenti:[0,6,14,31,53],establish:[6,19,51],estim:47,etc:[6,18,21,23,25,31,32,35,42,47,50],eth0:6,eth1:6,ev1:21,even:[0,6,10,12,13,14,17,21,29,37,42,50,53,122,148],evenli:6,event:[4,13,21,42,53,117],event_typ:13,eventu:[4,13],ever:[23,30,31,44],everi:[4,6,11,13,14,18,19,20,21,36,39,42,44,53],everyth:[4,12,23,26,31],evict:47,evil:[6,14],exact:[11,12,14,43],exactli:[11,14,18,50],exampl:[0,6,11,13,14,17,19,21,30,35,36,42,50,51,53],exaust:6,excalibur:11,exce:[4,6,17,23],exceed:[6,44],excel:11,excelsior:11,except:[0,13,14,17,25,27,28,29,30,31,47],excess:39,exchang:[6,31],exclus:[21,30],execut:[6,9,11,12,13,14,19,26,30,36,42,47,50,53],exhaust:6,exhibit:13,exist:[6,9,10,11,12,13,14,16,17,18,19,20,21,25,26,30,37,39,42,43,51,52],expect:[6,10,12,21,23,25,29,42,50],expens:[6,39,51],experi:[6,42],experienc:6,expir:[6,10,11,13,21,46,50,122],expiri:42,explain:[23,25,29,35],explicit:10,explicitli:[4,6,10,13,17,21,23,42,51],explor:26,expon:10,exponenti:47,expos:[6,9,50],express:[0,6,10,12,51],expung:31,extend:[21,29,30,149],extens:[6,11,50],extern:[47,52],extra:[0,4,6,11,42],extract:[23,35],extrem:[6,13],fact:[21,30,31],factor:[0,6,11,37,43,50],fail:[6,13,14,21,28,37,42,53,117],failur:[2,6,29,37,42,44,47,51,81,105],failuredetector:105,fairli:[6,41,50],fake:14,fall:6,fallback:[6,51],fals:[6,11,12,17,19,21,39,41,42,43,50,52,53,122],famili:[6,44,91,105,134,145],fanout_s:42,fast:[6,39,42],faster:[6,29,43,44,105,124],fastest:[6,24,51],fatal:6,fault:31,fav:[16,21],fax:21,fct:14,fct_using_udt:14,fear:31,feasibl:21,featur:[25,26,29,50],fed:6,feedback:29,feel:24,fetch:[6,11,53],few:[28,42,44],fewer:[6,29],fffffffff:[17,21],field:[10,13,14,17,21,23,39],field_definit:21,field_nam:13,fifteen:47,fifteenminutecachehitr:47,figur:42,file:[4,7,11,26,27,28,29,30,31,32,34,37,39,42,44,47,50,53,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,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],filenam:[11,53,91,105],filesystem:50,fill:[41,42],fillion:13,filter:[4,6,9,11,18,37,44,46],finalfunc:[9,14],find:[6,26,30,35,39,42,52,88],fine:[4,6,29,50],finer:[4,6],finish:[26,29,105,118],fip:[6,50],fire:20,firefox:53,firewal:[6,31,32,51],first:[4,5,6,11,13,14,21,29,31,34,42,44,50,53,117,122],firstnam:13,fit:[6,42,47],five:47,fiveminutecachehitr:47,fix:[6,10,12,24,31,42,44],flag:[6,13,24,25,29,41,47,52],flexibl:50,flight:[6,50],flip:11,floor:6,flow:[6,19,25],fluent:33,flush:[4,6,41,42,44,73,105,134],fname:14,focu:29,folder:[26,141],follow:[0,5,6,8,9,10,11,12,13,14,17,18,19,21,23,24,25,26,28,29,30,31,32,35,37,41,42,43,47,50,51,53,58,60,66,74,82,83,110,117,122,132,148,149],font:12,foo:[11,12,41],forc:[4,6,11,13,53,60,105,116],forcefulli:[56,105],foreground:[32,35],forev:42,forget:5,fork:29,form:[6,10,11,12,14,19,62,104,144],formal:12,format:[6,10,17,21,24,25,27,29,47,53,61,91,109,144,146],former:[6,47],forward:[6,11],found:[5,12,14,15,29,30,32,36,50,53,141],four:13,fqcn:30,fraction:6,frame:6,framework:[25,30],franc:[13,21],free:[6,11,21,24,26],freed:4,freenod:8,frequenc:[6,41],frequent:[6,30,37,42,50],fresh:52,friendli:[6,21,30],from:[0,4,6,9,11,12,13,14,15,17,18,19,21,24,27,29,30,34,36,37,39,41,42,43,44,47,50,51,52,55,56,58,59,60,65,66,71,74,79,82,83,85,88,91,93,96,103,105,109,110,111,113,115,116,117,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,141,143,144,145,147,148,149,151],fromjson:15,froom:21,frozen:[9,10,11,13,14,21],fruit:[21,29],fsync:[4,6,47],full:[6,9,11,13,16,19,29,35,36,42,43,50,53,105,110,117],fulli:[6,9,11,12,14,46,50],function_cal:12,function_nam:[13,14,19],fundament:17,further:[5,6,11,18,21,42,46,50],furthermor:[10,13,50],futur:[6,9,10,11,21,29,78,105,139],g1gc:44,game:[14,21],garbag:[11,44,46,47,83],garbage_collect:141,garbagecollect:105,gather:42,gaug:47,gaurante:0,gc_grace_second:11,gc_type:47,gce:[31,44],gcg:6,gcstat:105,gener:[0,2,4,6,8,11,12,13,14,17,21,25,26,27,29,31,44,50,53,93,122,132],genuin:23,get:[4,6,8,24,26,29,31,35,37,39,42,87,90,105],getcompactionthreshold:105,getcompactionthroughput:105,getconcurrentcompactor:105,getendpoint:105,getint:14,getinterdcstreamthroughput:105,getlocalhost:[6,31],getlogginglevel:105,getlong:14,getpartition:23,getsstabl:105,getstr:14,getstreamthroughput:105,gettempsstablepath:23,getter:[19,23],gettimeout:105,gettraceprob:105,gib:[62,104,144],gist:23,git:[5,24,26,29],github:[23,24,29,30],give:[18,19,21,29,30,37,53],given:[0,6,11,12,13,14,16,21,29,39,42,50,52,53,59,60,65,66,74,85,93,105,110,125,130,133,143,145],global:[6,53,105,123],gmt:21,goal:[6,42],gocassa:33,gocql:33,going:[6,29,42],gone:6,good:[6,23,29,30,31,53],googl:[23,53],gori:31,gossip:[2,6,31,47,51,69,77,95,105,138],gossipinfo:105,gossipingpropertyfilesnitch:[6,51],gossipstag:47,got:6,gp2:44,gpg:35,grace:46,grai:21,grain:50,grammar:[11,12],grant:[6,9,50],grant_permission_stat:12,grant_role_stat:12,granular:[4,6,83],graph:19,gravesit:11,great:[29,42],greater:[0,6,21,31,51,127],greatli:6,green:21,group:[6,10,11,19,42,47,50,51],group_by_claus:13,grow:21,guarante:[0,2,11,13,14,21,29,37,39,42,52,53],guid:[6,26],guidanc:28,guidelin:[10,25,44],had:[9,10,42],half:[4,6,24,31],hand:[6,13,44],handl:[6,14,25,27,29,31,41,44,47,50],handoff:[6,47,52,70,105,128],hang:29,happen:[6,13,23,24,29,37,42,47,51],happi:29,happili:44,hard:[6,14,42,44],harder:6,hardwar:[6,37,46],has:[0,4,6,9,10,11,12,13,14,18,19,21,23,29,31,42,44,47,50,51,53],hash:[4,6,42],hashcod:23,haskel:34,have:[0,5,6,9,10,11,12,13,14,15,18,19,21,23,24,25,26,28,29,30,31,32,35,39,42,43,44,47,50,51,122],haven:29,hayt:33,hdd:[4,6,44],head:29,header:[26,28,53],headroom:6,heap:[4,6,26,32,37,39,43,44,47],heap_buff:6,heavi:6,heavili:44,held:[6,44,105,108],help:[5,6,10,29,30,36,55,57,105],helper:30,henc:[5,6,11,21],here:[6,24,30,31,33,42,47,50],hex:[12,17,91],hexadecim:[10,12,91],hibern:52,hidden:52,hide:[23,25],hierarch:19,hierarchi:19,high:[0,6,31,42,44],higher:[0,19,29,39,42,47,52],highest:42,highli:[29,31,44,50],hint:[0,6,11,12,31,32,37,46,47,52,70,71,78,79,105,106,120,128,139,147],hintedhandoff:[6,46],hintedhandoffmanag:47,hints_creat:47,hints_directori:32,hints_not_stor:47,hintsdispatch:47,histogram:[42,47,105,107,143],histor:29,histori:[23,61,105],hit:[6,42,47],hitrat:47,hmtl:28,hoc:30,hold:[0,6,10,13,19,31,42,53],home:[21,53],hope:42,hopefulli:29,host:[6,32,37,47,51,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,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],hostnam:[6,31,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,97,98,99,100,101,102,103,104,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],hot:[6,47],hotspot:11,hotspotdiagnost:50,hottest:6,hour:[6,21,29,42],how:[0,5,6,7,8,11,12,21,25,26,27,28,29,30,34,36,37,42,43,47,51,53],howev:[6,9,10,11,12,13,15,17,18,21,29,30,31,32,35,39,43,44,50,53],hsha:6,html:[6,28],http:[6,23,24,26,28,35,47],httpadaptor:47,hub:31,human:[11,62,104,144],hypothet:24,iauthent:6,iauthor:6,icompressor:43,idea:[6,14,27,29,30,31,42,53],ideal:[6,30,42,50],idempot:[13,21],idemptot:21,ident:0,identifi:[6,9,10,11,13,14,15,16,19,20,21],idiomat:8,idl:6,ieee:[17,21],iendpointsnitch:[6,51],ignor:[0,6,10,14,21,23,53,117,144],iinternodeauthent:6,illeg:14,illustr:19,imag:21,imagin:42,iml:28,immedi:[4,6,11,21,29,39,43,58,105],immut:[4,31,43,44],impact:[6,11,25,42,46,50],implement:[6,10,13,14,18,19,23,30,31,41,43,50,51],implementor:6,impli:[11,12,21],implic:[0,50],implicitli:14,import_:53,imposs:42,improv:[0,6,11,21,29,30,39,42,44,51,52,53],inact:31,includ:[4,6,10,11,12,13,18,19,21,23,29,41,42,44,47,50,53,148],inclus:29,incom:6,incomingbyt:47,incompat:[6,10],incomplet:25,incompli:28,inconsist:[0,31],incorrect:[28,31],increas:[4,6,11,31,39,42,43,44,47,51,52,117],increment:[6,10,13,21,29,42,67,75,105,122,136],incur:[13,21,47],indent:23,independ:[11,42,44,50],index:[4,6,9,10,11,12,13,15,21,37,42,46,53,105,110],index_build:141,index_identifi:16,index_nam:16,index_summari:141,indexclass:16,indexedentrys:47,indexinfocount:47,indexinfoget:47,indexnam:110,indic:[5,6,12,13,23,29,31],indirectli:13,individu:[6,10,14,21,29,30,44,50],induc:13,inequ:[10,13],inet:[9,11,14,17,21],inetaddress:[6,31],inexpens:44,infin:[9,10,12],influenc:11,info:[6,32,47,65,105],inform:[4,6,12,13,21,28,36,50,51,52,53,57,81,95,96,97,104,105,121,135],ingest:6,ingestr:53,inher:[11,21],inherit:19,init:47,initcond:[9,14],initi:[6,14,23,25,41,47,50,53,105,130],initial_token:52,input:[9,10,14,17,21,25,53],inputd:21,inreleas:35,insensit:[11,12],insert:[6,9,10,11,12,14,15,16,19,21,31,34,37,44,53],insert_stat:[12,13],insid:[6,11,12,13,21,23,53],inspect:[6,26,53],instabl:6,instal:[6,20,31,34,37,53],instanc:[6,10,11,12,13,14,16,18,19,20,21,26,30,31,41,42,44,47],instantan:47,instanti:10,instantli:6,instead:[10,11,13,18,21,23,31,42,121,135],instruct:[6,8,11,24,26,37],instrument:50,intasblob:13,integ:[0,10,11,12,13,17,21,47],integr:[27,30,37],intellij:[23,27],intend:[25,50],intens:[6,30,31],intent:25,inter:[6,89,105,129],interact:[30,36,53],interest:[0,42,50],interfac:[6,10,14,23,31,32,43,50],intern:[6,9,11,13,18,21,25,31,44,47],internaldroppedlat:47,internalresponsestag:47,internet:6,internod:[6,31],internode_encrypt:[6,50],interpret:[10,21,53],interrupt:31,interv:[6,9,47],intra:[6,47,51],intrins:21,introduc:[6,10,17,29,52],introduct:[10,19,30],intvalu:14,invalid:[6,13,19,25,50,98,99,100,105],invalidatecountercach:105,invalidatekeycach:105,invalidaterowcach:105,invertedindex:20,investig:6,invoc:14,invok:[24,35,50],involv:[6,13,42,43,50],ioerror:23,ip1:6,ip2:6,ip3:6,ip_address:56,ipv4:[6,17,21,31],ipv6:[6,17,21],irc:[5,29,37],irolemanag:6,irrevers:[11,21],isn:[0,18,23,29,31],iso:21,isol:[6,11,13],issu:[0,6,19,24,29,30,31,39,42,43,117],item:[12,21,25,26],iter:[0,6],its:[4,6,11,12,13,14,21,26,31,42,47,50,51,52],itself:[6,11,16,31,35],iuk:117,iv_length:6,jaa:50,jacki:24,jamm:26,januari:21,jar:[14,23,26,47],java7:50,java:[6,14,20,21,23,26,28,29,34,35,37,41,42,44,47,50],javaag:26,javadoc:[23,25],javas:6,javascript:[6,14],javax:50,jbod:44,jce8:6,jce:6,jcek:6,jconsol:[37,42,50],jdk:6,jdwp:26,jenkin:[26,30],jetbrain:26,jflex:28,jira:[5,6,25,29,30,41],jks:28,jkskeyprovid:6,jmc:[42,50],jmx:[6,19,37,46,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,97,98,99,100,101,102,103,104,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],jmx_password:50,jmx_user:50,jmxremot:50,job:[29,58,83,115,117,122,148],job_thread:117,john:[13,21],join:[6,8,13,37,42,50,52,105],joss:13,jpg:21,jsmith:21,json:[9,10,13,15,37,42,43,61,144,146],json_claus:13,jsr:[6,14],jsse:6,jsserefguid:6,judgement:23,junit:[23,26,30],jurisdict:6,just:[6,14,19,26,29,30,31,42,50],jvm:[6,20,26,31,32,46,50,52],jvm_extra_opt:26,jvm_opt:[32,50],jvmstabilityinspector:25,keep:[6,8,11,23,29,31,42,47],keepal:[6,31],kei:[4,6,9,10,13,14,17,21,30,31,35,41,42,43,44,50,58,88,91,99,105,108,123,124],kept:[4,6,42,47],kernel:[6,31],key_alia:6,key_password:6,key_provid:6,keycach:47,keyserv:35,keyspac:[0,6,9,10,12,14,15,16,19,21,37,39,42,43,46,50,52,53,58,59,60,65,66,74,82,83,85,88,91,105,108,109,110,111,115,117,121,122,125,134,135,143,144,145,148,149,151],keyspace1:[6,19],keyspace2:6,keyspace_nam:[11,14,19,21,42],keystor:[6,50],keystore_password:6,keystorepassword:50,keyword:[10,11,13,14,15,16,17,21],kib:[62,104,144],kick:[105,118],kill:[6,35],kilobyt:43,kind:[11,12,21,29,41,42],kitten:21,know:[6,13,21,23,42],known:[19,21,33,36,39,42],ks_owner:50,ks_user:50,ktlist:134,kundera:33,label:[21,29],lag:47,land:43,landlin:21,lang:[37,47,50],languag:[6,9,10,12,14,20,21,33,36,37,53],larg:[6,11,13,14,21,30,37,42,44,47,53],larger:[6,30,31,42,43,44],largest:6,last:[6,12,13,14,15,29,42,47,56,105],lastli:[13,21],lastnam:13,latenc:[0,6,31,47,51],later:[0,9,11,21,23,29,31],latest:[0,29,35,42,53],latter:12,layer:44,layout:11,lazi:11,lazili:11,lead:[6,10,21,42],learn:[6,30,31,53],least:[0,4,6,11,12,13,18,31,42,44],leav:[6,12,13,23,30,31,53],left:[6,9,17,42],legaci:[6,19],legal:[10,28],length:[4,6,10,17,21,25,42],less:[4,6,21,29,31,39,44],let:[6,42],letter:17,level:[6,10,11,13,19,23,25,32,44,46,47,50,53,90,105,130],leveledcompactionstrategi:[11,39,42],lexic:31,lib:[4,6,20,25,26,35],libqtcassandra:33,librari:[8,25,30,33,47,53],licenc:25,licens:[25,26,27,29,37],life:29,lifespan:44,like:[0,6,12,13,14,17,21,23,24,25,29,30,31,37,42,43,44,50],likewis:19,limit:[4,6,9,10,11,18,19,21,31,41,42,43,50],line:[12,23,29,30,32,35,36,50,54,56,58,59,60,65,66,71,74,79,82,83,85,88,91,93,96,103,109,110,111,115,116,117,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,141,143,144,145,147,148,149,151],linear:44,linearli:39,link:[6,8,11,12,29,30,35],linux:[6,31],list:[4,5,6,9,10,11,12,13,14,17,26,29,30,32,35,36,37,42,50,52,53,56,58,59,60,65,66,71,74,79,82,83,85,88,91,93,96,102,103,105,109,110,111,115,116,117,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,141,143,144,145,147,148,149,151],list_liter:[13,21],list_permissions_stat:12,list_roles_stat:12,list_users_stat:12,listarg:14,listen:[6,37,47],listen_address:[32,36,37],listen_interfac:32,listsnapshot:105,liter:[10,12,14,17,53],littl:23,live:[9,13,37,42,52],load:[0,6,11,20,21,37,46,47,50,51,52,97,105,111,117,135],local:[0,4,6,11,26,29,30,36,44,47,50,51,53,105,113,117,119,147],local_jmx:50,local_on:[0,6,50,53],local_quorum:[0,53],local_seri:53,localhost:[6,36,50],locat:[6,34,35,43,47,50,51,53,141],lock:[6,31],log:[4,6,11,13,25,30,34,35,37,41,46,47,50,90,105,117,130,141],log_al:42,logback:32,logger:[23,32],logic:[6,20],login:[6,9,19,30,50],lol:21,longer:[6,10,31,42,52,58,105],look:[6,12,24,29,30,42,44],loop:23,lose:[4,6,42,52],loss:[6,21],lost:[42,52],lot:[6,36,37],low:[6,29],lower:[0,6,11,12,13,19,31,39,42,47,52],lowercas:12,lowest:[29,42],lz4:[4,6],lz4compressor:[4,6,11,43],macaddr:9,machin:[6,11,30,31,47,50,51,52],made:[6,21,37,39,44,50],magnet:[4,6],magnitud:13,mai:[0,4,6,9,10,11,13,14,16,17,19,21,25,26,29,30,31,35,39,42,50,51,52,53,122],mail:[5,29,37],main:[0,14,18,26,31,34,35,50,52,53],main_actor:13,mainli:[6,11],maintain:[6,28,29],mainten:47,major:[0,10,29,50,60,105],make:[0,6,8,9,20,21,23,26,29,30,31,32,35,42,50,52,53],man:6,manag:[6,19,26,30,47,50,52,57,105],mandatori:[11,14],mani:[0,6,11,23,25,29,42,43,44,47,50,53,58,60,66,74,82,83,117,122,148,149],manipul:[12,15,30,37],manual:[6,24,31],map:[6,9,10,11,13,14,17,19,37,47],map_liter:[11,16,19,21],mar:21,mark:[6,19,42,52,69,105],marker:[6,11,12,25,31],match:[6,12,13,14,17,19,47,51],materi:[6,10,11,12,15,37,47,53,105,151],materialized_view_stat:12,matter:[11,31],max:[4,6,37,42,47,50,53,85,105,117,125],max_hint_window_in_m:52,max_map_count:31,max_mutation_size_in_kb:[4,6,31],max_thread:6,max_threshold:42,maxattempt:53,maxbatchs:53,maxfiledescriptorcount:47,maxim:44,maximum:[4,6,14,39,47,53,122],maxinserterror:53,maxoutputs:53,maxparseerror:53,maxpools:47,maxrequest:53,maxrow:53,maxthreshold:125,maxtimeuuid:10,mayb:13,mbean:[6,19,42,47,50],mbeanserv:19,mbp:6,mct:6,mean:[6,9,11,12,13,14,17,18,21,37,42,47,51,53,117],meaning:13,meant:[21,31,47],measur:[6,25,30,47,52,53],mechan:[6,41],median:47,meet:[6,25],megabyt:6,member:23,membership:6,memlock:31,memori:[4,6,11,37,39,42,46],memory_pool:47,memtabl:[2,6,39,41,42,43,44,47,134],memtable_allocation_typ:4,memtable_cleanup_threshold:4,memtableflushwrit:47,memtablepool:6,memtablepostflush:47,memtablereclaimmemori:47,mention:[6,21,29,47,50],menu:26,mere:23,merg:[24,29,39,43,44,46],mergetool:24,merkl:[6,47],mess:[29,30],messag:[6,21,25,29,35,37,47],met:13,meta:13,metadata:[4,19,43,44,47],metal:6,meter:47,method:[10,13,14,19,23,25,26,30,37,50],metric:[6,46],metricnam:47,metricsreporterconfigfil:47,mib:[6,62,104,144],microsecond:[6,11,13,21,47],midnight:21,might:[6,13,42,47,56,58,59,60,65,66,71,74,79,82,83,85,88,91,93,96,103,109,110,111,115,116,117,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,141,143,144,145,147,148,149,151],migrat:[6,47,51],migrationstag:47,millisecond:[4,6,10,21,47,122,145],min:[6,31,41,42,53,85,105,125],min_sstable_s:42,min_threshold:42,minbatchs:53,mind:6,minim:[6,42,44],minimum:[6,11,14,32,47],minor:[10,12,46],minthreshold:125,mintimeuuid:10,minut:[6,21,42,47],misbehav:42,misc:[93,132],miscelen:47,miscellan:6,miscstag:47,miss:[11,28,42,47,52],misslat:47,mistaken:[56,58,59,60,65,66,71,74,79,82,83,85,88,91,93,96,103,109,110,111,115,116,117,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,141,143,144,145,147,148,149,151],mitig:[6,50],mix:[6,42],mmap:31,mnt:16,mock:30,mod:28,mode:[4,6,50,53],model:[11,15,19,29,37,50],moder:44,modern:44,modif:[13,19],modifi:[6,9,10,11,14,19,21,29,39,42,43],modification_stat:13,modul:53,modular:25,moment:[6,29],monitor:[31,37,46,50,51,57,105],monkeyspeci:[11,18],monkeyspecies_by_popul:18,month:21,more:[0,4,6,10,11,12,13,21,23,28,29,30,32,36,37,39,44,46,47,50,51,52,60,82,83,105,117,122,145,149],moreov:13,most:[6,11,12,13,21,26,29,30,31,32,42,43,44,50,53,105,145],mostli:[6,11,21],motiv:[30,42],mount:6,move:[6,29,31,37,41,46,47,105],movement:46,movi:[13,21],movingaverag:6,mtime:11,much:[0,5,6,11,39,42,51],multi:[0,6,12,25],multilin:27,multipl:[4,6,10,11,12,13,14,21,23,25,26,29,31,32,42,44,51,109],multipli:42,murmur3partit:4,murmur3partition:[6,14,53],must:[0,4,6,10,11,13,14,17,18,19,23,28,29,30,31,32,42,47,50,52,53,134],mutant:16,mutat:[0,4,6,13,31,41,47],mutationstag:47,mv1:18,mx4j:47,mx4j_address:47,mx4j_port:47,mx4jtool:47,mxbean:19,myaggreg:14,mycolumn:17,mydir:53,myevent:13,myfunct:14,myid:12,mykei:17,mykeyspac:14,mytabl:[11,14,17,20],mytrigg:20,nairo:21,name:[6,9,10,11,12,13,14,16,17,18,19,20,21,25,26,28,29,30,31,32,47,50,53,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],names_valu:13,nan:[9,10,12],nanosecond:21,nathan:13,nativ:[6,10,12,15,17,25,31,36,47,53,68,76,105,110,137],native_transport_min_thread:6,native_transport_port:32,native_transport_port_ssl:50,native_typ:21,natur:[11,21,23,42,43],nearli:26,neccessari:6,necessari:[6,11,14,19,29,35,43,50],necessarili:[6,12,32],need:[0,4,6,10,11,12,13,19,21,23,25,26,29,30,31,32,35,36,39,42,43,44,50,51,53,88],neg:6,neglig:13,neighbour:42,neither:[18,21,50],neon:26,nerdmovi:[13,16],nest:[12,13,23],net:[6,26,31,34,35,50],netstat:[52,105],network:[6,13,31,44,50,51,104,105,107],networktopologystrategi:[11,50],never:[6,10,11,12,13,14,21,23,31,42],nevertheless:13,new_rol:19,new_superus:50,newargtuplevalu:14,newargudtvalu:14,newer:[42,44,53,83],newest:[11,42],newli:[11,21,29,41,105,111],newreturntuplevalu:14,newreturnudtvalu:14,newtuplevalu:14,newudtvalu:14,next:[6,31,36,42,53],ngem3b:13,ngem3c:13,nifti:24,nio:[6,14,47],no_pubkei:35,node:[0,4,6,11,13,14,20,21,25,30,32,33,36,37,39,41,42,44,46,47,51,53,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,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],nodej:34,nodetool:[4,35,37,39,43,46,50,52,54,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,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],nologin:9,non:[6,9,10,11,12,13,14,19,21,31,39,43,47,50,53],none:[6,11,13,21,50],nonsens:19,nor:[11,18,21],norecurs:[9,19],norm:47,normal:[9,14,17,26,31,35,47,52,53],noschedul:6,nosuperus:[9,19],notabl:[14,17],notat:[10,12,13,53],note:[0,4,5,6,10,11,12,13,14,15,17,19,21,24,29,31,42,50],noth:[6,11,14,24,30,31],notic:[6,28],notif:8,notion:[11,12],now:[10,23,26,42,52],ntp:6,nullval:53,num_cor:53,num_token:52,number:[0,4,6,10,11,12,13,14,17,18,21,26,29,30,31,35,39,42,43,47,50,52,53,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,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],number_of_cor:6,number_of_dr:6,numer:[15,39],numprocess:53,object:[6,11,12,25],objectnam:19,observ:23,obsolet:[6,44],obtain:[12,50],obviou:[14,24],obvious:11,occup:13,occupi:[6,47],occur:[10,12,13,20,21,31,42,44,47],occurr:21,octet:[6,51],odd:29,off:[4,6,31,43,47,50,53,105,118],offer:[15,30,43],offheap:[39,44],offheap_buff:6,offheap_object:6,offici:[37,53],offset:[4,47],often:[6,11,12,23,29,30,31,42,43,44,50,51,53],ohc:6,ohcprovid:6,okai:23,old:[4,6,42,52],older:[4,6,14,26,35,42,44,53],oldest:[4,6,11],omit:[4,6,10,11,13,17,21],onc:[4,6,11,12,14,21,24,26,29,30,31,41,42,43,44,47,50,52,53],one:[0,4,6,9,10,11,12,13,14,17,18,19,21,23,26,29,30,32,37,39,42,44,47,50,51,52,53,58,60,66,74,82,83,93,105,117,122,132,134,148,149],oneminutecachehitr:47,ones:[6,11,12,13,14,18,19],ongo:[42,52],onli:[0,4,6,9,11,12,13,14,17,18,19,21,23,29,30,32,37,39,42,43,44,47,50,51,53,117,134],onlin:53,only_purge_repaired_tombston:42,onto:[4,42],open:[5,6,26,50,51],openfiledescriptorcount:47,openjdk:35,oper:[0,6,10,11,13,16,18,19,21,23,37,39,41,44,47,50,52,53,105,107],operatingsystem:47,opertaion:6,opportun:39,ops:31,opt:14,optim:[4,6,11,12,13,31,42,44,52],option1_valu:19,option:[4,6,9,10,12,13,14,16,19,21,26,30,31,35,43,44,46,50,52,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,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],oracl:[6,35,50],order:[0,4,6,9,10,14,18,21,23,29,31,39,41,42,51,52,53],ordering_claus:13,orderpreservingpartition:6,org:[6,14,20,23,26,28,30,31,35,42,43,47,50],organ:[4,26,33],origin:[9,24,29,122],orign:13,other:[0,4,6,10,12,13,14,18,19,21,24,26,29,32,37,39,42,44,47,50,51,52,105,109],other_rol:19,otherwis:[0,9,12,13,16,21,117],our:[5,6,8,24,26,29,42],ourselv:24,out:[4,6,9,12,23,26,29,42,50,51,52,117],outbound:6,outboundtcpconnect:6,outgo:6,outgoingbyt:47,outlin:50,outofmemoryerror:37,output:[14,19,25,26,39,42,53,60,61,144,146],outsid:[11,20,21],over:[0,6,11,21,31,42,47,50,51,52],overal:14,overflow:[17,122],overhead:[6,31,43,52],overidden:50,overlap:[0,42],overload:[6,14,31],overrid:[6,23,50,52,122],overridden:[6,11],overview:[2,28,37,46],overwhelm:6,overwrit:[43,44],overwritten:83,own:[0,6,11,12,14,21,29,31,35,42,43,47,50,88,91,105],owner:[21,28],ownership:[42,121],p0000:21,pacif:21,packag:[26,31,32,34,36,53],packet:6,page:[6,21,26,29,30,31,44,47],paged_slic:47,pages:53,pagetimeout:53,pai:23,pair:[6,11,19,21,42,50],parallel:[30,42,117],paramet:[4,6,14,23,25,26,32,39,44,51,52],paranoid:6,parenthesi:[11,53],parnew:44,pars:[6,12,41,53],parser:[9,10,41],part:[0,5,6,11,13,14,18,21,25,26,29,30,31,51,52,53],parti:[25,47],partial:4,particip:[0,20],particular:[11,12,13,14,17,19,21,31,44,47,50],particularli:[12,21,50],partit:[4,6,10,13,14,31,39,42,44,47,83,88,105,122,145],partition:[4,10,13,14,53,64,105,117],partition_kei:[11,13],partli:13,pass:[25,29,32,53],password:[6,9,13,19,53,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,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],password_a:19,password_b:19,passwordauthent:[6,50],passwordfilepath:[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,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],past:[6,47],patch:[10,13,23,24,25,27,30,37],path:[5,6,16,25,35,39,42,43,44,47,50,53,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,97,98,99,100,101,102,103,104,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],patter:19,pattern:[6,19,21],paus:[6,31,105,106],pausehandoff:105,paxo:[13,53],peer:[6,47],peerip:47,penalti:[6,13],pend:[42,105,116],pendingrangecalcul:47,pendingtask:47,pendingtasksbytablenam:47,pennsylvania:21,peopl:[29,31],per:[0,4,6,10,11,13,23,24,29,31,39,41,42,43,47,50,53,105,128],percentag:[6,47,51],percentil:47,perdiskmemtableflushwriter_0:47,perfect:14,perform:[6,11,13,19,21,24,25,27,31,32,39,42,44,47,50,51,53,117],period:[4,6,44,47,50],perman:[11,31,42,44],permiss:[6,9,12,30,50],permit:[6,19,41,50],persist:[4,31,39,44,50],perspect:31,pet:21,pgrep:35,phantom:33,phase:[52,53],phi:6,phone:[13,21],php:34,physic:[0,6,11,31,44,51],pick:[24,29,31,42,50,52,109],pid:[31,35],piec:[12,42,47],pile:6,pin:[6,51],ping:29,pkcs5pad:6,pkill:35,place:[5,6,16,20,23,24,29,41,42,47,50,53,105,111],placehold:[14,53],plai:[14,21],plain:4,plan:[11,24,29],platform:19,platter:[6,44],player:[14,21],playorm:33,pleas:[5,6,11,13,14,15,21,23,26,30,31],plu:[14,42,47],plug:6,pluggabl:[19,50],plugin:47,poe:21,point:[4,6,10,17,21,23,26,37,50,53,88,105],pointer:14,polici:[6,28,29,50],pom:28,pool:[6,35,47,105,146],popul:[11,18],popular:[26,44],port:[6,26,32,37,47,50,53,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,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],portion:[44,53],posit:[4,6,10,11,21,39,52],possbili:6,possess:19,possibl:[6,10,11,13,14,17,19,21,25,29,30,31,39,42,44,47,50,52],post:[13,105,124],post_at:13,posted_at:13,posted_bi:11,posted_month:11,posted_tim:11,potenti:[0,6,9,11,12,14,25,42,44,50,52,122],power:6,pr3z1den7:21,practic:[11,12,13,50],pre:[6,17,21,44,50],preced:31,precis:[10,17,21,42],precondit:47,predefin:11,predict:13,prefer:[0,6,11,12,21,23,29,50,51],preferipv4stack:26,prefix:[11,12,21],prepar:[6,14,15,47],preparedstatementscount:47,preparedstatementsevict:47,preparedstatementsexecut:47,preparedstatementsratio:47,prepend:21,prerequisit:34,present:[9,12,13,18],preserv:[6,17,19],press:35,pressur:[6,47],pretti:53,prevent:[6,30,41],previou:[6,10,11,21,42,52],previous:6,previsouli:[79,105],primari:[9,10,13,14,21,30,41,42,43,50,52],primarili:[6,11],primary_kei:[11,18],print:[53,61,62,64,84,85,86,88,89,91,92,93,94,97,104,105,107,121,135,143,144,145,146,150],prior:[6,13,19,21],prioriti:29,privat:[6,23,50,51],privileg:[19,35,50],probabilist:[39,43],probabl:[4,6,11,30,39,42,94,105,133],problem:[5,6,14,24,25,31,50],problemat:21,proc:[6,31],proce:[25,43,52],procedur:[13,50],process:[0,6,14,24,25,26,29,30,31,35,41,43,44,47,50,52,53,57,105,106,120],prod_clust:53,produc:[13,14,42],product:[6,29,31,44,51],profil:13,program:[14,30],progress:[23,24,29,39,46,105,151],project:[23,28,30,47],promin:11,prompt:53,propag:[6,11,14,23,25,51],proper:[11,21,31,50],properli:[6,25],properti:[4,6,11,19,34,41,42,50,51,52],propertyfilesnitch:[6,51],proport:[6,13],proportion:6,propos:6,protect:[6,44],protocol:[6,25,31,36,47,50,53,68,76,105,137],provid:[0,4,5,6,11,12,13,14,15,17,21,26,28,29,36,41,42,43,44,47,50,51,52,54,104,105,116],proxim:[6,51],proxyhistogram:105,ps1:50,ps22dhd:13,pt89h8m53:21,pull:[30,42,47,117],purg:44,purpos:[11,12,13,21,44,50],push:[24,29,47],put:[15,29,32,42,52,117],pwf:[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,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],python:[14,29,30,34,35,53],quak:[14,21],qualifi:[6,11,14,29],qualiti:50,quantiti:21,queri:[6,9,10,11,12,13,14,16,18,19,34,37,42,47,53],question:[8,19,37],queu:[6,47],queue:[6,47],quickli:[31,42],quill:33,quintana:21,quit:[42,53],quorum:[0,50,53],quot:[9,10,11,12,14,17,19,53],quotat:19,quoted_identifi:12,quoted_nam:11,race:[21,24],rack1:6,rack:[0,6,50,51],rackdc:[6,51],rackinferringsnitch:[6,51],raid0:44,raid1:44,raid5:44,rain:12,rais:[12,31],raison:9,ram:[39,43,44],random:[11,14,31,52],randomli:[0,6,52],randompartition:[6,13,14],rang:[2,6,10,11,13,21,25,42,46,47,53,60,65,93,105,109,117,132],range_slic:47,rangekeysampl:105,rangemov:52,rangeslic:47,rapid:44,rare:[10,39],raspberri:44,rat:28,rate:[6,11,47,50,53],ratebasedbackpressur:6,ratefil:53,rather:[13,31,42,44],ratio:[6,43,44,47],raw:[6,14],reach:[4,6,29,31,41,42],read:[0,6,11,13,21,23,25,30,31,34,37,39,42,43,44,46,47,50,51,53,93,132],read_repair:47,read_repair_ch:[0,6,11,42,51],read_request_timeout:31,readabl:[11,62,104,144],readi:[29,50],readrepair:47,readrepairstag:47,readstag:47,readwrit:50,real:[8,11,23,31],realiz:42,realli:[6,30,32],reason:[0,4,6,13,14,15,31,32,35,42,44,50,52],rebuild:[39,42,43,47,105,110,122],rebuild_index:105,receiv:[6,14,29,31,42,44],recent:[6,29,30,44],reclaim:42,recogn:[13,26,29],recommend:[4,6,11,21,31,44,50,52],recompact:42,recompress:43,reconnect:50,record:[11,13,21,29,42],recov:[6,31,42],recoveri:6,recreat:53,recv:35,recycl:[4,6,47],redistribut:6,redo:29,reduc:[4,6,31,42,43],reduct:6,redund:[0,6,23,25,29,44],reenabl:[76,77,78,80,105],refactor:41,refer:[6,11,12,13,14,15,21,23,30,31,35,36,53],referenc:6,reflect:42,refresh:[6,50,53,105,112],refreshsizeestim:105,refus:37,regard:[11,13],regardless:[0,6,19,29],regener:39,regexp:12,region:[6,51],regist:21,registri:50,regress:[25,30],regular:[9,12,26,30,31,47,53],regularstatementsexecut:47,reinsert:122,reject:[6,13,31,41,50],rel:[6,21,53],relat:[8,10,12,13,26,29,42,47],releas:[6,10,28,35,53],relev:[13,19,21,29,43,50],reli:[6,14,21,31,52],reliabl:42,reload:[6,105,113,114],reloadlocalschema:105,reloadtrigg:105,reloc:[105,115,141],relocatesst:105,remain:[6,13,14,21,24,42,47,52,144],remaind:[17,43],remedi:42,remot:[0,24,26,37,42,50,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,97,98,99,100,101,102,103,104,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],remov:[4,6,10,11,12,13,14,15,17,21,25,31,37,41,46,50,56,59,83,105,116],removenod:[52,56,105],renam:[9,21],reorder:6,repair:[0,4,6,11,31,37,43,46,47,51,52,105],repeat:[12,35,43,50],replac:[6,9,14,19,21,25,31,37,42,46],replace_address_first_boot:52,replai:[0,21,44,47,105,118],replaybatchlog:105,replic:[2,6,11,37,42,44,50,52,56,105,117],replica:[0,6,11,13,31,42,47,51,52],replication_factor:[0,11,50],repo:[24,26],report:[28,29,37,46],report_writ:19,reportfrequ:53,repositori:[5,8,26,28,29,30,35],repres:[6,10,17,19,21,31,42,47,50,51,53],represent:[10,17],request:[0,6,13,19,20,30,31,39,42,44,46,50,51,53,105,133,148],request_respons:47,requestresponsestag:47,requestschedul:6,requesttyp:47,requir:[0,6,11,13,14,19,23,24,25,26,28,29,31,39,43,44,50],require_client_auth:6,require_endpoint_verif:6,resampl:6,reserv:[6,10,12,15],reset:[6,13,105,119,130],reset_bootstrap_progress:52,resetlocalschema:105,resid:[6,13,31],resolut:[6,13,31],resolv:[24,31,121,135],resort:[56,105],resourc:[19,50],resp:14,respect:[6,10,14,35,51],respond:[0,6,12],respons:[0,6,19,31,47,52],ressourc:21,rest:[6,11,12,21,25,52],restart:[31,42,50,52,105,111,124],restor:[42,52,53],restrict:[10,11,13,18,19],result:[0,6,8,9,10,11,12,14,17,19,21,29,31,42,53,145],resum:[57,105,120],resumehandoff:105,resurrect:42,resync:[105,119],retain:[31,42],rethrow:23,retri:[0,6,21,47],retriev:[11,13,19],reus:25,revers:13,review:[11,23,27,29,30,37],revok:[9,50],revoke_permission_stat:12,revoke_role_stat:12,rewrit:[39,42,43,105,122,148],rewritten:[44,122],rfc:[14,21],rhel:37,rich:21,rider:21,riderresult:21,right:[6,26,31,53],ring:[2,6,37,50,52,53,101,103,105],risk:11,rmem_max:6,rmi:[31,50],robin:6,rogu:14,role:[6,9,10,12,15,46],role_a:19,role_admin:19,role_b:19,role_c:19,role_manag:50,role_nam:19,role_opt:19,role_or_permission_stat:12,role_permiss:6,roll:[31,50],romain:21,root:[6,24,29,35],rotat:6,roughli:6,round:[6,13,42],roundrobin:6,roundrobinschedul:6,rout:[6,51],row:[0,4,6,9,10,11,13,14,15,17,18,30,36,39,43,44,47,53,83,100,105,122,123,124],rowcach:47,rowindexentri:47,rows_per_partit:11,rpc:[6,47],rpc_min:6,rpc_timeout_in_m:[93,132],rubi:[14,34],rule:[6,12,14,29,31],run:[4,5,6,12,21,24,26,29,31,32,35,42,44,47,50,52,117],runtim:[6,34,90,105],runtimeexcept:23,rust:34,safe:[6,14,21,42,50],safeguard:44,safeti:[42,52],sai:37,said:[11,29,31,105,148],same:[0,4,5,6,11,12,13,14,15,17,18,19,21,24,26,29,32,37,39,42,47,50,51,117],sampl:[4,6,12,14,47,53,105,108,145],sampler:[47,145],san:44,sandbox:[6,14],sasi:6,satisfi:[0,23,44,52],satur:[6,47],save:[6,13,21,31,32,39,43,44,52,105,124],saved_cach:6,saved_caches_directori:32,sbin:31,scala:[14,34],scalar:15,scale:[6,30,43],scan:[6,13,39],scenario:24,scene:31,schedul:6,schema:[0,9,11,14,17,47,53,64,105,113,119],schema_own:19,scope:[19,47,50],score:[6,14,21,51],script:[6,14,26,30],scrub:[39,42,43,47,105,141],search:29,second:[6,11,12,13,21,31,41,44,50,53,105,128],secondari:[6,10,12,13,15,37,42,47,105,110],secondary_index_stat:12,secondaryindexmanag:47,section:[2,5,7,10,11,12,13,15,19,21,31,34,35,36,42,47,50,52,54],secur:[6,14,15,37,46],see:[0,4,6,10,11,12,13,14,17,19,21,26,29,36,37,41,42,47,50,52,53,83,105],seed:[6,32,37,51],seedprovid:6,seek:[4,6,44,47],seen:[6,11],segment:[4,6,41,47,53],select:[6,9,10,11,12,14,15,19,26,30,31,36,39,42,50,53,109],select_claus:13,select_stat:[12,18],self:25,selinux:31,semant:[10,13,14],semi:31,send:[6,8,31],sens:[6,10,13,15,31],sensic:14,sensit:[11,12,14,17],sensor:21,sent:[0,6,21,31,47],separ:[4,6,11,13,23,29,32,42,44,50,52,53,56,58,59,60,65,66,71,74,79,82,83,85,88,91,93,96,103,109,110,111,115,116,117,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,141,143,144,145,147,148,149,151],seq:[6,117],sequenc:12,sequenti:[6,44,117],seren:13,seri:[11,42,53],serial:6,serializingcacheprovid:6,serv:[13,44,50],server:[6,12,13,21,26,30,31,44,47,50,72,80,105,140],server_encryption_opt:50,servic:[6,26,35,50,52],session:[6,19,50],set:[0,4,6,9,10,11,12,13,14,17,18,25,27,29,30,32,37,39,41,42,43,44,47,50,51,52,53,58,83,105,115,122,123,124,125,126,127,128,129,130,131,132,133,148],set_liter:21,setcachecapac:105,setcachekeystosav:105,setcompactionthreshold:[42,105],setcompactionthroughput:[42,105],setconcurrentcompactor:105,sethintedhandoffthrottlekb:105,setint:14,setinterdcstreamthroughput:105,setlogginglevel:105,setlong:14,setstr:14,setstreamthroughput:105,setter:[19,23],settimeout:105,settraceprob:105,setup:[29,30,50],sever:[4,13,19,42,50],sfunc:[9,14],sha:24,shadow:42,share:[11,13,26],sharedpool:53,sharp:33,shed:31,shell:[36,37,54],shift:21,ship:[30,36,50,53],shortcut:18,shorter:50,shorthand:53,should:[0,4,5,6,10,11,12,13,14,17,19,21,25,26,29,30,31,32,33,34,36,39,42,43,44,47,50,51,52,53,109,132],shouldn:11,show:[19,37,52,65,81,95,105,108,116,121,135,151],shown:[12,53],shrink:6,shut:6,shutdown:[4,6,44],side:[11,13,17,21,50],sign:[13,21,31],signatur:[35,41],signific:[6,26,29,30,44],significantli:6,silent:14,similar:[6,13,14,43,44],similarli:[0,10,17,23,44,105,109],simpl:[6,11,26,30,50],simple_classnam:30,simple_select:13,simplequerytest:30,simplereplicationstrategi:50,simpleseedprovid:6,simplesnitch:[6,51],simplestrategi:11,simpli:[0,4,6,9,11,13,14,17,21,26,30,42,44,47,52,149],simul:30,simultan:[6,44,53,58,83,115,122,148],sinc:[6,11,13,14,21,26,31,35,42,47,52],singl:[0,6,10,11,12,13,14,17,18,19,21,23,29,32,36,37,46,47,50,51,53,60],singleton:25,situat:[6,30,42],size:[4,6,11,21,23,31,32,39,41,43,44,46,47,50,53,102,105,145],size_estim:[105,112],sizetieredcompactionstrategi:[11,42],skip:[6,13,52,53,122,134],skipcol:53,skiprow:53,sks:35,sla:25,slash:12,slf4j:23,slightli:6,slow:[6,51],slower:[6,11,39],slowest:6,slowli:[6,21],small:[4,6,11,13,21,31,42,44],smaller:[4,6,31,42,44,53],smallest:[0,11,14],smallint:[9,10,14,17,21],smith:21,smoother:10,smoothli:6,snappi:[4,6],snappycompressor:[11,43],snapshot:[6,26,59,102,105,122],snapshot_nam:59,snapshotnam:[59,105],snitch:[6,37,46,64,105],socket:[6,50,132],sole:11,solid:[6,44],some:[0,6,9,11,12,13,14,21,26,28,29,30,31,32,41,42,43,47,50,52,53],some_funct:14,some_nam:12,someaggreg:14,somearg:14,somefunct:14,someon:[24,42],sometim:[6,12,13],someudt:14,somewher:35,soon:50,sooner:6,sort:[4,11,13,21,42,44],sourc:[5,6,8,14,27,28,35,47,109],source_elaps:53,space:[4,6,23,31,41,42,44],span:[6,13,42],sparingli:13,spark:33,spec:[25,28,36,47,53],speci:[11,18],special:[12,13,30,31,42,47],specif:[6,9,11,12,13,19,21,26,29,31,33,41,42,47,50,53,105,109,117],specifc:47,specifi:[0,6,10,11,12,13,14,16,18,19,21,26,31,36,41,42,43,47,50,52,53,59,60,91,105,109,117,121,132,134,141,147],specific_dc:117,specific_host:117,specific_keyspac:109,specific_sourc:109,specific_token:109,specul:0,speed:[6,37],spent:47,spike:31,spin:[6,44],spindl:[4,6],spirit:[6,51],split:[23,31,42,47,53,60],spread:[6,51],sql:[13,15],squar:12,squash:29,src:109,ssd:[6,16,44],ssl:[6,31,46,53],ssl_storage_port:51,sss:17,sstabl:[2,6,11,31,39,43,44,46,58,60,83,91,105,111,115,122,148,149],sstable_s:42,sstable_size_in_mb:42,sstableexpiredblock:42,sstablewrit:23,stabil:29,stabl:[35,53],stack:6,stage:29,stai:[37,42],stale:[6,50],stall:[6,52],stand:[6,30],standalon:30,standard:[6,21,31,35,47],start:[0,6,13,27,31,32,35,37,42,44,47,50,52,60,117,141],start_token:[60,117],start_token_1:109,start_token_2:109,start_token_n:109,starter:29,startup:[4,6,20,26,31,42,47,52],starvat:6,state:[6,14,39,42,44,47,52,105,135],statement:[6,9,10,11,13,14,15,16,17,19,20,21,25,27,29,39,42,47,50,53],static0:11,static1:11,statist:[4,42,47,53,62,84,105,107,143,144,146],statu:[19,25,29,31,35,53,105,116,136,137,138,139,140],statusbackup:105,statusbinari:105,statusgossip:105,statushandoff:105,statusthrift:105,stc:11,stdin:53,stdout:53,step:[6,26,32,50],still:[0,6,9,10,13,14,17,21,23,50,52,53],stop:[4,6,35,53,73,105,142],stop_commit:6,stop_paranoid:6,stopdaemon:105,storag:[2,11,15,16,29,31,37,43,44,46],storage_port:[32,51],storageservic:[6,23],store:[0,4,6,10,11,12,13,21,37,39,42,43,44,47,50,53,70,78,105,139],store_typ:6,straight:52,straightforward:41,strategi:[0,6,11,46,51],stream:[4,6,37,42,43,46,57,89,92,105,109,117,129,131,132,145],streamingsocket:[93,132],street:21,strength:6,strict:[10,42],strictli:[8,11,14],string:[6,10,11,12,13,14,16,17,19,20,21,47,53,91],strong:0,strongli:[6,11,12,50],structur:[4,6,9,19,25,39],stub:50,style:[6,25,26,27,29,30,37],stype:[9,14],sub:[11,13,21,35,42],subclass:6,subdirectori:[6,20],subject:[6,14,50],submiss:[6,29],submit:[28,29,30,37,60],subscrib:8,subscript:8,subsequ:[6,13,31,42,43],subset:[19,42,53],substitut:35,subsystem:50,subvert:42,succed:47,succesfulli:47,success:[0,53],sudden:6,sudo:[31,35],suffici:[6,44],suggest:[12,29,44],suit:[6,29,30,50],suitabl:[13,14,25,29],sum:41,summari:[4,6,47,145],sun:[23,50],sunx509:6,supercolumn:9,supersed:[10,122],superus:[9,19,50],suppli:[13,24],support:[0,4,6,10,11,12,13,14,15,16,18,19,21,29,30,31,33,37,42,50,53,122,141],suppos:13,sure:[6,8,23,26,29,30,31,32,35,42],surplu:31,surpris:0,surprisingli:6,surround:[17,53],suscept:14,suspect:[5,29],suspend:26,swamp:31,swap:6,symmetri:17,symptom:31,sync:[4,6,31,47],synchron:6,synonym:19,synopsi:[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,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],syntact:[11,19],syntax:[10,12,13,14,19,21,42,43],sys:6,sysctl:31,sysintern:6,system:[6,11,14,19,30,31,32,36,42,44,47,50,53,86,87,89,92,105,111,112,113,126,127,129,131],system_auth:[6,50],system_trac:117,tab:23,tabl:[0,4,6,9,10,12,13,14,15,16,17,18,19,20,21,30,39,42,43,46,50,53,58,60,66,73,74,82,83,85,88,105,110,111,113,115,117,122,125,134,141,143,144,148,149],table1:19,table_nam:[11,13,16,19,20,42],table_opt:[11,18],tablehistogram:105,tablestat:105,tag:[21,25,29,134],take:[6,10,11,13,14,21,25,26,29,31,39,42,43,44,52,105,134],taken:[6,41,42],tar:35,tarbal:[32,34,53],target:[11,19,26,28,30,42],task:[6,26,29,47,53],tcp:[6,31],tcp_keepalive_intvl:31,tcp_keepalive_prob:31,tcp_keepalive_tim:31,tcp_nodelai:6,tcp_wmem:6,teach:[6,51],team:31,technetwork:6,technic:[11,15],technot:6,tee:35,tell:[6,13,25,31,32,47],temporari:50,temporarili:6,tenanc:6,tend:[4,6,31,44],tendenc:6,terabyt:43,term:[6,13,14,15,18,21],termin:[12,53],ternari:23,test:[6,8,23,25,27,29,36,37,44,53],test_keyspac:50,testabl:[25,29],testbatchandlist:30,testmethod1:30,testmethod2:30,testsom:30,teststaticcompactt:30,text:[4,9,11,12,13,14,17,21,41,43,50],textil:28,than:[0,4,6,11,12,13,14,15,18,21,23,29,37,42,43,44,50,51,52,127],thei:[6,9,10,11,12,13,14,15,18,19,21,23,25,29,30,37,39,42,43,44,47,50],them:[6,10,11,13,14,21,23,29,30,31,36,39,42,47,50,105,148],themselv:[13,19],theoret:11,therefor:[29,30,50],thi:[0,2,4,5,6,7,10,11,12,13,14,15,17,18,19,21,23,24,25,26,28,29,30,31,32,34,35,37,39,41,42,43,44,47,50,51,52,53,54,55,56,58,59,60,65,66,71,74,79,82,83,85,88,91,93,96,103,109,110,111,115,116,117,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,141,143,144,145,147,148,149,151],thing:[6,21,24,29,31,34,42],think:6,third:[21,25,47],thobb:53,those:[11,12,13,14,16,17,18,19,21,29,31,41,42,50,53,148],though:[6,10,12,21,37,42,43,47],thousand:53,thousandssep:53,thread:[4,6,44,47,50,58,83,105,115,117,122,128,146,148],threadpool:46,threadpoolnam:47,threadprioritypolici:26,three:[0,6,39,42,43,50,53],threshold:[4,41,44,51,85,105,125,130],thrift:[6,9,11,15,31,47,72,80,105,140],throttl:[6,105,126,128,129,131],throttle_limit:6,through:[0,5,9,10,11,12,13,26,29,31,36,41,42,53],throughout:50,throughput:[0,6,42,43,44,47,86,89,92,105,126,129,131],throwabl:[25,30],thrown:21,thu:[6,10,11,12,13,18,21,31,51,52,105,148],thumb:[6,29],thusli:21,tib:[62,104,144],ticket:[5,24,25,29,30,41],tie:31,tier:46,ties:13,tighter:6,tightli:6,tild:53,time:[0,4,6,8,9,10,11,12,13,15,16,17,18,23,25,26,29,30,31,39,41,43,46,47,50,53],timehorizon:6,timelin:11,timeout:[6,21,31,47,53,93,105,132],timeout_in_m:132,timeout_typ:[93,132],timer:[6,47],timestamp:[4,9,10,11,13,14,15,17,37,42,53,122],timeunit:42,timeuuid:[9,10,11,17,21],timewindowcompactionstrategi:11,timezon:[17,53],tini:[6,42],tinyint:[9,10,14,17,21],tjake:23,tls_dhe_rsa_with_aes_128_cbc_sha:6,tls_dhe_rsa_with_aes_256_cbc_sha:6,tls_ecdhe_rsa_with_aes_128_cbc_sha:6,tls_ecdhe_rsa_with_aes_256_cbc_sha:6,tls_rsa_with_aes_128_cbc_sha:6,tls_rsa_with_aes_256_cbc_sha:6,toc:4,todai:12,todat:14,todo:[25,30],togeth:[6,11,13,14,42],toggl:50,tojson:15,token:[2,4,6,9,10,12,13,31,42,47,53,60,65,97,103,105,109,117,121],toler:39,tom:13,tombston:[4,6,11,17,31,46,83,122],tombstone_compact:141,tombstone_compaction_interv:42,tombstone_threshold:42,ton:30,too:[6,11,12,14,21,25,42],tool:[6,12,28,29,31,37,42,47,50,52],top:[13,21,29,37,47,145],topcount:145,topic:53,topolog:[6,51,121],toppartit:105,total:[4,6,13,41,42,47],totalblockedtask:47,totalcommitlogs:47,totalcompactionscomplet:47,totalhint:47,totalhintsinprogress:47,totallat:47,totimestamp:14,touch:[8,31,42],tough:30,tounixtimestamp:14,tour:21,toward:11,tpstat:105,trace:[6,47,94,105,117,133],track:[6,42,47],tracker:29,tradeoff:[0,6],tradit:[42,43],traffic:[6,51],trail:23,transact:[13,20,47,141],transfer:[6,31,50],transform:13,transit:[10,19],translat:6,transpar:[6,31],transport:[6,26,47,68,76,105,137],treat:[0,6,10,31,51],tree:[6,26,47],tri:42,trigger:[4,6,9,12,15,37,39,43,46,58,105,114],trigger_nam:20,trigger_stat:12,trip:[6,13],trivial:50,troubleshoot:[25,37],truli:9,truncat:[4,6,9,10,15,19,93,105,132,147],truncate_stat:12,truncatehint:105,trunk:[24,25,26,29],trust:50,trustor:6,truststor:[6,50],truststore_password:6,truststorepassword:50,tserverfactori:6,ttl:[4,6,9,10,11,14,17,21,46,122],tty:53,tunabl:2,tune:[31,39,42,44],tupl:[6,9,10,12,13,14,15,17],tuple_liter:[12,13],tuple_typ:21,tuplevalu:[10,14],turn:[0,6,29,31,50],twc:[11,42],twice:[4,6,21],two:[0,6,11,12,13,14,17,26,37,39,42,44,50,51,53],txt:[4,14,24,25,28,29],type:[0,6,10,11,12,13,14,15,19,25,35,37,44,46,50,53,93,105,132,141],type_hint:12,typeasblob:14,typecodec:14,typic:[0,6,13,31,39,42,44,47,50,53],ubuntu:26,udf:[6,14],udf_stat:12,udfcontext:[10,14],udt:[14,17],udt_liter:12,udt_nam:21,udt_stat:12,udtarg:14,udtnam:14,udtvalu:[10,14],ulimit:31,unabl:[4,6,25,37],unaffect:21,unavail:[6,11,47,50,52],unblock:47,unbound:21,unchecked_tombstone_compact:42,uncom:[6,47,50],uncommon:29,uncompress:[4,6,43,47],undelet:42,under:[6,21,23,30,47,50],underli:[6,18,42,50],understand:[6,29,31],unencrypt:[6,50],unexpect:4,unexpectedli:21,unfinishedcommit:47,unflush:[41,134],unfortun:30,uniqu:[11,14,21],unit:[21,25,27,42,105,123],unixtimestampof:[10,14],unless:[6,11,13,16,18,19,21,23,41,50,51],unlik:[6,10,13,21],unlimit:[6,31,53],unlog:9,unnecessari:[25,52],unnecessarili:41,unpredict:13,unprepar:47,unquot:12,unquoted_identifi:12,unquoted_nam:11,unrel:29,unreleas:29,unrepair:46,unrepl:117,unsecur:50,unset:[6,10,13,17],unsign:21,unspecifi:6,unsubscrib:[8,37],untar:35,until:[0,4,6,21,39,41,42,43,50,51],unus:6,unusu:25,updat:[6,9,10,11,12,14,15,17,18,19,21,25,29,30,35,37,42,43,47,50,53],update_paramet:13,update_stat:[12,13],upgrad:[6,42,105,148],upgrade_sst:141,upgradesst:[39,42,43,105],upload:29,upon:[6,21,39,43],upper:[12,17,42,50],ups:44,upstream:29,uptim:[97,105],url:24,usag:[4,6,11,21,37,39,41,43,47,53],use:[4,6,9,10,11,12,13,14,16,17,18,19,21,23,25,26,29,30,32,35,36,37,39,41,42,44,47,50,51,52,53,58,83,115,122,145,148],use_stat:12,usecas:42,useconcmarksweepgc:26,usecondcardmark:26,used:[0,4,6,9,10,11,12,13,14,15,16,17,18,19,21,25,26,29,30,31,42,44,47,50,51,52,53,56,58,59,60,65,66,71,74,79,82,83,85,88,91,93,96,103,105,109,110,111,115,116,117,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,141,143,144,145,147,148,149,151],useecassandra:50,useful:[0,6,11,14,29,42,43,47,52,53,56,58,59,60,65,66,71,74,79,82,83,85,88,91,93,96,103,109,110,111,115,116,117,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,141,143,144,145,147,148,149,151],useparnewgc:26,user1:13,user2:13,user3:13,user4:13,user:[5,6,8,9,10,11,12,13,15,16,17,18,25,29,31,35,39,42,43,44,50,53,60,105],user_count:13,user_defined_typ:21,user_funct:19,user_nam:13,user_occup:13,user_opt:19,useract:13,userid:[11,13,14],userindex:16,usernam:[6,13,14,50,53,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,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],uses:[0,4,6,11,12,13,14,16,19,20,30,31,50],usethreadprior:26,using:[4,6,10,11,12,13,14,18,19,21,26,28,29,30,34,35,36,37,39,43,44,46,47,50,52,53,60,109,122,134],usr:53,usual:[6,13,21,24,30,39,50,117],utc:[17,53],utd:11,utf8:[21,53],utf8typ:9,utf:53,util:[14,25,42,53],uuid:[9,10,11,12,17,21],val0:11,val1:11,val:14,valid:[6,10,11,12,13,14,17,21,31,42,43,47,50,53,122,141],validationexecutor:47,valu:[4,6,9,10,11,12,13,14,16,17,21,25,26,31,39,42,47,50,51,53,94,105,126,127,128,129,131,132,133],value1:13,value2:13,value_in_kb_per_sec:128,value_in_mb:[126,129,131],valueof:14,varchar:[9,11,14,17,21],vari:[6,43],variabl:[6,10,12,17,21,26,34],variant:12,varieti:41,varint:[9,11,14,17,21],variou:[26,30,44,50],veri:[6,11,13,29,30,31,39,42,43,44],verifi:[28,29,31,33,35,43,105,141],version:[5,6,11,14,15,21,26,29,33,35,42,47,52,64,105,148],vertic:53,via:[4,6,8,10,19,25,31,32,42,43,44,47,50,51],view:[6,10,11,12,15,19,37,47,53,105,151],view_build:141,view_nam:18,viewbuildstatu:105,viewmutationstag:47,viewpendingmut:47,viewreplicasattempt:47,viewreplicassuccess:47,viewwrit:47,viewwritelat:47,violat:6,virtual:[0,6,31,42,47,52],visibl:[11,19,23,39],vnode:[6,43],volum:[4,6,41,43],vulner:[6,50],wai:[4,6,12,15,17,18,21,24,26,30,31,42,43,117],wait:[0,4,6,11,29,31,47,105,118],waitingoncommit:47,waitingonsegmentalloc:47,want:[4,6,11,13,26,29,30,31,50,52],warmup:[105,124],warn:[6,11,23,28,30,46,117],washington:21,wasn:10,wast:6,watch:30,weaker:0,websit:[30,35],week:21,weight:[6,47],welcom:8,well:[6,11,13,14,17,21,25,26,41,43,44,50,51],were:[6,9,10,19,25,26,42,47],what:[11,13,21,27,30,32,37,42,44,50,53],whatev:[10,13,31],whedon:13,when:[4,6,9,10,11,12,13,14,15,16,17,19,21,23,25,29,30,32,37,39,41,43,44,46,47,50,51,52,53,56,58,59,60,65,66,71,74,79,82,83,85,88,91,93,96,103,109,110,111,115,116,117,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,141,143,144,145,147,148,149,151],where:[0,4,6,9,10,11,12,14,16,17,18,19,21,25,30,32,35,39,42,43,50,52,53,117],where_claus:13,wherea:[21,50],whether:[0,6,9,11,13,26,42,51,53],which:[0,4,5,6,10,11,12,13,14,15,16,18,19,20,21,29,30,31,32,35,36,39,41,42,43,44,47,50,51,52,60,88,109,117],whichev:[0,6],whitelist:50,whitespac:27,who:[19,29,31],whole:[6,11,13,14,21,42],whose:[11,21,141],why:[25,29,37],wide:[4,41],width:12,wiki:[6,26],wildcard:[13,19],window:[0,4,6,46,47,50],winner:31,wip:[26,29],wipe:[31,52],wire:31,wise:11,wish:[6,42,47],within:[0,4,6,11,12,13,16,29,31,42,44,47,50],withing:6,without:[6,11,12,13,14,19,21,24,26,28,29,30,31,41,44,47,50,53,56,105,111],wmem_max:6,won:[4,6,13,24],wont:42,word:[10,11,12,18,19,21,31],work:[4,6,10,11,14,15,17,23,24,26,27,28,30,31,42,44,47,50,51,52,53],worker:53,workload:[6,25,39,42,44],workspac:26,worktre:26,worri:[29,31],wors:[6,51],worst:[6,29],worthwhil:6,would:[6,12,13,14,17,19,26,29,30,37,42,43,44,50,51],wrap:51,write:[0,4,6,10,11,13,21,23,25,30,31,41,42,43,44,47,50,51,52,53,73,93,105,132],write_request_timeout:31,writer:[4,6,23],writetim:[9,14],writetimeoutexcept:6,written:[4,6,9,20,31,39,42,43,47],wrong:6,wrte:47,www:[6,11,28,35],xlarg:44,xml:[28,32],xmn220m:26,xms1024m:26,xmx1024m:26,xmx:44,xss256k:26,xvf:35,yaml:[4,6,14,28,32,35,47,50,51,52,61,144,146],year:[13,21],yes:[9,11,50],yet:[11,47],yield:[13,52,145],yml:28,you:[4,5,6,8,10,11,12,13,14,16,17,18,20,21,23,24,26,27,30,31,32,33,34,35,36,37,42,47,50,51,52,53,56,105,134],younger:14,your:[0,5,6,8,10,11,12,23,26,29,30,31,32,35,37,42,44,50,51,53],yourself:[24,30],yyyi:[17,21],z_0:[11,16,18],zero:[6,10,31,47,51],zip:21,zipcod:21,zone:[6,21,51],zstd:4,zzzzz:29},titles:["Dynamo","Guarantees","Architecture","Overview","Storage Engine","Reporting Bugs and Contributing","Cassandra Configuration File","Configuring Cassandra","Contact us","Appendices","Changes","Data Definition","Definitions","Data Manipulation","Functions","The Cassandra Query Language (CQL)","Secondary Indexes","JSON Support","Materialized Views","Security","Triggers","Data Types","Data Modeling","Code Style","How-to Commit","Review Checklist","Building and IDE Integration","Cassandra Development","License Compliance","Contributing Code Changes","Testing","Frequently Asked Questions","Configuring Cassandra","Client drivers","Getting Started","Installing Cassandra","Inserting and querying","Welcome to Apache Cassandra\u2019s documentation!","Backups","Bloom Filters","Bulk Loading","Change Data Capture","Compaction","Compression","Hardware Choices","Hints","Operating Cassandra","Monitoring","Read repair","Repair","Security","Snitch","Adding, replacing, moving and removing nodes","cqlsh: the CQL shell","Cassandra Tools","Nodetool","assassinate","bootstrap","cleanup","clearsnapshot","compact","compactionhistory","compactionstats","decommission","describecluster","describering","disableautocompaction","disablebackup","disablebinary","disablegossip","disablehandoff","disablehintsfordc","disablethrift","drain","enableautocompaction","enablebackup","enablebinary","enablegossip","enablehandoff","enablehintsfordc","enablethrift","failuredetector","flush","garbagecollect","gcstats","getcompactionthreshold","getcompactionthroughput","getconcurrentcompactors","getendpoints","getinterdcstreamthroughput","getlogginglevels","getsstables","getstreamthroughput","gettimeout","gettraceprobability","gossipinfo","help","info","invalidatecountercache","invalidatekeycache","invalidaterowcache","join","listsnapshots","move","netstats","Nodetool","pausehandoff","proxyhistograms","rangekeysample","rebuild","rebuild_index","refresh","refreshsizeestimates","reloadlocalschema","reloadtriggers","relocatesstables","removenode","repair","replaybatchlog","resetlocalschema","resumehandoff","ring","scrub","setcachecapacity","setcachekeystosave","setcompactionthreshold","setcompactionthroughput","setconcurrentcompactors","sethintedhandoffthrottlekb","setinterdcstreamthroughput","setlogginglevel","setstreamthroughput","settimeout","settraceprobability","snapshot","status","statusbackup","statusbinary","statusgossip","statushandoff","statusthrift","stop","stopdaemon","tablehistograms","tablestats","toppartitions","tpstats","truncatehints","upgradesstables","verify","version","viewbuildstatus","Troubleshooting"],titleterms:{"class":51,"function":[13,14,17],"import":23,"long":30,"new":31,"static":11,"switch":42,Adding:52,IDE:26,IDEs:23,LCS:42,TLS:50,The:[11,13,15,17,42],USE:11,Use:43,Uses:43,Using:26,Will:31,With:50,access:50,add:31,address:31,advanc:43,after:52,aggreg:14,alias:13,all:[19,31],alloc:52,allocate_tokens_for_keyspac:6,allow:13,alter:[11,18,19,21],ani:31,apach:37,appendic:9,appendix:9,architectur:2,ask:31,assassin:56,assign:52,auth:50,authent:[6,19,50],author:[6,50],auto_snapshot:6,automat:19,avg:14,back_pressure_en:6,back_pressure_strategi:6,backup:38,batch:[13,31],batch_size_fail_threshold_in_kb:6,batch_size_warn_threshold_in_kb:6,batchlog_replay_throttle_in_kb:6,befor:29,benefit:43,binari:35,blob:[14,31],bloom:39,boilerpl:23,bootstrap:[31,42,52,57],branch:29,broadcast_address:6,broadcast_rpc_address:6,buffer_pool_use_heap_if_exhaust:6,bufferpool:47,bug:[5,29],build:26,bulk:[31,40],cach:[11,47,50],call:31,can:31,captur:[41,53],cas_contention_timeout_in_m:6,cassandra:[6,7,15,17,26,27,30,31,32,35,37,41,46,50,54],cast:14,cdc:41,cdc_enabl:6,cdc_free_space_check_interval_m:6,cdc_raw_directori:6,cdc_total_space_in_mb:6,chang:[10,29,31,32,39,41,42],characterist:21,checklist:25,choic:44,choos:29,circleci:30,claus:13,cleanup:[52,58],clear:53,clearsnapshot:59,client:[33,36,47,50],client_encryption_opt:6,clojur:33,cloud:44,cluster:[11,31],cluster_nam:6,code:[23,29],collect:[21,42],column:11,column_index_cache_size_in_kb:6,column_index_size_in_kb:6,command:[26,42,53],comment:12,commit:24,commit_failure_polici:6,commitlog:[4,47],commitlog_compress:6,commitlog_directori:6,commitlog_segment_size_in_mb:6,commitlog_sync:6,commitlog_sync_batch_window_in_m:6,commitlog_sync_period_in_m:6,commitlog_total_space_in_mb:6,commitlogseg:41,common:[11,42,44],compact:[9,11,42,47,60],compaction_large_partition_warning_threshold_mb:6,compaction_throughput_mb_per_sec:6,compactionhistori:61,compactionstat:62,compactionstrategi:42,compat:53,complianc:28,compress:[11,43],concern:42,concurrent_compactor:6,concurrent_counter_writ:6,concurrent_materialized_view_writ:6,concurrent_read:6,concurrent_writ:6,condition:19,configur:[6,7,32,41,43],connect:31,consider:11,consist:[0,53],constant:12,contact:8,contribut:[5,29],control:19,convent:[12,23],convers:14,copi:53,count:14,counter:[13,21],counter_cache_keys_to_sav:6,counter_cache_save_period:6,counter_cache_size_in_mb:6,counter_write_request_timeout_in_m:6,cpu:44,cql:[9,15,47,53],cqlsh:[36,53],cqlshrc:53,creat:[11,14,16,18,19,20,21,29],credenti:19,credentials_update_interval_in_m:6,credentials_validity_in_m:6,cross_node_timeout:6,cstar_perf:30,custom:21,cython:53,data:[11,13,17,19,21,22,31,41,42,52],data_file_directori:6,databas:19,date:21,dead:52,debian:35,debug:26,decommiss:63,defin:[14,21],definit:[11,12],defragment:42,delet:[13,31,42],depend:53,describ:[53,65],describeclust:64,detail:42,detect:0,develop:27,dies:31,directori:[32,42],disabl:41,disableautocompact:66,disablebackup:67,disablebinari:68,disablegossip:69,disablehandoff:70,disablehintsfordc:71,disablethrift:72,disk:[31,44],disk_failure_polici:6,disk_optimization_strategi:6,document:37,doe:31,drain:73,driver:[33,36],drop:[9,11,14,16,18,19,20,21,31],droppedmessag:47,dtest:30,durat:21,dynam:51,dynamic_snitch_badness_threshold:6,dynamic_snitch_reset_interval_in_m:6,dynamic_snitch_update_interval_in_m:6,dynamo:0,each:31,eclips:26,email:31,enabl:[41,50],enable_materialized_view:6,enable_sasi_index:6,enable_scripted_user_defined_funct:6,enable_user_defined_funct:6,enableautocompact:74,enablebackup:75,enablebinari:76,enablegossip:77,enablehandoff:78,enablehintsfordc:79,enablethrift:80,encod:17,encrypt:50,endpoint_snitch:6,engin:4,entri:31,environ:32,erlang:33,error:31,even:31,except:23,exist:31,exit:53,expand:53,experiment:6,expir:42,factor:31,fail:[31,52],failur:[0,31],failuredetector:81,featur:6,file:[6,23,35],file_cache_size_in_mb:6,filedescriptorratio:47,filter:[13,39],fix:29,flush:82,format:23,frequent:31,from:[26,31,35,53],fromjson:17,fulli:42,further:41,garbag:42,garbagecollect:83,garbagecollector:47,gc_grace_second:42,gc_log_threshold_in_m:6,gc_warn_threshold_in_m:6,gcstat:84,gener:23,get:34,getcompactionthreshold:85,getcompactionthroughput:86,getconcurrentcompactor:87,getendpoint:88,getinterdcstreamthroughput:89,getlogginglevel:90,getsstabl:91,getstreamthroughput:92,gettimeout:93,gettraceprob:94,give:31,gossip:0,gossipinfo:95,grace:42,grant:19,group:13,guarante:1,handl:23,hang:52,happen:31,hardwar:44,haskel:33,heap:31,help:[53,96],hint:45,hinted_handoff_disabled_datacent:6,hinted_handoff_en:6,hinted_handoff_throttle_in_kb:6,hintedhandoff:47,hints_compress:6,hints_directori:6,hints_flush_period_in_m:6,host:[31,53],how:[24,31],idea:26,identifi:12,impact:43,incremental_backup:6,index:[16,47],index_summary_capacity_in_mb:6,index_summary_resize_interval_in_minut:6,info:97,initial_token:6,insert:[13,17,36],instal:35,integr:[26,50],intellij:26,inter:50,inter_dc_stream_throughput_outbound_megabits_per_sec:6,inter_dc_tcp_nodelai:6,intern:[19,50],internode_authent:6,internode_compress:6,internode_recv_buff_size_in_byt:6,internode_send_buff_size_in_byt:6,invalidatecountercach:98,invalidatekeycach:99,invalidaterowcach:100,irc:8,java:[31,33],jconsol:31,jmx:[31,42,47,50],join:[31,101],json:17,jvm:47,kei:[11,16,18],key_cache_keys_to_sav:6,key_cache_save_period:6,key_cache_size_in_mb:6,keyspac:[11,31,47],keyword:[9,12],lang:31,languag:15,larg:31,level:[0,42],licens:28,limit:13,line:[26,53],list:[8,19,21,31],listen:31,listen_address:[6,31],listen_interfac:6,listen_interface_prefer_ipv6:6,listen_on_broadcast_address:6,listsnapshot:102,liter:21,live:31,load:[31,40],locat:32,log:[31,32,42],login:53,lot:31,made:31,mail:8,main:32,major:42,manipul:13,manual:52,map:[16,21,31],materi:18,max:[14,31],max_hint_window_in_m:6,max_hints_delivery_thread:6,max_hints_file_size_in_mb:6,max_value_size_in_mb:6,maxtimeuuid:14,mean:31,memori:[31,44,47],memorypool:47,memtabl:4,memtable_allocation_typ:6,memtable_cleanup_threshold:6,memtable_flush_writ:6,memtable_heap_space_in_mb:6,memtable_offheap_space_in_mb:6,merg:42,messag:31,method:31,metric:47,min:14,minor:42,mintimeuuid:14,model:22,monitor:[47,52],more:[31,42],move:[52,103],movement:52,multilin:23,nativ:[14,21],native_transport_max_concurrent_connect:6,native_transport_max_concurrent_connections_per_ip:6,native_transport_max_frame_size_in_mb:6,native_transport_max_thread:6,native_transport_port:6,native_transport_port_ssl:6,net:33,netstat:104,networktopologystrategi:0,newer:26,node:[31,50,52],nodej:33,nodetool:[31,42,55,105],noteworthi:21,now:14,num_token:6,one:31,onli:31,oper:[31,42,43,46],option:[11,18,42,53],order:[11,13],otc_backlog_expiration_interval_m:6,otc_coalescing_enough_coalesced_messag:6,otc_coalescing_strategi:6,otc_coalescing_window_u:6,other:[11,31],outofmemoryerror:31,overview:[3,41],packag:35,page:53,paramet:[13,41,42],partit:11,partition:6,password:50,patch:29,pausehandoff:106,perform:30,permiss:19,permissions_update_interval_in_m:6,permissions_validity_in_m:6,phi_convict_threshold:6,php:33,pick:0,point:31,port:31,prepar:12,prepared_statements_cache_size_mb:6,prerequisit:35,primari:[11,18],progress:52,project:26,properti:32,proxyhistogram:107,python:33,pytz:53,queri:[15,36],question:31,rang:[0,52],range_request_timeout_in_m:6,rangekeysampl:108,read:[41,48],read_request_timeout_in_m:6,rebuild:109,rebuild_index:110,refresh:111,refreshsizeestim:112,refus:31,releas:29,reloadlocalschema:113,reloadtrigg:114,relocatesst:115,remot:31,remov:[42,52],removenod:116,repair:[42,48,49,117],repair_session_max_tree_depth:6,replac:52,replaybatchlog:118,replic:[0,31],replica_filtering_protect:6,report:[5,31,47],request:47,request_schedul:6,request_scheduler_id:6,request_scheduler_opt:6,request_timeout_in_m:6,reserv:9,resetlocalschema:119,result:13,resum:52,resumehandoff:120,revers:11,review:25,revok:19,rhel:31,right:29,ring:[0,31,121],role:[19,50],role_manag:6,roles_update_interval_in_m:6,roles_validity_in_m:6,row_cache_class_nam:6,row_cache_keys_to_sav:6,row_cache_save_period:6,row_cache_size_in_mb:6,rpc_address:6,rpc_interfac:6,rpc_interface_prefer_ipv6:6,rpc_keepal:6,rpc_max_thread:6,rpc_min_thread:6,rpc_port:6,rpc_recv_buff_size_in_byt:6,rpc_send_buff_size_in_byt:6,rpc_server_typ:6,rubi:33,run:30,runtim:32,rust:33,safeti:6,sai:31,same:31,saved_caches_directori:6,scala:33,scalar:14,scrub:122,secondari:16,secur:[19,50],see:31,seed:31,seed_provid:6,select:[13,17,18],selector:13,serial:53,server_encryption_opt:6,session:53,set:[19,21,26,31],setcachecapac:123,setcachekeystosav:124,setcompactionthreshold:125,setcompactionthroughput:126,setconcurrentcompactor:127,sethintedhandoffthrottlekb:128,setinterdcstreamthroughput:129,setlogginglevel:130,setstreamthroughput:131,settimeout:132,settraceprob:133,setup:26,share:53,shell:53,show:[31,53],signatur:14,simplestrategi:0,singl:[31,42],size:42,slow_query_log_timeout_in_m:6,snapshot:134,snapshot_before_compact:6,snitch:51,sourc:[26,53],special:53,speed:31,ssl:50,ssl_storage_port:6,sstabl:[4,42,47],sstable_preemptive_open_interval_in_mb:6,stai:31,standard:50,start:[26,29,34],start_native_transport:6,start_rpc:6,starv:42,statement:[12,18,23],statu:135,statusbackup:136,statusbinari:137,statusgossip:138,statushandoff:139,statusthrift:140,stc:42,stop:141,stopdaemon:142,storag:[4,9,47],storage_port:6,store:31,strategi:42,stream:[31,47,52],stream_throughput_outbound_megabits_per_sec:6,streaming_keep_alive_period_in_sec:6,stress:30,style:23,sum:14,support:17,tabl:[11,41,47],tablehistogram:143,tablestat:144,tarbal:35,term:12,test:[26,30],than:31,thei:31,though:31,threadpool:47,threshold:6,thrift_framed_transport_size_in_mb:6,thrift_prepared_statements_cache_size_mb:6,tick:29,tier:42,time:[14,21,42],timestamp:[21,31],timeuuid:14,timewindowcompactionstrategi:42,tock:29,todo:[0,1,3,11,22,38,40,45,48,49,55],tojson:17,token:[0,14,52],tombston:42,tombstone_failure_threshold:6,tombstone_warn_threshold:6,tool:[30,54],top:31,toppartit:145,tpstat:146,trace:53,tracetype_query_ttl:6,tracetype_repair_ttl:6,transparent_data_encryption_opt:6,trickle_fsync:6,trickle_fsync_interval_in_kb:6,trigger:[20,42],troubleshoot:152,truncat:11,truncate_request_timeout_in_m:6,truncatehint:147,ttl:[13,42],tunabl:0,tupl:21,two:31,type:[9,17,21,42,47],udt:21,unabl:31,unit:[26,30],unlog:13,unlogged_batch_across_partitions_warn_threshold:6,unrepair:42,unsubscrib:31,updat:[13,31],upgradesst:148,usag:[31,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],use:31,user:[14,19,21],using:[31,42],uuid:14,variabl:32,verifi:149,version:[10,53,150],view:18,viewbuildstatu:151,warn:41,welcom:37,what:[29,31],when:[31,42],where:13,whitespac:23,why:[31,42],window:42,windows_timer_interv:6,without:42,work:[21,29],write_request_timeout_in_m:6,writetim:13,yaml:41,you:29}})
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/cqlsh.html b/src/doc/3.11.11/tools/cqlsh.html
new file mode 100644
index 0000000..4fb22c7
--- /dev/null
+++ b/src/doc/3.11.11/tools/cqlsh.html
@@ -0,0 +1,481 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-title: "cqlsh: the CQL shell"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Cassandra Tools" href="index.html"/>
+      <link rel="next" title="Nodetool" href="nodetool.html"/>
+      <link rel="prev" title="Cassandra Tools" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">cqlsh: the CQL shell</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#compatibility">Compatibility</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#optional-dependencies">Optional Dependencies</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cqlshrc">cqlshrc</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#command-line-options">Command Line Options</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#special-commands">Special Commands</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="nodetool.html">Nodetool</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cqlsh-the-cql-shell">
+<span id="cqlsh"></span><h1>cqlsh: the CQL shell<a class="headerlink" href="#cqlsh-the-cql-shell" title="Permalink to this headline">¶</a></h1>
+<p>cqlsh is a command line shell for interacting with Cassandra through CQL (the Cassandra Query Language).  It is shipped
+with every Cassandra package, and can be found in the bin/ directory alongside the cassandra executable.  cqlsh utilizes
+the Python native protocol driver, and connects to the single node specified on the command line.</p>
+<div class="section" id="compatibility">
+<h2>Compatibility<a class="headerlink" href="#compatibility" title="Permalink to this headline">¶</a></h2>
+<p>cqlsh is compatible with Python 2.7.</p>
+<p>In general, a given version of cqlsh is only guaranteed to work with the version of Cassandra that it was released with.
+In some cases, cqlsh make work with older or newer versions of Cassandra, but this is not officially supported.</p>
+</div>
+<div class="section" id="optional-dependencies">
+<h2>Optional Dependencies<a class="headerlink" href="#optional-dependencies" title="Permalink to this headline">¶</a></h2>
+<p>cqlsh ships with all essential dependencies.  However, there are some optional dependencies that can be installed to
+improve the capabilities of cqlsh.</p>
+<div class="section" id="pytz">
+<h3>pytz<a class="headerlink" href="#pytz" title="Permalink to this headline">¶</a></h3>
+<p>By default, cqlsh displays all timestamps with a UTC timezone.  To support display of timestamps with another timezone,
+the <a class="reference external" href="http://pytz.sourceforge.net/">pytz</a> library must be installed.  See the <code class="docutils literal notranslate"><span class="pre">timezone</span></code> option in <a class="reference internal" href="#cqlshrc">cqlshrc</a> for
+specifying a timezone to use.</p>
+</div>
+<div class="section" id="cython">
+<h3>cython<a class="headerlink" href="#cython" title="Permalink to this headline">¶</a></h3>
+<p>The performance of cqlsh’s <code class="docutils literal notranslate"><span class="pre">COPY</span></code> operations can be improved by installing <a class="reference external" href="http://cython.org/">cython</a>.  This will
+compile the python modules that are central to the performance of <code class="docutils literal notranslate"><span class="pre">COPY</span></code>.</p>
+</div>
+</div>
+<div class="section" id="cqlshrc">
+<h2>cqlshrc<a class="headerlink" href="#cqlshrc" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">cqlshrc</span></code> file holds configuration options for cqlsh.  By default this is in the user’s home directory at
+<code class="docutils literal notranslate"><span class="pre">~/.cassandra/cqlsh</span></code>, but a custom location can be specified with the <code class="docutils literal notranslate"><span class="pre">--cqlshrc</span></code> option.</p>
+<p>Example config values and documentation can be found in the <code class="docutils literal notranslate"><span class="pre">conf/cqlshrc.sample</span></code> file of a tarball installation.  You
+can also view the latest version of <a class="reference external" href="https://github.com/apache/cassandra/blob/trunk/conf/cqlshrc.sample">cqlshrc online</a>.</p>
+</div>
+<div class="section" id="command-line-options">
+<h2>Command Line Options<a class="headerlink" href="#command-line-options" title="Permalink to this headline">¶</a></h2>
+<p>Usage:</p>
+<p><code class="docutils literal notranslate"><span class="pre">cqlsh</span> <span class="pre">[options]</span> <span class="pre">[host</span> <span class="pre">[port]]</span></code></p>
+<p>Options:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">-C</span></code> <code class="docutils literal notranslate"><span class="pre">--color</span></code></dt>
+<dd>Force color output</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--no-color</span></code></dt>
+<dd>Disable color output</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--browser</span></code></dt>
+<dd>Specify the browser to use for displaying cqlsh help.  This can be one of the <a class="reference external" href="https://docs.python.org/2/library/webbrowser.html">supported browser names</a> (e.g. <code class="docutils literal notranslate"><span class="pre">firefox</span></code>) or a browser path followed by <code class="docutils literal notranslate"><span class="pre">%s</span></code> (e.g.
+<code class="docutils literal notranslate"><span class="pre">/usr/bin/google-chrome-stable</span> <span class="pre">%s</span></code>).</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--ssl</span></code></dt>
+<dd>Use SSL when connecting to Cassandra</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-u</span></code> <code class="docutils literal notranslate"><span class="pre">--user</span></code></dt>
+<dd>Username to authenticate against Cassandra with</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-p</span></code> <code class="docutils literal notranslate"><span class="pre">--password</span></code></dt>
+<dd>Password to authenticate against Cassandra with, should
+be used in conjunction with <code class="docutils literal notranslate"><span class="pre">--user</span></code></dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-k</span></code> <code class="docutils literal notranslate"><span class="pre">--keyspace</span></code></dt>
+<dd>Keyspace to authenticate to, should be used in conjunction
+with <code class="docutils literal notranslate"><span class="pre">--user</span></code></dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-f</span></code> <code class="docutils literal notranslate"><span class="pre">--file</span></code></dt>
+<dd>Execute commands from the given file, then exit</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--debug</span></code></dt>
+<dd>Print additional debugging information</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--encoding</span></code></dt>
+<dd>Specify a non-default encoding for output (defaults to UTF-8)</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--cqlshrc</span></code></dt>
+<dd>Specify a non-default location for the <code class="docutils literal notranslate"><span class="pre">cqlshrc</span></code> file</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-e</span></code> <code class="docutils literal notranslate"><span class="pre">--execute</span></code></dt>
+<dd>Execute the given statement, then exit</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--connect-timeout</span></code></dt>
+<dd>Specify the connection timeout in seconds (defaults to 2s)</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--request-timeout</span></code></dt>
+<dd>Specify the request timeout in seconds (defaults to 10s)</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-t</span></code> <code class="docutils literal notranslate"><span class="pre">--tty</span></code></dt>
+<dd>Force tty mode (command prompt)</dd>
+</dl>
+</div>
+<div class="section" id="special-commands">
+<h2>Special Commands<a class="headerlink" href="#special-commands" title="Permalink to this headline">¶</a></h2>
+<p>In addition to supporting regular CQL statements, cqlsh also supports a number of special commands that are not part of
+CQL.  These are detailed below.</p>
+<div class="section" id="consistency">
+<h3><code class="docutils literal notranslate"><span class="pre">CONSISTENCY</span></code><a class="headerlink" href="#consistency" title="Permalink to this headline">¶</a></h3>
+<p><cite>Usage</cite>: <code class="docutils literal notranslate"><span class="pre">CONSISTENCY</span> <span class="pre">&lt;consistency</span> <span class="pre">level&gt;</span></code></p>
+<p>Sets the consistency level for operations to follow.  Valid arguments include:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">ANY</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">ONE</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">TWO</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">THREE</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">QUORUM</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">ALL</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">LOCAL_QUORUM</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">LOCAL_ONE</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">SERIAL</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">LOCAL_SERIAL</span></code></li>
+</ul>
+</div>
+<div class="section" id="serial-consistency">
+<h3><code class="docutils literal notranslate"><span class="pre">SERIAL</span> <span class="pre">CONSISTENCY</span></code><a class="headerlink" href="#serial-consistency" title="Permalink to this headline">¶</a></h3>
+<p><cite>Usage</cite>: <code class="docutils literal notranslate"><span class="pre">SERIAL</span> <span class="pre">CONSISTENCY</span> <span class="pre">&lt;consistency</span> <span class="pre">level&gt;</span></code></p>
+<p>Sets the serial consistency level for operations to follow.  Valid arguments include:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">SERIAL</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">LOCAL_SERIAL</span></code></li>
+</ul>
+<p>The serial consistency level is only used by conditional updates (<code class="docutils literal notranslate"><span class="pre">INSERT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> with an <code class="docutils literal notranslate"><span class="pre">IF</span></code>
+condition). For those, the serial consistency level defines the consistency level of the serial phase (or “paxos” phase)
+while the normal consistency level defines the consistency for the “learn” phase, i.e. what type of reads will be
+guaranteed to see the update right away. For example, if a conditional write has a consistency level of <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code> (and
+is successful), then a <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code> read is guaranteed to see that write. But if the regular consistency level of that
+write is <code class="docutils literal notranslate"><span class="pre">ANY</span></code>, then only a read with a consistency level of <code class="docutils literal notranslate"><span class="pre">SERIAL</span></code> is guaranteed to see it (even a read with
+consistency <code class="docutils literal notranslate"><span class="pre">ALL</span></code> is not guaranteed to be enough).</p>
+</div>
+<div class="section" id="show-version">
+<h3><code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">VERSION</span></code><a class="headerlink" href="#show-version" title="Permalink to this headline">¶</a></h3>
+<p>Prints the cqlsh, Cassandra, CQL, and native protocol versions in use.  Example:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; SHOW VERSION
+[cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
+</pre></div>
+</div>
+</div>
+<div class="section" id="show-host">
+<h3><code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">HOST</span></code><a class="headerlink" href="#show-host" title="Permalink to this headline">¶</a></h3>
+<p>Prints the IP address and port of the Cassandra node that cqlsh is connected to in addition to the cluster name.
+Example:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; SHOW HOST
+Connected to Prod_Cluster at 192.0.0.1:9042.
+</pre></div>
+</div>
+</div>
+<div class="section" id="show-session">
+<h3><code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">SESSION</span></code><a class="headerlink" href="#show-session" title="Permalink to this headline">¶</a></h3>
+<p>Pretty prints a specific tracing session.</p>
+<p><cite>Usage</cite>: <code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">SESSION</span> <span class="pre">&lt;session</span> <span class="pre">id&gt;</span></code></p>
+<p>Example usage:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; SHOW SESSION 95ac6470-327e-11e6-beca-dfb660d92ad8
+
+Tracing session: 95ac6470-327e-11e6-beca-dfb660d92ad8
+
+ activity                                                  | timestamp                  | source    | source_elapsed | client
+-----------------------------------------------------------+----------------------------+-----------+----------------+-----------
+                                        Execute CQL3 query | 2016-06-14 17:23:13.979000 | 127.0.0.1 |              0 | 127.0.0.1
+ Parsing SELECT * FROM system.local; [SharedPool-Worker-1] | 2016-06-14 17:23:13.982000 | 127.0.0.1 |           3843 | 127.0.0.1
+...
+</pre></div>
+</div>
+</div>
+<div class="section" id="source">
+<h3><code class="docutils literal notranslate"><span class="pre">SOURCE</span></code><a class="headerlink" href="#source" title="Permalink to this headline">¶</a></h3>
+<p>Reads the contents of a file and executes each line as a CQL statement or special cqlsh command.</p>
+<p><cite>Usage</cite>: <code class="docutils literal notranslate"><span class="pre">SOURCE</span> <span class="pre">&lt;string</span> <span class="pre">filename&gt;</span></code></p>
+<p>Example usage:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; SOURCE &#39;/home/thobbs/commands.cql&#39;
+</pre></div>
+</div>
+</div>
+<div class="section" id="capture">
+<h3><code class="docutils literal notranslate"><span class="pre">CAPTURE</span></code><a class="headerlink" href="#capture" title="Permalink to this headline">¶</a></h3>
+<p>Begins capturing command output and appending it to a specified file.  Output will not be shown at the console while it
+is captured.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CAPTURE &#39;&lt;file&gt;&#39;;
+CAPTURE OFF;
+CAPTURE;
+</pre></div>
+</div>
+<p>That is, the path to the file to be appended to must be given inside a string literal. The path is interpreted relative
+to the current working directory. The tilde shorthand notation (<code class="docutils literal notranslate"><span class="pre">'~/mydir'</span></code>) is supported for referring to <code class="docutils literal notranslate"><span class="pre">$HOME</span></code>.</p>
+<p>Only query result output is captured. Errors and output from cqlsh-only commands will still be shown in the cqlsh
+session.</p>
+<p>To stop capturing output and show it in the cqlsh session again, use <code class="docutils literal notranslate"><span class="pre">CAPTURE</span> <span class="pre">OFF</span></code>.</p>
+<p>To inspect the current capture configuration, use <code class="docutils literal notranslate"><span class="pre">CAPTURE</span></code> with no arguments.</p>
+</div>
+<div class="section" id="help">
+<h3><code class="docutils literal notranslate"><span class="pre">HELP</span></code><a class="headerlink" href="#help" title="Permalink to this headline">¶</a></h3>
+<p>Gives information about cqlsh commands. To see available topics, enter <code class="docutils literal notranslate"><span class="pre">HELP</span></code> without any arguments. To see help on a
+topic, use <code class="docutils literal notranslate"><span class="pre">HELP</span> <span class="pre">&lt;topic&gt;</span></code>.  Also see the <code class="docutils literal notranslate"><span class="pre">--browser</span></code> argument for controlling what browser is used to display help.</p>
+</div>
+<div class="section" id="tracing">
+<h3><code class="docutils literal notranslate"><span class="pre">TRACING</span></code><a class="headerlink" href="#tracing" title="Permalink to this headline">¶</a></h3>
+<p>Enables or disables tracing for queries.  When tracing is enabled, once a query completes, a trace of the events during
+the query will be printed.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>TRACING ON
+TRACING OFF
+</pre></div>
+</div>
+</div>
+<div class="section" id="paging">
+<h3><code class="docutils literal notranslate"><span class="pre">PAGING</span></code><a class="headerlink" href="#paging" title="Permalink to this headline">¶</a></h3>
+<p>Enables paging, disables paging, or sets the page size for read queries.  When paging is enabled, only one page of data
+will be fetched at a time and a prompt will appear to fetch the next page.  Generally, it’s a good idea to leave paging
+enabled in an interactive session to avoid fetching and printing large amounts of data at once.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>PAGING ON
+PAGING OFF
+PAGING &lt;page size in rows&gt;
+</pre></div>
+</div>
+</div>
+<div class="section" id="expand">
+<h3><code class="docutils literal notranslate"><span class="pre">EXPAND</span></code><a class="headerlink" href="#expand" title="Permalink to this headline">¶</a></h3>
+<p>Enables or disables vertical printing of rows.  Enabling <code class="docutils literal notranslate"><span class="pre">EXPAND</span></code> is useful when many columns are fetched, or the
+contents of a single column are large.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>EXPAND ON
+EXPAND OFF
+</pre></div>
+</div>
+</div>
+<div class="section" id="login">
+<h3><code class="docutils literal notranslate"><span class="pre">LOGIN</span></code><a class="headerlink" href="#login" title="Permalink to this headline">¶</a></h3>
+<p>Authenticate as a specified Cassandra user for the current session.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>LOGIN &lt;username&gt; [&lt;password&gt;]
+</pre></div>
+</div>
+</div>
+<div class="section" id="exit">
+<h3><code class="docutils literal notranslate"><span class="pre">EXIT</span></code><a class="headerlink" href="#exit" title="Permalink to this headline">¶</a></h3>
+<p>Ends the current session and terminates the cqlsh process.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>EXIT
+QUIT
+</pre></div>
+</div>
+</div>
+<div class="section" id="clear">
+<h3><code class="docutils literal notranslate"><span class="pre">CLEAR</span></code><a class="headerlink" href="#clear" title="Permalink to this headline">¶</a></h3>
+<p>Clears the console.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CLEAR
+CLS
+</pre></div>
+</div>
+</div>
+<div class="section" id="describe">
+<h3><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code><a class="headerlink" href="#describe" title="Permalink to this headline">¶</a></h3>
+<p>Prints a description (typically a series of DDL statements) of a schema element or the cluster.  This is useful for
+dumping all or portions of the schema.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>DESCRIBE CLUSTER
+DESCRIBE SCHEMA
+DESCRIBE KEYSPACES
+DESCRIBE KEYSPACE &lt;keyspace name&gt;
+DESCRIBE TABLES
+DESCRIBE TABLE &lt;table name&gt;
+DESCRIBE INDEX &lt;index name&gt;
+DESCRIBE MATERIALIZED VIEW &lt;view name&gt;
+DESCRIBE TYPES
+DESCRIBE TYPE &lt;type name&gt;
+DESCRIBE FUNCTIONS
+DESCRIBE FUNCTION &lt;function name&gt;
+DESCRIBE AGGREGATES
+DESCRIBE AGGREGATE &lt;aggregate function name&gt;
+</pre></div>
+</div>
+<p>In any of the commands, <code class="docutils literal notranslate"><span class="pre">DESC</span></code> may be used in place of <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code>.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span> <span class="pre">CLUSTER</span></code> command prints the cluster name and partitioner:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; DESCRIBE CLUSTER
+
+Cluster: Test Cluster
+Partitioner: Murmur3Partitioner
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span> <span class="pre">SCHEMA</span></code> command prints the DDL statements needed to recreate the entire schema.  This is especially
+useful for dumping the schema in order to clone a cluster or restore from a backup.</p>
+</div>
+<div class="section" id="copy-to">
+<h3><code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code><a class="headerlink" href="#copy-to" title="Permalink to this headline">¶</a></h3>
+<p>Copies data from a table to a CSV file.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>COPY &lt;table name&gt; [(&lt;column&gt;, ...)] TO &lt;file name&gt; WITH &lt;copy option&gt; [AND &lt;copy option&gt; ...]
+</pre></div>
+</div>
+<p>If no columns are specified, all columns from the table will be copied to the CSV file.  A subset of columns to copy may
+be specified by adding a comma-separated list of column names surrounded by parenthesis after the table name.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">&lt;file</span> <span class="pre">name&gt;</span></code> should be a string literal (with single quotes) representing a path to the destination file.  This
+can also the special value <code class="docutils literal notranslate"><span class="pre">STDOUT</span></code> (without single quotes) to print the CSV to stdout.</p>
+<p>See <a class="reference internal" href="#shared-copy-options"><span class="std std-ref">Shared COPY Options</span></a> for options that apply to both <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code> and <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">FROM</span></code>.</p>
+<div class="section" id="options-for-copy-to">
+<h4>Options for <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code><a class="headerlink" href="#options-for-copy-to" title="Permalink to this headline">¶</a></h4>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">MAXREQUESTS</span></code></dt>
+<dd>The maximum number token ranges to fetch simultaneously. Defaults to 6.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">PAGESIZE</span></code></dt>
+<dd>The number of rows to fetch in a single page. Defaults to 1000.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">PAGETIMEOUT</span></code></dt>
+<dd>By default the page timeout is 10 seconds per 1000 entries
+in the page size or 10 seconds if pagesize is smaller.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">BEGINTOKEN</span></code>, <code class="docutils literal notranslate"><span class="pre">ENDTOKEN</span></code></dt>
+<dd>Token range to export.  Defaults to exporting the full ring.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MAXOUTPUTSIZE</span></code></dt>
+<dd>The maximum size of the output file measured in number of lines;
+beyond this maximum the output file will be split into segments.
+-1 means unlimited, and is the default.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">ENCODING</span></code></dt>
+<dd>The encoding used for characters. Defaults to <code class="docutils literal notranslate"><span class="pre">utf8</span></code>.</dd>
+</dl>
+</div>
+</div>
+<div class="section" id="copy-from">
+<h3><code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">FROM</span></code><a class="headerlink" href="#copy-from" title="Permalink to this headline">¶</a></h3>
+<p>Copies data from a CSV file to table.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>COPY &lt;table name&gt; [(&lt;column&gt;, ...)] FROM &lt;file name&gt; WITH &lt;copy option&gt; [AND &lt;copy option&gt; ...]
+</pre></div>
+</div>
+<p>If no columns are specified, all columns from the CSV file will be copied to the table.  A subset
+of columns to copy may be specified by adding a comma-separated list of column names surrounded
+by parenthesis after the table name.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">&lt;file</span> <span class="pre">name&gt;</span></code> should be a string literal (with single quotes) representing a path to the
+source file.  This can also the special value <code class="docutils literal notranslate"><span class="pre">STDIN</span></code> (without single quotes) to read the
+CSV data from stdin.</p>
+<p>See <a class="reference internal" href="#shared-copy-options"><span class="std std-ref">Shared COPY Options</span></a> for options that apply to both <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code> and <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">FROM</span></code>.</p>
+<div class="section" id="id1">
+<h4>Options for <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code><a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h4>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">INGESTRATE</span></code></dt>
+<dd>The maximum number of rows to process per second. Defaults to 100000.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MAXROWS</span></code></dt>
+<dd>The maximum number of rows to import. -1 means unlimited, and is the default.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">SKIPROWS</span></code></dt>
+<dd>A number of initial rows to skip.  Defaults to 0.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">SKIPCOLS</span></code></dt>
+<dd>A comma-separated list of column names to ignore.  By default, no columns are skipped.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MAXPARSEERRORS</span></code></dt>
+<dd>The maximum global number of parsing errors to ignore. -1 means unlimited, and is the default.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MAXINSERTERRORS</span></code></dt>
+<dd>The maximum global number of insert errors to ignore. -1 means unlimited.  The default is 1000.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">ERRFILE</span></code> =</dt>
+<dd>A file to store all rows that could not be imported, by default this is <code class="docutils literal notranslate"><span class="pre">import_&lt;ks&gt;_&lt;table&gt;.err</span></code> where <code class="docutils literal notranslate"><span class="pre">&lt;ks&gt;</span></code> is
+your keyspace and <code class="docutils literal notranslate"><span class="pre">&lt;table&gt;</span></code> is your table name.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MAXBATCHSIZE</span></code></dt>
+<dd>The max number of rows inserted in a single batch. Defaults to 20.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MINBATCHSIZE</span></code></dt>
+<dd>The min number of rows inserted in a single batch. Defaults to 2.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">CHUNKSIZE</span></code></dt>
+<dd>The number of rows that are passed to child worker processes from the main process at a time. Defaults to 1000.</dd>
+</dl>
+</div>
+<div class="section" id="shared-copy-options">
+<span id="id2"></span><h4>Shared COPY Options<a class="headerlink" href="#shared-copy-options" title="Permalink to this headline">¶</a></h4>
+<p>Options that are common to both <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code> and <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">FROM</span></code>.</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">NULLVAL</span></code></dt>
+<dd>The string placeholder for null values.  Defaults to <code class="docutils literal notranslate"><span class="pre">null</span></code>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">HEADER</span></code></dt>
+<dd>For <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code>, controls whether the first line in the CSV output file will contain the column names.  For COPY FROM,
+specifies whether the first line in the CSV input file contains column names.  Defaults to <code class="docutils literal notranslate"><span class="pre">false</span></code>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">DECIMALSEP</span></code></dt>
+<dd>The character that is used as the decimal point separator.  Defaults to <code class="docutils literal notranslate"><span class="pre">.</span></code>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">THOUSANDSSEP</span></code></dt>
+<dd>The character that is used to separate thousands. Defaults to the empty string.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">BOOLSTYlE</span></code></dt>
+<dd>The string literal format for boolean values.  Defaults to <code class="docutils literal notranslate"><span class="pre">True,False</span></code>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">NUMPROCESSES</span></code></dt>
+<dd>The number of child worker processes to create for <code class="docutils literal notranslate"><span class="pre">COPY</span></code> tasks.  Defaults to a max of 4 for <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">FROM</span></code> and 16
+for <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code>.  However, at most (num_cores - 1) processes will be created.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MAXATTEMPTS</span></code></dt>
+<dd>The maximum number of failed attempts to fetch a range of data (when using <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code>) or insert a chunk of data
+(when using <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">FROM</span></code>) before giving up. Defaults to 5.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">REPORTFREQUENCY</span></code></dt>
+<dd>How often status updates are refreshed, in seconds.  Defaults to 0.25.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">RATEFILE</span></code></dt>
+<dd>An optional file to output rate statistics to.  By default, statistics are not output to a file.</dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="nodetool.html" class="btn btn-default pull-right " role="button" title="Nodetool" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Cassandra Tools" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/index.html b/src/doc/3.11.11/tools/index.html
new file mode 100644
index 0000000..741a921
--- /dev/null
+++ b/src/doc/3.11.11/tools/index.html
@@ -0,0 +1,111 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Cassandra Tools"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="next" title="cqlsh: the CQL shell" href="cqlsh.html"/>
+      <link rel="prev" title="Hardware Choices" href="../operating/hardware.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Cassandra Tools</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="nodetool.html">Nodetool</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cassandra-tools">
+<h1>Cassandra Tools<a class="headerlink" href="#cassandra-tools" title="Permalink to this headline">¶</a></h1>
+<p>This section describes the command line tools provided with Apache Cassandra.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l1"><a class="reference internal" href="nodetool.html">Nodetool</a></li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="cqlsh.html" class="btn btn-default pull-right " role="button" title="cqlsh: the CQL shell" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../operating/hardware.html" class="btn btn-default" role="button" title="Hardware Choices" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool.html b/src/doc/3.11.11/tools/nodetool.html
new file mode 100644
index 0000000..0d1cb4c
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool.html
@@ -0,0 +1,111 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-title: "Nodetool"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="up" title="Cassandra Tools" href="index.html"/>
+      <link rel="next" title="Troubleshooting" href="../troubleshooting/index.html"/>
+      <link rel="prev" title="cqlsh: the CQL shell" href="cqlsh.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Nodetool</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="nodetool">
+<span id="id1"></span><h1>Nodetool<a class="headerlink" href="#nodetool" title="Permalink to this headline">¶</a></h1>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">Try to autogenerate this from Nodetool’s help.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../troubleshooting/index.html" class="btn btn-default pull-right " role="button" title="Troubleshooting" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="cqlsh.html" class="btn btn-default" role="button" title="cqlsh: the CQL shell" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/assassinate.html b/src/doc/3.11.11/tools/nodetool/assassinate.html
new file mode 100644
index 0000000..6a35917
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/assassinate.html
@@ -0,0 +1,129 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "assassinate"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="assassinate">
+<span id="nodetool-assassinate"></span><h1>assassinate<a class="headerlink" href="#assassinate" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">assassinate</span> <span class="o">-</span> <span class="n">Forcefully</span> <span class="n">remove</span> <span class="n">a</span> <span class="n">dead</span> <span class="n">node</span> <span class="n">without</span>
+        <span class="n">re</span><span class="o">-</span><span class="n">replicating</span> <span class="nb">any</span> <span class="n">data</span><span class="o">.</span> <span class="n">Use</span> <span class="k">as</span> <span class="n">a</span> <span class="n">last</span> <span class="n">resort</span> <span class="k">if</span> <span class="n">you</span> <span class="n">cannot</span> <span class="n">removenode</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">assassinate</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">ip_address</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">ip_address</span><span class="o">&gt;</span>
+            <span class="n">IP</span> <span class="n">address</span> <span class="n">of</span> <span class="n">the</span> <span class="n">endpoint</span> <span class="n">to</span> <span class="n">assassinate</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/bootstrap.html b/src/doc/3.11.11/tools/nodetool/bootstrap.html
new file mode 100644
index 0000000..7402d02
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/bootstrap.html
@@ -0,0 +1,128 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "bootstrap"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="bootstrap">
+<span id="nodetool-bootstrap"></span><h1>bootstrap<a class="headerlink" href="#bootstrap" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">bootstrap</span> <span class="o">-</span> <span class="n">Monitor</span><span class="o">/</span><span class="n">manage</span> <span class="n">node</span><span class="s1">&#39;s bootstrap process</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="n">bootstrap</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">bootstrap</span>
+                <span class="n">resume</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+<span class="n">COMMANDS</span>
+        <span class="n">With</span> <span class="n">no</span> <span class="n">arguments</span><span class="p">,</span> <span class="n">Display</span> <span class="n">help</span> <span class="n">information</span>
+
+        <span class="n">resume</span>
+            <span class="n">Resume</span> <span class="n">bootstrap</span> <span class="n">streaming</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/cleanup.html b/src/doc/3.11.11/tools/nodetool/cleanup.html
new file mode 100644
index 0000000..bd5dc5c
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/cleanup.html
@@ -0,0 +1,134 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "cleanup"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cleanup">
+<span id="nodetool-cleanup"></span><h1>cleanup<a class="headerlink" href="#cleanup" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">cleanup</span> <span class="o">-</span> <span class="n">Triggers</span> <span class="n">the</span> <span class="n">immediate</span> <span class="n">cleanup</span> <span class="n">of</span> <span class="n">keys</span> <span class="n">no</span> <span class="n">longer</span>
+        <span class="n">belonging</span> <span class="n">to</span> <span class="n">a</span> <span class="n">node</span><span class="o">.</span> <span class="n">By</span> <span class="n">default</span><span class="p">,</span> <span class="n">clean</span> <span class="nb">all</span> <span class="n">keyspaces</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">cleanup</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">sstables</span> <span class="n">to</span> <span class="n">cleanup</span> <span class="n">simultanously</span><span class="p">,</span> <span class="nb">set</span> <span class="n">to</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">use</span> <span class="nb">all</span>
+            <span class="n">available</span> <span class="n">compaction</span> <span class="n">threads</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/clearsnapshot.html b/src/doc/3.11.11/tools/nodetool/clearsnapshot.html
new file mode 100644
index 0000000..354e670
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/clearsnapshot.html
@@ -0,0 +1,134 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "clearsnapshot"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="clearsnapshot">
+<span id="nodetool-clearsnapshot"></span><h1>clearsnapshot<a class="headerlink" href="#clearsnapshot" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">clearsnapshot</span> <span class="o">-</span> <span class="n">Remove</span> <span class="n">the</span> <span class="n">snapshot</span> <span class="k">with</span> <span class="n">the</span> <span class="n">given</span> <span class="n">name</span> <span class="kn">from</span>
+        <span class="nn">the</span> <span class="n">given</span> <span class="n">keyspaces</span><span class="o">.</span> <span class="n">If</span> <span class="n">no</span> <span class="n">snapshotName</span> <span class="ow">is</span> <span class="n">specified</span> <span class="n">we</span> <span class="n">will</span> <span class="n">remove</span> <span class="nb">all</span>
+        <span class="n">snapshots</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">clearsnapshot</span>
+                <span class="p">[</span><span class="o">-</span><span class="n">t</span> <span class="o">&lt;</span><span class="n">snapshot_name</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspaces</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">t</span> <span class="o">&lt;</span><span class="n">snapshot_name</span><span class="o">&gt;</span>
+            <span class="n">Remove</span> <span class="n">the</span> <span class="n">snapshot</span> <span class="k">with</span> <span class="n">a</span> <span class="n">given</span> <span class="n">name</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspaces</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">Remove</span> <span class="n">snapshots</span> <span class="kn">from</span> <span class="nn">the</span> <span class="n">given</span> <span class="n">keyspaces</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/compact.html b/src/doc/3.11.11/tools/nodetool/compact.html
new file mode 100644
index 0000000..ec16249
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/compact.html
@@ -0,0 +1,146 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "compact"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="compact">
+<span id="nodetool-compact"></span><h1>compact<a class="headerlink" href="#compact" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">compact</span> <span class="o">-</span> <span class="n">Force</span> <span class="n">a</span> <span class="p">(</span><span class="n">major</span><span class="p">)</span> <span class="n">compaction</span> <span class="n">on</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">more</span> <span class="n">tables</span> <span class="ow">or</span>
+        <span class="n">user</span><span class="o">-</span><span class="n">defined</span> <span class="n">compaction</span> <span class="n">on</span> <span class="n">given</span> <span class="n">SSTables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">compact</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">et</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">s</span> <span class="o">|</span> <span class="o">--</span><span class="n">split</span><span class="o">-</span><span class="n">output</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">st</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="n">user</span><span class="o">-</span><span class="n">defined</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span> <span class="ow">or</span> <span class="o">&lt;</span><span class="n">SSTable</span> <span class="n">file</span><span class="o">&gt;...</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">et</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">et</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">compaction</span> <span class="nb">range</span> <span class="n">ends</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">s</span><span class="p">,</span> <span class="o">--</span><span class="n">split</span><span class="o">-</span><span class="n">output</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">s</span> <span class="n">to</span> <span class="ow">not</span> <span class="n">create</span> <span class="n">a</span> <span class="n">single</span> <span class="n">big</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">st</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">st</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">the</span> <span class="n">compaction</span> <span class="nb">range</span> <span class="n">starts</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span><span class="n">user</span><span class="o">-</span><span class="n">defined</span>
+            <span class="n">Use</span> <span class="o">--</span><span class="n">user</span><span class="o">-</span><span class="n">defined</span> <span class="n">to</span> <span class="n">submit</span> <span class="n">listed</span> <span class="n">files</span> <span class="k">for</span> <span class="n">user</span><span class="o">-</span><span class="n">defined</span>
+            <span class="n">compaction</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span> <span class="ow">or</span> <span class="o">&lt;</span><span class="n">SSTable</span> <span class="n">file</span><span class="o">&gt;...</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span> <span class="ow">or</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">SSTable</span> <span class="n">data</span>
+            <span class="n">files</span> <span class="n">when</span> <span class="n">using</span> <span class="o">--</span><span class="n">user</span><span class="o">-</span><span class="n">defined</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/compactionhistory.html b/src/doc/3.11.11/tools/nodetool/compactionhistory.html
new file mode 100644
index 0000000..7f2aa77
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/compactionhistory.html
@@ -0,0 +1,124 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "compactionhistory"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="compactionhistory">
+<span id="nodetool-compactionhistory"></span><h1>compactionhistory<a class="headerlink" href="#compactionhistory" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">compactionhistory</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">history</span> <span class="n">of</span> <span class="n">compaction</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">compactionhistory</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">F</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="nb">format</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span><span class="p">)]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">F</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="nb">format</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span>
+            <span class="n">Output</span> <span class="nb">format</span> <span class="p">(</span><span class="n">json</span><span class="p">,</span> <span class="n">yaml</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/compactionstats.html b/src/doc/3.11.11/tools/nodetool/compactionstats.html
new file mode 100644
index 0000000..a39c30e
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/compactionstats.html
@@ -0,0 +1,124 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "compactionstats"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="compactionstats">
+<span id="nodetool-compactionstats"></span><h1>compactionstats<a class="headerlink" href="#compactionstats" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">compactionstats</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">statistics</span> <span class="n">on</span> <span class="n">compactions</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">compactionstats</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">H</span> <span class="o">|</span> <span class="o">--</span><span class="n">human</span><span class="o">-</span><span class="n">readable</span><span class="p">)]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">H</span><span class="p">,</span> <span class="o">--</span><span class="n">human</span><span class="o">-</span><span class="n">readable</span>
+            <span class="n">Display</span> <span class="nb">bytes</span> <span class="ow">in</span> <span class="n">human</span> <span class="n">readable</span> <span class="n">form</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">e</span><span class="o">.</span> <span class="n">KiB</span><span class="p">,</span> <span class="n">MiB</span><span class="p">,</span> <span class="n">GiB</span><span class="p">,</span> <span class="n">TiB</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/decommission.html b/src/doc/3.11.11/tools/nodetool/decommission.html
new file mode 100644
index 0000000..906480f
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/decommission.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "decommission"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="decommission">
+<span id="nodetool-decommission"></span><h1>decommission<a class="headerlink" href="#decommission" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">decommission</span> <span class="o">-</span> <span class="n">Decommission</span> <span class="n">the</span> <span class="o">*</span><span class="n">node</span> <span class="n">I</span> <span class="n">am</span> <span class="n">connecting</span> <span class="n">to</span><span class="o">*</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">decommission</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/describecluster.html b/src/doc/3.11.11/tools/nodetool/describecluster.html
new file mode 100644
index 0000000..d9c3f6a
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/describecluster.html
@@ -0,0 +1,121 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "describecluster"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="describecluster">
+<span id="nodetool-describecluster"></span><h1>describecluster<a class="headerlink" href="#describecluster" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">describecluster</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">name</span><span class="p">,</span> <span class="n">snitch</span><span class="p">,</span> <span class="n">partitioner</span> <span class="ow">and</span>
+        <span class="n">schema</span> <span class="n">version</span> <span class="n">of</span> <span class="n">a</span> <span class="n">cluster</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">describecluster</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/describering.html b/src/doc/3.11.11/tools/nodetool/describering.html
new file mode 100644
index 0000000..a084005
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/describering.html
@@ -0,0 +1,128 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "describering"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="describering">
+<span id="nodetool-describering"></span><h1>describering<a class="headerlink" href="#describering" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">describering</span> <span class="o">-</span> <span class="n">Shows</span> <span class="n">the</span> <span class="n">token</span> <span class="n">ranges</span> <span class="n">info</span> <span class="n">of</span> <span class="n">a</span> <span class="n">given</span> <span class="n">keyspace</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">describering</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">name</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/disableautocompaction.html b/src/doc/3.11.11/tools/nodetool/disableautocompaction.html
new file mode 100644
index 0000000..2a9ebaa
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/disableautocompaction.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disableautocompaction"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disableautocompaction">
+<span id="nodetool-disableautocompaction"></span><h1>disableautocompaction<a class="headerlink" href="#disableautocompaction" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disableautocompaction</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">autocompaction</span> <span class="k">for</span> <span class="n">the</span> <span class="n">given</span>
+        <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disableautocompaction</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/disablebackup.html b/src/doc/3.11.11/tools/nodetool/disablebackup.html
new file mode 100644
index 0000000..5355ba6
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/disablebackup.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disablebackup"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disablebackup">
+<span id="nodetool-disablebackup"></span><h1>disablebackup<a class="headerlink" href="#disablebackup" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disablebackup</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">incremental</span> <span class="n">backup</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disablebackup</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/disablebinary.html b/src/doc/3.11.11/tools/nodetool/disablebinary.html
new file mode 100644
index 0000000..ad5eef2
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/disablebinary.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disablebinary"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disablebinary">
+<span id="nodetool-disablebinary"></span><h1>disablebinary<a class="headerlink" href="#disablebinary" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disablebinary</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">native</span> <span class="n">transport</span> <span class="p">(</span><span class="n">binary</span> <span class="n">protocol</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disablebinary</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/disablegossip.html b/src/doc/3.11.11/tools/nodetool/disablegossip.html
new file mode 100644
index 0000000..36a87bd
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/disablegossip.html
@@ -0,0 +1,121 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disablegossip"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disablegossip">
+<span id="nodetool-disablegossip"></span><h1>disablegossip<a class="headerlink" href="#disablegossip" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disablegossip</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">gossip</span> <span class="p">(</span><span class="n">effectively</span> <span class="n">marking</span> <span class="n">the</span> <span class="n">node</span>
+        <span class="n">down</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disablegossip</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/disablehandoff.html b/src/doc/3.11.11/tools/nodetool/disablehandoff.html
new file mode 100644
index 0000000..98ab568
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/disablehandoff.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disablehandoff"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disablehandoff">
+<span id="nodetool-disablehandoff"></span><h1>disablehandoff<a class="headerlink" href="#disablehandoff" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disablehandoff</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">storing</span> <span class="n">hinted</span> <span class="n">handoffs</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disablehandoff</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/disablehintsfordc.html b/src/doc/3.11.11/tools/nodetool/disablehintsfordc.html
new file mode 100644
index 0000000..06b66da
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/disablehintsfordc.html
@@ -0,0 +1,129 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disablehintsfordc"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disablehintsfordc">
+<span id="nodetool-disablehintsfordc"></span><h1>disablehintsfordc<a class="headerlink" href="#disablehintsfordc" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disablehintsfordc</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">hints</span> <span class="k">for</span> <span class="n">a</span> <span class="n">data</span> <span class="n">center</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disablehintsfordc</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">datacenter</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">datacenter</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">data</span> <span class="n">center</span> <span class="n">to</span> <span class="n">disable</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/disablethrift.html b/src/doc/3.11.11/tools/nodetool/disablethrift.html
new file mode 100644
index 0000000..077b8ac
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/disablethrift.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disablethrift"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disablethrift">
+<span id="nodetool-disablethrift"></span><h1>disablethrift<a class="headerlink" href="#disablethrift" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disablethrift</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">thrift</span> <span class="n">server</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disablethrift</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/drain.html b/src/doc/3.11.11/tools/nodetool/drain.html
new file mode 100644
index 0000000..5011282
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/drain.html
@@ -0,0 +1,121 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "drain"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="drain">
+<span id="nodetool-drain"></span><h1>drain<a class="headerlink" href="#drain" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">drain</span> <span class="o">-</span> <span class="n">Drain</span> <span class="n">the</span> <span class="n">node</span> <span class="p">(</span><span class="n">stop</span> <span class="n">accepting</span> <span class="n">writes</span> <span class="ow">and</span> <span class="n">flush</span> <span class="nb">all</span>
+        <span class="n">tables</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">drain</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/enableautocompaction.html b/src/doc/3.11.11/tools/nodetool/enableautocompaction.html
new file mode 100644
index 0000000..312e32d
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/enableautocompaction.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enableautocompaction"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enableautocompaction">
+<span id="nodetool-enableautocompaction"></span><h1>enableautocompaction<a class="headerlink" href="#enableautocompaction" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enableautocompaction</span> <span class="o">-</span> <span class="n">Enable</span> <span class="n">autocompaction</span> <span class="k">for</span> <span class="n">the</span> <span class="n">given</span>
+        <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enableautocompaction</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/enablebackup.html b/src/doc/3.11.11/tools/nodetool/enablebackup.html
new file mode 100644
index 0000000..2ef5668
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/enablebackup.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enablebackup"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enablebackup">
+<span id="nodetool-enablebackup"></span><h1>enablebackup<a class="headerlink" href="#enablebackup" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enablebackup</span> <span class="o">-</span> <span class="n">Enable</span> <span class="n">incremental</span> <span class="n">backup</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enablebackup</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/enablebinary.html b/src/doc/3.11.11/tools/nodetool/enablebinary.html
new file mode 100644
index 0000000..c9847e4
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/enablebinary.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enablebinary"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enablebinary">
+<span id="nodetool-enablebinary"></span><h1>enablebinary<a class="headerlink" href="#enablebinary" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enablebinary</span> <span class="o">-</span> <span class="n">Reenable</span> <span class="n">native</span> <span class="n">transport</span> <span class="p">(</span><span class="n">binary</span> <span class="n">protocol</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enablebinary</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/enablegossip.html b/src/doc/3.11.11/tools/nodetool/enablegossip.html
new file mode 100644
index 0000000..f5a6f14
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/enablegossip.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enablegossip"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enablegossip">
+<span id="nodetool-enablegossip"></span><h1>enablegossip<a class="headerlink" href="#enablegossip" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enablegossip</span> <span class="o">-</span> <span class="n">Reenable</span> <span class="n">gossip</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enablegossip</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/enablehandoff.html b/src/doc/3.11.11/tools/nodetool/enablehandoff.html
new file mode 100644
index 0000000..3d3e4d1
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/enablehandoff.html
@@ -0,0 +1,121 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enablehandoff"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enablehandoff">
+<span id="nodetool-enablehandoff"></span><h1>enablehandoff<a class="headerlink" href="#enablehandoff" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enablehandoff</span> <span class="o">-</span> <span class="n">Reenable</span> <span class="n">future</span> <span class="n">hints</span> <span class="n">storing</span> <span class="n">on</span> <span class="n">the</span> <span class="n">current</span>
+        <span class="n">node</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enablehandoff</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/enablehintsfordc.html b/src/doc/3.11.11/tools/nodetool/enablehintsfordc.html
new file mode 100644
index 0000000..4cd5bb1
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/enablehintsfordc.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enablehintsfordc"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enablehintsfordc">
+<span id="nodetool-enablehintsfordc"></span><h1>enablehintsfordc<a class="headerlink" href="#enablehintsfordc" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enablehintsfordc</span> <span class="o">-</span> <span class="n">Enable</span> <span class="n">hints</span> <span class="k">for</span> <span class="n">a</span> <span class="n">data</span> <span class="n">center</span> <span class="n">that</span> <span class="n">was</span>
+        <span class="n">previsouly</span> <span class="n">disabled</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enablehintsfordc</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">datacenter</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">datacenter</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">data</span> <span class="n">center</span> <span class="n">to</span> <span class="n">enable</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/enablethrift.html b/src/doc/3.11.11/tools/nodetool/enablethrift.html
new file mode 100644
index 0000000..6a760c1
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/enablethrift.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enablethrift"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enablethrift">
+<span id="nodetool-enablethrift"></span><h1>enablethrift<a class="headerlink" href="#enablethrift" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enablethrift</span> <span class="o">-</span> <span class="n">Reenable</span> <span class="n">thrift</span> <span class="n">server</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enablethrift</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/failuredetector.html b/src/doc/3.11.11/tools/nodetool/failuredetector.html
new file mode 100644
index 0000000..8daecb5
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/failuredetector.html
@@ -0,0 +1,121 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "failuredetector"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="failuredetector">
+<span id="nodetool-failuredetector"></span><h1>failuredetector<a class="headerlink" href="#failuredetector" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">failuredetector</span> <span class="o">-</span> <span class="n">Shows</span> <span class="n">the</span> <span class="n">failure</span> <span class="n">detector</span> <span class="n">information</span> <span class="k">for</span>
+        <span class="n">the</span> <span class="n">cluster</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">failuredetector</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/flush.html b/src/doc/3.11.11/tools/nodetool/flush.html
new file mode 100644
index 0000000..ba32dbf
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/flush.html
@@ -0,0 +1,129 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "flush"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="flush">
+<span id="nodetool-flush"></span><h1>flush<a class="headerlink" href="#flush" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">flush</span> <span class="o">-</span> <span class="n">Flush</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">more</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">flush</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/garbagecollect.html b/src/doc/3.11.11/tools/nodetool/garbagecollect.html
new file mode 100644
index 0000000..efa58b9
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/garbagecollect.html
@@ -0,0 +1,139 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "garbagecollect"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="garbagecollect">
+<span id="nodetool-garbagecollect"></span><h1>garbagecollect<a class="headerlink" href="#garbagecollect" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">garbagecollect</span> <span class="o">-</span> <span class="n">Remove</span> <span class="n">deleted</span> <span class="n">data</span> <span class="kn">from</span> <span class="nn">one</span> <span class="ow">or</span> <span class="n">more</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">garbagecollect</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">g</span> <span class="o">&lt;</span><span class="n">granularity</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">granularity</span> <span class="o">&lt;</span><span class="n">granularity</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">g</span> <span class="o">&lt;</span><span class="n">granularity</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">granularity</span> <span class="o">&lt;</span><span class="n">granularity</span><span class="o">&gt;</span>
+            <span class="n">Granularity</span> <span class="n">of</span> <span class="n">garbage</span> <span class="n">removal</span><span class="o">.</span> <span class="n">ROW</span> <span class="p">(</span><span class="n">default</span><span class="p">)</span> <span class="n">removes</span> <span class="n">deleted</span>
+            <span class="n">partitions</span> <span class="ow">and</span> <span class="n">rows</span><span class="p">,</span> <span class="n">CELL</span> <span class="n">also</span> <span class="n">removes</span> <span class="n">overwritten</span> <span class="ow">or</span> <span class="n">deleted</span> <span class="n">cells</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">sstables</span> <span class="n">to</span> <span class="n">cleanup</span> <span class="n">simultanously</span><span class="p">,</span> <span class="nb">set</span> <span class="n">to</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">use</span> <span class="nb">all</span>
+            <span class="n">available</span> <span class="n">compaction</span> <span class="n">threads</span><span class="o">.</span> <span class="n">Defaults</span> <span class="n">to</span> <span class="mi">1</span> <span class="n">so</span> <span class="n">that</span> <span class="n">collections</span> <span class="n">of</span>
+            <span class="n">newer</span> <span class="n">tables</span> <span class="n">can</span> <span class="n">see</span> <span class="n">the</span> <span class="n">data</span> <span class="ow">is</span> <span class="n">deleted</span> <span class="ow">and</span> <span class="n">also</span> <span class="n">remove</span> <span class="n">tombstones</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/gcstats.html b/src/doc/3.11.11/tools/nodetool/gcstats.html
new file mode 100644
index 0000000..27f9d05
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/gcstats.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "gcstats"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="gcstats">
+<span id="nodetool-gcstats"></span><h1>gcstats<a class="headerlink" href="#gcstats" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">gcstats</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">GC</span> <span class="n">Statistics</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">gcstats</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/getcompactionthreshold.html b/src/doc/3.11.11/tools/nodetool/getcompactionthreshold.html
new file mode 100644
index 0000000..1136663
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/getcompactionthreshold.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getcompactionthreshold"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getcompactionthreshold">
+<span id="nodetool-getcompactionthreshold"></span><h1>getcompactionthreshold<a class="headerlink" href="#getcompactionthreshold" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getcompactionthreshold</span> <span class="o">-</span> <span class="n">Print</span> <span class="nb">min</span> <span class="ow">and</span> <span class="nb">max</span> <span class="n">compaction</span>
+        <span class="n">thresholds</span> <span class="k">for</span> <span class="n">a</span> <span class="n">given</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getcompactionthreshold</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="k">with</span> <span class="n">a</span> <span class="n">table</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/getcompactionthroughput.html b/src/doc/3.11.11/tools/nodetool/getcompactionthroughput.html
new file mode 100644
index 0000000..5f379d9
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/getcompactionthroughput.html
@@ -0,0 +1,121 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getcompactionthroughput"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getcompactionthroughput">
+<span id="nodetool-getcompactionthroughput"></span><h1>getcompactionthroughput<a class="headerlink" href="#getcompactionthroughput" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getcompactionthroughput</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">MB</span><span class="o">/</span><span class="n">s</span> <span class="n">throughput</span> <span class="n">cap</span> <span class="k">for</span>
+        <span class="n">compaction</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getcompactionthroughput</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/getconcurrentcompactors.html b/src/doc/3.11.11/tools/nodetool/getconcurrentcompactors.html
new file mode 100644
index 0000000..73ea215
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/getconcurrentcompactors.html
@@ -0,0 +1,121 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getconcurrentcompactors"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getconcurrentcompactors">
+<span id="nodetool-getconcurrentcompactors"></span><h1>getconcurrentcompactors<a class="headerlink" href="#getconcurrentcompactors" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getconcurrentcompactors</span> <span class="o">-</span> <span class="n">Get</span> <span class="n">the</span> <span class="n">number</span> <span class="n">of</span> <span class="n">concurrent</span>
+        <span class="n">compactors</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span><span class="o">.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getconcurrentcompactors</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/getendpoints.html b/src/doc/3.11.11/tools/nodetool/getendpoints.html
new file mode 100644
index 0000000..4e073b1
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/getendpoints.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getendpoints"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getendpoints">
+<span id="nodetool-getendpoints"></span><h1>getendpoints<a class="headerlink" href="#getendpoints" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getendpoints</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">end</span> <span class="n">points</span> <span class="n">that</span> <span class="n">owns</span> <span class="n">the</span> <span class="n">key</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getendpoints</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">key</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">key</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">the</span> <span class="n">table</span><span class="p">,</span> <span class="ow">and</span> <span class="n">the</span> <span class="n">partition</span> <span class="n">key</span> <span class="k">for</span> <span class="n">which</span> <span class="n">we</span> <span class="n">need</span> <span class="n">to</span>
+            <span class="n">find</span> <span class="n">the</span> <span class="n">endpoint</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/getinterdcstreamthroughput.html b/src/doc/3.11.11/tools/nodetool/getinterdcstreamthroughput.html
new file mode 100644
index 0000000..2b6d4ca
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/getinterdcstreamthroughput.html
@@ -0,0 +1,121 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getinterdcstreamthroughput"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getinterdcstreamthroughput">
+<span id="nodetool-getinterdcstreamthroughput"></span><h1>getinterdcstreamthroughput<a class="headerlink" href="#getinterdcstreamthroughput" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getinterdcstreamthroughput</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">Mb</span><span class="o">/</span><span class="n">s</span> <span class="n">throughput</span> <span class="n">cap</span> <span class="k">for</span>
+        <span class="n">inter</span><span class="o">-</span><span class="n">datacenter</span> <span class="n">streaming</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getinterdcstreamthroughput</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/getlogginglevels.html b/src/doc/3.11.11/tools/nodetool/getlogginglevels.html
new file mode 100644
index 0000000..14de631
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/getlogginglevels.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getlogginglevels"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getlogginglevels">
+<span id="nodetool-getlogginglevels"></span><h1>getlogginglevels<a class="headerlink" href="#getlogginglevels" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getlogginglevels</span> <span class="o">-</span> <span class="n">Get</span> <span class="n">the</span> <span class="n">runtime</span> <span class="n">logging</span> <span class="n">levels</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getlogginglevels</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/getsstables.html b/src/doc/3.11.11/tools/nodetool/getsstables.html
new file mode 100644
index 0000000..3d8e39a
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/getsstables.html
@@ -0,0 +1,132 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getsstables"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getsstables">
+<span id="nodetool-getsstables"></span><h1>getsstables<a class="headerlink" href="#getsstables" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getsstables</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">sstable</span> <span class="n">filenames</span> <span class="n">that</span> <span class="n">own</span> <span class="n">the</span> <span class="n">key</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getsstables</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">hf</span> <span class="o">|</span> <span class="o">--</span><span class="nb">hex</span><span class="o">-</span><span class="nb">format</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">cfname</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">key</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">hf</span><span class="p">,</span> <span class="o">--</span><span class="nb">hex</span><span class="o">-</span><span class="nb">format</span>
+            <span class="n">Specify</span> <span class="n">the</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">hexadecimal</span> <span class="n">string</span> <span class="nb">format</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">cfname</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">key</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">the</span> <span class="n">column</span> <span class="n">family</span><span class="p">,</span> <span class="ow">and</span> <span class="n">the</span> <span class="n">key</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/getstreamthroughput.html b/src/doc/3.11.11/tools/nodetool/getstreamthroughput.html
new file mode 100644
index 0000000..66a828b
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/getstreamthroughput.html
@@ -0,0 +1,121 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getstreamthroughput"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getstreamthroughput">
+<span id="nodetool-getstreamthroughput"></span><h1>getstreamthroughput<a class="headerlink" href="#getstreamthroughput" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getstreamthroughput</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">Mb</span><span class="o">/</span><span class="n">s</span> <span class="n">throughput</span> <span class="n">cap</span> <span class="k">for</span>
+        <span class="n">streaming</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getstreamthroughput</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/gettimeout.html b/src/doc/3.11.11/tools/nodetool/gettimeout.html
new file mode 100644
index 0000000..4f87113
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/gettimeout.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "gettimeout"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="gettimeout">
+<span id="nodetool-gettimeout"></span><h1>gettimeout<a class="headerlink" href="#gettimeout" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">gettimeout</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">timeout</span> <span class="n">of</span> <span class="n">the</span> <span class="n">given</span> <span class="nb">type</span> <span class="ow">in</span> <span class="n">ms</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">gettimeout</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">timeout_type</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">timeout_type</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">timeout</span> <span class="nb">type</span><span class="p">,</span> <span class="n">one</span> <span class="n">of</span> <span class="p">(</span><span class="n">read</span><span class="p">,</span> <span class="nb">range</span><span class="p">,</span> <span class="n">write</span><span class="p">,</span> <span class="n">counterwrite</span><span class="p">,</span>
+            <span class="n">cascontention</span><span class="p">,</span> <span class="n">truncate</span><span class="p">,</span> <span class="n">streamingsocket</span><span class="p">,</span> <span class="n">misc</span> <span class="p">(</span><span class="n">general</span>
+            <span class="n">rpc_timeout_in_ms</span><span class="p">))</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/gettraceprobability.html b/src/doc/3.11.11/tools/nodetool/gettraceprobability.html
new file mode 100644
index 0000000..889d604
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/gettraceprobability.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "gettraceprobability"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="gettraceprobability">
+<span id="nodetool-gettraceprobability"></span><h1>gettraceprobability<a class="headerlink" href="#gettraceprobability" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">gettraceprobability</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">current</span> <span class="n">trace</span> <span class="n">probability</span> <span class="n">value</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">gettraceprobability</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/gossipinfo.html b/src/doc/3.11.11/tools/nodetool/gossipinfo.html
new file mode 100644
index 0000000..5c0ef60
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/gossipinfo.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "gossipinfo"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="gossipinfo">
+<span id="nodetool-gossipinfo"></span><h1>gossipinfo<a class="headerlink" href="#gossipinfo" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">gossipinfo</span> <span class="o">-</span> <span class="n">Shows</span> <span class="n">the</span> <span class="n">gossip</span> <span class="n">information</span> <span class="k">for</span> <span class="n">the</span> <span class="n">cluster</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">gossipinfo</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/help.html b/src/doc/3.11.11/tools/nodetool/help.html
new file mode 100644
index 0000000..382e75e
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/help.html
@@ -0,0 +1,110 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "help"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="help">
+<span id="nodetool-help"></span><h1>help<a class="headerlink" href="#help" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">help</span> <span class="o">-</span> <span class="n">Display</span> <span class="n">help</span> <span class="n">information</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="n">help</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">command</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">command</span><span class="o">&gt;</span>
+
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/info.html b/src/doc/3.11.11/tools/nodetool/info.html
new file mode 100644
index 0000000..f013187
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/info.html
@@ -0,0 +1,123 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "info"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="info">
+<span id="nodetool-info"></span><h1>info<a class="headerlink" href="#info" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">info</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">node</span> <span class="n">information</span> <span class="p">(</span><span class="n">uptime</span><span class="p">,</span> <span class="n">load</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">info</span> <span class="p">[(</span><span class="o">-</span><span class="n">T</span> <span class="o">|</span> <span class="o">--</span><span class="n">tokens</span><span class="p">)]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">T</span><span class="p">,</span> <span class="o">--</span><span class="n">tokens</span>
+            <span class="n">Display</span> <span class="nb">all</span> <span class="n">tokens</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/invalidatecountercache.html b/src/doc/3.11.11/tools/nodetool/invalidatecountercache.html
new file mode 100644
index 0000000..387f9d0
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/invalidatecountercache.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "invalidatecountercache"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="invalidatecountercache">
+<span id="nodetool-invalidatecountercache"></span><h1>invalidatecountercache<a class="headerlink" href="#invalidatecountercache" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">invalidatecountercache</span> <span class="o">-</span> <span class="n">Invalidate</span> <span class="n">the</span> <span class="n">counter</span> <span class="n">cache</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">invalidatecountercache</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/invalidatekeycache.html b/src/doc/3.11.11/tools/nodetool/invalidatekeycache.html
new file mode 100644
index 0000000..c50957a
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/invalidatekeycache.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "invalidatekeycache"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="invalidatekeycache">
+<span id="nodetool-invalidatekeycache"></span><h1>invalidatekeycache<a class="headerlink" href="#invalidatekeycache" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">invalidatekeycache</span> <span class="o">-</span> <span class="n">Invalidate</span> <span class="n">the</span> <span class="n">key</span> <span class="n">cache</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">invalidatekeycache</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/invalidaterowcache.html b/src/doc/3.11.11/tools/nodetool/invalidaterowcache.html
new file mode 100644
index 0000000..56a1566
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/invalidaterowcache.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "invalidaterowcache"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="invalidaterowcache">
+<span id="nodetool-invalidaterowcache"></span><h1>invalidaterowcache<a class="headerlink" href="#invalidaterowcache" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">invalidaterowcache</span> <span class="o">-</span> <span class="n">Invalidate</span> <span class="n">the</span> <span class="n">row</span> <span class="n">cache</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">invalidaterowcache</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/join.html b/src/doc/3.11.11/tools/nodetool/join.html
new file mode 100644
index 0000000..d041e7f
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/join.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "join"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="join">
+<span id="nodetool-join"></span><h1>join<a class="headerlink" href="#join" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">join</span> <span class="o">-</span> <span class="n">Join</span> <span class="n">the</span> <span class="n">ring</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">join</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/listsnapshots.html b/src/doc/3.11.11/tools/nodetool/listsnapshots.html
new file mode 100644
index 0000000..544515a
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/listsnapshots.html
@@ -0,0 +1,121 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "listsnapshots"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="listsnapshots">
+<span id="nodetool-listsnapshots"></span><h1>listsnapshots<a class="headerlink" href="#listsnapshots" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">listsnapshots</span> <span class="o">-</span> <span class="n">Lists</span> <span class="nb">all</span> <span class="n">the</span> <span class="n">snapshots</span> <span class="n">along</span> <span class="k">with</span> <span class="n">the</span> <span class="n">size</span> <span class="n">on</span>
+        <span class="n">disk</span> <span class="ow">and</span> <span class="n">true</span> <span class="n">size</span><span class="o">.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">listsnapshots</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/move.html b/src/doc/3.11.11/tools/nodetool/move.html
new file mode 100644
index 0000000..18f4e4f
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/move.html
@@ -0,0 +1,128 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "move"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="move">
+<span id="nodetool-move"></span><h1>move<a class="headerlink" href="#move" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">move</span> <span class="o">-</span> <span class="n">Move</span> <span class="n">node</span> <span class="n">on</span> <span class="n">the</span> <span class="n">token</span> <span class="n">ring</span> <span class="n">to</span> <span class="n">a</span> <span class="n">new</span> <span class="n">token</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">move</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">new</span> <span class="n">token</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">new</span> <span class="n">token</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">new</span> <span class="n">token</span><span class="o">.</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/netstats.html b/src/doc/3.11.11/tools/nodetool/netstats.html
new file mode 100644
index 0000000..6c0683e
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/netstats.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "netstats"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="netstats">
+<span id="nodetool-netstats"></span><h1>netstats<a class="headerlink" href="#netstats" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">netstats</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">network</span> <span class="n">information</span> <span class="n">on</span> <span class="n">provided</span> <span class="n">host</span>
+        <span class="p">(</span><span class="n">connecting</span> <span class="n">node</span> <span class="n">by</span> <span class="n">default</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">netstats</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">H</span> <span class="o">|</span> <span class="o">--</span><span class="n">human</span><span class="o">-</span><span class="n">readable</span><span class="p">)]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">H</span><span class="p">,</span> <span class="o">--</span><span class="n">human</span><span class="o">-</span><span class="n">readable</span>
+            <span class="n">Display</span> <span class="nb">bytes</span> <span class="ow">in</span> <span class="n">human</span> <span class="n">readable</span> <span class="n">form</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">e</span><span class="o">.</span> <span class="n">KiB</span><span class="p">,</span> <span class="n">MiB</span><span class="p">,</span> <span class="n">GiB</span><span class="p">,</span> <span class="n">TiB</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/nodetool.html b/src/doc/3.11.11/tools/nodetool/nodetool.html
new file mode 100644
index 0000000..a55bd1a
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/nodetool.html
@@ -0,0 +1,197 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Nodetool"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="nodetool">
+<h1>Nodetool<a class="headerlink" href="#nodetool" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<dl class="docutils">
+<dt>usage: nodetool [(-u &lt;username&gt; | –username &lt;username&gt;)]</dt>
+<dd>[(-pw &lt;password&gt; | –password &lt;password&gt;)]
+[(-pwf &lt;passwordFilePath&gt; | –password-file &lt;passwordFilePath&gt;)]
+[(-h &lt;host&gt; | –host &lt;host&gt;)] [(-p &lt;port&gt; | –port &lt;port&gt;)] &lt;command&gt; [&lt;args&gt;]</dd>
+</dl>
+<p>The most commonly used nodetool commands are:</p>
+<blockquote>
+<div><p><a class="reference internal" href="assassinate.html"><span class="doc">assassinate</span></a> -                   Forcefully remove a dead node without re-replicating any data.  Use as a last resort if you cannot removenode</p>
+<p><a class="reference internal" href="bootstrap.html"><span class="doc">bootstrap</span></a> -                     Monitor/manage node’s bootstrap process</p>
+<p><a class="reference internal" href="cleanup.html"><span class="doc">cleanup</span></a> -                       Triggers the immediate cleanup of keys no longer belonging to a node. By default, clean all keyspaces</p>
+<p><a class="reference internal" href="clearsnapshot.html"><span class="doc">clearsnapshot</span></a> -                 Remove the snapshot with the given name from the given keyspaces. If no snapshotName is specified we will remove all snapshots</p>
+<p><a class="reference internal" href="compact.html"><span class="doc">compact</span></a> -                       Force a (major) compaction on one or more tables or user-defined compaction on given SSTables</p>
+<p><a class="reference internal" href="compactionhistory.html"><span class="doc">compactionhistory</span></a> -             Print history of compaction</p>
+<p><a class="reference internal" href="compactionstats.html"><span class="doc">compactionstats</span></a> -               Print statistics on compactions</p>
+<p><a class="reference internal" href="decommission.html"><span class="doc">decommission</span></a> -                  Decommission the <em>node I am connecting to</em></p>
+<p><a class="reference internal" href="describecluster.html"><span class="doc">describecluster</span></a> -               Print the name, snitch, partitioner and schema version of a cluster</p>
+<p><a class="reference internal" href="describering.html"><span class="doc">describering</span></a> -                  Shows the token ranges info of a given keyspace</p>
+<p><a class="reference internal" href="disableautocompaction.html"><span class="doc">disableautocompaction</span></a> -         Disable autocompaction for the given keyspace and table</p>
+<p><a class="reference internal" href="disablebackup.html"><span class="doc">disablebackup</span></a> -                 Disable incremental backup</p>
+<p><a class="reference internal" href="disablebinary.html"><span class="doc">disablebinary</span></a> -                 Disable native transport (binary protocol)</p>
+<p><a class="reference internal" href="disablegossip.html"><span class="doc">disablegossip</span></a> -                 Disable gossip (effectively marking the node down)</p>
+<p><a class="reference internal" href="disablehandoff.html"><span class="doc">disablehandoff</span></a> -                Disable storing hinted handoffs</p>
+<p><a class="reference internal" href="disablehintsfordc.html"><span class="doc">disablehintsfordc</span></a> -             Disable hints for a data center</p>
+<p><a class="reference internal" href="disablethrift.html"><span class="doc">disablethrift</span></a> -                 Disable thrift server</p>
+<p><a class="reference internal" href="drain.html"><span class="doc">drain</span></a> -                         Drain the node (stop accepting writes and flush all tables)</p>
+<p><a class="reference internal" href="enableautocompaction.html"><span class="doc">enableautocompaction</span></a> -          Enable autocompaction for the given keyspace and table</p>
+<p><a class="reference internal" href="enablebackup.html"><span class="doc">enablebackup</span></a> -                  Enable incremental backup</p>
+<p><a class="reference internal" href="enablebinary.html"><span class="doc">enablebinary</span></a> -                  Reenable native transport (binary protocol)</p>
+<p><a class="reference internal" href="enablegossip.html"><span class="doc">enablegossip</span></a> -                  Reenable gossip</p>
+<p><a class="reference internal" href="enablehandoff.html"><span class="doc">enablehandoff</span></a> -                 Reenable future hints storing on the current node</p>
+<p><a class="reference internal" href="enablehintsfordc.html"><span class="doc">enablehintsfordc</span></a> -              Enable hints for a data center that was previsouly disabled</p>
+<p><a class="reference internal" href="enablethrift.html"><span class="doc">enablethrift</span></a> -                  Reenable thrift server</p>
+<p><a class="reference internal" href="failuredetector.html"><span class="doc">failuredetector</span></a> -               Shows the failure detector information for the cluster</p>
+<p><a class="reference internal" href="flush.html"><span class="doc">flush</span></a> -                         Flush one or more tables</p>
+<p><a class="reference internal" href="garbagecollect.html"><span class="doc">garbagecollect</span></a> -                Remove deleted data from one or more tables</p>
+<p><a class="reference internal" href="gcstats.html"><span class="doc">gcstats</span></a> -                       Print GC Statistics</p>
+<p><a class="reference internal" href="getcompactionthreshold.html"><span class="doc">getcompactionthreshold</span></a> -        Print min and max compaction thresholds for a given table</p>
+<p><a class="reference internal" href="getcompactionthroughput.html"><span class="doc">getcompactionthroughput</span></a> -       Print the MB/s throughput cap for compaction in the system</p>
+<p><a class="reference internal" href="getconcurrentcompactors.html"><span class="doc">getconcurrentcompactors</span></a> -       Get the number of concurrent compactors in the system.</p>
+<p><a class="reference internal" href="getendpoints.html"><span class="doc">getendpoints</span></a> -                  Print the end points that owns the key</p>
+<p><a class="reference internal" href="getinterdcstreamthroughput.html"><span class="doc">getinterdcstreamthroughput</span></a> -    Print the Mb/s throughput cap for inter-datacenter streaming in the system</p>
+<p><a class="reference internal" href="getlogginglevels.html"><span class="doc">getlogginglevels</span></a> -              Get the runtime logging levels</p>
+<p><a class="reference internal" href="getsstables.html"><span class="doc">getsstables</span></a> -                   Print the sstable filenames that own the key</p>
+<p><a class="reference internal" href="getstreamthroughput.html"><span class="doc">getstreamthroughput</span></a> -           Print the Mb/s throughput cap for streaming in the system</p>
+<p><a class="reference internal" href="gettimeout.html"><span class="doc">gettimeout</span></a> -                    Print the timeout of the given type in ms</p>
+<p><a class="reference internal" href="gettraceprobability.html"><span class="doc">gettraceprobability</span></a> -           Print the current trace probability value</p>
+<p><a class="reference internal" href="gossipinfo.html"><span class="doc">gossipinfo</span></a> -                    Shows the gossip information for the cluster</p>
+<p><a class="reference internal" href="help.html"><span class="doc">help</span></a> -                          Display help information</p>
+<p><a class="reference internal" href="info.html"><span class="doc">info</span></a> -                          Print node information (uptime, load, …)</p>
+<p><a class="reference internal" href="invalidatecountercache.html"><span class="doc">invalidatecountercache</span></a> -        Invalidate the counter cache</p>
+<p><a class="reference internal" href="invalidatekeycache.html"><span class="doc">invalidatekeycache</span></a> -            Invalidate the key cache</p>
+<p><a class="reference internal" href="invalidaterowcache.html"><span class="doc">invalidaterowcache</span></a> -            Invalidate the row cache</p>
+<p><a class="reference internal" href="join.html"><span class="doc">join</span></a> -                          Join the ring</p>
+<p><a class="reference internal" href="listsnapshots.html"><span class="doc">listsnapshots</span></a> -                 Lists all the snapshots along with the size on disk and true size.</p>
+<p><a class="reference internal" href="move.html"><span class="doc">move</span></a> -                          Move node on the token ring to a new token</p>
+<p><a class="reference internal" href="netstats.html"><span class="doc">netstats</span></a> -                      Print network information on provided host (connecting node by default)</p>
+<p><a class="reference internal" href="pausehandoff.html"><span class="doc">pausehandoff</span></a> -                  Pause hints delivery process</p>
+<p><a class="reference internal" href="proxyhistograms.html"><span class="doc">proxyhistograms</span></a> -               Print statistic histograms for network operations</p>
+<p><a class="reference internal" href="rangekeysample.html"><span class="doc">rangekeysample</span></a> -                Shows the sampled keys held across all keyspaces</p>
+<p><a class="reference internal" href="rebuild.html"><span class="doc">rebuild</span></a> -                       Rebuild data by streaming from other nodes (similarly to bootstrap)</p>
+<p><a class="reference internal" href="rebuild_index.html"><span class="doc">rebuild_index</span></a> -                 A full rebuild of native secondary indexes for a given table</p>
+<p><a class="reference internal" href="refresh.html"><span class="doc">refresh</span></a> -                       Load newly placed SSTables to the system without restart</p>
+<p><a class="reference internal" href="refreshsizeestimates.html"><span class="doc">refreshsizeestimates</span></a> -          Refresh system.size_estimates</p>
+<p><a class="reference internal" href="reloadlocalschema.html"><span class="doc">reloadlocalschema</span></a> -             Reload local node schema from system tables</p>
+<p><a class="reference internal" href="reloadtriggers.html"><span class="doc">reloadtriggers</span></a> -                Reload trigger classes</p>
+<p><a class="reference internal" href="relocatesstables.html"><span class="doc">relocatesstables</span></a> -              Relocates sstables to the correct disk</p>
+<p><a class="reference internal" href="removenode.html"><span class="doc">removenode</span></a> -                    Show status of current node removal, force completion of pending removal or remove provided ID</p>
+<p><a class="reference internal" href="repair.html"><span class="doc">repair</span></a> -                        Repair one or more tables</p>
+<p><a class="reference internal" href="replaybatchlog.html"><span class="doc">replaybatchlog</span></a> -                Kick off batchlog replay and wait for finish</p>
+<p><a class="reference internal" href="resetlocalschema.html"><span class="doc">resetlocalschema</span></a> -              Reset node’s local schema and resync</p>
+<p><a class="reference internal" href="resumehandoff.html"><span class="doc">resumehandoff</span></a> -                 Resume hints delivery process</p>
+<p><a class="reference internal" href="ring.html"><span class="doc">ring</span></a> -                          Print information about the token ring</p>
+<p><a class="reference internal" href="scrub.html"><span class="doc">scrub</span></a> -                         Scrub (rebuild sstables for) one or more tables</p>
+<p><a class="reference internal" href="setcachecapacity.html"><span class="doc">setcachecapacity</span></a> -              Set global key, row, and counter cache capacities (in MB units)</p>
+<p><a class="reference internal" href="setcachekeystosave.html"><span class="doc">setcachekeystosave</span></a> -            Set number of keys saved by each cache for faster post-restart warmup. 0 to disable</p>
+<p><a class="reference internal" href="setcompactionthreshold.html"><span class="doc">setcompactionthreshold</span></a> -        Set min and max compaction thresholds for a given table</p>
+<p><a class="reference internal" href="setcompactionthroughput.html"><span class="doc">setcompactionthroughput</span></a> -       Set the MB/s throughput cap for compaction in the system, or 0 to disable throttling</p>
+<p><a class="reference internal" href="setconcurrentcompactors.html"><span class="doc">setconcurrentcompactors</span></a> -       Set number of concurrent compactors in the system.</p>
+<p><a class="reference internal" href="sethintedhandoffthrottlekb.html"><span class="doc">sethintedhandoffthrottlekb</span></a> -    Set hinted handoff throttle in kb per second, per delivery thread.</p>
+<p><a class="reference internal" href="setinterdcstreamthroughput.html"><span class="doc">setinterdcstreamthroughput</span></a> -    Set the Mb/s throughput cap for inter-datacenter streaming in the system, or 0 to disable throttling</p>
+<p><a class="reference internal" href="setlogginglevel.html"><span class="doc">setlogginglevel</span></a> -               Set the log level threshold for a given class. If both class and level are empty/null, it will reset to the initial configuration</p>
+<p><a class="reference internal" href="setstreamthroughput.html"><span class="doc">setstreamthroughput</span></a> -           Set the Mb/s throughput cap for streaming in the system, or 0 to disable throttling</p>
+<p><a class="reference internal" href="settimeout.html"><span class="doc">settimeout</span></a> -                    Set the specified timeout in ms, or 0 to disable timeout</p>
+<p><a class="reference internal" href="settraceprobability.html"><span class="doc">settraceprobability</span></a> -           Sets the probability for tracing any given request to value. 0 disables, 1 enables for all requests, 0 is the default</p>
+<p><a class="reference internal" href="snapshot.html"><span class="doc">snapshot</span></a> -                      Take a snapshot of specified keyspaces or a snapshot of the specified table</p>
+<p><a class="reference internal" href="status.html"><span class="doc">status</span></a> -                        Print cluster information (state, load, IDs, …)</p>
+<p><a class="reference internal" href="statusbackup.html"><span class="doc">statusbackup</span></a> -                  Status of incremental backup</p>
+<p><a class="reference internal" href="statusbinary.html"><span class="doc">statusbinary</span></a> -                  Status of native transport (binary protocol)</p>
+<p><a class="reference internal" href="statusgossip.html"><span class="doc">statusgossip</span></a> -                  Status of gossip</p>
+<p><a class="reference internal" href="statushandoff.html"><span class="doc">statushandoff</span></a> -                 Status of storing future hints on the current node</p>
+<p><a class="reference internal" href="statusthrift.html"><span class="doc">statusthrift</span></a> -                  Status of thrift server</p>
+<p><a class="reference internal" href="stop.html"><span class="doc">stop</span></a> -                          Stop compaction</p>
+<p><a class="reference internal" href="stopdaemon.html"><span class="doc">stopdaemon</span></a> -                    Stop cassandra daemon</p>
+<p><a class="reference internal" href="tablehistograms.html"><span class="doc">tablehistograms</span></a> -               Print statistic histograms for a given table</p>
+<p><a class="reference internal" href="tablestats.html"><span class="doc">tablestats</span></a> -                    Print statistics on tables</p>
+<p><a class="reference internal" href="toppartitions.html"><span class="doc">toppartitions</span></a> -                 Sample and print the most active partitions for a given column family</p>
+<p><a class="reference internal" href="tpstats.html"><span class="doc">tpstats</span></a> -                       Print usage statistics of thread pools</p>
+<p><a class="reference internal" href="truncatehints.html"><span class="doc">truncatehints</span></a> -                 Truncate all hints on the local node, or truncate hints for the endpoint(s) specified.</p>
+<p><a class="reference internal" href="upgradesstables.html"><span class="doc">upgradesstables</span></a> -               Rewrite sstables (for the requested tables) that are not on the current version (thus upgrading them to said current version)</p>
+<p><a class="reference internal" href="verify.html"><span class="doc">verify</span></a> -                        Verify (check data checksum for) one or more tables</p>
+<p><a class="reference internal" href="version.html"><span class="doc">version</span></a> -                       Print cassandra version</p>
+<p><a class="reference internal" href="viewbuildstatus.html"><span class="doc">viewbuildstatus</span></a> -               Show progress of a materialized view build</p>
+</div></blockquote>
+<p>See ‘nodetool help &lt;command&gt;’ for more information on a specific command.</p>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/pausehandoff.html b/src/doc/3.11.11/tools/nodetool/pausehandoff.html
new file mode 100644
index 0000000..607071f
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/pausehandoff.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "pausehandoff"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="pausehandoff">
+<span id="nodetool-pausehandoff"></span><h1>pausehandoff<a class="headerlink" href="#pausehandoff" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">pausehandoff</span> <span class="o">-</span> <span class="n">Pause</span> <span class="n">hints</span> <span class="n">delivery</span> <span class="n">process</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">pausehandoff</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/proxyhistograms.html b/src/doc/3.11.11/tools/nodetool/proxyhistograms.html
new file mode 100644
index 0000000..e6ae88c
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/proxyhistograms.html
@@ -0,0 +1,121 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "proxyhistograms"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="proxyhistograms">
+<span id="nodetool-proxyhistograms"></span><h1>proxyhistograms<a class="headerlink" href="#proxyhistograms" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">proxyhistograms</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">statistic</span> <span class="n">histograms</span> <span class="k">for</span> <span class="n">network</span>
+        <span class="n">operations</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">proxyhistograms</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/rangekeysample.html b/src/doc/3.11.11/tools/nodetool/rangekeysample.html
new file mode 100644
index 0000000..d92a97e
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/rangekeysample.html
@@ -0,0 +1,121 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "rangekeysample"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="rangekeysample">
+<span id="nodetool-rangekeysample"></span><h1>rangekeysample<a class="headerlink" href="#rangekeysample" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">rangekeysample</span> <span class="o">-</span> <span class="n">Shows</span> <span class="n">the</span> <span class="n">sampled</span> <span class="n">keys</span> <span class="n">held</span> <span class="n">across</span> <span class="nb">all</span>
+        <span class="n">keyspaces</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">rangekeysample</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/rebuild.html b/src/doc/3.11.11/tools/nodetool/rebuild.html
new file mode 100644
index 0000000..0abe31b
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/rebuild.html
@@ -0,0 +1,145 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "rebuild"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="rebuild">
+<span id="nodetool-rebuild"></span><h1>rebuild<a class="headerlink" href="#rebuild" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">rebuild</span> <span class="o">-</span> <span class="n">Rebuild</span> <span class="n">data</span> <span class="n">by</span> <span class="n">streaming</span> <span class="kn">from</span> <span class="nn">other</span> <span class="n">nodes</span> <span class="p">(</span><span class="n">similarly</span>
+        <span class="n">to</span> <span class="n">bootstrap</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">rebuild</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">ks</span> <span class="o">&lt;</span><span class="n">specific_keyspace</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">keyspace</span> <span class="o">&lt;</span><span class="n">specific_keyspace</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">specific_sources</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">sources</span> <span class="o">&lt;</span><span class="n">specific_sources</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">ts</span> <span class="o">&lt;</span><span class="n">specific_tokens</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">tokens</span> <span class="o">&lt;</span><span class="n">specific_tokens</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">src</span><span class="o">-</span><span class="n">dc</span><span class="o">-</span><span class="n">name</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">ks</span> <span class="o">&lt;</span><span class="n">specific_keyspace</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">keyspace</span> <span class="o">&lt;</span><span class="n">specific_keyspace</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">ks</span> <span class="n">to</span> <span class="n">rebuild</span> <span class="n">specific</span> <span class="n">keyspace</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">specific_sources</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">sources</span> <span class="o">&lt;</span><span class="n">specific_sources</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">s</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">hosts</span> <span class="n">that</span> <span class="n">this</span> <span class="n">node</span> <span class="n">should</span> <span class="n">stream</span> <span class="kn">from</span> <span class="nn">when</span> <span class="o">-</span><span class="n">ts</span>
+            <span class="ow">is</span> <span class="n">used</span><span class="o">.</span> <span class="n">Multiple</span> <span class="n">hosts</span> <span class="n">should</span> <span class="n">be</span> <span class="n">separated</span> <span class="n">using</span> <span class="n">commas</span> <span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">g</span><span class="o">.</span>
+            <span class="mf">127.0</span><span class="o">.</span><span class="mf">0.1</span><span class="p">,</span><span class="mf">127.0</span><span class="o">.</span><span class="mf">0.2</span><span class="p">,</span><span class="o">...</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">ts</span> <span class="o">&lt;</span><span class="n">specific_tokens</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">tokens</span> <span class="o">&lt;</span><span class="n">specific_tokens</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">ts</span> <span class="n">to</span> <span class="n">rebuild</span> <span class="n">specific</span> <span class="n">token</span> <span class="n">ranges</span><span class="p">,</span> <span class="ow">in</span> <span class="n">the</span> <span class="nb">format</span> <span class="n">of</span> <span class="s2">&quot;(start_token_1,end_token_1],(start_token_2,end_token_2],...(start_token_n,end_token_n]&quot;</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">src</span><span class="o">-</span><span class="n">dc</span><span class="o">-</span><span class="n">name</span><span class="o">&gt;</span>
+            <span class="n">Name</span> <span class="n">of</span> <span class="n">DC</span> <span class="kn">from</span> <span class="nn">which</span> <span class="n">to</span> <span class="n">select</span> <span class="n">sources</span> <span class="k">for</span> <span class="n">streaming</span><span class="o">.</span> <span class="n">By</span> <span class="n">default</span><span class="p">,</span>
+            <span class="n">pick</span> <span class="nb">any</span> <span class="n">DC</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/rebuild_index.html b/src/doc/3.11.11/tools/nodetool/rebuild_index.html
new file mode 100644
index 0000000..819fcea
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/rebuild_index.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "rebuild_index"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="rebuild-index">
+<span id="nodetool-rebuild-index"></span><h1>rebuild_index<a class="headerlink" href="#rebuild-index" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">rebuild_index</span> <span class="o">-</span> <span class="n">A</span> <span class="n">full</span> <span class="n">rebuild</span> <span class="n">of</span> <span class="n">native</span> <span class="n">secondary</span> <span class="n">indexes</span> <span class="k">for</span>
+        <span class="n">a</span> <span class="n">given</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">rebuild_index</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">indexName</span><span class="o">...&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">indexName</span><span class="o">...&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">table</span> <span class="n">name</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">a</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">index</span> <span class="n">names</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/refresh.html b/src/doc/3.11.11/tools/nodetool/refresh.html
new file mode 100644
index 0000000..b3555b3
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/refresh.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "refresh"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="refresh">
+<span id="nodetool-refresh"></span><h1>refresh<a class="headerlink" href="#refresh" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">refresh</span> <span class="o">-</span> <span class="n">Load</span> <span class="n">newly</span> <span class="n">placed</span> <span class="n">SSTables</span> <span class="n">to</span> <span class="n">the</span> <span class="n">system</span> <span class="n">without</span>
+        <span class="n">restart</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">refresh</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">table</span> <span class="n">name</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/refreshsizeestimates.html b/src/doc/3.11.11/tools/nodetool/refreshsizeestimates.html
new file mode 100644
index 0000000..9d9adbb
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/refreshsizeestimates.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "refreshsizeestimates"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="refreshsizeestimates">
+<span id="nodetool-refreshsizeestimates"></span><h1>refreshsizeestimates<a class="headerlink" href="#refreshsizeestimates" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">refreshsizeestimates</span> <span class="o">-</span> <span class="n">Refresh</span> <span class="n">system</span><span class="o">.</span><span class="n">size_estimates</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">refreshsizeestimates</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/reloadlocalschema.html b/src/doc/3.11.11/tools/nodetool/reloadlocalschema.html
new file mode 100644
index 0000000..4570819
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/reloadlocalschema.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "reloadlocalschema"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="reloadlocalschema">
+<span id="nodetool-reloadlocalschema"></span><h1>reloadlocalschema<a class="headerlink" href="#reloadlocalschema" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">reloadlocalschema</span> <span class="o">-</span> <span class="n">Reload</span> <span class="n">local</span> <span class="n">node</span> <span class="n">schema</span> <span class="kn">from</span> <span class="nn">system</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">reloadlocalschema</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/reloadtriggers.html b/src/doc/3.11.11/tools/nodetool/reloadtriggers.html
new file mode 100644
index 0000000..8caf8aa
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/reloadtriggers.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "reloadtriggers"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="reloadtriggers">
+<span id="nodetool-reloadtriggers"></span><h1>reloadtriggers<a class="headerlink" href="#reloadtriggers" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">reloadtriggers</span> <span class="o">-</span> <span class="n">Reload</span> <span class="n">trigger</span> <span class="n">classes</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">reloadtriggers</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/relocatesstables.html b/src/doc/3.11.11/tools/nodetool/relocatesstables.html
new file mode 100644
index 0000000..78491a2
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/relocatesstables.html
@@ -0,0 +1,133 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "relocatesstables"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="relocatesstables">
+<span id="nodetool-relocatesstables"></span><h1>relocatesstables<a class="headerlink" href="#relocatesstables" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">relocatesstables</span> <span class="o">-</span> <span class="n">Relocates</span> <span class="n">sstables</span> <span class="n">to</span> <span class="n">the</span> <span class="n">correct</span> <span class="n">disk</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">relocatesstables</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">sstables</span> <span class="n">to</span> <span class="n">relocate</span> <span class="n">simultanously</span><span class="p">,</span> <span class="nb">set</span> <span class="n">to</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">use</span> <span class="nb">all</span>
+            <span class="n">available</span> <span class="n">compaction</span> <span class="n">threads</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">table</span> <span class="n">name</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/removenode.html b/src/doc/3.11.11/tools/nodetool/removenode.html
new file mode 100644
index 0000000..2ef766d
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/removenode.html
@@ -0,0 +1,131 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "removenode"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="removenode">
+<span id="nodetool-removenode"></span><h1>removenode<a class="headerlink" href="#removenode" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">removenode</span> <span class="o">-</span> <span class="n">Show</span> <span class="n">status</span> <span class="n">of</span> <span class="n">current</span> <span class="n">node</span> <span class="n">removal</span><span class="p">,</span> <span class="n">force</span>
+        <span class="n">completion</span> <span class="n">of</span> <span class="n">pending</span> <span class="n">removal</span> <span class="ow">or</span> <span class="n">remove</span> <span class="n">provided</span> <span class="n">ID</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">removenode</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">status</span><span class="o">&gt;|&lt;</span><span class="n">force</span><span class="o">&gt;|&lt;</span><span class="n">ID</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">status</span><span class="o">&gt;|&lt;</span><span class="n">force</span><span class="o">&gt;|&lt;</span><span class="n">ID</span><span class="o">&gt;</span>
+            <span class="n">Show</span> <span class="n">status</span> <span class="n">of</span> <span class="n">current</span> <span class="n">node</span> <span class="n">removal</span><span class="p">,</span> <span class="n">force</span> <span class="n">completion</span> <span class="n">of</span> <span class="n">pending</span>
+            <span class="n">removal</span><span class="p">,</span> <span class="ow">or</span> <span class="n">remove</span> <span class="n">provided</span> <span class="n">ID</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/repair.html b/src/doc/3.11.11/tools/nodetool/repair.html
new file mode 100644
index 0000000..1bd95c6
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/repair.html
@@ -0,0 +1,182 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "repair"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="repair">
+<span id="nodetool-repair"></span><h1>repair<a class="headerlink" href="#repair" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">repair</span> <span class="o">-</span> <span class="n">Repair</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">more</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">repair</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">dc</span> <span class="o">&lt;</span><span class="n">specific_dc</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="ow">in</span><span class="o">-</span><span class="n">dc</span> <span class="o">&lt;</span><span class="n">specific_dc</span><span class="o">&gt;</span><span class="p">)</span><span class="o">...</span><span class="p">]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">dcpar</span> <span class="o">|</span> <span class="o">--</span><span class="n">dc</span><span class="o">-</span><span class="n">parallel</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">et</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">full</span> <span class="o">|</span> <span class="o">--</span><span class="n">full</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">hosts</span> <span class="o">&lt;</span><span class="n">specific_host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="ow">in</span><span class="o">-</span><span class="n">hosts</span> <span class="o">&lt;</span><span class="n">specific_host</span><span class="o">&gt;</span><span class="p">)</span><span class="o">...</span><span class="p">]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">iuk</span> <span class="o">|</span> <span class="o">--</span><span class="n">ignore</span><span class="o">-</span><span class="n">unreplicated</span><span class="o">-</span><span class="n">keyspaces</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">job_threads</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">job</span><span class="o">-</span><span class="n">threads</span> <span class="o">&lt;</span><span class="n">job_threads</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">local</span> <span class="o">|</span> <span class="o">--</span><span class="ow">in</span><span class="o">-</span><span class="n">local</span><span class="o">-</span><span class="n">dc</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pl</span> <span class="o">|</span> <span class="o">--</span><span class="n">pull</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pr</span> <span class="o">|</span> <span class="o">--</span><span class="n">partitioner</span><span class="o">-</span><span class="nb">range</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">seq</span> <span class="o">|</span> <span class="o">--</span><span class="n">sequential</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">st</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">tr</span> <span class="o">|</span> <span class="o">--</span><span class="n">trace</span><span class="p">)]</span>
+                <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">dc</span> <span class="o">&lt;</span><span class="n">specific_dc</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="ow">in</span><span class="o">-</span><span class="n">dc</span> <span class="o">&lt;</span><span class="n">specific_dc</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">dc</span> <span class="n">to</span> <span class="n">repair</span> <span class="n">specific</span> <span class="n">datacenters</span>
+
+        <span class="o">-</span><span class="n">dcpar</span><span class="p">,</span> <span class="o">--</span><span class="n">dc</span><span class="o">-</span><span class="n">parallel</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">dcpar</span> <span class="n">to</span> <span class="n">repair</span> <span class="n">data</span> <span class="n">centers</span> <span class="ow">in</span> <span class="n">parallel</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">et</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">et</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">repair</span> <span class="nb">range</span> <span class="n">ends</span>
+
+        <span class="o">-</span><span class="n">full</span><span class="p">,</span> <span class="o">--</span><span class="n">full</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">full</span> <span class="n">to</span> <span class="n">issue</span> <span class="n">a</span> <span class="n">full</span> <span class="n">repair</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">hosts</span> <span class="o">&lt;</span><span class="n">specific_host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="ow">in</span><span class="o">-</span><span class="n">hosts</span> <span class="o">&lt;</span><span class="n">specific_host</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">hosts</span> <span class="n">to</span> <span class="n">repair</span> <span class="n">specific</span> <span class="n">hosts</span>
+
+        <span class="o">-</span><span class="n">iuk</span><span class="p">,</span> <span class="o">--</span><span class="n">ignore</span><span class="o">-</span><span class="n">unreplicated</span><span class="o">-</span><span class="n">keyspaces</span>
+            <span class="n">Use</span> <span class="o">--</span><span class="n">ignore</span><span class="o">-</span><span class="n">unreplicated</span><span class="o">-</span><span class="n">keyspaces</span> <span class="n">to</span> <span class="n">ignore</span> <span class="n">keyspaces</span> <span class="n">which</span> <span class="n">are</span>
+            <span class="ow">not</span> <span class="n">replicated</span><span class="p">,</span> <span class="n">otherwise</span> <span class="n">the</span> <span class="n">repair</span> <span class="n">will</span> <span class="n">fail</span>
+
+        <span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">job_threads</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">job</span><span class="o">-</span><span class="n">threads</span> <span class="o">&lt;</span><span class="n">job_threads</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">threads</span> <span class="n">to</span> <span class="n">run</span> <span class="n">repair</span> <span class="n">jobs</span><span class="o">.</span> <span class="n">Usually</span> <span class="n">this</span> <span class="n">means</span> <span class="n">number</span> <span class="n">of</span>
+            <span class="n">CFs</span> <span class="n">to</span> <span class="n">repair</span> <span class="n">concurrently</span><span class="o">.</span> <span class="n">WARNING</span><span class="p">:</span> <span class="n">increasing</span> <span class="n">this</span> <span class="n">puts</span> <span class="n">more</span> <span class="n">load</span>
+            <span class="n">on</span> <span class="n">repairing</span> <span class="n">nodes</span><span class="p">,</span> <span class="n">so</span> <span class="n">be</span> <span class="n">careful</span><span class="o">.</span> <span class="p">(</span><span class="n">default</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="nb">max</span><span class="p">:</span> <span class="mi">4</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">local</span><span class="p">,</span> <span class="o">--</span><span class="ow">in</span><span class="o">-</span><span class="n">local</span><span class="o">-</span><span class="n">dc</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">local</span> <span class="n">to</span> <span class="n">only</span> <span class="n">repair</span> <span class="n">against</span> <span class="n">nodes</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">same</span> <span class="n">datacenter</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pl</span><span class="p">,</span> <span class="o">--</span><span class="n">pull</span>
+            <span class="n">Use</span> <span class="o">--</span><span class="n">pull</span> <span class="n">to</span> <span class="n">perform</span> <span class="n">a</span> <span class="n">one</span> <span class="n">way</span> <span class="n">repair</span> <span class="n">where</span> <span class="n">data</span> <span class="ow">is</span> <span class="n">only</span> <span class="n">streamed</span>
+            <span class="kn">from</span> <span class="nn">a</span> <span class="n">remote</span> <span class="n">node</span> <span class="n">to</span> <span class="n">this</span> <span class="n">node</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">pr</span><span class="p">,</span> <span class="o">--</span><span class="n">partitioner</span><span class="o">-</span><span class="nb">range</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">pr</span> <span class="n">to</span> <span class="n">repair</span> <span class="n">only</span> <span class="n">the</span> <span class="n">first</span> <span class="nb">range</span> <span class="n">returned</span> <span class="n">by</span> <span class="n">the</span> <span class="n">partitioner</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">seq</span><span class="p">,</span> <span class="o">--</span><span class="n">sequential</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">seq</span> <span class="n">to</span> <span class="n">carry</span> <span class="n">out</span> <span class="n">a</span> <span class="n">sequential</span> <span class="n">repair</span>
+
+        <span class="o">-</span><span class="n">st</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">st</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">the</span> <span class="n">repair</span> <span class="nb">range</span> <span class="n">starts</span>
+
+        <span class="o">-</span><span class="n">tr</span><span class="p">,</span> <span class="o">--</span><span class="n">trace</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">tr</span> <span class="n">to</span> <span class="n">trace</span> <span class="n">the</span> <span class="n">repair</span><span class="o">.</span> <span class="n">Traces</span> <span class="n">are</span> <span class="n">logged</span> <span class="n">to</span>
+            <span class="n">system_traces</span><span class="o">.</span><span class="n">events</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/replaybatchlog.html b/src/doc/3.11.11/tools/nodetool/replaybatchlog.html
new file mode 100644
index 0000000..b58c7d5
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/replaybatchlog.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "replaybatchlog"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="replaybatchlog">
+<span id="nodetool-replaybatchlog"></span><h1>replaybatchlog<a class="headerlink" href="#replaybatchlog" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">replaybatchlog</span> <span class="o">-</span> <span class="n">Kick</span> <span class="n">off</span> <span class="n">batchlog</span> <span class="n">replay</span> <span class="ow">and</span> <span class="n">wait</span> <span class="k">for</span> <span class="n">finish</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">replaybatchlog</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/resetlocalschema.html b/src/doc/3.11.11/tools/nodetool/resetlocalschema.html
new file mode 100644
index 0000000..f1776be
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/resetlocalschema.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "resetlocalschema"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="resetlocalschema">
+<span id="nodetool-resetlocalschema"></span><h1>resetlocalschema<a class="headerlink" href="#resetlocalschema" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">resetlocalschema</span> <span class="o">-</span> <span class="n">Reset</span> <span class="n">node</span><span class="s1">&#39;s local schema and resync</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">resetlocalschema</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/resumehandoff.html b/src/doc/3.11.11/tools/nodetool/resumehandoff.html
new file mode 100644
index 0000000..f24dd6c
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/resumehandoff.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "resumehandoff"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="resumehandoff">
+<span id="nodetool-resumehandoff"></span><h1>resumehandoff<a class="headerlink" href="#resumehandoff" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">resumehandoff</span> <span class="o">-</span> <span class="n">Resume</span> <span class="n">hints</span> <span class="n">delivery</span> <span class="n">process</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">resumehandoff</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/ring.html b/src/doc/3.11.11/tools/nodetool/ring.html
new file mode 100644
index 0000000..5b274e4
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/ring.html
@@ -0,0 +1,133 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "ring"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="ring">
+<span id="nodetool-ring"></span><h1>ring<a class="headerlink" href="#ring" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">ring</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">information</span> <span class="n">about</span> <span class="n">the</span> <span class="n">token</span> <span class="n">ring</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">ring</span> <span class="p">[(</span><span class="o">-</span><span class="n">r</span> <span class="o">|</span> <span class="o">--</span><span class="n">resolve</span><span class="o">-</span><span class="n">ip</span><span class="p">)]</span>
+                <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">r</span><span class="p">,</span> <span class="o">--</span><span class="n">resolve</span><span class="o">-</span><span class="n">ip</span>
+            <span class="n">Show</span> <span class="n">node</span> <span class="n">domain</span> <span class="n">names</span> <span class="n">instead</span> <span class="n">of</span> <span class="n">IPs</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+            <span class="n">Specify</span> <span class="n">a</span> <span class="n">keyspace</span> <span class="k">for</span> <span class="n">accurate</span> <span class="n">ownership</span> <span class="n">information</span> <span class="p">(</span><span class="n">topology</span>
+            <span class="n">awareness</span><span class="p">)</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/scrub.html b/src/doc/3.11.11/tools/nodetool/scrub.html
new file mode 100644
index 0000000..91e9933
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/scrub.html
@@ -0,0 +1,154 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "scrub"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="scrub">
+<span id="nodetool-scrub"></span><h1>scrub<a class="headerlink" href="#scrub" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">scrub</span> <span class="o">-</span> <span class="n">Scrub</span> <span class="p">(</span><span class="n">rebuild</span> <span class="n">sstables</span> <span class="k">for</span><span class="p">)</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">more</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">scrub</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">n</span> <span class="o">|</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">validate</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">ns</span> <span class="o">|</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">snapshot</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">r</span> <span class="o">|</span> <span class="o">--</span><span class="n">reinsert</span><span class="o">-</span><span class="n">overflowed</span><span class="o">-</span><span class="n">ttl</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">s</span> <span class="o">|</span> <span class="o">--</span><span class="n">skip</span><span class="o">-</span><span class="n">corrupted</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">sstables</span> <span class="n">to</span> <span class="n">scrub</span> <span class="n">simultanously</span><span class="p">,</span> <span class="nb">set</span> <span class="n">to</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">use</span> <span class="nb">all</span>
+            <span class="n">available</span> <span class="n">compaction</span> <span class="n">threads</span>
+
+        <span class="o">-</span><span class="n">n</span><span class="p">,</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">validate</span>
+            <span class="n">Do</span> <span class="ow">not</span> <span class="n">validate</span> <span class="n">columns</span> <span class="n">using</span> <span class="n">column</span> <span class="n">validator</span>
+
+        <span class="o">-</span><span class="n">ns</span><span class="p">,</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">snapshot</span>
+            <span class="n">Scrubbed</span> <span class="n">CFs</span> <span class="n">will</span> <span class="n">be</span> <span class="n">snapshotted</span> <span class="n">first</span><span class="p">,</span> <span class="k">if</span> <span class="n">disableSnapshot</span> <span class="ow">is</span> <span class="n">false</span><span class="o">.</span>
+            <span class="p">(</span><span class="n">default</span> <span class="n">false</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">r</span><span class="p">,</span> <span class="o">--</span><span class="n">reinsert</span><span class="o">-</span><span class="n">overflowed</span><span class="o">-</span><span class="n">ttl</span>
+            <span class="n">Rewrites</span> <span class="n">rows</span> <span class="k">with</span> <span class="n">overflowed</span> <span class="n">expiration</span> <span class="n">date</span> <span class="n">affected</span> <span class="n">by</span>
+            <span class="n">CASSANDRA</span><span class="o">-</span><span class="mi">14092</span> <span class="k">with</span> <span class="n">the</span> <span class="n">maximum</span> <span class="n">supported</span> <span class="n">expiration</span> <span class="n">date</span> <span class="n">of</span>
+            <span class="mi">2038</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">19</span><span class="n">T03</span><span class="p">:</span><span class="mi">14</span><span class="p">:</span><span class="mi">06</span><span class="o">+</span><span class="mi">00</span><span class="p">:</span><span class="mf">00.</span> <span class="n">The</span> <span class="n">rows</span> <span class="n">are</span> <span class="n">rewritten</span> <span class="k">with</span> <span class="n">the</span> <span class="n">original</span>
+            <span class="n">timestamp</span> <span class="n">incremented</span> <span class="n">by</span> <span class="n">one</span> <span class="n">millisecond</span> <span class="n">to</span> <span class="n">override</span><span class="o">/</span><span class="n">supersede</span> <span class="nb">any</span>
+            <span class="n">potential</span> <span class="n">tombstone</span> <span class="n">that</span> <span class="n">may</span> <span class="n">have</span> <span class="n">been</span> <span class="n">generated</span> <span class="n">during</span> <span class="n">compaction</span>
+            <span class="n">of</span> <span class="n">the</span> <span class="n">affected</span> <span class="n">rows</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">s</span><span class="p">,</span> <span class="o">--</span><span class="n">skip</span><span class="o">-</span><span class="n">corrupted</span>
+            <span class="n">Skip</span> <span class="n">corrupted</span> <span class="n">partitions</span> <span class="n">even</span> <span class="n">when</span> <span class="n">scrubbing</span> <span class="n">counter</span> <span class="n">tables</span><span class="o">.</span>
+            <span class="p">(</span><span class="n">default</span> <span class="n">false</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/setcachecapacity.html b/src/doc/3.11.11/tools/nodetool/setcachecapacity.html
new file mode 100644
index 0000000..8a5f08e
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/setcachecapacity.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setcachecapacity"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setcachecapacity">
+<span id="nodetool-setcachecapacity"></span><h1>setcachecapacity<a class="headerlink" href="#setcachecapacity" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setcachecapacity</span> <span class="o">-</span> <span class="n">Set</span> <span class="k">global</span> <span class="n">key</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="ow">and</span> <span class="n">counter</span> <span class="n">cache</span>
+        <span class="n">capacities</span> <span class="p">(</span><span class="ow">in</span> <span class="n">MB</span> <span class="n">units</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setcachecapacity</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">key</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">capacity</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">row</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">capacity</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">counter</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">capacity</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">key</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">capacity</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">row</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">capacity</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">counter</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">capacity</span><span class="o">&gt;</span>
+            <span class="n">Key</span> <span class="n">cache</span><span class="p">,</span> <span class="n">row</span> <span class="n">cache</span><span class="p">,</span> <span class="ow">and</span> <span class="n">counter</span> <span class="n">cache</span> <span class="p">(</span><span class="ow">in</span> <span class="n">MB</span><span class="p">)</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/setcachekeystosave.html b/src/doc/3.11.11/tools/nodetool/setcachekeystosave.html
new file mode 100644
index 0000000..1a50f13
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/setcachekeystosave.html
@@ -0,0 +1,132 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setcachekeystosave"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setcachekeystosave">
+<span id="nodetool-setcachekeystosave"></span><h1>setcachekeystosave<a class="headerlink" href="#setcachekeystosave" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setcachekeystosave</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">number</span> <span class="n">of</span> <span class="n">keys</span> <span class="n">saved</span> <span class="n">by</span> <span class="n">each</span> <span class="n">cache</span> <span class="k">for</span>
+        <span class="n">faster</span> <span class="n">post</span><span class="o">-</span><span class="n">restart</span> <span class="n">warmup</span><span class="o">.</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setcachekeystosave</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">key</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">keys</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">save</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">row</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">keys</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">save</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">counter</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">keys</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">save</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">key</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">keys</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">save</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">row</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">keys</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">save</span><span class="o">&gt;</span>
+        <span class="o">&lt;</span><span class="n">counter</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">keys</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">save</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">number</span> <span class="n">of</span> <span class="n">keys</span> <span class="n">saved</span> <span class="n">by</span> <span class="n">each</span> <span class="n">cache</span><span class="o">.</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/setcompactionthreshold.html b/src/doc/3.11.11/tools/nodetool/setcompactionthreshold.html
new file mode 100644
index 0000000..7ac789f
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/setcompactionthreshold.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setcompactionthreshold"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setcompactionthreshold">
+<span id="nodetool-setcompactionthreshold"></span><h1>setcompactionthreshold<a class="headerlink" href="#setcompactionthreshold" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setcompactionthreshold</span> <span class="o">-</span> <span class="n">Set</span> <span class="nb">min</span> <span class="ow">and</span> <span class="nb">max</span> <span class="n">compaction</span> <span class="n">thresholds</span>
+        <span class="k">for</span> <span class="n">a</span> <span class="n">given</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setcompactionthreshold</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">minthreshold</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">maxthreshold</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">minthreshold</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">maxthreshold</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">the</span> <span class="n">table</span><span class="p">,</span> <span class="nb">min</span> <span class="ow">and</span> <span class="nb">max</span> <span class="n">threshold</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/setcompactionthroughput.html b/src/doc/3.11.11/tools/nodetool/setcompactionthroughput.html
new file mode 100644
index 0000000..681bd2f
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/setcompactionthroughput.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setcompactionthroughput"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setcompactionthroughput">
+<span id="nodetool-setcompactionthroughput"></span><h1>setcompactionthroughput<a class="headerlink" href="#setcompactionthroughput" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setcompactionthroughput</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">MB</span><span class="o">/</span><span class="n">s</span> <span class="n">throughput</span> <span class="n">cap</span> <span class="k">for</span>
+        <span class="n">compaction</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span><span class="p">,</span> <span class="ow">or</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setcompactionthroughput</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">value_in_mb</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value_in_mb</span><span class="o">&gt;</span>
+            <span class="n">Value</span> <span class="ow">in</span> <span class="n">MB</span><span class="p">,</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/setconcurrentcompactors.html b/src/doc/3.11.11/tools/nodetool/setconcurrentcompactors.html
new file mode 100644
index 0000000..4efc9f6
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/setconcurrentcompactors.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setconcurrentcompactors"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setconcurrentcompactors">
+<span id="nodetool-setconcurrentcompactors"></span><h1>setconcurrentcompactors<a class="headerlink" href="#setconcurrentcompactors" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setconcurrentcompactors</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">number</span> <span class="n">of</span> <span class="n">concurrent</span> <span class="n">compactors</span>
+        <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span><span class="o">.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setconcurrentcompactors</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">value</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">concurrent</span> <span class="n">compactors</span><span class="p">,</span> <span class="n">greater</span> <span class="n">than</span> <span class="mf">0.</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/sethintedhandoffthrottlekb.html b/src/doc/3.11.11/tools/nodetool/sethintedhandoffthrottlekb.html
new file mode 100644
index 0000000..b6d18c2
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/sethintedhandoffthrottlekb.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "sethintedhandoffthrottlekb"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sethintedhandoffthrottlekb">
+<span id="nodetool-sethintedhandoffthrottlekb"></span><h1>sethintedhandoffthrottlekb<a class="headerlink" href="#sethintedhandoffthrottlekb" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">sethintedhandoffthrottlekb</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">hinted</span> <span class="n">handoff</span> <span class="n">throttle</span> <span class="ow">in</span> <span class="n">kb</span>
+        <span class="n">per</span> <span class="n">second</span><span class="p">,</span> <span class="n">per</span> <span class="n">delivery</span> <span class="n">thread</span><span class="o">.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">sethintedhandoffthrottlekb</span>
+                <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">value_in_kb_per_sec</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value_in_kb_per_sec</span><span class="o">&gt;</span>
+            <span class="n">Value</span> <span class="ow">in</span> <span class="n">KB</span> <span class="n">per</span> <span class="n">second</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/setinterdcstreamthroughput.html b/src/doc/3.11.11/tools/nodetool/setinterdcstreamthroughput.html
new file mode 100644
index 0000000..f55e650
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/setinterdcstreamthroughput.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setinterdcstreamthroughput"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setinterdcstreamthroughput">
+<span id="nodetool-setinterdcstreamthroughput"></span><h1>setinterdcstreamthroughput<a class="headerlink" href="#setinterdcstreamthroughput" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setinterdcstreamthroughput</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">Mb</span><span class="o">/</span><span class="n">s</span> <span class="n">throughput</span> <span class="n">cap</span> <span class="k">for</span>
+        <span class="n">inter</span><span class="o">-</span><span class="n">datacenter</span> <span class="n">streaming</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span><span class="p">,</span> <span class="ow">or</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setinterdcstreamthroughput</span>
+                <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">value_in_mb</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value_in_mb</span><span class="o">&gt;</span>
+            <span class="n">Value</span> <span class="ow">in</span> <span class="n">Mb</span><span class="p">,</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/setlogginglevel.html b/src/doc/3.11.11/tools/nodetool/setlogginglevel.html
new file mode 100644
index 0000000..b512b2b
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/setlogginglevel.html
@@ -0,0 +1,132 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setlogginglevel"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setlogginglevel">
+<span id="nodetool-setlogginglevel"></span><h1>setlogginglevel<a class="headerlink" href="#setlogginglevel" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setlogginglevel</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">log</span> <span class="n">level</span> <span class="n">threshold</span> <span class="k">for</span> <span class="n">a</span> <span class="n">given</span>
+        <span class="n">class</span><span class="o">.</span> <span class="n">If</span> <span class="n">both</span> <span class="k">class</span> <span class="nc">and</span> <span class="n">level</span> <span class="n">are</span> <span class="n">empty</span><span class="o">/</span><span class="n">null</span><span class="p">,</span> <span class="n">it</span> <span class="n">will</span> <span class="n">reset</span> <span class="n">to</span> <span class="n">the</span>
+        <span class="n">initial</span> <span class="n">configuration</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setlogginglevel</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">class</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">level</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">class</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">level</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="k">class</span> <span class="nc">to</span> <span class="n">change</span> <span class="n">the</span> <span class="n">level</span> <span class="k">for</span> <span class="ow">and</span> <span class="n">the</span> <span class="n">log</span> <span class="n">level</span> <span class="n">threshold</span> <span class="n">to</span> <span class="nb">set</span>
+            <span class="p">(</span><span class="n">can</span> <span class="n">be</span> <span class="n">empty</span><span class="p">)</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/setstreamthroughput.html b/src/doc/3.11.11/tools/nodetool/setstreamthroughput.html
new file mode 100644
index 0000000..4c25e35
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/setstreamthroughput.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setstreamthroughput"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setstreamthroughput">
+<span id="nodetool-setstreamthroughput"></span><h1>setstreamthroughput<a class="headerlink" href="#setstreamthroughput" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setstreamthroughput</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">Mb</span><span class="o">/</span><span class="n">s</span> <span class="n">throughput</span> <span class="n">cap</span> <span class="k">for</span> <span class="n">streaming</span>
+        <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span><span class="p">,</span> <span class="ow">or</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setstreamthroughput</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">value_in_mb</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value_in_mb</span><span class="o">&gt;</span>
+            <span class="n">Value</span> <span class="ow">in</span> <span class="n">Mb</span><span class="p">,</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/settimeout.html b/src/doc/3.11.11/tools/nodetool/settimeout.html
new file mode 100644
index 0000000..f18720a
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/settimeout.html
@@ -0,0 +1,133 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "settimeout"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="settimeout">
+<span id="nodetool-settimeout"></span><h1>settimeout<a class="headerlink" href="#settimeout" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">settimeout</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">specified</span> <span class="n">timeout</span> <span class="ow">in</span> <span class="n">ms</span><span class="p">,</span> <span class="ow">or</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span>
+        <span class="n">timeout</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">settimeout</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">timeout_type</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">timeout_in_ms</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">timeout_type</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">timeout_in_ms</span><span class="o">&gt;</span>
+            <span class="n">Timeout</span> <span class="nb">type</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">ms</span> <span class="p">(</span><span class="mi">0</span> <span class="n">disables</span> <span class="n">socket</span> <span class="n">streaming</span>
+            <span class="n">timeout</span><span class="p">)</span><span class="o">.</span> <span class="n">Type</span> <span class="n">should</span> <span class="n">be</span> <span class="n">one</span> <span class="n">of</span> <span class="p">(</span><span class="n">read</span><span class="p">,</span> <span class="nb">range</span><span class="p">,</span> <span class="n">write</span><span class="p">,</span> <span class="n">counterwrite</span><span class="p">,</span>
+            <span class="n">cascontention</span><span class="p">,</span> <span class="n">truncate</span><span class="p">,</span> <span class="n">streamingsocket</span><span class="p">,</span> <span class="n">misc</span> <span class="p">(</span><span class="n">general</span>
+            <span class="n">rpc_timeout_in_ms</span><span class="p">))</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/settraceprobability.html b/src/doc/3.11.11/tools/nodetool/settraceprobability.html
new file mode 100644
index 0000000..c516467
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/settraceprobability.html
@@ -0,0 +1,131 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "settraceprobability"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="settraceprobability">
+<span id="nodetool-settraceprobability"></span><h1>settraceprobability<a class="headerlink" href="#settraceprobability" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">settraceprobability</span> <span class="o">-</span> <span class="n">Sets</span> <span class="n">the</span> <span class="n">probability</span> <span class="k">for</span> <span class="n">tracing</span> <span class="nb">any</span>
+        <span class="n">given</span> <span class="n">request</span> <span class="n">to</span> <span class="n">value</span><span class="o">.</span> <span class="mi">0</span> <span class="n">disables</span><span class="p">,</span> <span class="mi">1</span> <span class="n">enables</span> <span class="k">for</span> <span class="nb">all</span> <span class="n">requests</span><span class="p">,</span> <span class="mi">0</span> <span class="ow">is</span> <span class="n">the</span>
+        <span class="n">default</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">settraceprobability</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">value</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value</span><span class="o">&gt;</span>
+            <span class="n">Trace</span> <span class="n">probability</span> <span class="n">between</span> <span class="mi">0</span> <span class="ow">and</span> <span class="mi">1</span> <span class="p">(</span><span class="n">ex</span><span class="p">:</span> <span class="mf">0.2</span><span class="p">)</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/snapshot.html b/src/doc/3.11.11/tools/nodetool/snapshot.html
new file mode 100644
index 0000000..97ed46e
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/snapshot.html
@@ -0,0 +1,147 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "snapshot"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="snapshot">
+<span id="nodetool-snapshot"></span><h1>snapshot<a class="headerlink" href="#snapshot" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">snapshot</span> <span class="o">-</span> <span class="n">Take</span> <span class="n">a</span> <span class="n">snapshot</span> <span class="n">of</span> <span class="n">specified</span> <span class="n">keyspaces</span> <span class="ow">or</span> <span class="n">a</span> <span class="n">snapshot</span>
+        <span class="n">of</span> <span class="n">the</span> <span class="n">specified</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">snapshot</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">cf</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">column</span><span class="o">-</span><span class="n">family</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">table</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">kt</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">kt</span><span class="o">-</span><span class="nb">list</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">-</span><span class="n">kc</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">kc</span><span class="o">.</span><span class="n">list</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">sf</span> <span class="o">|</span> <span class="o">--</span><span class="n">skip</span><span class="o">-</span><span class="n">flush</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">t</span> <span class="o">&lt;</span><span class="n">tag</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">tag</span> <span class="o">&lt;</span><span class="n">tag</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspaces</span><span class="o">...&gt;</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">cf</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">column</span><span class="o">-</span><span class="n">family</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">table</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">table</span> <span class="n">name</span> <span class="p">(</span><span class="n">you</span> <span class="n">must</span> <span class="n">specify</span> <span class="n">one</span> <span class="ow">and</span> <span class="n">only</span> <span class="n">one</span> <span class="n">keyspace</span> <span class="k">for</span> <span class="n">using</span>
+            <span class="n">this</span> <span class="n">option</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">kt</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">kt</span><span class="o">-</span><span class="nb">list</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">-</span><span class="n">kc</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">kc</span><span class="o">.</span><span class="n">list</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">Keyspace</span><span class="o">.</span><span class="n">table</span> <span class="n">to</span> <span class="n">take</span> <span class="n">snapshot</span><span class="o">.</span><span class="p">(</span><span class="n">you</span> <span class="n">must</span> <span class="ow">not</span> <span class="n">specify</span>
+            <span class="n">only</span> <span class="n">keyspace</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">sf</span><span class="p">,</span> <span class="o">--</span><span class="n">skip</span><span class="o">-</span><span class="n">flush</span>
+            <span class="n">Do</span> <span class="ow">not</span> <span class="n">flush</span> <span class="n">memtables</span> <span class="n">before</span> <span class="n">snapshotting</span> <span class="p">(</span><span class="n">snapshot</span> <span class="n">will</span> <span class="ow">not</span>
+            <span class="n">contain</span> <span class="n">unflushed</span> <span class="n">data</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">t</span> <span class="o">&lt;</span><span class="n">tag</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">tag</span> <span class="o">&lt;</span><span class="n">tag</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">name</span> <span class="n">of</span> <span class="n">the</span> <span class="n">snapshot</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspaces</span><span class="o">...&gt;</span><span class="p">]</span>
+            <span class="n">List</span> <span class="n">of</span> <span class="n">keyspaces</span><span class="o">.</span> <span class="n">By</span> <span class="n">default</span><span class="p">,</span> <span class="nb">all</span> <span class="n">keyspaces</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/status.html b/src/doc/3.11.11/tools/nodetool/status.html
new file mode 100644
index 0000000..7c611f5
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/status.html
@@ -0,0 +1,132 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "status"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="status">
+<span id="nodetool-status"></span><h1>status<a class="headerlink" href="#status" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">status</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">cluster</span> <span class="n">information</span> <span class="p">(</span><span class="n">state</span><span class="p">,</span> <span class="n">load</span><span class="p">,</span> <span class="n">IDs</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">status</span> <span class="p">[(</span><span class="o">-</span><span class="n">r</span> <span class="o">|</span> <span class="o">--</span><span class="n">resolve</span><span class="o">-</span><span class="n">ip</span><span class="p">)]</span>
+                <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">r</span><span class="p">,</span> <span class="o">--</span><span class="n">resolve</span><span class="o">-</span><span class="n">ip</span>
+            <span class="n">Show</span> <span class="n">node</span> <span class="n">domain</span> <span class="n">names</span> <span class="n">instead</span> <span class="n">of</span> <span class="n">IPs</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">name</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/statusbackup.html b/src/doc/3.11.11/tools/nodetool/statusbackup.html
new file mode 100644
index 0000000..dcf3090
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/statusbackup.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "statusbackup"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="statusbackup">
+<span id="nodetool-statusbackup"></span><h1>statusbackup<a class="headerlink" href="#statusbackup" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">statusbackup</span> <span class="o">-</span> <span class="n">Status</span> <span class="n">of</span> <span class="n">incremental</span> <span class="n">backup</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">statusbackup</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/statusbinary.html b/src/doc/3.11.11/tools/nodetool/statusbinary.html
new file mode 100644
index 0000000..77808fd
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/statusbinary.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "statusbinary"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="statusbinary">
+<span id="nodetool-statusbinary"></span><h1>statusbinary<a class="headerlink" href="#statusbinary" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">statusbinary</span> <span class="o">-</span> <span class="n">Status</span> <span class="n">of</span> <span class="n">native</span> <span class="n">transport</span> <span class="p">(</span><span class="n">binary</span> <span class="n">protocol</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">statusbinary</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/statusgossip.html b/src/doc/3.11.11/tools/nodetool/statusgossip.html
new file mode 100644
index 0000000..a6df4c6
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/statusgossip.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "statusgossip"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="statusgossip">
+<span id="nodetool-statusgossip"></span><h1>statusgossip<a class="headerlink" href="#statusgossip" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">statusgossip</span> <span class="o">-</span> <span class="n">Status</span> <span class="n">of</span> <span class="n">gossip</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">statusgossip</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/statushandoff.html b/src/doc/3.11.11/tools/nodetool/statushandoff.html
new file mode 100644
index 0000000..6aea3b4
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/statushandoff.html
@@ -0,0 +1,121 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "statushandoff"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="statushandoff">
+<span id="nodetool-statushandoff"></span><h1>statushandoff<a class="headerlink" href="#statushandoff" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">statushandoff</span> <span class="o">-</span> <span class="n">Status</span> <span class="n">of</span> <span class="n">storing</span> <span class="n">future</span> <span class="n">hints</span> <span class="n">on</span> <span class="n">the</span> <span class="n">current</span>
+        <span class="n">node</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">statushandoff</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/statusthrift.html b/src/doc/3.11.11/tools/nodetool/statusthrift.html
new file mode 100644
index 0000000..99e690a
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/statusthrift.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "statusthrift"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="statusthrift">
+<span id="nodetool-statusthrift"></span><h1>statusthrift<a class="headerlink" href="#statusthrift" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">statusthrift</span> <span class="o">-</span> <span class="n">Status</span> <span class="n">of</span> <span class="n">thrift</span> <span class="n">server</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">statusthrift</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/stop.html b/src/doc/3.11.11/tools/nodetool/stop.html
new file mode 100644
index 0000000..3c41de2
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/stop.html
@@ -0,0 +1,137 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "stop"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="stop">
+<span id="nodetool-stop"></span><h1>stop<a class="headerlink" href="#stop" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">stop</span> <span class="o">-</span> <span class="n">Stop</span> <span class="n">compaction</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">stop</span>
+                <span class="p">[(</span><span class="o">-</span><span class="nb">id</span> <span class="o">&lt;</span><span class="n">compactionId</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">compaction</span><span class="o">-</span><span class="nb">id</span> <span class="o">&lt;</span><span class="n">compactionId</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">compaction</span>
+                <span class="nb">type</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="nb">id</span> <span class="o">&lt;</span><span class="n">compactionId</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">compaction</span><span class="o">-</span><span class="nb">id</span> <span class="o">&lt;</span><span class="n">compactionId</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="nb">id</span> <span class="n">to</span> <span class="n">stop</span> <span class="n">a</span> <span class="n">compaction</span> <span class="n">by</span> <span class="n">the</span> <span class="n">specified</span> <span class="nb">id</span><span class="o">.</span> <span class="n">Ids</span> <span class="n">can</span> <span class="n">be</span> <span class="n">found</span>
+            <span class="ow">in</span> <span class="n">the</span> <span class="n">transaction</span> <span class="n">log</span> <span class="n">files</span> <span class="n">whose</span> <span class="n">name</span> <span class="n">starts</span> <span class="k">with</span> <span class="n">compaction_</span><span class="p">,</span>
+            <span class="n">located</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">table</span> <span class="n">transactions</span> <span class="n">folder</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">compaction</span> <span class="nb">type</span><span class="o">&gt;</span>
+            <span class="n">Supported</span> <span class="n">types</span> <span class="n">are</span> <span class="n">COMPACTION</span><span class="p">,</span> <span class="n">VALIDATION</span><span class="p">,</span> <span class="n">CLEANUP</span><span class="p">,</span> <span class="n">SCRUB</span><span class="p">,</span>
+            <span class="n">UPGRADE_SSTABLES</span><span class="p">,</span> <span class="n">INDEX_BUILD</span><span class="p">,</span> <span class="n">TOMBSTONE_COMPACTION</span><span class="p">,</span> <span class="n">ANTICOMPACTION</span><span class="p">,</span>
+            <span class="n">VERIFY</span><span class="p">,</span> <span class="n">VIEW_BUILD</span><span class="p">,</span> <span class="n">INDEX_SUMMARY</span><span class="p">,</span> <span class="n">RELOCATE</span><span class="p">,</span> <span class="n">GARBAGE_COLLECT</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/stopdaemon.html b/src/doc/3.11.11/tools/nodetool/stopdaemon.html
new file mode 100644
index 0000000..74e7558
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/stopdaemon.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "stopdaemon"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="stopdaemon">
+<span id="nodetool-stopdaemon"></span><h1>stopdaemon<a class="headerlink" href="#stopdaemon" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">stopdaemon</span> <span class="o">-</span> <span class="n">Stop</span> <span class="n">cassandra</span> <span class="n">daemon</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">stopdaemon</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/tablehistograms.html b/src/doc/3.11.11/tools/nodetool/tablehistograms.html
new file mode 100644
index 0000000..2e2f1d1
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/tablehistograms.html
@@ -0,0 +1,129 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "tablehistograms"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="tablehistograms">
+<span id="nodetool-tablehistograms"></span><h1>tablehistograms<a class="headerlink" href="#tablehistograms" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">tablehistograms</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">statistic</span> <span class="n">histograms</span> <span class="k">for</span> <span class="n">a</span> <span class="n">given</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">tablehistograms</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">.</span><span class="n">table</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">.</span><span class="n">table</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">table</span> <span class="n">name</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/tablestats.html b/src/doc/3.11.11/tools/nodetool/tablestats.html
new file mode 100644
index 0000000..958b921
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/tablestats.html
@@ -0,0 +1,139 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "tablestats"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="tablestats">
+<span id="nodetool-tablestats"></span><h1>tablestats<a class="headerlink" href="#tablestats" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">tablestats</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">statistics</span> <span class="n">on</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">tablestats</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">F</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="nb">format</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">H</span> <span class="o">|</span> <span class="o">--</span><span class="n">human</span><span class="o">-</span><span class="n">readable</span><span class="p">)]</span> <span class="p">[</span><span class="o">-</span><span class="n">i</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">.</span><span class="n">table</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">F</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="nb">format</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span>
+            <span class="n">Output</span> <span class="nb">format</span> <span class="p">(</span><span class="n">json</span><span class="p">,</span> <span class="n">yaml</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">H</span><span class="p">,</span> <span class="o">--</span><span class="n">human</span><span class="o">-</span><span class="n">readable</span>
+            <span class="n">Display</span> <span class="nb">bytes</span> <span class="ow">in</span> <span class="n">human</span> <span class="n">readable</span> <span class="n">form</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">e</span><span class="o">.</span> <span class="n">KiB</span><span class="p">,</span> <span class="n">MiB</span><span class="p">,</span> <span class="n">GiB</span><span class="p">,</span> <span class="n">TiB</span>
+
+        <span class="o">-</span><span class="n">i</span>
+            <span class="n">Ignore</span> <span class="n">the</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">tables</span> <span class="ow">and</span> <span class="n">display</span> <span class="n">the</span> <span class="n">remaining</span> <span class="n">tables</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">.</span><span class="n">table</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">List</span> <span class="n">of</span> <span class="n">tables</span> <span class="p">(</span><span class="ow">or</span> <span class="n">keyspace</span><span class="p">)</span> <span class="n">names</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/toppartitions.html b/src/doc/3.11.11/tools/nodetool/toppartitions.html
new file mode 100644
index 0000000..cb9fdde
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/toppartitions.html
@@ -0,0 +1,140 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "toppartitions"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="toppartitions">
+<span id="nodetool-toppartitions"></span><h1>toppartitions<a class="headerlink" href="#toppartitions" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">toppartitions</span> <span class="o">-</span> <span class="n">Sample</span> <span class="ow">and</span> <span class="nb">print</span> <span class="n">the</span> <span class="n">most</span> <span class="n">active</span> <span class="n">partitions</span> <span class="k">for</span>
+        <span class="n">a</span> <span class="n">given</span> <span class="n">column</span> <span class="n">family</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">toppartitions</span> <span class="p">[</span><span class="o">-</span><span class="n">a</span> <span class="o">&lt;</span><span class="n">samplers</span><span class="o">&gt;</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">-</span><span class="n">k</span> <span class="o">&lt;</span><span class="n">topCount</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">size</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">cfname</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">duration</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">a</span> <span class="o">&lt;</span><span class="n">samplers</span><span class="o">&gt;</span>
+            <span class="n">Comma</span> <span class="n">separated</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">samplers</span> <span class="n">to</span> <span class="n">use</span> <span class="p">(</span><span class="n">Default</span><span class="p">:</span> <span class="nb">all</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">k</span> <span class="o">&lt;</span><span class="n">topCount</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">the</span> <span class="n">top</span> <span class="n">partitions</span> <span class="n">to</span> <span class="nb">list</span> <span class="p">(</span><span class="n">Default</span><span class="p">:</span> <span class="mi">10</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">size</span><span class="o">&gt;</span>
+            <span class="n">Capacity</span> <span class="n">of</span> <span class="n">stream</span> <span class="n">summary</span><span class="p">,</span> <span class="n">closer</span> <span class="n">to</span> <span class="n">the</span> <span class="n">actual</span> <span class="n">cardinality</span> <span class="n">of</span>
+            <span class="n">partitions</span> <span class="n">will</span> <span class="k">yield</span> <span class="n">more</span> <span class="n">accurate</span> <span class="n">results</span> <span class="p">(</span><span class="n">Default</span><span class="p">:</span> <span class="mi">256</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">cfname</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">duration</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">column</span> <span class="n">family</span> <span class="n">name</span><span class="p">,</span> <span class="ow">and</span> <span class="n">duration</span> <span class="ow">in</span> <span class="n">milliseconds</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/tpstats.html b/src/doc/3.11.11/tools/nodetool/tpstats.html
new file mode 100644
index 0000000..3ff1d99
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/tpstats.html
@@ -0,0 +1,124 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "tpstats"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="tpstats">
+<span id="nodetool-tpstats"></span><h1>tpstats<a class="headerlink" href="#tpstats" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">tpstats</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">usage</span> <span class="n">statistics</span> <span class="n">of</span> <span class="n">thread</span> <span class="n">pools</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">tpstats</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">F</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="nb">format</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span><span class="p">)]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">F</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="nb">format</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span>
+            <span class="n">Output</span> <span class="nb">format</span> <span class="p">(</span><span class="n">json</span><span class="p">,</span> <span class="n">yaml</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/truncatehints.html b/src/doc/3.11.11/tools/nodetool/truncatehints.html
new file mode 100644
index 0000000..e2d5482
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/truncatehints.html
@@ -0,0 +1,131 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "truncatehints"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="truncatehints">
+<span id="nodetool-truncatehints"></span><h1>truncatehints<a class="headerlink" href="#truncatehints" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">truncatehints</span> <span class="o">-</span> <span class="n">Truncate</span> <span class="nb">all</span> <span class="n">hints</span> <span class="n">on</span> <span class="n">the</span> <span class="n">local</span> <span class="n">node</span><span class="p">,</span> <span class="ow">or</span>
+        <span class="n">truncate</span> <span class="n">hints</span> <span class="k">for</span> <span class="n">the</span> <span class="n">endpoint</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="n">specified</span><span class="o">.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">truncatehints</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="n">endpoint</span>
+                <span class="o">...</span> <span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="n">endpoint</span> <span class="o">...</span> <span class="p">]</span>
+            <span class="n">Endpoint</span> <span class="n">address</span><span class="p">(</span><span class="n">es</span><span class="p">)</span> <span class="n">to</span> <span class="n">delete</span> <span class="n">hints</span> <span class="k">for</span><span class="p">,</span> <span class="n">either</span> <span class="n">ip</span> <span class="n">address</span>
+            <span class="p">(</span><span class="s2">&quot;127.0.0.1&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">hostname</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/upgradesstables.html b/src/doc/3.11.11/tools/nodetool/upgradesstables.html
new file mode 100644
index 0000000..6bea82d
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/upgradesstables.html
@@ -0,0 +1,140 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "upgradesstables"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="upgradesstables">
+<span id="nodetool-upgradesstables"></span><h1>upgradesstables<a class="headerlink" href="#upgradesstables" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">upgradesstables</span> <span class="o">-</span> <span class="n">Rewrite</span> <span class="n">sstables</span> <span class="p">(</span><span class="k">for</span> <span class="n">the</span> <span class="n">requested</span> <span class="n">tables</span><span class="p">)</span>
+        <span class="n">that</span> <span class="n">are</span> <span class="ow">not</span> <span class="n">on</span> <span class="n">the</span> <span class="n">current</span> <span class="n">version</span> <span class="p">(</span><span class="n">thus</span> <span class="n">upgrading</span> <span class="n">them</span> <span class="n">to</span> <span class="n">said</span> <span class="n">current</span>
+        <span class="n">version</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">upgradesstables</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">a</span> <span class="o">|</span> <span class="o">--</span><span class="n">include</span><span class="o">-</span><span class="nb">all</span><span class="o">-</span><span class="n">sstables</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">a</span><span class="p">,</span> <span class="o">--</span><span class="n">include</span><span class="o">-</span><span class="nb">all</span><span class="o">-</span><span class="n">sstables</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">a</span> <span class="n">to</span> <span class="n">include</span> <span class="nb">all</span> <span class="n">sstables</span><span class="p">,</span> <span class="n">even</span> <span class="n">those</span> <span class="n">already</span> <span class="n">on</span> <span class="n">the</span> <span class="n">current</span>
+            <span class="n">version</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">sstables</span> <span class="n">to</span> <span class="n">upgrade</span> <span class="n">simultanously</span><span class="p">,</span> <span class="nb">set</span> <span class="n">to</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">use</span> <span class="nb">all</span>
+            <span class="n">available</span> <span class="n">compaction</span> <span class="n">threads</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/verify.html b/src/doc/3.11.11/tools/nodetool/verify.html
new file mode 100644
index 0000000..73e8e9b
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/verify.html
@@ -0,0 +1,132 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "verify"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="verify">
+<span id="nodetool-verify"></span><h1>verify<a class="headerlink" href="#verify" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">verify</span> <span class="o">-</span> <span class="n">Verify</span> <span class="p">(</span><span class="n">check</span> <span class="n">data</span> <span class="n">checksum</span> <span class="k">for</span><span class="p">)</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">more</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">verify</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">e</span> <span class="o">|</span> <span class="o">--</span><span class="n">extended</span><span class="o">-</span><span class="n">verify</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">e</span><span class="p">,</span> <span class="o">--</span><span class="n">extended</span><span class="o">-</span><span class="n">verify</span>
+            <span class="n">Verify</span> <span class="n">each</span> <span class="n">cell</span> <span class="n">data</span><span class="p">,</span> <span class="n">beyond</span> <span class="n">simply</span> <span class="n">checking</span> <span class="n">sstable</span> <span class="n">checksums</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/version.html b/src/doc/3.11.11/tools/nodetool/version.html
new file mode 100644
index 0000000..76402bc
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/version.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "version"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="version">
+<span id="nodetool-version"></span><h1>version<a class="headerlink" href="#version" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">version</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">cassandra</span> <span class="n">version</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">version</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/tools/nodetool/viewbuildstatus.html b/src/doc/3.11.11/tools/nodetool/viewbuildstatus.html
new file mode 100644
index 0000000..2c384ee
--- /dev/null
+++ b/src/doc/3.11.11/tools/nodetool/viewbuildstatus.html
@@ -0,0 +1,129 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "viewbuildstatus"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="viewbuildstatus">
+<span id="nodetool-viewbuildstatus"></span><h1>viewbuildstatus<a class="headerlink" href="#viewbuildstatus" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">viewbuildstatus</span> <span class="o">-</span> <span class="n">Show</span> <span class="n">progress</span> <span class="n">of</span> <span class="n">a</span> <span class="n">materialized</span> <span class="n">view</span> <span class="n">build</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">viewbuildstatus</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">view</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">.</span><span class="n">view</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">view</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">.</span><span class="n">view</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">view</span> <span class="n">name</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/3.11.11/troubleshooting/index.html b/src/doc/3.11.11/troubleshooting/index.html
new file mode 100644
index 0000000..8064a56
--- /dev/null
+++ b/src/doc/3.11.11/troubleshooting/index.html
@@ -0,0 +1,100 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Troubleshooting"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.11.11" href="../index.html"/>
+      <link rel="next" title="Cassandra Development" href="../development/index.html"/>
+      <link rel="prev" title="Nodetool" href="../tools/nodetool.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="troubleshooting">
+<h1>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permalink to this headline">¶</a></h1>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../development/index.html" class="btn btn-default pull-right " role="button" title="Cassandra Development" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../tools/nodetool.html" class="btn btn-default" role="button" title="Nodetool" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/.buildinfo b/src/doc/4.0-rc1/.buildinfo
new file mode 100644
index 0000000..205bc73
--- /dev/null
+++ b/src/doc/4.0-rc1/.buildinfo
@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
+config: 647e8048e11b8d251a33684390e09423
+tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/src/doc/4.0-rc1/_downloads/073727311784b6e183b3e78dbd702329/stress-lwt-example.yaml b/src/doc/4.0-rc1/_downloads/073727311784b6e183b3e78dbd702329/stress-lwt-example.yaml
new file mode 100644
index 0000000..1f12c24
--- /dev/null
+++ b/src/doc/4.0-rc1/_downloads/073727311784b6e183b3e78dbd702329/stress-lwt-example.yaml
@@ -0,0 +1,88 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Keyspace Name
+keyspace: stresscql
+
+# The CQL for creating a keyspace (optional if it already exists)
+# Would almost always be network topology unless running something locall
+keyspace_definition: |
+  CREATE KEYSPACE stresscql WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
+
+# Table name
+table: blogposts
+
+# The CQL for creating a table you wish to stress (optional if it already exists)
+table_definition: |
+  CREATE TABLE blogposts (
+        domain text,
+        published_date timeuuid,
+        url text,
+        author text,
+        title text,
+        body text,
+        PRIMARY KEY(domain, published_date)
+  ) WITH CLUSTERING ORDER BY (published_date DESC) 
+    AND compaction = { 'class':'LeveledCompactionStrategy' } 
+    AND comment='A table to hold blog posts'
+
+### Column Distribution Specifications ###
+ 
+columnspec:
+  - name: domain
+    size: gaussian(5..100)       #domain names are relatively short
+    population: uniform(1..10M)  #10M possible domains to pick from
+
+  - name: published_date
+    cluster: fixed(1000)         #under each domain we will have max 1000 posts
+
+  - name: url
+    size: uniform(30..300)       
+
+  - name: title                  #titles shouldn't go beyond 200 chars
+    size: gaussian(10..200)
+
+  - name: author
+    size: uniform(5..20)         #author names should be short
+
+  - name: body
+    size: gaussian(100..5000)    #the body of the blog post can be long
+   
+### Batch Ratio Distribution Specifications ###
+
+insert:
+  partitions: fixed(1)            # Our partition key is the domain so only insert one per batch
+
+  select:    fixed(1)/1000        # We have 1000 posts per domain so 1/1000 will allow 1 post per batch
+
+  batchtype: UNLOGGED             # Unlogged batches
+
+
+#
+# A list of queries you wish to run against the schema
+#
+queries:
+   singlepost:
+      cql: select * from blogposts where domain = ? LIMIT 1
+      fields: samerow
+   regularupdate:
+      cql: update blogposts set author = ? where domain = ? and published_date = ?
+      fields: samerow
+   updatewithlwt:
+      cql: update blogposts set author = ? where domain = ? and published_date = ? IF body = ? AND url = ?
+      fields: samerow
diff --git a/src/doc/4.0-rc1/_downloads/0bad10109f737a1dc8fae9db51a00e36/stress-example.yaml b/src/doc/4.0-rc1/_downloads/0bad10109f737a1dc8fae9db51a00e36/stress-example.yaml
new file mode 100644
index 0000000..4a67102
--- /dev/null
+++ b/src/doc/4.0-rc1/_downloads/0bad10109f737a1dc8fae9db51a00e36/stress-example.yaml
@@ -0,0 +1,62 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+spacenam: example # idenitifier for this spec if running with multiple yaml files
+keyspace: example
+
+# Would almost always be network topology unless running something locally
+keyspace_definition: |
+  CREATE KEYSPACE example WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
+
+table: staff_activities
+
+# The table under test. Start with a partition per staff member
+# Is this a good idea?
+table_definition: |
+  CREATE TABLE staff_activities (
+        name text,
+        when timeuuid,
+        what text,
+        PRIMARY KEY(name, when)
+  ) 
+
+columnspec:
+  - name: name
+    size: uniform(5..10) # The names of the staff members are between 5-10 characters
+    population: uniform(1..10) # 10 possible staff members to pick from 
+  - name: when
+    cluster: uniform(20..500) # Staff members do between 20 and 500 events
+  - name: what
+    size: normal(10..100,50)
+
+insert:
+  # we only update a single partition in any given insert 
+  partitions: fixed(1) 
+  # we want to insert a single row per partition and we have between 20 and 500
+  # rows per partition
+  select: fixed(1)/500 
+  batchtype: UNLOGGED             # Single partition unlogged batches are essentially noops
+
+queries:
+   events:
+      cql: select *  from staff_activities where name = ?
+      fields: samerow
+   latest_event:
+      cql: select * from staff_activities where name = ?  LIMIT 1
+      fields: samerow
+
diff --git a/src/doc/4.0-rc1/_images/Figure_1_backups.jpg b/src/doc/4.0-rc1/_images/Figure_1_backups.jpg
new file mode 100644
index 0000000..160013d
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/Figure_1_backups.jpg
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/Figure_1_data_model.jpg b/src/doc/4.0-rc1/_images/Figure_1_data_model.jpg
new file mode 100644
index 0000000..a3b330e
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/Figure_1_data_model.jpg
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/Figure_1_guarantees.jpg b/src/doc/4.0-rc1/_images/Figure_1_guarantees.jpg
new file mode 100644
index 0000000..859342d
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/Figure_1_guarantees.jpg
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/Figure_1_read_repair.jpg b/src/doc/4.0-rc1/_images/Figure_1_read_repair.jpg
new file mode 100644
index 0000000..d771550
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/Figure_1_read_repair.jpg
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/Figure_2_data_model.jpg b/src/doc/4.0-rc1/_images/Figure_2_data_model.jpg
new file mode 100644
index 0000000..7acdeac
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/Figure_2_data_model.jpg
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/Figure_2_read_repair.jpg b/src/doc/4.0-rc1/_images/Figure_2_read_repair.jpg
new file mode 100644
index 0000000..29a912b
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/Figure_2_read_repair.jpg
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/Figure_3_read_repair.jpg b/src/doc/4.0-rc1/_images/Figure_3_read_repair.jpg
new file mode 100644
index 0000000..f5cc189
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/Figure_3_read_repair.jpg
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/Figure_4_read_repair.jpg b/src/doc/4.0-rc1/_images/Figure_4_read_repair.jpg
new file mode 100644
index 0000000..25bdb34
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/Figure_4_read_repair.jpg
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/Figure_5_read_repair.jpg b/src/doc/4.0-rc1/_images/Figure_5_read_repair.jpg
new file mode 100644
index 0000000..d9c0485
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/Figure_5_read_repair.jpg
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/Figure_6_read_repair.jpg b/src/doc/4.0-rc1/_images/Figure_6_read_repair.jpg
new file mode 100644
index 0000000..6bb4d1e
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/Figure_6_read_repair.jpg
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/data_modeling_chebotko_logical.png b/src/doc/4.0-rc1/_images/data_modeling_chebotko_logical.png
new file mode 100644
index 0000000..e54b5f2
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/data_modeling_chebotko_logical.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/data_modeling_chebotko_physical.png b/src/doc/4.0-rc1/_images/data_modeling_chebotko_physical.png
new file mode 100644
index 0000000..bfdaec5
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/data_modeling_chebotko_physical.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/data_modeling_hotel_bucketing.png b/src/doc/4.0-rc1/_images/data_modeling_hotel_bucketing.png
new file mode 100644
index 0000000..8b53e38
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/data_modeling_hotel_bucketing.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/data_modeling_hotel_erd.png b/src/doc/4.0-rc1/_images/data_modeling_hotel_erd.png
new file mode 100644
index 0000000..e86fe68
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/data_modeling_hotel_erd.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/data_modeling_hotel_logical.png b/src/doc/4.0-rc1/_images/data_modeling_hotel_logical.png
new file mode 100644
index 0000000..e920f12
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/data_modeling_hotel_logical.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/data_modeling_hotel_physical.png b/src/doc/4.0-rc1/_images/data_modeling_hotel_physical.png
new file mode 100644
index 0000000..2d20a6d
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/data_modeling_hotel_physical.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/data_modeling_hotel_queries.png b/src/doc/4.0-rc1/_images/data_modeling_hotel_queries.png
new file mode 100644
index 0000000..2434db3
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/data_modeling_hotel_queries.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/data_modeling_hotel_relational.png b/src/doc/4.0-rc1/_images/data_modeling_hotel_relational.png
new file mode 100644
index 0000000..43e784e
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/data_modeling_hotel_relational.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/data_modeling_reservation_logical.png b/src/doc/4.0-rc1/_images/data_modeling_reservation_logical.png
new file mode 100644
index 0000000..0460633
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/data_modeling_reservation_logical.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/data_modeling_reservation_physical.png b/src/doc/4.0-rc1/_images/data_modeling_reservation_physical.png
new file mode 100644
index 0000000..1e6e76c
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/data_modeling_reservation_physical.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/docs_commit.png b/src/doc/4.0-rc1/_images/docs_commit.png
new file mode 100644
index 0000000..d90d96a
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/docs_commit.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/docs_create_branch.png b/src/doc/4.0-rc1/_images/docs_create_branch.png
new file mode 100644
index 0000000..a04cb54
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/docs_create_branch.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/docs_create_file.png b/src/doc/4.0-rc1/_images/docs_create_file.png
new file mode 100644
index 0000000..b51e370
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/docs_create_file.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/docs_editor.png b/src/doc/4.0-rc1/_images/docs_editor.png
new file mode 100644
index 0000000..5b9997b
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/docs_editor.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/docs_fork.png b/src/doc/4.0-rc1/_images/docs_fork.png
new file mode 100644
index 0000000..20a592a
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/docs_fork.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/docs_pr.png b/src/doc/4.0-rc1/_images/docs_pr.png
new file mode 100644
index 0000000..211eb25
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/docs_pr.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/docs_preview.png b/src/doc/4.0-rc1/_images/docs_preview.png
new file mode 100644
index 0000000..207f0ac
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/docs_preview.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/eclipse_debug0.png b/src/doc/4.0-rc1/_images/eclipse_debug0.png
new file mode 100644
index 0000000..79fc5fd
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/eclipse_debug0.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/eclipse_debug1.png b/src/doc/4.0-rc1/_images/eclipse_debug1.png
new file mode 100644
index 0000000..87b8756
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/eclipse_debug1.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/eclipse_debug2.png b/src/doc/4.0-rc1/_images/eclipse_debug2.png
new file mode 100644
index 0000000..df4eddb
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/eclipse_debug2.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/eclipse_debug3.png b/src/doc/4.0-rc1/_images/eclipse_debug3.png
new file mode 100644
index 0000000..2317814
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/eclipse_debug3.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/eclipse_debug4.png b/src/doc/4.0-rc1/_images/eclipse_debug4.png
new file mode 100644
index 0000000..5063d48
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/eclipse_debug4.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/eclipse_debug5.png b/src/doc/4.0-rc1/_images/eclipse_debug5.png
new file mode 100644
index 0000000..ab68e68
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/eclipse_debug5.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/eclipse_debug6.png b/src/doc/4.0-rc1/_images/eclipse_debug6.png
new file mode 100644
index 0000000..61ef30b
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/eclipse_debug6.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/example-stress-graph.png b/src/doc/4.0-rc1/_images/example-stress-graph.png
new file mode 100644
index 0000000..a65b08b
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/example-stress-graph.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_images/hints.svg b/src/doc/4.0-rc1/_images/hints.svg
new file mode 100644
index 0000000..5e952e7
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/hints.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="661.2000122070312" height="422.26666259765625" style="
+        width:661.2000122070312px;
+        height:422.26666259765625px;
+        background: transparent;
+        fill: none;
+">
+        <svg xmlns="http://www.w3.org/2000/svg" class="role-diagram-draw-area"><g class="shapes-region" style="stroke: black; fill: none;"><g class="composite-shape"><path class="real" d=" M40,60 C40,43.43 53.43,30 70,30 C86.57,30 100,43.43 100,60 C100,76.57 86.57,90 70,90 C53.43,90 40,76.57 40,60 Z" style="stroke-width: 1px; stroke: rgb(0, 0, 0); fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M70,300 L70,387" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="#000" transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,70,390)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M10.72,-5.15 L0,0 L10.72,5.15 L7.12,0 Z"/></g></g><g class="composite-shape"><path class="real" d=" M300,58.5 C300,41.93 313.43,28.5 330,28.5 C346.57,28.5 360,41.93 360,58.5 C360,75.07 346.57,88.5 330,88.5 C313.43,88.5 300,75.07 300,58.5 Z" style="stroke-width: 1px; stroke: rgb(0, 0, 0); fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M80,120 L197,118.54" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="rgba(0,0,0,1)" transform="matrix(-0.9999210442038161,0.01256603988335397,-0.01256603988335397,-0.9999210442038161,200,118.5)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M8.93,-4.29 L0,0 L8.93,4.29 Z"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M330,300 L330,385.5" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="#000" transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,330,388.49999999999994)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M10.72,-5.15 L0,0 L10.72,5.15 L7.12,0 Z"/></g></g><g class="composite-shape"><path class="real" d=" M420,60 C420,43.43 433.43,30 450,30 C466.57,30 480,43.43 480,60 C480,76.57 466.57,90 450,90 C433.43,90 420,76.57 420,60 Z" style="stroke-width: 1px; stroke: rgb(0, 0, 0); fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M570,300 L570,385.5" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="#000" transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,570,388.5)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M10.72,-5.15 L0,0 L10.72,5.15 L7.12,0 Z"/></g></g><g class="composite-shape"><path class="real" d=" M540,60 C540,43.43 553.43,30 570,30 C586.57,30 600,43.43 600,60 C600,76.57 586.57,90 570,90 C553.43,90 540,76.57 540,60 Z" style="stroke-width: 1px; stroke: rgb(0, 0, 0); fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M450,100 L450,128.5" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M450,320 L450,385.5" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="#000" transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,450,388.49999999999994)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M10.72,-5.15 L0,0 L10.72,5.15 L7.12,0 Z"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="1.125 3.35" d="  M450,135.1 L450,220" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="#000" transform="matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,449.99999999999994,135.10000000000002)" style="stroke: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M0,5.59 L0,-5.59 M-5.03,5.59 L-5.03,-5.59"/></g></g><g class="composite-shape"><path class="real" d=" M180,56.5 C180,39.93 193.43,26.5 210,26.5 C226.57,26.5 240,39.93 240,56.5 C240,73.07 226.57,86.5 210,86.5 C193.43,86.5 180,73.07 180,56.5 Z" style="stroke-width: 1px; stroke: rgb(0, 0, 0); fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M210,300 L210,383.5" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="#000" transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,210,386.49999999999994)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M10.72,-5.15 L0,0 L10.72,5.15 L7.12,0 Z"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M220,119.5 L317,119.5" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="rgba(0,0,0,1)" transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,320,119.49999999999999)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M8.93,-4.29 L0,0 L8.93,4.29 Z"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M220,141 L437,140.01" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="rgba(0,0,0,1)" transform="matrix(-0.9999897039488793,0.004537840481175345,-0.004537840481175345,-0.9999897039488793,440,140)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M8.93,-4.29 L0,0 L8.93,4.29 Z"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M220,160 L557,160" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="rgba(0,0,0,1)" transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,560,160)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M8.93,-4.29 L0,0 L8.93,4.29 Z"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M330,190 L223,190" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="rgba(0,0,0,1)" transform="matrix(1,-2.4492935982947064e-16,2.4492935982947064e-16,1,220,190)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M8.93,-4.29 L0,0 L8.93,4.29 Z"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M570,200 L223,200" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="rgba(0,0,0,1)" transform="matrix(1,-2.4492935982947064e-16,2.4492935982947064e-16,1,220,200)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M8.93,-4.29 L0,0 L8.93,4.29 Z"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M200,200 L83,200" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="rgba(0,0,0,1)" transform="matrix(1,-2.4492935982947064e-16,2.4492935982947064e-16,1,80,200)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M8.93,-4.29 L0,0 L8.93,4.29 Z"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M220,260 C248.94,258.95 251.69,269.27 222.77,269.96" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" transform="matrix(0.9999965730559848,-0.0026179908874171876,0.0026179908874171876,0.9999965730559848,220,270)" style="stroke: none; stroke-width: 1px; fill: rgb(0, 0, 0);" fill="#000"><path d=" M8.93,-4.29 L0,0 L8.93,4.29 Z"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M220,360 L437,360" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="rgba(0,0,0,1)" transform="matrix(-1,1.2246467991473532e-16,-1.2246467991473532e-16,-1,439.99999999999994,360.00000000000006)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M8.93,-4.29 L0,0 L8.93,4.29 Z"/></g></g><g class="grouped-shape"><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M60,220 Q62.5,217.5 65,220 Q67.5,222.5 70,220 Q72.5,217.5 75,220 Q77.5,222.5 80,220 L80,220" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M60,230 Q62.5,227.5 65,230 Q67.5,232.5 70,230 Q72.5,227.5 75,230 Q77.5,232.5 80,230 L80,230" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M70,100 L70,220" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M200,220 Q202.5,217.5 205,220 Q207.5,222.5 210,220 Q212.5,217.5 215,220 Q217.5,222.5 220,220 L220,220" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M200,230 Q202.5,227.5 205,230 Q207.5,232.5 210,230 Q212.5,227.5 215,230 Q217.5,232.5 220,230 L220,230" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g><g class="grouped-shape"><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M320,220 Q322.5,217.5 325,220 Q327.5,222.5 330,220 Q332.5,217.5 335,220 Q337.5,222.5 340,220 L340,220" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M320,230 Q322.5,227.5 325,230 Q327.5,232.5 330,230 Q332.5,227.5 335,230 Q337.5,232.5 340,230 L340,230" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M440,220 Q442.5,217.5 445,220 Q447.5,222.5 450,220 Q452.5,217.5 455,220 Q457.5,222.5 460,220 L460,220" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M440,230 Q442.5,227.5 445,230 Q447.5,232.5 450,230 Q452.5,227.5 455,230 Q457.5,232.5 460,230 L460,230" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M560,220 Q562.5,217.5 565,220 Q567.5,222.5 570,220 Q572.5,217.5 575,220 Q577.5,222.5 580,220 L580,220" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M560,230 Q562.5,227.5 565,230 Q567.5,232.5 570,230 Q572.5,227.5 575,230 Q577.5,232.5 580,230 L580,230" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M210,100 L210,220" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M330,100 L330,220" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M570,100 L570,220" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="1.125 3.35" d="  M450,315 L450,300" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="#000" transform="matrix(-1.8369701987210297e-16,-1,1,-1.8369701987210297e-16,450,314.99999999999994)" style="stroke: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M0,5.59 L0,-5.59 M-5.03,5.59 L-5.03,-5.59"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M440,330 L223,330" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/><g stroke="none" fill="rgba(0,0,0,1)" transform="matrix(1,-2.4492935982947064e-16,2.4492935982947064e-16,1,220,330)" style="stroke: none; fill: rgb(0, 0, 0); stroke-width: 1px;"><path d=" M8.93,-4.29 L0,0 L8.93,4.29 Z"/></g></g><g class="grouped-shape"><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M60,290 Q62.5,287.5 65,290 Q67.5,292.5 70,290 Q72.5,287.5 75,290 Q77.5,292.5 80,290 L80,290" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M60,300 Q62.5,297.5 65,300 Q67.5,302.5 70,300 Q72.5,297.5 75,300 Q77.5,302.5 80,300 L80,300" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M70,230 L70,290" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/></g><g class="grouped-shape"><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M200,290 Q202.5,287.5 205,290 Q207.5,292.5 210,290 Q212.5,287.5 215,290 Q217.5,292.5 220,290 L220,290" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M200,300 Q202.5,297.5 205,300 Q207.5,302.5 210,300 Q212.5,297.5 215,300 Q217.5,302.5 220,300 L220,300" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g></g><g class="grouped-shape"><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M320,290 Q322.5,287.5 325,290 Q327.5,292.5 330,290 Q332.5,287.5 335,290 Q337.5,292.5 340,290 L340,290" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M320,300 Q322.5,297.5 325,300 Q327.5,302.5 330,300 Q332.5,297.5 335,300 Q337.5,302.5 340,300 L340,300" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M210,230 L210,290" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M330,230 L330,290" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/></g><g class="grouped-shape"><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M440,290 Q442.5,287.5 445,290 Q447.5,292.5 450,290 Q452.5,287.5 455,290 Q457.5,292.5 460,290 L460,290" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M440,300 Q442.5,297.5 445,300 Q447.5,302.5 450,300 Q452.5,297.5 455,300 Q457.5,302.5 460,300 L460,300" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="1.125 3.35" d="  M450,230 L450,290" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/></g><g class="grouped-shape"><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M560,290 Q562.5,287.5 565,290 Q567.5,292.5 570,290 Q572.5,287.5 575,290 Q577.5,292.5 580,290 L580,290" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M560,300 Q562.5,297.5 565,300 Q567.5,302.5 570,300 Q572.5,297.5 575,300 Q577.5,302.5 580,300 L580,300" style="stroke: rgb(0, 0, 0); stroke-width: 3px; fill: none;"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M570,230 L570,290" style="stroke: rgb(0, 0, 0); stroke-width: 1px; fill: none;"/></g><g/></g><g/><g/><g/></svg>
+        <svg xmlns="http://www.w3.org/2000/svg" width="660" height="421.066650390625" style="width:660px;height:421.066650390625px;font-family:Asana-Math, Asana;background:transparent;"><g><g><g style="transform:matrix(1,0,0,1,47.266693115234375,65.81666564941406);"><path d="M342 330L365 330C373 395 380 432 389 458C365 473 330 482 293 482C248 483 175 463 118 400C64 352 25 241 25 136C25 40 67 -11 147 -11C201 -11 249 9 304 54L354 95L346 115L331 105C259 57 221 40 186 40C130 40 101 80 101 159C101 267 136 371 185 409C206 425 230 433 261 433C306 433 342 414 342 390ZM657 722L645 733C593 707 557 698 485 691L481 670L529 670C553 670 563 663 563 648C563 645 563 640 560 622C549 567 476 182 461 132C448 82 442 52 442 31C442 6 453 -9 472 -9C498 -9 534 12 632 85L622 103L596 86C567 67 545 56 535 56C528 56 522 66 522 76C522 82 523 89 526 104ZM717 388L724 368L756 389C793 412 796 414 803 414C813 414 821 404 821 391C821 384 817 361 813 347L747 107C739 76 734 49 734 30C734 6 745 -9 764 -9C790 -9 826 12 924 85L914 103L888 86C859 67 836 56 827 56C820 56 814 66 814 76C814 86 816 95 821 116L898 420C902 437 904 448 904 456C904 473 895 482 879 482C857 482 820 461 745 408ZM911 712C882 712 853 679 853 645C853 620 868 604 892 604C923 604 947 633 947 671C947 695 932 712 911 712ZM1288 111L1264 94C1211 56 1163 36 1127 36C1080 36 1051 73 1051 133C1051 158 1054 185 1059 214C1076 218 1185 248 1210 259C1295 296 1334 342 1334 404C1334 451 1300 482 1250 482C1182 496 1072 423 1035 349C1005 299 975 180 975 113C975 35 1019 -11 1091 -11C1148 -11 1204 17 1296 92ZM1073 274C1090 343 1110 386 1139 412C1157 428 1188 440 1212 440C1241 440 1260 420 1260 388C1260 344 1225 297 1173 272C1145 258 1109 247 1064 237ZM1372 388L1379 368L1411 389C1448 412 1451 414 1458 414C1469 414 1476 404 1476 389C1476 338 1435 145 1394 2L1401 -9C1426 -2 1449 4 1471 8C1490 134 1511 199 1557 268C1611 352 1686 414 1731 414C1742 414 1748 405 1748 390C1748 372 1745 351 1737 319L1685 107C1676 70 1672 47 1672 31C1672 6 1683 -9 1702 -9C1728 -9 1764 12 1862 85L1852 103L1826 86C1797 67 1775 56 1765 56C1758 56 1752 65 1752 76C1752 81 1753 92 1754 96L1820 372C1827 401 1831 429 1831 446C1831 469 1820 482 1800 482C1758 482 1689 444 1630 389C1592 354 1564 320 1512 247L1550 408C1554 426 1556 438 1556 449C1556 470 1548 482 1533 482C1512 482 1473 460 1400 408ZM2028 390L1972 107C1971 99 1959 61 1959 31C1959 6 1970 -9 1989 -9C2024 -9 2059 11 2137 74L2168 99L2158 117L2113 86C2084 66 2064 56 2053 56C2044 56 2039 64 2039 76C2039 102 2053 183 2082 328L2095 390L2202 390L2213 440C2175 436 2141 434 2103 434C2119 528 2130 577 2148 631L2137 646C2117 634 2090 622 2059 610L2034 440C1990 419 1964 408 1946 403L1944 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,85.80001831054688,68.81665649414063);"><path d="M418 -3L418 27L366 30C311 33 301 44 301 96L301 700L60 598L67 548L217 614L217 96C217 44 206 33 152 30L96 27L96 -3C250 0 250 0 261 0C292 0 402 -3 418 -3Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g><g><g><g style="transform:matrix(1,0,0,1,303.5000305175781,64.31666564941406);"><path d="M368 365C371 403 376 435 384 476C373 481 369 482 364 482C333 482 302 458 266 407C227 351 188 291 172 256L204 408C208 425 210 438 210 450C210 470 202 482 187 482C166 482 128 461 54 408L26 388L33 368L65 389C93 407 104 412 113 412C123 412 130 403 130 390C130 332 87 126 47 -2L57 -9C72 -4 88 -1 111 4L124 6L150 126C168 209 191 262 235 319C269 363 296 384 318 384C333 384 343 379 354 365ZM716 111L692 94C639 56 591 36 555 36C508 36 479 73 479 133C479 158 482 185 487 214C504 218 613 248 638 259C723 296 762 342 762 404C762 451 728 482 678 482C610 496 500 423 463 349C433 299 403 180 403 113C403 35 447 -11 519 -11C576 -11 632 17 724 92ZM501 274C518 343 538 386 567 412C585 428 616 440 640 440C669 440 688 420 688 388C688 344 653 297 601 272C573 258 537 247 492 237ZM952 -11C1008 -11 1123 62 1166 125C1207 186 1241 296 1241 371C1241 438 1218 482 1182 482C1140 482 1087 456 1035 409C994 374 974 348 938 289L962 408C965 425 967 440 967 452C967 471 959 482 945 482C924 482 886 461 812 408L784 388L791 368L823 389C851 407 862 412 871 412C881 412 888 403 888 389C888 381 886 361 884 351L826 8C816 -52 797 -143 777 -233L769 -270L776 -276C797 -269 817 -264 849 -259L891 3C912 -4 934 -11 952 -11ZM919 165C941 293 1048 424 1131 424C1157 424 1169 402 1169 356C1169 275 1129 156 1076 80C1056 51 1024 36 983 36C952 36 927 43 901 59ZM1526 722L1514 733C1462 707 1426 698 1354 691L1350 670L1398 670C1422 670 1432 663 1432 648C1432 645 1432 640 1429 622C1418 567 1345 182 1330 132C1317 82 1311 52 1311 31C1311 6 1322 -9 1341 -9C1367 -9 1403 12 1501 85L1491 103L1465 86C1436 67 1414 56 1404 56C1397 56 1391 66 1391 76C1391 82 1392 89 1395 104ZM1586 388L1593 368L1625 389C1662 412 1665 414 1672 414C1682 414 1690 404 1690 391C1690 384 1686 361 1682 347L1616 107C1608 76 1603 49 1603 30C1603 6 1614 -9 1633 -9C1659 -9 1695 12 1793 85L1783 103L1757 86C1728 67 1705 56 1696 56C1689 56 1683 66 1683 76C1683 86 1685 95 1690 116L1767 420C1771 437 1773 448 1773 456C1773 473 1764 482 1748 482C1726 482 1689 461 1614 408ZM1780 712C1751 712 1722 679 1722 645C1722 620 1737 604 1761 604C1792 604 1816 633 1816 671C1816 695 1801 712 1780 712ZM2171 330L2194 330C2202 395 2209 432 2218 458C2194 473 2159 482 2122 482C2077 483 2004 463 1947 400C1893 352 1854 241 1854 136C1854 40 1896 -11 1976 -11C2030 -11 2078 9 2133 54L2183 95L2175 115L2160 105C2088 57 2050 40 2015 40C1959 40 1930 80 1930 159C1930 267 1965 371 2014 409C2035 425 2059 433 2090 433C2135 433 2171 414 2171 390ZM2506 204L2477 77C2473 60 2471 42 2471 26C2471 4 2480 -9 2495 -9C2518 -9 2559 17 2641 85L2634 106C2610 86 2581 59 2559 59C2550 59 2544 68 2544 82C2544 87 2544 90 2545 93L2637 472L2627 481L2594 463C2553 478 2536 482 2509 482C2481 482 2461 477 2434 464C2372 433 2339 403 2314 354C2270 265 2239 145 2239 67C2239 23 2254 -11 2273 -11C2310 -11 2390 41 2506 204ZM2554 414C2532 305 2513 253 2479 201C2422 117 2361 59 2329 59C2317 59 2311 72 2311 99C2311 163 2339 280 2374 360C2398 415 2421 433 2469 433C2492 433 2510 429 2554 414Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,349.5666809082031,67.31665649414063);"><path d="M418 -3L418 27L366 30C311 33 301 44 301 96L301 700L60 598L67 548L217 614L217 96C217 44 206 33 152 30L96 27L96 -3C250 0 250 0 261 0C292 0 402 -3 418 -3Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g><g><g><g style="transform:matrix(1,0,0,1,423.5000305175781,65.81666564941406);"><path d="M368 365C371 403 376 435 384 476C373 481 369 482 364 482C333 482 302 458 266 407C227 351 188 291 172 256L204 408C208 425 210 438 210 450C210 470 202 482 187 482C166 482 128 461 54 408L26 388L33 368L65 389C93 407 104 412 113 412C123 412 130 403 130 390C130 332 87 126 47 -2L57 -9C72 -4 88 -1 111 4L124 6L150 126C168 209 191 262 235 319C269 363 296 384 318 384C333 384 343 379 354 365ZM716 111L692 94C639 56 591 36 555 36C508 36 479 73 479 133C479 158 482 185 487 214C504 218 613 248 638 259C723 296 762 342 762 404C762 451 728 482 678 482C610 496 500 423 463 349C433 299 403 180 403 113C403 35 447 -11 519 -11C576 -11 632 17 724 92ZM501 274C518 343 538 386 567 412C585 428 616 440 640 440C669 440 688 420 688 388C688 344 653 297 601 272C573 258 537 247 492 237ZM952 -11C1008 -11 1123 62 1166 125C1207 186 1241 296 1241 371C1241 438 1218 482 1182 482C1140 482 1087 456 1035 409C994 374 974 348 938 289L962 408C965 425 967 440 967 452C967 471 959 482 945 482C924 482 886 461 812 408L784 388L791 368L823 389C851 407 862 412 871 412C881 412 888 403 888 389C888 381 886 361 884 351L826 8C816 -52 797 -143 777 -233L769 -270L776 -276C797 -269 817 -264 849 -259L891 3C912 -4 934 -11 952 -11ZM919 165C941 293 1048 424 1131 424C1157 424 1169 402 1169 356C1169 275 1129 156 1076 80C1056 51 1024 36 983 36C952 36 927 43 901 59ZM1526 722L1514 733C1462 707 1426 698 1354 691L1350 670L1398 670C1422 670 1432 663 1432 648C1432 645 1432 640 1429 622C1418 567 1345 182 1330 132C1317 82 1311 52 1311 31C1311 6 1322 -9 1341 -9C1367 -9 1403 12 1501 85L1491 103L1465 86C1436 67 1414 56 1404 56C1397 56 1391 66 1391 76C1391 82 1392 89 1395 104ZM1586 388L1593 368L1625 389C1662 412 1665 414 1672 414C1682 414 1690 404 1690 391C1690 384 1686 361 1682 347L1616 107C1608 76 1603 49 1603 30C1603 6 1614 -9 1633 -9C1659 -9 1695 12 1793 85L1783 103L1757 86C1728 67 1705 56 1696 56C1689 56 1683 66 1683 76C1683 86 1685 95 1690 116L1767 420C1771 437 1773 448 1773 456C1773 473 1764 482 1748 482C1726 482 1689 461 1614 408ZM1780 712C1751 712 1722 679 1722 645C1722 620 1737 604 1761 604C1792 604 1816 633 1816 671C1816 695 1801 712 1780 712ZM2171 330L2194 330C2202 395 2209 432 2218 458C2194 473 2159 482 2122 482C2077 483 2004 463 1947 400C1893 352 1854 241 1854 136C1854 40 1896 -11 1976 -11C2030 -11 2078 9 2133 54L2183 95L2175 115L2160 105C2088 57 2050 40 2015 40C1959 40 1930 80 1930 159C1930 267 1965 371 2014 409C2035 425 2059 433 2090 433C2135 433 2171 414 2171 390ZM2506 204L2477 77C2473 60 2471 42 2471 26C2471 4 2480 -9 2495 -9C2518 -9 2559 17 2641 85L2634 106C2610 86 2581 59 2559 59C2550 59 2544 68 2544 82C2544 87 2544 90 2545 93L2637 472L2627 481L2594 463C2553 478 2536 482 2509 482C2481 482 2461 477 2434 464C2372 433 2339 403 2314 354C2270 265 2239 145 2239 67C2239 23 2254 -11 2273 -11C2310 -11 2390 41 2506 204ZM2554 414C2532 305 2513 253 2479 201C2422 117 2361 59 2329 59C2317 59 2311 72 2311 99C2311 163 2339 280 2374 360C2398 415 2421 433 2469 433C2492 433 2510 429 2554 414Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,469.5666809082031,68.81665649414063);"><path d="M16 23L16 -3C203 -3 203 0 239 0C275 0 275 -3 468 -3L468 82C353 77 307 81 122 77L304 270C401 373 431 428 431 503C431 618 353 689 226 689C154 689 105 669 56 619L39 483L68 483L81 529C97 587 133 612 200 612C286 612 341 558 341 473C341 398 299 324 186 204Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g><g><g><g style="transform:matrix(1,0,0,1,543.5000305175781,65.81666564941406);"><path d="M368 365C371 403 376 435 384 476C373 481 369 482 364 482C333 482 302 458 266 407C227 351 188 291 172 256L204 408C208 425 210 438 210 450C210 470 202 482 187 482C166 482 128 461 54 408L26 388L33 368L65 389C93 407 104 412 113 412C123 412 130 403 130 390C130 332 87 126 47 -2L57 -9C72 -4 88 -1 111 4L124 6L150 126C168 209 191 262 235 319C269 363 296 384 318 384C333 384 343 379 354 365ZM716 111L692 94C639 56 591 36 555 36C508 36 479 73 479 133C479 158 482 185 487 214C504 218 613 248 638 259C723 296 762 342 762 404C762 451 728 482 678 482C610 496 500 423 463 349C433 299 403 180 403 113C403 35 447 -11 519 -11C576 -11 632 17 724 92ZM501 274C518 343 538 386 567 412C585 428 616 440 640 440C669 440 688 420 688 388C688 344 653 297 601 272C573 258 537 247 492 237ZM952 -11C1008 -11 1123 62 1166 125C1207 186 1241 296 1241 371C1241 438 1218 482 1182 482C1140 482 1087 456 1035 409C994 374 974 348 938 289L962 408C965 425 967 440 967 452C967 471 959 482 945 482C924 482 886 461 812 408L784 388L791 368L823 389C851 407 862 412 871 412C881 412 888 403 888 389C888 381 886 361 884 351L826 8C816 -52 797 -143 777 -233L769 -270L776 -276C797 -269 817 -264 849 -259L891 3C912 -4 934 -11 952 -11ZM919 165C941 293 1048 424 1131 424C1157 424 1169 402 1169 356C1169 275 1129 156 1076 80C1056 51 1024 36 983 36C952 36 927 43 901 59ZM1526 722L1514 733C1462 707 1426 698 1354 691L1350 670L1398 670C1422 670 1432 663 1432 648C1432 645 1432 640 1429 622C1418 567 1345 182 1330 132C1317 82 1311 52 1311 31C1311 6 1322 -9 1341 -9C1367 -9 1403 12 1501 85L1491 103L1465 86C1436 67 1414 56 1404 56C1397 56 1391 66 1391 76C1391 82 1392 89 1395 104ZM1586 388L1593 368L1625 389C1662 412 1665 414 1672 414C1682 414 1690 404 1690 391C1690 384 1686 361 1682 347L1616 107C1608 76 1603 49 1603 30C1603 6 1614 -9 1633 -9C1659 -9 1695 12 1793 85L1783 103L1757 86C1728 67 1705 56 1696 56C1689 56 1683 66 1683 76C1683 86 1685 95 1690 116L1767 420C1771 437 1773 448 1773 456C1773 473 1764 482 1748 482C1726 482 1689 461 1614 408ZM1780 712C1751 712 1722 679 1722 645C1722 620 1737 604 1761 604C1792 604 1816 633 1816 671C1816 695 1801 712 1780 712ZM2171 330L2194 330C2202 395 2209 432 2218 458C2194 473 2159 482 2122 482C2077 483 2004 463 1947 400C1893 352 1854 241 1854 136C1854 40 1896 -11 1976 -11C2030 -11 2078 9 2133 54L2183 95L2175 115L2160 105C2088 57 2050 40 2015 40C1959 40 1930 80 1930 159C1930 267 1965 371 2014 409C2035 425 2059 433 2090 433C2135 433 2171 414 2171 390ZM2506 204L2477 77C2473 60 2471 42 2471 26C2471 4 2480 -9 2495 -9C2518 -9 2559 17 2641 85L2634 106C2610 86 2581 59 2559 59C2550 59 2544 68 2544 82C2544 87 2544 90 2545 93L2637 472L2627 481L2594 463C2553 478 2536 482 2509 482C2481 482 2461 477 2434 464C2372 433 2339 403 2314 354C2270 265 2239 145 2239 67C2239 23 2254 -11 2273 -11C2310 -11 2390 41 2506 204ZM2554 414C2532 305 2513 253 2479 201C2422 117 2361 59 2329 59C2317 59 2311 72 2311 99C2311 163 2339 280 2374 360C2398 415 2421 433 2469 433C2492 433 2510 429 2554 414Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,589.5666809082031,68.81665649414063);"><path d="M462 224C462 345 355 366 308 374C388 436 418 482 418 541C418 630 344 689 233 689C165 689 120 670 72 622L43 498L74 498L92 554C103 588 166 622 218 622C283 622 336 569 336 506C336 431 277 368 206 368C198 368 187 369 174 370L159 371L147 318L154 312C192 329 211 334 238 334C321 334 369 281 369 190C369 88 308 21 215 21C169 21 128 36 98 64C74 86 61 109 42 163L15 153C36 92 44 56 50 6C103 -12 147 -20 184 -20C307 -20 462 87 462 224Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,461.8333435058594,134.81666564941406);"><path d="M157 214C157 314 229 386 327 388L327 455C238 454 183 405 152 359L152 450L82 450L82 0L157 0ZM754 219C754 421 647 461 576 461C465 461 375 355 375 226C375 94 471 -11 591 -11C654 -11 711 13 750 41L744 106C681 54 615 50 592 50C512 50 448 121 445 219ZM450 274C466 350 519 400 576 400C628 400 684 366 697 274ZM1143 128C1143 183 1106 217 1104 220C1065 255 1038 261 988 270C933 281 887 291 887 340C887 402 959 402 972 402C1004 402 1057 398 1114 364L1126 429C1074 453 1033 461 982 461C957 461 816 461 816 330C816 281 845 249 870 230C901 208 923 204 978 193C1014 186 1072 174 1072 121C1072 52 993 52 978 52C897 52 841 89 823 101L811 33C843 17 898 -11 979 -11C1117 -11 1143 75 1143 128ZM1340 386L1481 386L1481 444L1340 444L1340 571L1271 571L1271 444L1184 444L1184 386L1268 386L1268 119C1268 59 1282 -11 1351 -11C1421 -11 1472 14 1497 27L1481 86C1455 65 1423 53 1391 53C1354 53 1340 83 1340 136ZM1924 289C1924 391 1851 461 1759 461C1694 461 1649 445 1602 418L1608 352C1660 389 1710 402 1759 402C1806 402 1846 362 1846 288L1846 245C1696 243 1569 201 1569 113C1569 70 1596 -11 1683 -11C1697 -11 1791 -9 1849 36L1849 0L1924 0ZM1846 132C1846 113 1846 88 1812 69C1783 51 1745 50 1734 50C1686 50 1641 73 1641 115C1641 185 1803 192 1846 194ZM2161 214C2161 314 2233 386 2331 388L2331 455C2242 454 2187 405 2156 359L2156 450L2086 450L2086 0L2161 0ZM2519 386L2660 386L2660 444L2519 444L2519 571L2450 571L2450 444L2363 444L2363 386L2447 386L2447 119C2447 59 2461 -11 2530 -11C2600 -11 2651 14 2676 27L2660 86C2634 65 2602 53 2570 53C2533 53 2519 83 2519 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,507.8166809082031,134.81666564941406);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,513.4667053222656,134.81666564941406);"><path d="M368 365C371 403 376 435 384 476C373 481 369 482 364 482C333 482 302 458 266 407C227 351 188 291 172 256L204 408C208 425 210 438 210 450C210 470 202 482 187 482C166 482 128 461 54 408L26 388L33 368L65 389C93 407 104 412 113 412C123 412 130 403 130 390C130 332 87 126 47 -2L57 -9C72 -4 88 -1 111 4L124 6L150 126C168 209 191 262 235 319C269 363 296 384 318 384C333 384 343 379 354 365Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,520.5833435058594,137.81665649414063);"><path d="M16 23L16 -3C203 -3 203 0 239 0C275 0 275 -3 468 -3L468 82C353 77 307 81 122 77L304 270C401 373 431 428 431 503C431 618 353 689 226 689C154 689 105 669 56 619L39 483L68 483L81 529C97 587 133 612 200 612C286 612 341 558 341 473C341 398 299 324 186 204Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,527.5333557128906,134.81666564941406);"><path d="M51 726L32 700C87 636 187 526 187 266C187 -10 83 -131 32 -194L51 -215C104 -165 273 -23 273 265C273 542 108 675 51 726Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g></g></g></g></g><g><g><g style="transform:matrix(1,0,0,1,191.48330688476562,63.29998779296875);"><path d="M342 330L365 330C373 395 380 432 389 458C365 473 330 482 293 482C248 483 175 463 118 400C64 352 25 241 25 136C25 40 67 -11 147 -11C201 -11 249 9 304 54L354 95L346 115L331 105C259 57 221 40 186 40C130 40 101 80 101 159C101 267 136 371 185 409C206 425 230 433 261 433C306 433 342 414 342 390ZM423 152C423 46 468 -11 551 -11C606 -11 666 15 711 57C773 116 817 230 817 331C817 425 767 482 684 482C580 482 423 382 423 152ZM647 444C708 444 741 399 741 315C741 219 710 113 666 60C648 39 622 27 591 27C533 27 499 72 499 151C499 264 538 387 587 427C600 438 623 444 647 444ZM866 152C866 46 911 -11 994 -11C1049 -11 1109 15 1154 57C1216 116 1260 230 1260 331C1260 425 1210 482 1127 482C1023 482 866 382 866 152ZM1090 444C1151 444 1184 399 1184 315C1184 219 1153 113 1109 60C1091 39 1065 27 1034 27C976 27 942 72 942 151C942 264 981 387 1030 427C1043 438 1066 444 1090 444ZM1660 365C1663 403 1668 435 1676 476C1665 481 1661 482 1656 482C1625 482 1594 458 1558 407C1519 351 1480 291 1464 256L1496 408C1500 425 1502 438 1502 450C1502 470 1494 482 1479 482C1458 482 1420 461 1346 408L1318 388L1325 368L1357 389C1385 407 1396 412 1405 412C1415 412 1422 403 1422 390C1422 332 1379 126 1339 -2L1349 -9C1364 -4 1380 -1 1403 4L1416 6L1442 126C1460 209 1483 262 1527 319C1561 363 1588 384 1610 384C1625 384 1635 379 1646 365ZM2163 722L2151 733C2099 707 2063 698 1991 691L1987 670L2035 670C2059 670 2069 663 2069 646C2069 638 2068 629 2067 622L2039 468C2009 477 1982 482 1957 482C1888 482 1794 410 1748 323C1717 265 1697 170 1697 86C1697 21 1712 -11 1741 -11C1768 -11 1805 6 1839 33C1893 77 1926 116 1993 217L1970 126C1959 82 1954 50 1954 24C1954 3 1963 -9 1980 -9C1997 -9 2021 3 2055 28L2136 88L2126 107L2082 76C2068 66 2052 59 2043 59C2035 59 2029 68 2029 82C2029 90 2030 99 2037 128ZM1794 59C1778 59 1769 73 1769 98C1769 224 1815 380 1864 418C1877 428 1896 433 1923 433C1967 433 1996 427 2029 410L2017 351C1980 171 1839 59 1794 59Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,79.63333129882812,386.40000915527344);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,231.00003051757812,115.31666564941406);"><path d="M260 229L443 444L361 444L227 279L89 444L6 444L194 229L0 0L82 0L227 188L377 0L460 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g style="transform:matrix(1,0,0,1,246.44998168945312,115.31666564941406);"><path d="M949 241L949 300L179 300L304 452L272 486L65 269L272 55L304 89L179 241Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g><g style="transform:matrix(1,0,0,1,267.0666809082031,115.31666564941406);"><path d="M299 689L279 689C220 627 137 624 89 622L89 563C122 564 170 566 220 587L220 59L95 59L95 0L424 0L424 59L299 59Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,275.5500183105469,115.31666564941406);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,283.1833190917969,115.31666564941406);"><path d="M424 386L565 386L565 444L424 444L424 571L355 571L355 444L268 444L268 386L352 386L352 119C352 59 366 -11 435 -11C505 -11 556 14 581 27L565 86C539 65 507 53 475 53C438 53 424 83 424 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,294.0500183105469,118.31665649414063);"><path d="M457 331C457 412 453 506 411 588C370 665 301 689 250 689C191 689 121 662 80 571C47 497 42 413 42 331C42 251 46 177 76 103C116 5 192 -22 249 -22C322 -22 385 19 417 89C447 155 457 223 457 331ZM250 40C198 40 157 78 137 151C121 209 120 264 120 343C120 407 120 468 137 524C143 544 168 627 249 627C327 627 353 550 360 531C379 475 379 406 379 343C379 276 379 212 361 148C335 56 282 40 250 40Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,250.25003051757812,184.81666564941406);"><path d="M399 289C399 391 326 461 234 461C169 461 124 445 77 418L83 352C135 389 185 402 234 402C281 402 321 362 321 288L321 245C171 243 44 201 44 113C44 70 71 -11 158 -11C172 -11 266 -9 324 36L324 0L399 0ZM321 132C321 113 321 88 287 69C258 51 220 50 209 50C161 50 116 73 116 115C116 185 278 192 321 194ZM889 418C830 452 796 461 735 461C596 461 515 340 515 222C515 98 606 -11 731 -11C785 -11 840 3 894 40L888 107C837 67 783 53 732 53C649 53 593 125 593 223C593 301 630 397 736 397C788 397 822 389 877 353ZM1203 272L1371 444L1281 444L1078 236L1078 694L1006 694L1006 0L1075 0L1075 141L1155 224L1311 0L1393 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,274.2167053222656,184.81666564941406);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,279.8666687011719,184.81666564941406);"><path d="M157 214C157 314 229 386 327 388L327 455C238 454 183 405 152 359L152 450L82 450L82 0L157 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,286.1666564941406,187.81665649414063);"><path d="M299 689L279 689C220 627 137 624 89 622L89 563C122 564 170 566 220 587L220 59L95 59L95 0L424 0L424 59L299 59Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,293.1166687011719,184.81666564941406);"><path d="M51 726L32 700C87 636 187 526 187 266C187 -10 83 -131 32 -194L51 -215C104 -165 273 -23 273 265C273 542 108 675 51 726Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,479.7500305175781,194.81666564941406);"><path d="M399 289C399 391 326 461 234 461C169 461 124 445 77 418L83 352C135 389 185 402 234 402C281 402 321 362 321 288L321 245C171 243 44 201 44 113C44 70 71 -11 158 -11C172 -11 266 -9 324 36L324 0L399 0ZM321 132C321 113 321 88 287 69C258 51 220 50 209 50C161 50 116 73 116 115C116 185 278 192 321 194ZM889 418C830 452 796 461 735 461C596 461 515 340 515 222C515 98 606 -11 731 -11C785 -11 840 3 894 40L888 107C837 67 783 53 732 53C649 53 593 125 593 223C593 301 630 397 736 397C788 397 822 389 877 353ZM1203 272L1371 444L1281 444L1078 236L1078 694L1006 694L1006 0L1075 0L1075 141L1155 224L1311 0L1393 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,503.7167053222656,194.81666564941406);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,509.3666687011719,194.81666564941406);"><path d="M157 214C157 314 229 386 327 388L327 455C238 454 183 405 152 359L152 450L82 450L82 0L157 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,515.6666564941406,197.8166717529297);"><path d="M92 522C121 593 186 630 247 630C299 630 348 600 348 535C348 473 307 413 246 398C240 397 238 397 167 391L167 329L238 329C346 329 368 235 368 184C368 105 322 40 245 40C176 40 97 75 53 144L42 83C115 -12 207 -22 247 -22C369 -22 457 76 457 183C457 275 387 338 319 360C395 401 430 471 430 535C430 622 347 689 248 689C171 689 98 648 56 577Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,522.6166687011719,194.81666564941406);"><path d="M51 726L32 700C87 636 187 526 187 266C187 -10 83 -131 32 -194L51 -215C104 -165 273 -23 273 265C273 542 108 675 51 726Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,81.03335571289062,182.5);"><path d="M399 289C399 391 326 461 234 461C169 461 124 445 77 418L83 352C135 389 185 402 234 402C281 402 321 362 321 288L321 245C171 243 44 201 44 113C44 70 71 -11 158 -11C172 -11 266 -9 324 36L324 0L399 0ZM321 132C321 113 321 88 287 69C258 51 220 50 209 50C161 50 116 73 116 115C116 185 278 192 321 194ZM889 418C830 452 796 461 735 461C596 461 515 340 515 222C515 98 606 -11 731 -11C785 -11 840 3 894 40L888 107C837 67 783 53 732 53C649 53 593 125 593 223C593 301 630 397 736 397C788 397 822 389 877 353ZM1203 272L1371 444L1281 444L1078 236L1078 694L1006 694L1006 0L1075 0L1075 141L1155 224L1311 0L1393 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,105.51669311523438,185.44998779296876);"><path d="M434 455L359 455L359 387C349 400 300 455 222 455C122 455 36 356 36 221C36 94 109 -11 205 -11C261 -11 314 12 356 50L356 -194L434 -194ZM359 140C359 122 359 120 349 107C323 67 286 50 250 50C174 50 114 128 114 221C114 323 186 391 259 391C328 391 359 320 359 280ZM950 444L872 444L872 154C872 79 816 44 752 44C681 44 674 70 674 113L674 444L596 444L596 109C596 37 619 -11 702 -11C755 -11 826 5 875 48L875 0L950 0ZM1499 220C1499 354 1399 461 1280 461C1157 461 1060 351 1060 220C1060 88 1162 -11 1279 -11C1399 -11 1499 90 1499 220ZM1279 53C1210 53 1138 109 1138 230C1138 351 1214 400 1279 400C1349 400 1421 348 1421 230C1421 112 1353 53 1279 53ZM1686 214C1686 314 1758 386 1856 388L1856 455C1767 454 1712 405 1681 359L1681 450L1611 450L1611 0L1686 0ZM2304 444L2226 444L2226 154C2226 79 2170 44 2106 44C2035 44 2028 70 2028 113L2028 444L1950 444L1950 109C1950 37 1973 -11 2056 -11C2109 -11 2180 5 2229 48L2229 0L2304 0ZM3097 298C3097 365 3081 455 2960 455C2900 455 2848 427 2811 373C2785 449 2715 455 2683 455C2611 455 2564 414 2537 378L2537 450L2465 450L2465 0L2543 0L2543 245C2543 313 2570 394 2644 394C2737 394 2742 329 2742 291L2742 0L2820 0L2820 245C2820 313 2847 394 2921 394C3014 394 3019 329 3019 291L3019 0L3097 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g><g><svg x="145.88333129882812" style="overflow:visible;" y="164.5" height="24" width="8.5"><path d=" M 6.61 1.70 q 0.00 -0.08 -0.08 -0.08 q -0.03 0.00 -0.08 0.02 q -1.01 0.55 -1.75 1.30 t -1.37 1.87 t -0.95 2.78 t -0.33 3.79 v 0.62 h 1.68 v -0.62 q 0.00 -1.20 0.04 -2.08 t 0.22 -2.04 t 0.50 -2.03 t 0.91 -1.74 t 1.43 -1.49 q 0.12 -0.09 0.12 -0.29 z   M 0.90 12.00 v 0.00 h 1.68 v 0.00 z" style="fill:rgb(0, 0, 0);stroke-width:1px;stroke:none;"></path><path d=" M 6.61 22.30 q 0.00 0.08 -0.08 0.08 q -0.03 0.00 -0.08 -0.02 q -1.01 -0.55 -1.75 -1.30 t -1.37 -1.87 t -0.95 -2.78 t -0.33 -3.79 v -0.62 h 1.68 v 0.62 q 0.00 1.20 0.04 2.08 t 0.22 2.04 t 0.50 2.03 t 0.91 1.74 t 1.43 1.49 q 0.12 0.09 0.12 0.29 z" style="fill:rgb(0, 0, 0);stroke-width:1px;stroke:none;"></path></svg></g><g style="transform:matrix(1,0,0,1,152.68331909179688,182.5);"><path d="M260 229L443 444L361 444L227 279L89 444L6 444L194 229L0 0L82 0L227 188L377 0L460 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g style="transform:matrix(1,0,0,1,163.89999389648438,182.5);"><path d="M949 241L949 300L179 300L304 452L272 486L65 269L272 55L304 89L179 241Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g><g style="transform:matrix(1,0,0,1,184.51669311523438,182.5);"><path d="M299 689L279 689C220 627 137 624 89 622L89 563C122 564 170 566 220 587L220 59L95 59L95 0L424 0L424 59L299 59Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><svg x="191.30001831054688" style="overflow:visible;" y="164.5" height="24" width="8.5"><path d=" M 1.69 1.70 q 0.00 -0.08 0.08 -0.08 q 0.03 0.00 0.08 0.02 q 1.01 0.55 1.75 1.30 t 1.37 1.87 t 0.95 2.78 t 0.33 3.79 v 0.62 h -1.68 v -0.62 q 0.00 -1.20 -0.04 -2.08 t -0.22 -2.04 t -0.50 -2.03 t -0.91 -1.74 t -1.43 -1.49 q -0.12 -0.09 -0.12 -0.29 z  M 7.40 12.00 v 0.00 h -1.68 v 0.00 z" style="fill:rgb(0, 0, 0);stroke-width:1px;stroke:none;"></path><path d=" M 1.69 22.30 q 0.00 0.08 0.08 0.08 q 0.03 0.00 0.08 -0.02 q 1.01 -0.55 1.75 -1.30 t 1.37 -1.87 t 0.95 -2.78 t 0.33 -3.79 v -0.62 h -1.68 v 0.62 q 0.00 1.20 -0.04 2.08 t -0.22 2.04 t -0.50 2.03 t -0.91 1.74 t -1.43 1.49 q -0.12 0.09 -0.12 0.29 z" style="fill:rgb(0, 0, 0);stroke-width:1px;stroke:none;"></path></svg></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,35.45001220703125,116.81666564941406);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,41.616668701171875,119.81665649414063);"><path d="M263 689C108 689 29 566 29 324C29 207 50 106 85 57C120 8 176 -20 238 -20C389 -20 465 110 465 366C465 585 400 689 263 689ZM245 654C342 654 381 556 381 316C381 103 343 15 251 15C154 15 113 116 113 360C113 571 150 654 245 654Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,35.45001220703125,206.81666564941406);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,41.616668701171875,209.8166717529297);"><path d="M418 -3L418 27L366 30C311 33 301 44 301 96L301 700L60 598L67 548L217 614L217 96C217 44 206 33 152 30L96 27L96 -3C250 0 250 0 261 0C292 0 402 -3 418 -3Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,35.45001220703125,256.81666564941406);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,41.616668701171875,259.81667175292966);"><path d="M16 23L16 -3C203 -3 203 0 239 0C275 0 275 -3 468 -3L468 82C353 77 307 81 122 77L304 270C401 373 431 428 431 503C431 618 353 689 226 689C154 689 105 669 56 619L39 483L68 483L81 529C97 587 133 612 200 612C286 612 341 558 341 473C341 398 299 324 186 204Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,35.45001220703125,336.81666564941406);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,41.616668701171875,339.81667175292966);"><path d="M462 224C462 345 355 366 308 374C388 436 418 482 418 541C418 630 344 689 233 689C165 689 120 670 72 622L43 498L74 498L92 554C103 588 166 622 218 622C283 622 336 569 336 506C336 431 277 368 206 368C198 368 187 369 174 370L159 371L147 318L154 312C192 329 211 334 238 334C321 334 369 281 369 190C369 88 308 21 215 21C169 21 128 36 98 64C74 86 61 109 42 163L15 153C36 92 44 56 50 6C103 -12 147 -20 184 -20C307 -20 462 87 462 224Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,217.80001831054688,249.49998474121094);"><path d="M435 298C435 364 420 455 298 455C236 455 188 424 156 383L156 694L81 694L81 0L159 0L159 245C159 311 184 394 260 394C356 394 357 323 357 291L357 0L435 0ZM678 680L589 680L589 591L678 591ZM671 444L596 444L596 0L671 0ZM1187 298C1187 364 1172 455 1050 455C960 455 911 387 905 379L905 450L833 450L833 0L911 0L911 245C911 311 936 394 1012 394C1108 394 1109 323 1109 291L1109 0L1187 0ZM1442 386L1583 386L1583 444L1442 444L1442 571L1373 571L1373 444L1286 444L1286 386L1370 386L1370 119C1370 59 1384 -11 1453 -11C1523 -11 1574 14 1599 27L1583 86C1557 65 1525 53 1493 53C1456 53 1442 83 1442 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><svg x="246.98330688476562" style="overflow:visible;" y="231.49998474121094" height="26" width="8.5"><path d=" M 6.61 1.70 q 0.00 -0.09 -0.08 -0.09 q -0.03 0.00 -0.08 0.03 q -1.01 0.61 -1.75 1.42 t -1.37 2.06 t -0.95 3.05 t -0.33 4.16 v 0.68 h 1.68 v -0.68 q 0.00 -1.31 0.04 -2.28 t 0.22 -2.24 t 0.50 -2.23 t 0.91 -1.91 t 1.43 -1.63 q 0.12 -0.10 0.12 -0.32 z   M 0.90 13.00 v 0.00 h 1.68 v 0.00 z" style="fill:rgb(0, 0, 0);stroke-width:1px;stroke:none;"></path><path d=" M 6.61 24.30 q 0.00 0.09 -0.08 0.09 q -0.03 0.00 -0.08 -0.03 q -1.01 -0.61 -1.75 -1.42 t -1.37 -2.06 t -0.95 -3.05 t -0.33 -4.16 v -0.68 h 1.68 v 0.68 q 0.00 1.31 0.04 2.28 t 0.22 2.24 t 0.50 2.23 t 0.91 1.91 t 1.43 1.63 q 0.12 0.10 0.12 0.32 z" style="fill:rgb(0, 0, 0);stroke-width:1px;stroke:none;"></path></svg></g><g style="transform:matrix(1,0,0,1,253.78335571289062,249.49998474121094);"><path d="M157 214C157 314 229 386 327 388L327 455C238 454 183 405 152 359L152 450L82 450L82 0L157 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,260.0833435058594,252.49999084472657);"><path d="M83 466C103 545 131 624 222 624C316 624 367 548 367 468C367 382 310 324 251 263L174 191L50 65L50 0L449 0L449 72L267 72C255 72 243 71 231 71L122 71C154 100 230 176 261 205C333 274 449 347 449 471C449 587 368 689 236 689C122 689 66 610 42 522C66 487 59 501 83 466Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,267.0333557128906,249.49998474121094);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,274.6666564941406,249.49998474121094);"><path d="M509 229L692 444L610 444L476 279L338 444L255 444L443 229L249 0L331 0L476 188L626 0L709 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g style="transform:matrix(1,0,0,1,290.1166687011719,249.49998474121094);"><path d="M949 241L949 300L179 300L304 452L272 486L65 269L272 55L304 89L179 241Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g><g style="transform:matrix(1,0,0,1,310.7333068847656,249.49998474121094);"><path d="M299 689L279 689C220 627 137 624 89 622L89 563C122 564 170 566 220 587L220 59L95 59L95 0L424 0L424 59L299 59Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><svg x="317.5166931152344" style="overflow:visible;" y="231.49998474121094" height="26" width="8.5"><path d=" M 1.69 1.70 q 0.00 -0.09 0.08 -0.09 q 0.03 0.00 0.08 0.03 q 1.01 0.61 1.75 1.42 t 1.37 2.06 t 0.95 3.05 t 0.33 4.16 v 0.68 h -1.68 v -0.68 q 0.00 -1.31 -0.04 -2.28 t -0.22 -2.24 t -0.50 -2.23 t -0.91 -1.91 t -1.43 -1.63 q -0.12 -0.10 -0.12 -0.32 z  M 7.40 13.00 v 0.00 h -1.68 v 0.00 z" style="fill:rgb(0, 0, 0);stroke-width:1px;stroke:none;"></path><path d=" M 1.69 24.30 q 0.00 0.09 0.08 0.09 q 0.03 0.00 0.08 -0.03 q 1.01 -0.61 1.75 -1.42 t 1.37 -2.06 t 0.95 -3.05 t 0.33 -4.16 v -0.68 h -1.68 v 0.68 q 0.00 1.31 -0.04 2.28 t -0.22 2.24 t -0.50 2.23 t -0.91 1.91 t -1.43 1.63 q -0.12 0.10 -0.12 0.32 z" style="fill:rgb(0, 0, 0);stroke-width:1px;stroke:none;"></path></svg></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,351.9499816894531,316.81666564941406);"><path d="M399 289C399 391 326 461 234 461C169 461 124 445 77 418L83 352C135 389 185 402 234 402C281 402 321 362 321 288L321 245C171 243 44 201 44 113C44 70 71 -11 158 -11C172 -11 266 -9 324 36L324 0L399 0ZM321 132C321 113 321 88 287 69C258 51 220 50 209 50C161 50 116 73 116 115C116 185 278 192 321 194ZM635 694L560 694L560 0L635 0ZM879 680L790 680L790 591L879 591ZM872 444L797 444L797 0L872 0ZM1399 444L1324 444C1272 299 1181 47 1185 53L1184 53L1045 444L967 444L1139 0L1227 0ZM1827 219C1827 421 1720 461 1649 461C1538 461 1448 355 1448 226C1448 94 1544 -11 1664 -11C1727 -11 1784 13 1823 41L1817 106C1754 54 1688 50 1665 50C1585 50 1521 121 1518 219ZM1523 274C1539 350 1592 400 1649 400C1701 400 1757 366 1770 274Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,383.5166931152344,316.81666564941406);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,389.1666564941406,316.81666564941406);"><path d="M157 214C157 314 229 386 327 388L327 455C238 454 183 405 152 359L152 450L82 450L82 0L157 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,395.4667053222656,319.81667175292966);"><path d="M83 466C103 545 131 624 222 624C316 624 367 548 367 468C367 382 310 324 251 263L174 191L50 65L50 0L449 0L449 72L267 72C255 72 243 71 231 71L122 71C154 100 230 176 261 205C333 274 449 347 449 471C449 587 368 689 236 689C122 689 66 610 42 522C66 487 59 501 83 466Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,402.4166564941406,316.81666564941406);"><path d="M51 726L32 700C87 636 187 526 187 266C187 -10 83 -131 32 -194L51 -215C104 -165 273 -23 273 265C273 542 108 675 51 726Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,35.45001220703125,366.81666564941406);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,41.616668701171875,369.81667175292966);"><path d="M280 181L280 106C280 46 269 32 220 30L158 27L158 -3C291 0 291 0 315 0C339 0 339 0 472 -3L472 27L424 30C375 33 364 46 364 106L364 181C423 181 444 180 472 177L472 248L364 245L365 697L285 667L2 204L2 181ZM280 245L65 245L280 597Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,231.50003051757812,134.81666564941406);"><path d="M260 229L443 444L361 444L227 279L89 444L6 444L194 229L0 0L82 0L227 188L377 0L460 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g style="transform:matrix(1,0,0,1,246.94998168945312,134.81666564941406);"><path d="M949 241L949 300L179 300L304 452L272 486L65 269L272 55L304 89L179 241Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g><g style="transform:matrix(1,0,0,1,267.5666809082031,134.81666564941406);"><path d="M299 689L279 689C220 627 137 624 89 622L89 563C122 564 170 566 220 587L220 59L95 59L95 0L424 0L424 59L299 59Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,276.0500183105469,134.81666564941406);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,283.6833190917969,134.81666564941406);"><path d="M424 386L565 386L565 444L424 444L424 571L355 571L355 444L268 444L268 386L352 386L352 119C352 59 366 -11 435 -11C505 -11 556 14 581 27L565 86C539 65 507 53 475 53C438 53 424 83 424 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,294.5500183105469,137.81665649414063);"><path d="M457 331C457 412 453 506 411 588C370 665 301 689 250 689C191 689 121 662 80 571C47 497 42 413 42 331C42 251 46 177 76 103C116 5 192 -22 249 -22C322 -22 385 19 417 89C447 155 457 223 457 331ZM250 40C198 40 157 78 137 151C121 209 120 264 120 343C120 407 120 468 137 524C143 544 168 627 249 627C327 627 353 550 360 531C379 475 379 406 379 343C379 276 379 212 361 148C335 56 282 40 250 40Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,231.50003051757812,156.81666564941406);"><path d="M260 229L443 444L361 444L227 279L89 444L6 444L194 229L0 0L82 0L227 188L377 0L460 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g style="transform:matrix(1,0,0,1,246.94998168945312,156.81666564941406);"><path d="M949 241L949 300L179 300L304 452L272 486L65 269L272 55L304 89L179 241Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g><g style="transform:matrix(1,0,0,1,267.5666809082031,156.81666564941406);"><path d="M299 689L279 689C220 627 137 624 89 622L89 563C122 564 170 566 220 587L220 59L95 59L95 0L424 0L424 59L299 59Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,276.0500183105469,156.81666564941406);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,283.6833190917969,156.81666564941406);"><path d="M424 386L565 386L565 444L424 444L424 571L355 571L355 444L268 444L268 386L352 386L352 119C352 59 366 -11 435 -11C505 -11 556 14 581 27L565 86C539 65 507 53 475 53C438 53 424 83 424 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,294.5500183105469,159.81665649414063);"><path d="M457 331C457 412 453 506 411 588C370 665 301 689 250 689C191 689 121 662 80 571C47 497 42 413 42 331C42 251 46 177 76 103C116 5 192 -22 249 -22C322 -22 385 19 417 89C447 155 457 223 457 331ZM250 40C198 40 157 78 137 151C121 209 120 264 120 343C120 407 120 468 137 524C143 544 168 627 249 627C327 627 353 550 360 531C379 475 379 406 379 343C379 276 379 212 361 148C335 56 282 40 250 40Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,101.5,114.81666564941406);"><path d="M260 229L443 444L361 444L227 279L89 444L6 444L194 229L0 0L82 0L227 188L377 0L460 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g style="transform:matrix(1,0,0,1,116.95001220703125,114.81666564941406);"><path d="M949 241L949 300L179 300L304 452L272 486L65 269L272 55L304 89L179 241Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g><g style="transform:matrix(1,0,0,1,137.56668090820312,114.81666564941406);"><path d="M299 689L279 689C220 627 137 624 89 622L89 563C122 564 170 566 220 587L220 59L95 59L95 0L424 0L424 59L299 59Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,146.05001831054688,114.81666564941406);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,153.68331909179688,114.81666564941406);"><path d="M424 386L565 386L565 444L424 444L424 571L355 571L355 444L268 444L268 386L352 386L352 119C352 59 366 -11 435 -11C505 -11 556 14 581 27L565 86C539 65 507 53 475 53C438 53 424 83 424 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,164.55001831054688,117.81665649414063);"><path d="M457 331C457 412 453 506 411 588C370 665 301 689 250 689C191 689 121 662 80 571C47 497 42 413 42 331C42 251 46 177 76 103C116 5 192 -22 249 -22C322 -22 385 19 417 89C447 155 457 223 457 331ZM250 40C198 40 157 78 137 151C121 209 120 264 120 343C120 407 120 468 137 524C143 544 168 627 249 627C327 627 353 550 360 531C379 475 379 406 379 343C379 276 379 212 361 148C335 56 282 40 250 40Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,231.50003051757812,354.81666564941406);"><path d="M260 229L443 444L361 444L227 279L89 444L6 444L194 229L0 0L82 0L227 188L377 0L460 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g style="transform:matrix(1,0,0,1,246.94998168945312,354.81666564941406);"><path d="M949 241L949 300L179 300L304 452L272 486L65 269L272 55L304 89L179 241Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g><g style="transform:matrix(1,0,0,1,267.5666809082031,354.81666564941406);"><path d="M299 689L279 689C220 627 137 624 89 622L89 563C122 564 170 566 220 587L220 59L95 59L95 0L424 0L424 59L299 59Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,276.0500183105469,354.81666564941406);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g style="transform:matrix(1,0,0,1,283.6833190917969,354.81666564941406);"><path d="M424 386L565 386L565 444L424 444L424 571L355 571L355 444L268 444L268 386L352 386L352 119C352 59 366 -11 435 -11C505 -11 556 14 581 27L565 86C539 65 507 53 475 53C438 53 424 83 424 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,294.5500183105469,357.81667175292966);"><path d="M457 331C457 412 453 506 411 588C370 665 301 689 250 689C191 689 121 662 80 571C47 497 42 413 42 331C42 251 46 177 76 103C116 5 192 -22 249 -22C322 -22 385 19 417 89C447 155 457 223 457 331ZM250 40C198 40 157 78 137 151C121 209 120 264 120 343C120 407 120 468 137 524C143 544 168 627 249 627C327 627 353 550 360 531C379 475 379 406 379 343C379 276 379 212 361 148C335 56 282 40 250 40Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,219.63333129882812,386.40000915527344);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,339.6166687011719,386.40000915527344);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,459.6166687011719,386.40000915527344);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,579.6166687011719,386.40000915527344);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g></g></g></g></g></g></svg>
+</svg>
diff --git a/src/doc/4.0-rc1/_images/ring.svg b/src/doc/4.0-rc1/_images/ring.svg
new file mode 100644
index 0000000..d0db8c5
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/ring.svg
@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="651" height="709.4583740234375" style="
+        width:651px;
+        height:709.4583740234375px;
+        background: transparent;
+        fill: none;
+">
+        
+        
+        <svg xmlns="http://www.w3.org/2000/svg" class="role-diagram-draw-area"><g class="shapes-region" style="stroke: black; fill: none;"><g class="composite-shape"><path class="real" d=" M223.5,655 C223.5,634.84 239.84,618.5 260,618.5 C280.16,618.5 296.5,634.84 296.5,655 C296.5,675.16 280.16,691.5 260,691.5 C239.84,691.5 223.5,675.16 223.5,655 Z" style="stroke-width: 1; stroke: rgb(103, 148, 135); fill: rgb(103, 148, 135);"/></g><g class="composite-shape"><path class="real" d=" M229.26,655 C229.26,638.02 243.02,624.26 260,624.26 C276.98,624.26 290.74,638.02 290.74,655 C290.74,671.98 276.98,685.74 260,685.74 C243.02,685.74 229.26,671.98 229.26,655 Z" style="stroke-width: 1; stroke: rgb(202, 194, 126); fill: rgb(202, 194, 126);"/></g><g class="composite-shape"><path class="real" d=" M377.5,595 C377.5,571.53 396.53,552.5 420,552.5 C443.47,552.5 462.5,571.53 462.5,595 C462.5,618.47 443.47,637.5 420,637.5 C396.53,637.5 377.5,618.47 377.5,595 Z" style="stroke-width: 1; stroke: rgb(103, 148, 135); fill: rgb(103, 148, 135);"/></g><g class="composite-shape"><path class="real" d=" M384.06,595 C384.06,575.15 400.15,559.06 420,559.06 C439.85,559.06 455.94,575.15 455.94,595 C455.94,614.85 439.85,630.94 420,630.94 C400.15,630.94 384.06,614.85 384.06,595 Z" style="stroke-width: 1; stroke: rgb(202, 194, 126); fill: rgb(202, 194, 126);"/></g><g class="composite-shape"><path class="real" d=" M390,595 C390,578.43 403.43,565 420,565 C436.57,565 450,578.43 450,595 C450,611.57 436.57,625 420,625 C403.43,625 390,611.57 390,595 Z" style="stroke-width: 1; stroke: rgb(130, 192, 233); fill: rgb(130, 192, 233);"/></g><g class="composite-shape"><path class="real" d=" M444.06,435 C444.06,415.15 460.15,399.06 480,399.06 C499.85,399.06 515.94,415.15 515.94,435 C515.94,454.85 499.85,470.94 480,470.94 C460.15,470.94 444.06,454.85 444.06,435 Z" style="stroke-width: 1; stroke: rgb(202, 194, 126); fill: rgb(202, 194, 126);"/></g><g class="composite-shape"><path class="real" d=" M450,435 C450,418.43 463.43,405 480,405 C496.57,405 510,418.43 510,435 C510,451.57 496.57,465 480,465 C463.43,465 450,451.57 450,435 Z" style="stroke-width: 1; stroke: rgb(130, 192, 233); fill: rgb(130, 192, 233);"/></g><g class="composite-shape"><path class="real" d=" M390,275 C390,258.43 403.43,245 420,245 C436.57,245 450,258.43 450,275 C450,291.57 436.57,305 420,305 C403.43,305 390,291.57 390,275 Z" style="stroke-width: 1; stroke: rgb(130, 192, 233); fill: rgb(130, 192, 233);"/></g><g class="composite-shape"><path class="real" d=" M40,435 C40,313.5 138.5,215 260,215 C381.5,215 480,313.5 480,435 C480,556.5 381.5,655 260,655 C138.5,655 40,556.5 40,435 Z" style="stroke-width: 1; stroke: rgba(0, 0, 0, 0.52); fill: none; stroke-dasharray: 1.125, 3.35;"/></g><g class="grouped-shape"><g class="composite-shape"><path class="real" d=" M90,435 C90,341.11 166.11,265 260,265 C353.89,265 430,341.11 430,435 C430,528.89 353.89,605 260,605 C166.11,605 90,528.89 90,435 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: none;"/></g><g class="composite-shape"><path class="real" d=" M111.25,435 C111.25,352.85 177.85,286.25 260,286.25 C342.15,286.25 408.75,352.85 408.75,435 C408.75,517.15 342.15,583.75 260,583.75 C177.85,583.75 111.25,517.15 111.25,435 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: none;"/></g><g class="composite-shape"><path class="real" d=" M132.5,435 C132.5,364.58 189.58,307.5 260,307.5 C330.42,307.5 387.5,364.58 387.5,435 C387.5,505.42 330.42,562.5 260,562.5 C189.58,562.5 132.5,505.42 132.5,435 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: none;"/></g></g><g class="composite-shape"><path class="real" d=" M235,655 C235,641.19 246.19,630 260,630 C273.81,630 285,641.19 285,655 C285,668.81 273.81,680 260,680 C246.19,680 235,668.81 235,655 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(187, 187, 187);"/></g><g class="grouped-shape"><g class="composite-shape"><path class="real" d=" M235,215 C235,201.19 246.19,190 260,190 C273.81,190 285,201.19 285,215 C285,228.81 273.81,240 260,240 C246.19,240 235,228.81 235,215 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(187, 187, 187);"/></g></g><g class="composite-shape"><path class="real" d=" M455,435 C455,421.19 466.19,410 480,410 C493.81,410 505,421.19 505,435 C505,448.81 493.81,460 480,460 C466.19,460 455,448.81 455,435 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(187, 187, 187);"/></g><g class="composite-shape"><path class="real" d=" M15,435 C15,421.19 26.19,410 40,410 C53.81,410 65,421.19 65,435 C65,448.81 53.81,460 40,460 C26.19,460 15,448.81 15,435 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(187, 187, 187);"/></g><g class="composite-shape"><path class="real" d=" M395,275 C395,261.19 406.19,250 420,250 C433.81,250 445,261.19 445,275 C445,288.81 433.81,300 420,300 C406.19,300 395,288.81 395,275 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(187, 187, 187);"/></g><g class="composite-shape"><path class="real" d=" M395,595 C395,581.19 406.19,570 420,570 C433.81,570 445,581.19 445,595 C445,608.81 433.81,620 420,620 C406.19,620 395,608.81 395,595 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(187, 187, 187);"/></g><g class="composite-shape"><path class="real" d=" M75,595 C75,581.19 86.19,570 100,570 C113.81,570 125,581.19 125,595 C125,608.81 113.81,620 100,620 C86.19,620 75,608.81 75,595 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(187, 187, 187);"/></g><g class="grouped-shape"><g class="composite-shape"><path class="real" d=" M75,275 C75,261.19 86.19,250 100,250 C113.81,250 125,261.19 125,275 C125,288.81 113.81,300 100,300 C86.19,300 75,288.81 75,275 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(187, 187, 187);"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M268.22,265.22 C401.65,271.85 490.67,424.28 380,555" style="stroke: rgb(130, 192, 233); stroke-width: 6; fill: none;"/><g stroke="rgba(130,192,233,1)" transform="matrix(0.9999897039488793,0.00453784048117526,-0.00453784048117526,0.9999897039488793,260,265)" style="stroke: rgb(130, 192, 233); stroke-width: 6;"><circle cx="0" cy="0" r="9.045000000000002"/></g><g stroke="rgba(130,192,233,1)" fill="rgba(130,192,233,1)" transform="matrix(-0.6461239796429636,0.763232469782529,-0.763232469782529,-0.6461239796429636,380,555)" style="stroke: rgb(130, 192, 233); fill: rgb(130, 192, 233); stroke-width: 6;"><circle cx="0" cy="0" r="9.045000000000002"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M366.47,330.7 C447.68,407.15 414.54,574.62 260,583.75" style="stroke: rgb(202, 194, 126); stroke-width: 6; fill: none;"/><g stroke="rgba(202,194,126,1)" transform="matrix(0.7722902597301384,0.6352698282824042,-0.6352698282824042,0.7722902597301384,360,325)" style="stroke: rgb(202, 194, 126); stroke-width: 6;"><circle cx="0" cy="0" r="9.045000000000002"/></g><g stroke="rgba(202,194,126,1)" fill="rgba(202,194,126,1)" transform="matrix(-0.9982604689368237,0.05895791853545039,-0.05895791853545039,-0.9982604689368237,260,583.7499999999999)" style="stroke: rgb(202, 194, 126); fill: rgb(202, 194, 126); stroke-width: 6;"><circle cx="0" cy="0" r="9.045000000000002"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M387.19,443.58 C380.1,535.72 254.02,615.51 160,515" style="stroke: rgb(103, 148, 135); stroke-width: 6; fill: none;"/><g stroke="rgba(103,148,135,1)" transform="matrix(0.004537840481175261,0.9999897039488793,-0.9999897039488793,0.004537840481175261,387.5,435)" style="stroke: rgb(103, 148, 135); stroke-width: 6;"><circle cx="0" cy="0" r="9.045000000000002"/></g><g stroke="rgba(103,148,135,1)" fill="rgba(103,148,135,1)" transform="matrix(-0.6831463259165826,-0.7302815192695721,0.7302815192695721,-0.6831463259165826,160,515)" style="stroke: rgb(103, 148, 135); fill: rgb(103, 148, 135); stroke-width: 6;"><circle cx="0" cy="0" r="9.045000000000002"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M345,195 L316.4,271.25" style="stroke: rgb(130, 192, 233); stroke-width: 3; fill: none;"/><g stroke="rgba(130,192,233,1)" transform="matrix(0.3511880698803796,-0.9363049394154095,0.9363049394154095,0.3511880698803796,315,275)" style="stroke: rgb(130, 192, 233); stroke-width: 3;"><path d=" M17.49,-5.26 Q7.94,-0.72 0,0 Q7.94,0.72 17.49,5.26"/></g></g><g class="arrow-line"><path class="connection real" stroke-dasharray="" d="  M485,330 L403.62,368.3" style="stroke: rgb(202, 194, 126); stroke-width: 3; fill: none;"/><g stroke="rgba(202,194,126,1)" transform="matrix(0.9048270524660194,-0.425779291565073,0.425779291565073,0.9048270524660194,400,370)" style="stroke: rgb(202, 194, 126); stroke-width: 3;"><path d=" M17.49,-5.26 Q7.94,-0.72 0,0 Q7.94,0.72 17.49,5.26"/></g></g><g/></g><g/><g/><g/></svg>
+        <svg xmlns="http://www.w3.org/2000/svg" width="649" height="707.4583740234375" style="width:649px;height:707.4583740234375px;font-family:Asana-Math, Asana;background:transparent;"><g><g><g><g><g><g style="transform:matrix(1,0,0,1,12.171875,40.31333587646485);"><path d="M175 386L316 386L316 444L175 444L175 571L106 571L106 444L19 444L19 386L103 386L103 119C103 59 117 -11 186 -11C256 -11 307 14 332 27L316 86C290 65 258 53 226 53C189 53 175 83 175 136ZM829 220C829 354 729 461 610 461C487 461 390 351 390 220C390 88 492 -11 609 -11C729 -11 829 90 829 220ZM609 53C540 53 468 109 468 230C468 351 544 400 609 400C679 400 751 348 751 230C751 112 683 53 609 53ZM1140 272L1308 444L1218 444L1015 236L1015 694L943 694L943 0L1012 0L1012 141L1092 224L1248 0L1330 0ZM1760 219C1760 421 1653 461 1582 461C1471 461 1381 355 1381 226C1381 94 1477 -11 1597 -11C1660 -11 1717 13 1756 41L1750 106C1687 54 1621 50 1598 50C1518 50 1454 121 1451 219ZM1456 274C1472 350 1525 400 1582 400C1634 400 1690 366 1703 274ZM2224 298C2224 364 2209 455 2087 455C1997 455 1948 387 1942 379L1942 450L1870 450L1870 0L1948 0L1948 245C1948 311 1973 394 2049 394C2145 394 2146 323 2146 291L2146 0L2224 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,68.578125,40.31333587646485);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,76.71356201171875,40.31333587646485);"><path d="M435 298C435 364 420 455 298 455C208 455 159 387 153 379L153 450L81 450L81 0L159 0L159 245C159 311 184 394 260 394C356 394 357 323 357 291L357 0L435 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,90.05731201171875,44.635999999999996);"><path d="M299 689L279 689C220 627 137 624 89 622L89 563C122 564 170 566 220 587L220 59L95 59L95 0L424 0L424 59L299 59Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,100.078125,40.31333587646485);"><path d="M51 726L32 700C87 636 187 526 187 266C187 -10 83 -131 32 -194L51 -215C104 -165 273 -23 273 265C273 542 108 675 51 726Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,115.55731201171875,40.31333587646485);"><path d="M604 347L604 406L65 406L65 347ZM604 134L604 193L65 193L65 134Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,139.2552490234375,40.31333587646485);"><path d="M175 386L316 386L316 444L175 444L175 571L106 571L106 444L19 444L19 386L103 386L103 119C103 59 117 -11 186 -11C256 -11 307 14 332 27L316 86C290 65 258 53 226 53C189 53 175 83 175 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,148.80731201171875,44.635999999999996);"><path d="M299 689L279 689C220 627 137 624 89 622L89 563C122 564 170 566 220 587L220 59L95 59L95 0L424 0L424 59L299 59Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g></g><g><g style="transform:matrix(1,0,0,1,12.171875,71.98);"><path d="M175 386L316 386L316 444L175 444L175 571L106 571L106 444L19 444L19 386L103 386L103 119C103 59 117 -11 186 -11C256 -11 307 14 332 27L316 86C290 65 258 53 226 53C189 53 175 83 175 136ZM829 220C829 354 729 461 610 461C487 461 390 351 390 220C390 88 492 -11 609 -11C729 -11 829 90 829 220ZM609 53C540 53 468 109 468 230C468 351 544 400 609 400C679 400 751 348 751 230C751 112 683 53 609 53ZM1140 272L1308 444L1218 444L1015 236L1015 694L943 694L943 0L1012 0L1012 141L1092 224L1248 0L1330 0ZM1760 219C1760 421 1653 461 1582 461C1471 461 1381 355 1381 226C1381 94 1477 -11 1597 -11C1660 -11 1717 13 1756 41L1750 106C1687 54 1621 50 1598 50C1518 50 1454 121 1451 219ZM1456 274C1472 350 1525 400 1582 400C1634 400 1690 366 1703 274ZM2224 298C2224 364 2209 455 2087 455C1997 455 1948 387 1942 379L1942 450L1870 450L1870 0L1948 0L1948 245C1948 311 1973 394 2049 394C2145 394 2146 323 2146 291L2146 0L2224 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,68.578125,71.98);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,76.71356201171875,71.98);"><path d="M435 298C435 364 420 455 298 455C208 455 159 387 153 379L153 450L81 450L81 0L159 0L159 245C159 311 184 394 260 394C356 394 357 323 357 291L357 0L435 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,90.05731201171875,76.30266412353515);"><path d="M83 466C103 545 131 624 222 624C316 624 367 548 367 468C367 382 310 324 251 263L174 191L50 65L50 0L449 0L449 72L267 72C255 72 243 71 231 71L122 71C154 100 230 176 261 205C333 274 449 347 449 471C449 587 368 689 236 689C122 689 66 610 42 522C66 487 59 501 83 466Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,100.078125,71.98);"><path d="M51 726L32 700C87 636 187 526 187 266C187 -10 83 -131 32 -194L51 -215C104 -165 273 -23 273 265C273 542 108 675 51 726Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,115.55731201171875,71.98);"><path d="M604 347L604 406L65 406L65 347ZM604 134L604 193L65 193L65 134Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,139.2552490234375,71.98);"><path d="M175 386L316 386L316 444L175 444L175 571L106 571L106 444L19 444L19 386L103 386L103 119C103 59 117 -11 186 -11C256 -11 307 14 332 27L316 86C290 65 258 53 226 53C189 53 175 83 175 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,148.80731201171875,76.30266412353515);"><path d="M83 466C103 545 131 624 222 624C316 624 367 548 367 468C367 382 310 324 251 263L174 191L50 65L50 0L449 0L449 72L267 72C255 72 243 71 231 71L122 71C154 100 230 176 261 205C333 274 449 347 449 471C449 587 368 689 236 689C122 689 66 610 42 522C66 487 59 501 83 466Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g></g><g><g style="transform:matrix(1,0,0,1,12.171875,103.64666412353516);"><path d="M175 386L316 386L316 444L175 444L175 571L106 571L106 444L19 444L19 386L103 386L103 119C103 59 117 -11 186 -11C256 -11 307 14 332 27L316 86C290 65 258 53 226 53C189 53 175 83 175 136ZM829 220C829 354 729 461 610 461C487 461 390 351 390 220C390 88 492 -11 609 -11C729 -11 829 90 829 220ZM609 53C540 53 468 109 468 230C468 351 544 400 609 400C679 400 751 348 751 230C751 112 683 53 609 53ZM1140 272L1308 444L1218 444L1015 236L1015 694L943 694L943 0L1012 0L1012 141L1092 224L1248 0L1330 0ZM1760 219C1760 421 1653 461 1582 461C1471 461 1381 355 1381 226C1381 94 1477 -11 1597 -11C1660 -11 1717 13 1756 41L1750 106C1687 54 1621 50 1598 50C1518 50 1454 121 1451 219ZM1456 274C1472 350 1525 400 1582 400C1634 400 1690 366 1703 274ZM2224 298C2224 364 2209 455 2087 455C1997 455 1948 387 1942 379L1942 450L1870 450L1870 0L1948 0L1948 245C1948 311 1973 394 2049 394C2145 394 2146 323 2146 291L2146 0L2224 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,68.578125,103.64666412353516);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,76.71356201171875,103.64666412353516);"><path d="M435 298C435 364 420 455 298 455C208 455 159 387 153 379L153 450L81 450L81 0L159 0L159 245C159 311 184 394 260 394C356 394 357 323 357 291L357 0L435 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,90.05731201171875,107.96933587646484);"><path d="M92 522C121 593 186 630 247 630C299 630 348 600 348 535C348 473 307 413 246 398C240 397 238 397 167 391L167 329L238 329C346 329 368 235 368 184C368 105 322 40 245 40C176 40 97 75 53 144L42 83C115 -12 207 -22 247 -22C369 -22 457 76 457 183C457 275 387 338 319 360C395 401 430 471 430 535C430 622 347 689 248 689C171 689 98 648 56 577Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,100.078125,103.64666412353516);"><path d="M51 726L32 700C87 636 187 526 187 266C187 -10 83 -131 32 -194L51 -215C104 -165 273 -23 273 265C273 542 108 675 51 726Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,115.55731201171875,103.64666412353516);"><path d="M604 347L604 406L65 406L65 347ZM604 134L604 193L65 193L65 134Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,139.2552490234375,103.64666412353516);"><path d="M175 386L316 386L316 444L175 444L175 571L106 571L106 444L19 444L19 386L103 386L103 119C103 59 117 -11 186 -11C256 -11 307 14 332 27L316 86C290 65 258 53 226 53C189 53 175 83 175 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,148.80731201171875,107.96933587646484);"><path d="M92 522C121 593 186 630 247 630C299 630 348 600 348 535C348 473 307 413 246 398C240 397 238 397 167 391L167 329L238 329C346 329 368 235 368 184C368 105 322 40 245 40C176 40 97 75 53 144L42 83C115 -12 207 -22 247 -22C369 -22 457 76 457 183C457 275 387 338 319 360C395 401 430 471 430 535C430 622 347 689 248 689C171 689 98 648 56 577Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g></g><g><g style="transform:matrix(1,0,0,1,12.171875,135.31333587646483);"><path d="M124 111C94 111 67 83 67 53C67 23 94 -5 123 -5C155 -5 183 22 183 53C183 83 155 111 124 111ZM373 111C343 111 316 83 316 53C316 23 343 -5 372 -5C404 -5 432 22 432 53C432 83 404 111 373 111ZM622 111C592 111 565 83 565 53C565 23 592 -5 621 -5C653 -5 681 22 681 53C681 83 653 111 622 111Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,245.3802490234375,659.4047891235351);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,262.578125,665.2589131469726);"><path d="M459 253C459 366 378 446 264 446C216 446 180 443 127 396L127 605L432 604L432 689L75 690L75 322L95 316C142 363 169 377 218 377C314 377 374 309 374 201C374 90 310 25 201 25C147 25 97 43 83 69L37 151L13 137C36 80 48 48 62 4C90 -11 130 -20 173 -20C301 -20 459 89 459 253Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,465.3802490234375,444.4047891235352);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,482.578125,450.2588826293945);"><path d="M462 224C462 345 355 366 308 374C388 436 418 482 418 541C418 630 344 689 233 689C165 689 120 670 72 622L43 498L74 498L92 554C103 588 166 622 218 622C283 622 336 569 336 506C336 431 277 368 206 368C198 368 187 369 174 370L159 371L147 318L154 312C192 329 211 334 238 334C321 334 369 281 369 190C369 88 308 21 215 21C169 21 128 36 98 64C74 86 61 109 42 163L15 153C36 92 44 56 50 6C103 -12 147 -20 184 -20C307 -20 462 87 462 224Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,25.380218505859375,444.4047891235352);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,42.578125,450.2588826293945);"><path d="M409 603L47 -1L157 -1L497 659L497 689L44 689L44 477L74 477L81 533C89 595 96 603 142 603Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,405.3802490234375,284.4047891235352);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,422.578125,290.2588826293945);"><path d="M16 23L16 -3C203 -3 203 0 239 0C275 0 275 -3 468 -3L468 82C353 77 307 81 122 77L304 270C401 373 431 428 431 503C431 618 353 689 226 689C154 689 105 669 56 619L39 483L68 483L81 529C97 587 133 612 200 612C286 612 341 558 341 473C341 398 299 324 186 204Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,405.3802490234375,604.4047891235351);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,422.578125,610.2589131469726);"><path d="M280 181L280 106C280 46 269 32 220 30L158 27L158 -3C291 0 291 0 315 0C339 0 339 0 472 -3L472 27L424 30C375 33 364 46 364 106L364 181C423 181 444 180 472 177L472 248L364 245L365 697L285 667L2 204L2 181ZM280 245L65 245L280 597Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,85.38021850585938,604.4047891235351);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,102.578125,610.2589131469726);"><path d="M131 331C152 512 241 611 421 665L379 689C283 657 242 637 191 593C88 506 32 384 32 247C32 82 112 -20 241 -20C371 -20 468 83 468 219C468 334 399 409 293 409C216 409 184 370 131 331ZM255 349C331 349 382 283 382 184C382 80 331 13 254 13C169 13 123 86 123 220C123 255 127 274 138 291C160 325 207 349 255 349Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,332.04168701171875,37.480000000000004);"><path d="M157 214C157 314 229 386 327 388L327 455C238 454 183 405 152 359L152 450L82 450L82 0L157 0ZM739 289C739 391 666 461 574 461C509 461 464 445 417 418L423 352C475 389 525 402 574 402C621 402 661 362 661 288L661 245C511 243 384 201 384 113C384 70 411 -11 498 -11C512 -11 606 -9 664 36L664 0L739 0ZM661 132C661 113 661 88 627 69C598 51 560 50 549 50C501 50 456 73 456 115C456 185 618 192 661 194ZM1254 298C1254 364 1239 455 1117 455C1027 455 978 387 972 379L972 450L900 450L900 0L978 0L978 245C978 311 1003 394 1079 394C1175 394 1176 323 1176 291L1176 0L1254 0ZM1686 391C1708 391 1736 395 1760 395C1778 395 1817 392 1819 392L1808 455C1738 455 1680 436 1650 423C1629 440 1595 455 1555 455C1469 455 1396 383 1396 292C1396 255 1409 219 1429 193C1400 152 1400 113 1400 108C1400 82 1409 53 1426 32C1374 1 1362 -45 1362 -71C1362 -146 1461 -206 1583 -206C1706 -206 1805 -147 1805 -70C1805 69 1638 69 1599 69L1511 69C1498 69 1453 69 1453 122C1453 133 1457 149 1464 158C1485 143 1518 129 1555 129C1645 129 1715 203 1715 292C1715 340 1693 377 1682 392ZM1555 186C1518 186 1466 209 1466 292C1466 375 1518 398 1555 398C1598 398 1645 370 1645 292C1645 214 1598 186 1555 186ZM1600 -3C1622 -3 1735 -3 1735 -72C1735 -116 1666 -149 1584 -149C1503 -149 1432 -118 1432 -71C1432 -68 1432 -3 1510 -3ZM2247 219C2247 421 2140 461 2069 461C1958 461 1868 355 1868 226C1868 94 1964 -11 2084 -11C2147 -11 2204 13 2243 41L2237 106C2174 54 2108 50 2085 50C2005 50 1941 121 1938 219ZM1943 274C1959 350 2012 400 2069 400C2121 400 2177 366 2190 274Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,387.76043701171875,37.480000000000004);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,395.8958740234375,37.480000000000004);"><path d="M175 386L316 386L316 444L175 444L175 571L106 571L106 444L19 444L19 386L103 386L103 119C103 59 117 -11 186 -11C256 -11 307 14 332 27L316 86C290 65 258 53 226 53C189 53 175 83 175 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,405.44793701171875,41.80266412353515);"><path d="M299 689L279 689C220 627 137 624 89 622L89 563C122 564 170 566 220 587L220 59L95 59L95 0L424 0L424 59L299 59Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,415.46875,37.480000000000004);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,426.46875,37.480000000000004);"><path d="M424 386L565 386L565 444L424 444L424 571L355 571L355 444L268 444L268 386L352 386L352 119C352 59 366 -11 435 -11C505 -11 556 14 581 27L565 86C539 65 507 53 475 53C438 53 424 83 424 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,442.1146240234375,41.80266412353515);"><path d="M83 466C103 545 131 624 222 624C316 624 367 548 367 468C367 382 310 324 251 263L174 191L50 65L50 0L449 0L449 72L267 72C255 72 243 71 231 71L122 71C154 100 230 176 261 205C333 274 449 347 449 471C449 587 368 689 236 689C122 689 66 610 42 522C66 487 59 501 83 466Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,452.13543701171875,37.480000000000004);"><path d="M245 -184L254 -171C248 -140 246 -112 246 -44L246 578C246 628 250 665 250 691C250 706 249 717 245 726L51 726L45 720L45 694L49 689L87 689C114 689 136 683 148 673C157 664 160 649 160 616L160 -75C160 -108 157 -122 148 -131C136 -141 114 -147 87 -147L49 -147L45 -152L45 -178L51 -184Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,460.2708740234375,37.480000000000004);"><path d="" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g style="transform:matrix(1,0,0,1,471.2708740234375,37.480000000000004);"><path d="M949 272L743 486L711 452L836 300L65 300L65 241L836 241L711 89L743 55Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g></g><g style="transform:matrix(1,0,0,1,500.96875,37.480000000000004);"><path d="M289 -175C226 -161 206 -117 206 -45L206 128C206 207 197 253 125 272L125 274C194 292 206 335 206 409L206 595C206 667 224 707 289 726C189 726 134 703 134 578L134 392C134 327 120 292 58 273C124 254 134 223 134 151L134 -17C134 -149 176 -175 289 -175Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,510.32293701171875,37.480000000000004);"><path d="M435 298C435 364 420 455 298 455C208 455 159 387 153 379L153 450L81 450L81 0L159 0L159 245C159 311 184 394 260 394C356 394 357 323 357 291L357 0L435 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,523.6666870117188,41.80266412353515);"><path d="M83 466C103 545 131 624 222 624C316 624 367 548 367 468C367 382 310 324 251 263L174 191L50 65L50 0L449 0L449 72L267 72C255 72 243 71 231 71L122 71C154 100 230 176 261 205C333 274 449 347 449 471C449 587 368 689 236 689C122 689 66 610 42 522C66 487 59 501 83 466Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,533.6875,37.480000000000004);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,544.6875,37.480000000000004);"><path d="M684 298C684 364 669 455 547 455C457 455 408 387 402 379L402 450L330 450L330 0L408 0L408 245C408 311 433 394 509 394C605 394 606 323 606 291L606 0L684 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,564.125,41.80266412353515);"><path d="M92 522C121 593 186 630 247 630C299 630 348 600 348 535C348 473 307 413 246 398C240 397 238 397 167 391L167 329L238 329C346 329 368 235 368 184C368 105 322 40 245 40C176 40 97 75 53 144L42 83C115 -12 207 -22 247 -22C369 -22 457 76 457 183C457 275 387 338 319 360C395 401 430 471 430 535C430 622 347 689 248 689C171 689 98 648 56 577Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,574.1458740234375,37.480000000000004);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,585.1458740234375,37.480000000000004);"><path d="M684 298C684 364 669 455 547 455C457 455 408 387 402 379L402 450L330 450L330 0L408 0L408 245C408 311 433 394 509 394C605 394 606 323 606 291L606 0L684 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,604.5833740234375,41.80266412353515);"><path d="M372 174L471 174L471 236L372 236L372 667L281 667L28 236L28 174L293 174L293 0L372 0ZM106 236C158 323 299 564 299 622L299 236Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,615.822998046875,37.480000000000004);"><path d="M275 273C213 292 199 327 199 392L199 578C199 703 144 726 44 726C109 707 127 667 127 595L127 409C127 335 139 292 208 274L208 272C136 253 127 207 127 128L127 -45C127 -117 107 -161 44 -175C157 -175 199 -149 199 -17L199 151C199 223 209 254 275 273Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g></g></g></g></g><g><g><g><g><g style="transform:matrix(1,0,0,1,332.04168701171875,70.14666412353516);"><path d="M157 214C157 314 229 386 327 388L327 455C238 454 183 405 152 359L152 450L82 450L82 0L157 0ZM739 289C739 391 666 461 574 461C509 461 464 445 417 418L423 352C475 389 525 402 574 402C621 402 661 362 661 288L661 245C511 243 384 201 384 113C384 70 411 -11 498 -11C512 -11 606 -9 664 36L664 0L739 0ZM661 132C661 113 661 88 627 69C598 51 560 50 549 50C501 50 456 73 456 115C456 185 618 192 661 194ZM1254 298C1254 364 1239 455 1117 455C1027 455 978 387 972 379L972 450L900 450L900 0L978 0L978 245C978 311 1003 394 1079 394C1175 394 1176 323 1176 291L1176 0L1254 0ZM1686 391C1708 391 1736 395 1760 395C1778 395 1817 392 1819 392L1808 455C1738 455 1680 436 1650 423C1629 440 1595 455 1555 455C1469 455 1396 383 1396 292C1396 255 1409 219 1429 193C1400 152 1400 113 1400 108C1400 82 1409 53 1426 32C1374 1 1362 -45 1362 -71C1362 -146 1461 -206 1583 -206C1706 -206 1805 -147 1805 -70C1805 69 1638 69 1599 69L1511 69C1498 69 1453 69 1453 122C1453 133 1457 149 1464 158C1485 143 1518 129 1555 129C1645 129 1715 203 1715 292C1715 340 1693 377 1682 392ZM1555 186C1518 186 1466 209 1466 292C1466 375 1518 398 1555 398C1598 398 1645 370 1645 292C1645 214 1598 186 1555 186ZM1600 -3C1622 -3 1735 -3 1735 -72C1735 -116 1666 -149 1584 -149C1503 -149 1432 -118 1432 -71C1432 -68 1432 -3 1510 -3ZM2247 219C2247 421 2140 461 2069 461C1958 461 1868 355 1868 226C1868 94 1964 -11 2084 -11C2147 -11 2204 13 2243 41L2237 106C2174 54 2108 50 2085 50C2005 50 1941 121 1938 219ZM1943 274C1959 350 2012 400 2069 400C2121 400 2177 366 2190 274Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,387.76043701171875,70.14666412353516);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,395.8958740234375,70.14666412353516);"><path d="M175 386L316 386L316 444L175 444L175 571L106 571L106 444L19 444L19 386L103 386L103 119C103 59 117 -11 186 -11C256 -11 307 14 332 27L316 86C290 65 258 53 226 53C189 53 175 83 175 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,405.44793701171875,74.46933587646484);"><path d="M83 466C103 545 131 624 222 624C316 624 367 548 367 468C367 382 310 324 251 263L174 191L50 65L50 0L449 0L449 72L267 72C255 72 243 71 231 71L122 71C154 100 230 176 261 205C333 274 449 347 449 471C449 587 368 689 236 689C122 689 66 610 42 522C66 487 59 501 83 466Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,415.46875,70.14666412353516);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,426.46875,70.14666412353516);"><path d="M424 386L565 386L565 444L424 444L424 571L355 571L355 444L268 444L268 386L352 386L352 119C352 59 366 -11 435 -11C505 -11 556 14 581 27L565 86C539 65 507 53 475 53C438 53 424 83 424 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,442.1146240234375,74.46933587646484);"><path d="M92 522C121 593 186 630 247 630C299 630 348 600 348 535C348 473 307 413 246 398C240 397 238 397 167 391L167 329L238 329C346 329 368 235 368 184C368 105 322 40 245 40C176 40 97 75 53 144L42 83C115 -12 207 -22 247 -22C369 -22 457 76 457 183C457 275 387 338 319 360C395 401 430 471 430 535C430 622 347 689 248 689C171 689 98 648 56 577Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,452.13543701171875,70.14666412353516);"><path d="M245 -184L254 -171C248 -140 246 -112 246 -44L246 578C246 628 250 665 250 691C250 706 249 717 245 726L51 726L45 720L45 694L49 689L87 689C114 689 136 683 148 673C157 664 160 649 160 616L160 -75C160 -108 157 -122 148 -131C136 -141 114 -147 87 -147L49 -147L45 -152L45 -178L51 -184Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,460.2708740234375,70.14666412353516);"><path d="" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g style="transform:matrix(1,0,0,1,471.2708740234375,70.14666412353516);"><path d="M949 272L743 486L711 452L836 300L65 300L65 241L836 241L711 89L743 55Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g></g><g style="transform:matrix(1,0,0,1,500.96875,70.14666412353516);"><path d="M289 -175C226 -161 206 -117 206 -45L206 128C206 207 197 253 125 272L125 274C194 292 206 335 206 409L206 595C206 667 224 707 289 726C189 726 134 703 134 578L134 392C134 327 120 292 58 273C124 254 134 223 134 151L134 -17C134 -149 176 -175 289 -175Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,510.32293701171875,70.14666412353516);"><path d="M435 298C435 364 420 455 298 455C208 455 159 387 153 379L153 450L81 450L81 0L159 0L159 245C159 311 184 394 260 394C356 394 357 323 357 291L357 0L435 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,523.6666870117188,74.46933587646484);"><path d="M92 522C121 593 186 630 247 630C299 630 348 600 348 535C348 473 307 413 246 398C240 397 238 397 167 391L167 329L238 329C346 329 368 235 368 184C368 105 322 40 245 40C176 40 97 75 53 144L42 83C115 -12 207 -22 247 -22C369 -22 457 76 457 183C457 275 387 338 319 360C395 401 430 471 430 535C430 622 347 689 248 689C171 689 98 648 56 577Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,533.6875,70.14666412353516);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,544.6875,70.14666412353516);"><path d="M684 298C684 364 669 455 547 455C457 455 408 387 402 379L402 450L330 450L330 0L408 0L408 245C408 311 433 394 509 394C605 394 606 323 606 291L606 0L684 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,564.125,74.46933587646484);"><path d="M372 174L471 174L471 236L372 236L372 667L281 667L28 236L28 174L293 174L293 0L372 0ZM106 236C158 323 299 564 299 622L299 236Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,574.1458740234375,70.14666412353516);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,585.1458740234375,70.14666412353516);"><path d="M684 298C684 364 669 455 547 455C457 455 408 387 402 379L402 450L330 450L330 0L408 0L408 245C408 311 433 394 509 394C605 394 606 323 606 291L606 0L684 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,604.5833740234375,74.46933587646484);"><path d="M153 602L416 602L416 667L81 667L81 292L147 292C164 332 201 372 259 372C306 372 360 330 360 208C360 40 238 40 229 40C162 40 101 79 72 134L39 77C80 19 149 -22 230 -22C349 -22 449 78 449 206C449 333 363 434 260 434C220 434 182 419 153 392Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,615.822998046875,70.14666412353516);"><path d="M275 273C213 292 199 327 199 392L199 578C199 703 144 726 44 726C109 707 127 667 127 595L127 409C127 335 139 292 208 274L208 272C136 253 127 207 127 128L127 -45C127 -117 107 -161 44 -175C157 -175 199 -149 199 -17L199 151C199 223 209 254 275 273Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g></g></g></g></g><g><g><g><g><g style="transform:matrix(1,0,0,1,332.04168701171875,102.81333587646485);"><path d="M157 214C157 314 229 386 327 388L327 455C238 454 183 405 152 359L152 450L82 450L82 0L157 0ZM739 289C739 391 666 461 574 461C509 461 464 445 417 418L423 352C475 389 525 402 574 402C621 402 661 362 661 288L661 245C511 243 384 201 384 113C384 70 411 -11 498 -11C512 -11 606 -9 664 36L664 0L739 0ZM661 132C661 113 661 88 627 69C598 51 560 50 549 50C501 50 456 73 456 115C456 185 618 192 661 194ZM1254 298C1254 364 1239 455 1117 455C1027 455 978 387 972 379L972 450L900 450L900 0L978 0L978 245C978 311 1003 394 1079 394C1175 394 1176 323 1176 291L1176 0L1254 0ZM1686 391C1708 391 1736 395 1760 395C1778 395 1817 392 1819 392L1808 455C1738 455 1680 436 1650 423C1629 440 1595 455 1555 455C1469 455 1396 383 1396 292C1396 255 1409 219 1429 193C1400 152 1400 113 1400 108C1400 82 1409 53 1426 32C1374 1 1362 -45 1362 -71C1362 -146 1461 -206 1583 -206C1706 -206 1805 -147 1805 -70C1805 69 1638 69 1599 69L1511 69C1498 69 1453 69 1453 122C1453 133 1457 149 1464 158C1485 143 1518 129 1555 129C1645 129 1715 203 1715 292C1715 340 1693 377 1682 392ZM1555 186C1518 186 1466 209 1466 292C1466 375 1518 398 1555 398C1598 398 1645 370 1645 292C1645 214 1598 186 1555 186ZM1600 -3C1622 -3 1735 -3 1735 -72C1735 -116 1666 -149 1584 -149C1503 -149 1432 -118 1432 -71C1432 -68 1432 -3 1510 -3ZM2247 219C2247 421 2140 461 2069 461C1958 461 1868 355 1868 226C1868 94 1964 -11 2084 -11C2147 -11 2204 13 2243 41L2237 106C2174 54 2108 50 2085 50C2005 50 1941 121 1938 219ZM1943 274C1959 350 2012 400 2069 400C2121 400 2177 366 2190 274Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,387.76043701171875,102.81333587646485);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,395.8958740234375,102.81333587646485);"><path d="M175 386L316 386L316 444L175 444L175 571L106 571L106 444L19 444L19 386L103 386L103 119C103 59 117 -11 186 -11C256 -11 307 14 332 27L316 86C290 65 258 53 226 53C189 53 175 83 175 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,405.44793701171875,107.13600762939453);"><path d="M92 522C121 593 186 630 247 630C299 630 348 600 348 535C348 473 307 413 246 398C240 397 238 397 167 391L167 329L238 329C346 329 368 235 368 184C368 105 322 40 245 40C176 40 97 75 53 144L42 83C115 -12 207 -22 247 -22C369 -22 457 76 457 183C457 275 387 338 319 360C395 401 430 471 430 535C430 622 347 689 248 689C171 689 98 648 56 577Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,415.46875,102.81333587646485);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,426.46875,102.81333587646485);"><path d="M424 386L565 386L565 444L424 444L424 571L355 571L355 444L268 444L268 386L352 386L352 119C352 59 366 -11 435 -11C505 -11 556 14 581 27L565 86C539 65 507 53 475 53C438 53 424 83 424 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,442.1146240234375,107.13600762939453);"><path d="M372 174L471 174L471 236L372 236L372 667L281 667L28 236L28 174L293 174L293 0L372 0ZM106 236C158 323 299 564 299 622L299 236Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,452.13543701171875,102.81333587646485);"><path d="M245 -184L254 -171C248 -140 246 -112 246 -44L246 578C246 628 250 665 250 691C250 706 249 717 245 726L51 726L45 720L45 694L49 689L87 689C114 689 136 683 148 673C157 664 160 649 160 616L160 -75C160 -108 157 -122 148 -131C136 -141 114 -147 87 -147L49 -147L45 -152L45 -178L51 -184Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,460.2708740234375,102.81333587646485);"><path d="" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g style="transform:matrix(1,0,0,1,471.2708740234375,102.81333587646485);"><path d="M949 272L743 486L711 452L836 300L65 300L65 241L836 241L711 89L743 55Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g></g><g style="transform:matrix(1,0,0,1,500.96875,102.81333587646485);"><path d="M289 -175C226 -161 206 -117 206 -45L206 128C206 207 197 253 125 272L125 274C194 292 206 335 206 409L206 595C206 667 224 707 289 726C189 726 134 703 134 578L134 392C134 327 120 292 58 273C124 254 134 223 134 151L134 -17C134 -149 176 -175 289 -175Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,510.32293701171875,102.81333587646485);"><path d="M435 298C435 364 420 455 298 455C208 455 159 387 153 379L153 450L81 450L81 0L159 0L159 245C159 311 184 394 260 394C356 394 357 323 357 291L357 0L435 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,523.6666870117188,107.13600762939453);"><path d="M372 174L471 174L471 236L372 236L372 667L281 667L28 236L28 174L293 174L293 0L372 0ZM106 236C158 323 299 564 299 622L299 236Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,533.6875,102.81333587646485);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,544.6875,102.81333587646485);"><path d="M684 298C684 364 669 455 547 455C457 455 408 387 402 379L402 450L330 450L330 0L408 0L408 245C408 311 433 394 509 394C605 394 606 323 606 291L606 0L684 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,564.125,107.13600762939453);"><path d="M153 602L416 602L416 667L81 667L81 292L147 292C164 332 201 372 259 372C306 372 360 330 360 208C360 40 238 40 229 40C162 40 101 79 72 134L39 77C80 19 149 -22 230 -22C349 -22 449 78 449 206C449 333 363 434 260 434C220 434 182 419 153 392Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,574.1458740234375,102.81333587646485);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,585.1458740234375,102.81333587646485);"><path d="M684 298C684 364 669 455 547 455C457 455 408 387 402 379L402 450L330 450L330 0L408 0L408 245C408 311 433 394 509 394C605 394 606 323 606 291L606 0L684 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,604.5833740234375,107.13600762939453);"><path d="M415 669C364 689 323 689 309 689C168 689 42 546 42 327C42 40 166 -22 251 -22C311 -22 354 1 393 47C438 99 457 145 457 226C457 356 391 469 295 469C263 469 187 461 126 385C139 549 218 630 310 630C348 630 380 623 415 609ZM127 223C127 237 127 239 128 251C128 326 173 407 256 407C304 407 332 382 352 344C373 307 375 271 375 226C375 191 375 144 351 103C334 74 308 40 251 40C145 40 130 189 127 223Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,615.822998046875,102.81333587646485);"><path d="M275 273C213 292 199 327 199 392L199 578C199 703 144 726 44 726C109 707 127 667 127 595L127 409C127 335 139 292 208 274L208 272C136 253 127 207 127 128L127 -45C127 -117 107 -161 44 -175C157 -175 199 -149 199 -17L199 151C199 223 209 254 275 273Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g></g></g></g></g><g><text x="332.04168701171875" y="113.66666412353516" style="white-space:pre;stroke:none;fill:rgb(0, 0, 0);font-size:21.6px;font-family:Arial, Helvetica, sans-serif;font-weight:400;font-style:normal;dominant-baseline:text-before-edge;text-decoration:none solid rgb(0, 0, 0);">                                           ...</text></g></g><g><g><g><g><g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,284.9114990234375,163.04063262939454);"><path d="M435 298C435 364 420 455 298 455C236 455 188 424 156 383L156 694L81 694L81 0L159 0L159 245C159 311 184 394 260 394C356 394 357 323 357 291L357 0L435 0ZM914 289C914 391 841 461 749 461C684 461 639 445 592 418L598 352C650 389 700 402 749 402C796 402 836 362 836 288L836 245C686 243 559 201 559 113C559 70 586 -11 673 -11C687 -11 781 -9 839 36L839 0L914 0ZM836 132C836 113 836 88 802 69C773 51 735 50 724 50C676 50 631 73 631 115C631 185 793 192 836 194ZM1354 128C1354 183 1317 217 1315 220C1276 255 1249 261 1199 270C1144 281 1098 291 1098 340C1098 402 1170 402 1183 402C1215 402 1268 398 1325 364L1337 429C1285 453 1244 461 1193 461C1168 461 1027 461 1027 330C1027 281 1056 249 1081 230C1112 208 1134 204 1189 193C1225 186 1283 174 1283 121C1283 52 1204 52 1189 52C1108 52 1052 89 1034 101L1022 33C1054 17 1109 -11 1190 -11C1328 -11 1354 75 1354 128ZM1811 298C1811 364 1796 455 1674 455C1612 455 1564 424 1532 383L1532 694L1457 694L1457 0L1535 0L1535 245C1535 311 1560 394 1636 394C1732 394 1733 323 1733 291L1733 0L1811 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g style="transform:matrix(1,0,0,1,323.46356201171875,163.70728912353516);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g style="transform:matrix(1,0,0,1,330.234375,163.04063262939454);"><path d="M105 469L137 665C138 667 138 669 138 671C138 689 116 709 95 709C74 709 52 689 52 670L52 665L85 469ZM286 469L318 665C319 667 319 669 319 670C319 689 297 709 276 709C254 709 233 690 233 670L233 665L266 469ZM546 386L656 386L656 444L543 444L543 563C543 637 610 644 636 644C656 644 683 642 717 627L717 694C705 697 674 705 637 705C543 705 471 634 471 534L471 444L397 444L397 386L471 386L471 0L546 0ZM1143 220C1143 354 1043 461 924 461C801 461 704 351 704 220C704 88 806 -11 923 -11C1043 -11 1143 90 1143 220ZM923 53C854 53 782 109 782 230C782 351 858 400 923 400C993 400 1065 348 1065 230C1065 112 997 53 923 53ZM1642 220C1642 354 1542 461 1423 461C1300 461 1203 351 1203 220C1203 88 1305 -11 1422 -11C1542 -11 1642 90 1642 220ZM1422 53C1353 53 1281 109 1281 230C1281 351 1357 400 1422 400C1492 400 1564 348 1564 230C1564 112 1496 53 1422 53ZM1777 469L1809 665C1810 667 1810 669 1810 671C1810 689 1788 709 1767 709C1746 709 1724 689 1724 670L1724 665L1757 469ZM1958 469L1990 665C1991 667 1991 669 1991 670C1991 689 1969 709 1948 709C1926 709 1905 690 1905 670L1905 665L1938 469Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g style="transform:matrix(1,0,0,1,371.86981201171875,163.70728912353516);"><path d="M51 726L32 700C87 636 187 526 187 266C187 -10 83 -131 32 -194L51 -215C104 -165 273 -23 273 265C273 542 108 675 51 726Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g></g><g><g style="transform:matrix(1,0,0,1,284.9114990234375,187.04063262939454);"><path d="" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g><g style="transform:matrix(1,0,0,1,324.52606201171875,187.04063262939454);"><path d="M949 272L743 486L711 452L836 300L65 300L65 241L836 241L711 89L743 55Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g></g><g style="transform:matrix(1,0,0,1,349.2552490234375,187.70728912353516);"><path d="M289 -175C226 -161 206 -117 206 -45L206 128C206 207 197 253 125 272L125 274C194 292 206 335 206 409L206 595C206 667 224 707 289 726C189 726 134 703 134 578L134 392C134 327 120 292 58 273C124 254 134 223 134 151L134 -17C134 -149 176 -175 289 -175Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g style="transform:matrix(1,0,0,1,357.0364990234375,187.04063262939454);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,368.96356201171875,191.30603912353516);"><path d="M16 23L16 -3C203 -3 203 0 239 0C275 0 275 -3 468 -3L468 82C353 77 307 81 122 77L304 270C401 373 431 428 431 503C431 618 353 689 226 689C154 689 105 669 56 619L39 483L68 483L81 529C97 587 133 612 200 612C286 612 341 558 341 473C341 398 299 324 186 204Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.01428,0,0,-0.01428,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,377.30731201171875,187.04063262939454);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g style="transform:matrix(1,0,0,1,386.46356201171875,187.04063262939454);"><path d="M273 388L280 368L312 389C349 412 352 414 359 414C370 414 377 404 377 389C377 338 336 145 295 2L302 -9C327 -2 350 4 372 8C391 134 412 199 458 268C512 352 587 414 632 414C643 414 649 405 649 390C649 372 646 351 638 319L586 107C577 70 573 47 573 31C573 6 584 -9 603 -9C629 -9 665 12 763 85L753 103L727 86C698 67 676 56 666 56C659 56 653 65 653 76C653 81 654 92 655 96L721 372C728 401 732 429 732 446C732 469 721 482 701 482C659 482 590 444 531 389C493 354 465 320 413 247L451 408C455 426 457 438 457 449C457 470 449 482 434 482C413 482 374 460 301 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,403.46356201171875,191.30603912353516);"><path d="M462 224C462 345 355 366 308 374C388 436 418 482 418 541C418 630 344 689 233 689C165 689 120 670 72 622L43 498L74 498L92 554C103 588 166 622 218 622C283 622 336 569 336 506C336 431 277 368 206 368C198 368 187 369 174 370L159 371L147 318L154 312C192 329 211 334 238 334C321 334 369 281 369 190C369 88 308 21 215 21C169 21 128 36 98 64C74 86 61 109 42 163L15 153C36 92 44 56 50 6C103 -12 147 -20 184 -20C307 -20 462 87 462 224Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.01428,0,0,-0.01428,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,411.80731201171875,187.04063262939454);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g style="transform:matrix(1,0,0,1,420.96356201171875,187.04063262939454);"><path d="M273 388L280 368L312 389C349 412 352 414 359 414C370 414 377 404 377 389C377 338 336 145 295 2L302 -9C327 -2 350 4 372 8C391 134 412 199 458 268C512 352 587 414 632 414C643 414 649 405 649 390C649 372 646 351 638 319L586 107C577 70 573 47 573 31C573 6 584 -9 603 -9C629 -9 665 12 763 85L753 103L727 86C698 67 676 56 666 56C659 56 653 65 653 76C653 81 654 92 655 96L721 372C728 401 732 429 732 446C732 469 721 482 701 482C659 482 590 444 531 389C493 354 465 320 413 247L451 408C455 426 457 438 457 449C457 470 449 482 434 482C413 482 374 460 301 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,437.96356201171875,191.30603912353516);"><path d="M280 181L280 106C280 46 269 32 220 30L158 27L158 -3C291 0 291 0 315 0C339 0 339 0 472 -3L472 27L424 30C375 33 364 46 364 106L364 181C423 181 444 180 472 177L472 248L364 245L365 697L285 667L2 204L2 181ZM280 245L65 245L280 597Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.01428,0,0,-0.01428,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,447.3177490234375,187.70728912353516);"><path d="M275 273C213 292 199 327 199 392L199 578C199 703 144 726 44 726C109 707 127 667 127 595L127 409C127 335 139 292 208 274L208 272C136 253 127 207 127 128L127 -45C127 -117 107 -161 44 -175C157 -175 199 -149 199 -17L199 151C199 223 209 254 275 273Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,245.3802490234375,224.40478912353515);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,262.578125,230.25888262939452);"><path d="M418 -3L418 27L366 30C311 33 301 44 301 96L301 700L60 598L67 548L217 614L217 96C217 44 206 33 152 30L96 27L96 -3C250 0 250 0 261 0C292 0 402 -3 418 -3Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,85.38021850585938,284.4047891235352);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,102.578125,290.2588826293945);"><path d="M168 345C127 326 110 315 88 294C50 256 30 211 30 159C30 56 113 -20 226 -20C356 -20 464 82 464 206C464 286 427 329 313 381C404 443 436 485 436 545C436 631 365 689 259 689C140 689 53 613 53 508C53 440 80 402 168 345ZM284 295C347 267 385 218 385 164C385 80 322 14 241 14C156 14 101 74 101 167C101 240 130 286 204 331ZM223 423C160 454 128 494 128 544C128 610 176 655 247 655C320 655 368 607 368 534C368 477 343 438 278 396Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,457.4114990234375,316.56666412353513);"><path d="M435 298C435 364 420 455 298 455C236 455 188 424 156 383L156 694L81 694L81 0L159 0L159 245C159 311 184 394 260 394C356 394 357 323 357 291L357 0L435 0ZM914 289C914 391 841 461 749 461C684 461 639 445 592 418L598 352C650 389 700 402 749 402C796 402 836 362 836 288L836 245C686 243 559 201 559 113C559 70 586 -11 673 -11C687 -11 781 -9 839 36L839 0L914 0ZM836 132C836 113 836 88 802 69C773 51 735 50 724 50C676 50 631 73 631 115C631 185 793 192 836 194ZM1354 128C1354 183 1317 217 1315 220C1276 255 1249 261 1199 270C1144 281 1098 291 1098 340C1098 402 1170 402 1183 402C1215 402 1268 398 1325 364L1337 429C1285 453 1244 461 1193 461C1168 461 1027 461 1027 330C1027 281 1056 249 1081 230C1112 208 1134 204 1189 193C1225 186 1283 174 1283 121C1283 52 1204 52 1189 52C1108 52 1052 89 1034 101L1022 33C1054 17 1109 -11 1190 -11C1328 -11 1354 75 1354 128ZM1811 298C1811 364 1796 455 1674 455C1612 455 1564 424 1532 383L1532 694L1457 694L1457 0L1535 0L1535 245C1535 311 1560 394 1636 394C1732 394 1733 323 1733 291L1733 0L1811 0Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g style="transform:matrix(1,0,0,1,495.96356201171875,317.2333511352539);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g style="transform:matrix(1,0,0,1,502.734375,316.56666412353513);"><path d="M105 469L137 665C138 667 138 669 138 671C138 689 116 709 95 709C74 709 52 689 52 670L52 665L85 469ZM286 469L318 665C319 667 319 669 319 670C319 689 297 709 276 709C254 709 233 690 233 670L233 665L266 469ZM527 694L452 694L452 0L530 0L530 46C554 24 597 -11 664 -11C764 -11 850 89 850 223C850 347 782 455 688 455C649 455 587 445 527 396ZM530 335C546 359 582 394 637 394C696 394 772 351 772 223C772 93 688 50 627 50C588 50 555 68 530 114ZM1284 289C1284 391 1211 461 1119 461C1054 461 1009 445 962 418L968 352C1020 389 1070 402 1119 402C1166 402 1206 362 1206 288L1206 245C1056 243 929 201 929 113C929 70 956 -11 1043 -11C1057 -11 1151 -9 1209 36L1209 0L1284 0ZM1206 132C1206 113 1206 88 1172 69C1143 51 1105 50 1094 50C1046 50 1001 73 1001 115C1001 185 1163 192 1206 194ZM1521 214C1521 314 1593 386 1691 388L1691 455C1602 454 1547 405 1516 359L1516 450L1446 450L1446 0L1521 0ZM1809 469L1841 665C1842 667 1842 669 1842 671C1842 689 1820 709 1799 709C1778 709 1756 689 1756 670L1756 665L1789 469ZM1990 469L2022 665C2023 667 2023 669 2023 670C2023 689 2001 709 1980 709C1958 709 1937 690 1937 670L1937 665L1970 469Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g style="transform:matrix(1,0,0,1,545.015625,317.2333511352539);"><path d="M51 726L32 700C87 636 187 526 187 266C187 -10 83 -131 32 -194L51 -215C104 -165 273 -23 273 265C273 542 108 675 51 726Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g></g></g></g></g><g><g><g><g><g style="transform:matrix(1,0,0,1,457.4114990234375,343.2333511352539);"><path d="" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g><g style="transform:matrix(1,0,0,1,497.02606201171875,343.2333511352539);"><path d="M949 272L743 486L711 452L836 300L65 300L65 241L836 241L711 89L743 55Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g></g><g style="transform:matrix(1,0,0,1,521.7552490234375,343.9000076293945);"><path d="M289 -175C226 -161 206 -117 206 -45L206 128C206 207 197 253 125 272L125 274C194 292 206 335 206 409L206 595C206 667 224 707 289 726C189 726 134 703 134 578L134 392C134 327 120 292 58 273C124 254 134 223 134 151L134 -17C134 -149 176 -175 289 -175Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g style="transform:matrix(1,0,0,1,529.5364990234375,343.2333511352539);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,541.4635620117188,347.4987576293945);"><path d="M462 224C462 345 355 366 308 374C388 436 418 482 418 541C418 630 344 689 233 689C165 689 120 670 72 622L43 498L74 498L92 554C103 588 166 622 218 622C283 622 336 569 336 506C336 431 277 368 206 368C198 368 187 369 174 370L159 371L147 318L154 312C192 329 211 334 238 334C321 334 369 281 369 190C369 88 308 21 215 21C169 21 128 36 98 64C74 86 61 109 42 163L15 153C36 92 44 56 50 6C103 -12 147 -20 184 -20C307 -20 462 87 462 224Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.01428,0,0,-0.01428,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,549.8073120117188,343.2333511352539);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g style="transform:matrix(1,0,0,1,558.9635620117188,343.2333511352539);"><path d="M273 388L280 368L312 389C349 412 352 414 359 414C370 414 377 404 377 389C377 338 336 145 295 2L302 -9C327 -2 350 4 372 8C391 134 412 199 458 268C512 352 587 414 632 414C643 414 649 405 649 390C649 372 646 351 638 319L586 107C577 70 573 47 573 31C573 6 584 -9 603 -9C629 -9 665 12 763 85L753 103L727 86C698 67 676 56 666 56C659 56 653 65 653 76C653 81 654 92 655 96L721 372C728 401 732 429 732 446C732 469 721 482 701 482C659 482 590 444 531 389C493 354 465 320 413 247L451 408C455 426 457 438 457 449C457 470 449 482 434 482C413 482 374 460 301 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,575.9635620117188,347.4987576293945);"><path d="M280 181L280 106C280 46 269 32 220 30L158 27L158 -3C291 0 291 0 315 0C339 0 339 0 472 -3L472 27L424 30C375 33 364 46 364 106L364 181C423 181 444 180 472 177L472 248L364 245L365 697L285 667L2 204L2 181ZM280 245L65 245L280 597Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.01428,0,0,-0.01428,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,584.3073120117188,343.2333511352539);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g style="transform:matrix(1,0,0,1,593.4635620117188,343.2333511352539);"><path d="M273 388L280 368L312 389C349 412 352 414 359 414C370 414 377 404 377 389C377 338 336 145 295 2L302 -9C327 -2 350 4 372 8C391 134 412 199 458 268C512 352 587 414 632 414C643 414 649 405 649 390C649 372 646 351 638 319L586 107C577 70 573 47 573 31C573 6 584 -9 603 -9C629 -9 665 12 763 85L753 103L727 86C698 67 676 56 666 56C659 56 653 65 653 76C653 81 654 92 655 96L721 372C728 401 732 429 732 446C732 469 721 482 701 482C659 482 590 444 531 389C493 354 465 320 413 247L451 408C455 426 457 438 457 449C457 470 449 482 434 482C413 482 374 460 301 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,610.463623046875,347.4987576293945);"><path d="M459 253C459 366 378 446 264 446C216 446 180 443 127 396L127 605L432 604L432 689L75 690L75 322L95 316C142 363 169 377 218 377C314 377 374 309 374 201C374 90 310 25 201 25C147 25 97 43 83 69L37 151L13 137C36 80 48 48 62 4C90 -11 130 -20 173 -20C301 -20 459 89 459 253Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.01428,0,0,-0.01428,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,619.8177490234375,343.9000076293945);"><path d="M275 273C213 292 199 327 199 392L199 578C199 703 144 726 44 726C109 707 127 667 127 595L127 409C127 335 139 292 208 274L208 272C136 253 127 207 127 128L127 -45C127 -117 107 -161 44 -175C157 -175 199 -149 199 -17L199 151C199 223 209 254 275 273Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020399999999999998,0,0,-0.020399999999999998,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,254.71356201171875,324.78125762939453);"><path d="M175 386L316 386L316 444L175 444L175 571L106 571L106 444L19 444L19 386L103 386L103 119C103 59 117 -11 186 -11C256 -11 307 14 332 27L316 86C290 65 258 53 226 53C189 53 175 83 175 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,261.33856201171875,328.4521011352539);"><path d="M299 689L279 689C220 627 137 624 89 622L89 563C122 564 170 566 220 587L220 59L95 59L95 0L424 0L424 59L299 59Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,331.71356201171875,354.78125762939453);"><path d="M175 386L316 386L316 444L175 444L175 571L106 571L106 444L19 444L19 386L103 386L103 119C103 59 117 -11 186 -11C256 -11 307 14 332 27L316 86C290 65 258 53 226 53C189 53 175 83 175 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,338.33856201171875,358.4521011352539);"><path d="M83 466C103 545 131 624 222 624C316 624 367 548 367 468C367 382 310 324 251 263L174 191L50 65L50 0L449 0L449 72L267 72C255 72 243 71 231 71L122 71C154 100 230 176 261 205C333 274 449 347 449 471C449 587 368 689 236 689C122 689 66 610 42 522C66 487 59 501 83 466Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,359.71356201171875,439.78125762939453);"><path d="M175 386L316 386L316 444L175 444L175 571L106 571L106 444L19 444L19 386L103 386L103 119C103 59 117 -11 186 -11C256 -11 307 14 332 27L316 86C290 65 258 53 226 53C189 53 175 83 175 136Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017,0,0,-0.017,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,366.33856201171875,443.4521011352539);"><path d="M92 522C121 593 186 630 247 630C299 630 348 600 348 535C348 473 307 413 246 398C240 397 238 397 167 391L167 329L238 329C346 329 368 235 368 184C368 105 322 40 245 40C176 40 97 75 53 144L42 83C115 -12 207 -22 247 -22C369 -22 457 76 457 183C457 275 387 338 319 360C395 401 430 471 430 535C430 622 347 689 248 689C171 689 98 648 56 577Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.0119,0,0,-0.0119,0,0);"></path></g></g></g></g></g></g></g></g></g></svg>
+</svg>
diff --git a/src/doc/4.0-rc1/_images/vnodes.svg b/src/doc/4.0-rc1/_images/vnodes.svg
new file mode 100644
index 0000000..71b4fa2
--- /dev/null
+++ b/src/doc/4.0-rc1/_images/vnodes.svg
@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="651" height="384.66668701171875" style="
+        width:651px;
+        height:384.66668701171875px;
+        background: transparent;
+        fill: none;
+">
+        
+        
+        <svg xmlns="http://www.w3.org/2000/svg" class="role-diagram-draw-area"><g class="shapes-region" style="stroke: black; fill: none;"><g class="composite-shape"><path class="real" d=" M40.4,190 C40.4,107.38 107.38,40.4 190,40.4 C272.62,40.4 339.6,107.38 339.6,190 C339.6,272.62 272.62,339.6 190,339.6 C107.38,339.6 40.4,272.62 40.4,190 Z" style="stroke-width: 1; stroke: rgba(0, 0, 0, 0.52); fill: none; stroke-dasharray: 1.125, 3.35;"/></g><g class="composite-shape"><path class="real" d=" M160,340 C160,323.43 173.43,310 190,310 C206.57,310 220,323.43 220,340 C220,356.57 206.57,370 190,370 C173.43,370 160,356.57 160,340 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(130, 192, 233); stroke-dasharray: 6, 6;"/></g><g class="composite-shape"><path class="real" d=" M160,40 C160,23.43 173.43,10 190,10 C206.57,10 220,23.43 220,40 C220,56.57 206.57,70 190,70 C173.43,70 160,56.57 160,40 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(130, 192, 233); stroke-dasharray: 6, 6;"/></g><g class="composite-shape"><path class="real" d=" M310,190 C310,173.43 323.43,160 340,160 C356.57,160 370,173.43 370,190 C370,206.57 356.57,220 340,220 C323.43,220 310,206.57 310,190 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(103, 148, 135); stroke-dasharray: 1.125, 3.35;"/></g><g class="composite-shape"><path class="real" d=" M10,190 C10,173.43 23.43,160 40,160 C56.57,160 70,173.43 70,190 C70,206.57 56.57,220 40,220 C23.43,220 10,206.57 10,190 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(103, 148, 135); stroke-dasharray: 1.125, 3.35;"/></g><g class="composite-shape"><path class="real" d=" M270,80 C270,63.43 283.43,50 300,50 C316.57,50 330,63.43 330,80 C330,96.57 316.57,110 300,110 C283.43,110 270,96.57 270,80 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(202, 194, 126);"/></g><g class="composite-shape"><path class="real" d=" M270,300 C270,283.43 283.43,270 300,270 C316.57,270 330,283.43 330,300 C330,316.57 316.57,330 300,330 C283.43,330 270,316.57 270,300 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(187, 187, 187);"/></g><g class="composite-shape"><path class="real" d=" M50,300 C50,283.43 63.43,270 80,270 C96.57,270 110,283.43 110,300 C110,316.57 96.57,330 80,330 C63.43,330 50,316.57 50,300 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(202, 194, 126);"/></g><g class="composite-shape"><path class="real" d=" M50,80 C50,63.43 63.43,50 80,50 C96.57,50 110,63.43 110,80 C110,96.57 96.57,110 80,110 C63.43,110 50,96.57 50,80 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(187, 187, 187);"/></g><g class="composite-shape"><path class="real" d=" M380,158.4 C380,146.47 389.67,136.8 401.6,136.8 C413.53,136.8 423.2,146.47 423.2,158.4 C423.2,170.33 413.53,180 401.6,180 C389.67,180 380,170.33 380,158.4 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(103, 148, 135); stroke-dasharray: 1.125, 3.35;"/></g><g class="composite-shape"><path class="real" d=" M380,101.6 C380,89.67 389.67,80 401.6,80 C413.53,80 423.2,89.67 423.2,101.6 C423.2,113.53 413.53,123.2 401.6,123.2 C389.67,123.2 380,113.53 380,101.6 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(130, 192, 233); stroke-dasharray: 6, 6;"/></g><g class="composite-shape"><path class="real" d=" M380,218.4 C380,206.47 389.67,196.8 401.6,196.8 C413.53,196.8 423.2,206.47 423.2,218.4 C423.2,230.33 413.53,240 401.6,240 C389.67,240 380,230.33 380,218.4 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(202, 194, 126);"/></g><g class="composite-shape"><path class="real" d=" M380,278.4 C380,266.47 389.67,256.8 401.6,256.8 C413.53,256.8 423.2,266.47 423.2,278.4 C423.2,290.33 413.53,300 401.6,300 C389.67,300 380,290.33 380,278.4 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(187, 187, 187);"/></g><g class="composite-shape"><path class="real" d=" M430,80 L640,80 L640,300 L430,300 Z" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: none;"/></g><g/></g><g/><g/><g/></svg>
+        <svg xmlns="http://www.w3.org/2000/svg" width="649" height="382.66668701171875" style="width:649px;height:382.66668701171875px;font-family:Asana-Math, Asana;background:transparent;"><g><g><g><g><g><g style="transform:matrix(1,0,0,1,178.65625,348.9985620117188);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,189.3021240234375,354.852625);"><path d="M459 253C459 366 378 446 264 446C216 446 180 443 127 396L127 605L432 604L432 689L75 690L75 322L95 316C142 363 169 377 218 377C314 377 374 309 374 201C374 90 310 25 201 25C147 25 97 43 83 69L37 151L13 137C36 80 48 48 62 4C90 -11 130 -20 173 -20C301 -20 459 89 459 253Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,178.65625,49.800625);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,189.3021240234375,55.65471850585938);"><path d="M418 -3L418 27L366 30C311 33 301 44 301 96L301 700L60 598L67 548L217 614L217 96C217 44 206 33 152 30L96 27L96 -3C250 0 250 0 261 0C292 0 402 -3 418 -3Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,328.25,199.40481201171875);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,338.8958740234375,205.258875);"><path d="M462 224C462 345 355 366 308 374C388 436 418 482 418 541C418 630 344 689 233 689C165 689 120 670 72 622L43 498L74 498L92 554C103 588 166 622 218 622C283 622 336 569 336 506C336 431 277 368 206 368C198 368 187 369 174 370L159 371L147 318L154 312C192 329 211 334 238 334C321 334 369 281 369 190C369 88 308 21 215 21C169 21 128 36 98 64C74 86 61 109 42 163L15 153C36 92 44 56 50 6C103 -12 147 -20 184 -20C307 -20 462 87 462 224Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,29.052093505859375,199.40481201171875);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,39.69793701171875,205.258875);"><path d="M409 603L47 -1L157 -1L497 659L497 689L44 689L44 477L74 477L81 533C89 595 96 603 142 603Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,287.44793701171875,90.60271850585937);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,298.09375,96.45679675292969);"><path d="M16 23L16 -3C203 -3 203 0 239 0C275 0 275 -3 468 -3L468 82C353 77 307 81 122 77L304 270C401 373 431 428 431 503C431 618 353 689 226 689C154 689 105 669 56 619L39 483L68 483L81 529C97 587 133 612 200 612C286 612 341 558 341 473C341 398 299 324 186 204Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,287.44793701171875,308.1964685058594);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,298.09375,314.05056201171874);"><path d="M280 181L280 106C280 46 269 32 220 30L158 27L158 -3C291 0 291 0 315 0C339 0 339 0 472 -3L472 27L424 30C375 33 364 46 364 106L364 181C423 181 444 180 472 177L472 248L364 245L365 697L285 667L2 204L2 181ZM280 245L65 245L280 597Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,69.85418701171875,308.1964685058594);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,80.5,314.05056201171874);"><path d="M131 331C152 512 241 611 421 665L379 689C283 657 242 637 191 593C88 506 32 384 32 247C32 82 112 -20 241 -20C371 -20 468 83 468 219C468 334 399 409 293 409C216 409 184 370 131 331ZM255 349C331 349 382 283 382 184C382 80 331 13 254 13C169 13 123 86 123 220C123 255 127 274 138 291C160 325 207 349 255 349Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,69.85418701171875,90.60271850585937);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,80.5,96.45679675292969);"><path d="M168 345C127 326 110 315 88 294C50 256 30 211 30 159C30 56 113 -20 226 -20C356 -20 464 82 464 206C464 286 427 329 313 381C404 443 436 485 436 545C436 631 365 689 259 689C140 689 53 613 53 508C53 440 80 402 168 345ZM284 295C347 267 385 218 385 164C385 80 322 14 241 14C156 14 101 74 101 167C101 240 130 286 204 331ZM223 423C160 454 128 494 128 544C128 610 176 655 247 655C320 655 368 607 368 534C368 477 343 438 278 396Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,386.9739990234375,167.800625);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,404.171875,173.65471850585936);"><path d="M16 23L16 -3C203 -3 203 0 239 0C275 0 275 -3 468 -3L468 82C353 77 307 81 122 77L304 270C401 373 431 428 431 503C431 618 353 689 226 689C154 689 105 669 56 619L39 483L68 483L81 529C97 587 133 612 200 612C286 612 341 558 341 473C341 398 299 324 186 204Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,386.9739990234375,110.99856201171875);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,404.171875,116.852625);"><path d="M418 -3L418 27L366 30C311 33 301 44 301 96L301 700L60 598L67 548L217 614L217 96C217 44 206 33 152 30L96 27L96 -3C250 0 250 0 261 0C292 0 402 -3 418 -3Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,386.9739990234375,227.800625);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,404.171875,233.65471850585936);"><path d="M462 224C462 345 355 366 308 374C388 436 418 482 418 541C418 630 344 689 233 689C165 689 120 670 72 622L43 498L74 498L92 554C103 588 166 622 218 622C283 622 336 569 336 506C336 431 277 368 206 368C198 368 187 369 174 370L159 371L147 318L154 312C192 329 211 334 238 334C321 334 369 281 369 190C369 88 308 21 215 21C169 21 128 36 98 64C74 86 61 109 42 163L15 153C36 92 44 56 50 6C103 -12 147 -20 184 -20C307 -20 462 87 462 224Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,386.9739990234375,287.800625);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02941,0,0,-0.02941,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,404.171875,293.65471850585936);"><path d="M280 181L280 106C280 46 269 32 220 30L158 27L158 -3C291 0 291 0 315 0C339 0 339 0 472 -3L472 27L424 30C375 33 364 46 364 106L364 181C423 181 444 180 472 177L472 248L364 245L365 697L285 667L2 204L2 181ZM280 245L65 245L280 597Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.020587,0,0,-0.020587,0,0);"></path></g></g></g></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,438.125,111.64668701171875);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390ZM349 152C349 46 394 -11 477 -11C532 -11 592 15 637 57C699 116 743 230 743 331C743 425 693 482 610 482C506 482 349 382 349 152ZM573 444C634 444 667 399 667 315C667 219 636 113 592 60C574 39 548 27 517 27C459 27 425 72 425 151C425 264 464 387 513 427C526 438 549 444 573 444ZM1015 722L1003 733C951 707 915 698 843 691L839 670L887 670C911 670 921 663 921 646C921 638 920 629 919 622L871 354C857 279 841 210 789 1L798 -9L865 8L888 132C897 180 921 225 955 259C1024 59 1056 -9 1081 -9C1094 -9 1118 4 1162 35L1208 67L1200 86L1157 62C1143 54 1136 52 1128 52C1118 52 1111 58 1102 75C1067 139 1045 193 1006 316L1020 330C1081 391 1127 416 1177 416C1185 416 1196 414 1213 410L1230 473C1212 479 1194 482 1182 482C1116 482 1033 405 908 230ZM1571 111L1547 94C1494 56 1446 36 1410 36C1363 36 1334 73 1334 133C1334 158 1337 185 1342 214C1359 218 1468 248 1493 259C1578 296 1617 342 1617 404C1617 451 1583 482 1533 482C1465 496 1355 423 1318 349C1288 299 1258 180 1258 113C1258 35 1302 -11 1374 -11C1431 -11 1487 17 1579 92ZM1356 274C1373 343 1393 386 1422 412C1440 428 1471 440 1495 440C1524 440 1543 420 1543 388C1543 344 1508 297 1456 272C1428 258 1392 247 1347 237ZM1655 388L1662 368L1694 389C1731 412 1734 414 1741 414C1752 414 1759 404 1759 389C1759 338 1718 145 1677 2L1684 -9C1709 -2 1732 4 1754 8C1773 134 1794 199 1840 268C1894 352 1969 414 2014 414C2025 414 2031 405 2031 390C2031 372 2028 351 2020 319L1968 107C1959 70 1955 47 1955 31C1955 6 1966 -9 1985 -9C2011 -9 2047 12 2145 85L2135 103L2109 86C2080 67 2058 56 2048 56C2041 56 2035 65 2035 76C2035 81 2036 92 2037 96L2103 372C2110 401 2114 429 2114 446C2114 469 2103 482 2083 482C2041 482 1972 444 1913 389C1875 354 1847 320 1795 247L1833 408C1837 426 1839 438 1839 449C1839 470 1831 482 1816 482C1795 482 1756 460 1683 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,491.6458740234375,111.64668701171875);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,499.78125,111.64668701171875);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,514.1041870117188,115.96934350585937);"><path d="M418 -3L418 27L366 30C311 33 301 44 301 96L301 700L60 598L67 548L217 614L217 96C217 44 206 33 152 30L96 27L96 -3C250 0 250 0 261 0C292 0 402 -3 418 -3Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,524.125,111.64668701171875);"><path d="M51 726L32 700C87 636 187 526 187 266C187 -10 83 -131 32 -194L51 -215C104 -165 273 -23 273 265C273 542 108 675 51 726Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,539.6041870117188,111.64668701171875);"><path d="M604 347L604 406L65 406L65 347ZM604 134L604 193L65 193L65 134Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,563.3021240234375,111.64668701171875);"><path d="M289 -175C226 -161 206 -117 206 -45L206 128C206 207 197 253 125 272L125 274C194 292 206 335 206 409L206 595C206 667 224 707 289 726C189 726 134 703 134 578L134 392C134 327 120 292 58 273C124 254 134 223 134 151L134 -17C134 -149 176 -175 289 -175Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,572.65625,111.64668701171875);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,581.5208740234375,115.96934350585937);"><path d="M418 -3L418 27L366 30C311 33 301 44 301 96L301 700L60 598L67 548L217 614L217 96C217 44 206 33 152 30L96 27L96 -3C250 0 250 0 261 0C292 0 402 -3 418 -3Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,591.5416870117188,111.64668701171875);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,602.541748046875,111.64668701171875);"><path d="M374 390L318 107C317 99 305 61 305 31C305 6 316 -9 335 -9C370 -9 405 11 483 74L514 99L504 117L459 86C430 66 410 56 399 56C390 56 385 64 385 76C385 102 399 183 428 328L441 390L548 390L559 440C521 436 487 434 449 434C465 528 476 577 494 631L483 646C463 634 436 622 405 610L380 440C336 419 310 408 292 403L290 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,617.5,115.96934350585937);"><path d="M459 253C459 366 378 446 264 446C216 446 180 443 127 396L127 605L432 604L432 689L75 690L75 322L95 316C142 363 169 377 218 377C314 377 374 309 374 201C374 90 310 25 201 25C147 25 97 43 83 69L37 151L13 137C36 80 48 48 62 4C90 -11 130 -20 173 -20C301 -20 459 89 459 253Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,628.7396240234375,111.64668701171875);"><path d="M275 273C213 292 199 327 199 392L199 578C199 703 144 726 44 726C109 707 127 667 127 595L127 409C127 335 139 292 208 274L208 272C136 253 127 207 127 128L127 -45C127 -117 107 -161 44 -175C157 -175 199 -149 199 -17L199 151C199 223 209 254 275 273Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,439.125,164.64668701171874);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390ZM349 152C349 46 394 -11 477 -11C532 -11 592 15 637 57C699 116 743 230 743 331C743 425 693 482 610 482C506 482 349 382 349 152ZM573 444C634 444 667 399 667 315C667 219 636 113 592 60C574 39 548 27 517 27C459 27 425 72 425 151C425 264 464 387 513 427C526 438 549 444 573 444ZM1015 722L1003 733C951 707 915 698 843 691L839 670L887 670C911 670 921 663 921 646C921 638 920 629 919 622L871 354C857 279 841 210 789 1L798 -9L865 8L888 132C897 180 921 225 955 259C1024 59 1056 -9 1081 -9C1094 -9 1118 4 1162 35L1208 67L1200 86L1157 62C1143 54 1136 52 1128 52C1118 52 1111 58 1102 75C1067 139 1045 193 1006 316L1020 330C1081 391 1127 416 1177 416C1185 416 1196 414 1213 410L1230 473C1212 479 1194 482 1182 482C1116 482 1033 405 908 230ZM1571 111L1547 94C1494 56 1446 36 1410 36C1363 36 1334 73 1334 133C1334 158 1337 185 1342 214C1359 218 1468 248 1493 259C1578 296 1617 342 1617 404C1617 451 1583 482 1533 482C1465 496 1355 423 1318 349C1288 299 1258 180 1258 113C1258 35 1302 -11 1374 -11C1431 -11 1487 17 1579 92ZM1356 274C1373 343 1393 386 1422 412C1440 428 1471 440 1495 440C1524 440 1543 420 1543 388C1543 344 1508 297 1456 272C1428 258 1392 247 1347 237ZM1655 388L1662 368L1694 389C1731 412 1734 414 1741 414C1752 414 1759 404 1759 389C1759 338 1718 145 1677 2L1684 -9C1709 -2 1732 4 1754 8C1773 134 1794 199 1840 268C1894 352 1969 414 2014 414C2025 414 2031 405 2031 390C2031 372 2028 351 2020 319L1968 107C1959 70 1955 47 1955 31C1955 6 1966 -9 1985 -9C2011 -9 2047 12 2145 85L2135 103L2109 86C2080 67 2058 56 2048 56C2041 56 2035 65 2035 76C2035 81 2036 92 2037 96L2103 372C2110 401 2114 429 2114 446C2114 469 2103 482 2083 482C2041 482 1972 444 1913 389C1875 354 1847 320 1795 247L1833 408C1837 426 1839 438 1839 449C1839 470 1831 482 1816 482C1795 482 1756 460 1683 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,492.6458740234375,164.64668701171874);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,500.78125,164.64668701171874);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,515.1041870117188,168.96934350585937);"><path d="M16 23L16 -3C203 -3 203 0 239 0C275 0 275 -3 468 -3L468 82C353 77 307 81 122 77L304 270C401 373 431 428 431 503C431 618 353 689 226 689C154 689 105 669 56 619L39 483L68 483L81 529C97 587 133 612 200 612C286 612 341 558 341 473C341 398 299 324 186 204Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,525.125,164.64668701171874);"><path d="M51 726L32 700C87 636 187 526 187 266C187 -10 83 -131 32 -194L51 -215C104 -165 273 -23 273 265C273 542 108 675 51 726Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,540.6041870117188,164.64668701171874);"><path d="M604 347L604 406L65 406L65 347ZM604 134L604 193L65 193L65 134Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,564.3021240234375,164.64668701171874);"><path d="M289 -175C226 -161 206 -117 206 -45L206 128C206 207 197 253 125 272L125 274C194 292 206 335 206 409L206 595C206 667 224 707 289 726C189 726 134 703 134 578L134 392C134 327 120 292 58 273C124 254 134 223 134 151L134 -17C134 -149 176 -175 289 -175Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,573.65625,164.64668701171874);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,582.5208740234375,168.96934350585937);"><path d="M462 224C462 345 355 366 308 374C388 436 418 482 418 541C418 630 344 689 233 689C165 689 120 670 72 622L43 498L74 498L92 554C103 588 166 622 218 622C283 622 336 569 336 506C336 431 277 368 206 368C198 368 187 369 174 370L159 371L147 318L154 312C192 329 211 334 238 334C321 334 369 281 369 190C369 88 308 21 215 21C169 21 128 36 98 64C74 86 61 109 42 163L15 153C36 92 44 56 50 6C103 -12 147 -20 184 -20C307 -20 462 87 462 224Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,592.5416870117188,164.64668701171874);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,603.541748046875,164.64668701171874);"><path d="M374 390L318 107C317 99 305 61 305 31C305 6 316 -9 335 -9C370 -9 405 11 483 74L514 99L504 117L459 86C430 66 410 56 399 56C390 56 385 64 385 76C385 102 399 183 428 328L441 390L548 390L559 440C521 436 487 434 449 434C465 528 476 577 494 631L483 646C463 634 436 622 405 610L380 440C336 419 310 408 292 403L290 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,618.5,168.96934350585937);"><path d="M409 603L47 -1L157 -1L497 659L497 689L44 689L44 477L74 477L81 533C89 595 96 603 142 603Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,629.7396240234375,164.64668701171874);"><path d="M275 273C213 292 199 327 199 392L199 578C199 703 144 726 44 726C109 707 127 667 127 595L127 409C127 335 139 292 208 274L208 272C136 253 127 207 127 128L127 -45C127 -117 107 -161 44 -175C157 -175 199 -149 199 -17L199 151C199 223 209 254 275 273Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,439.125,221.64668701171874);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390ZM349 152C349 46 394 -11 477 -11C532 -11 592 15 637 57C699 116 743 230 743 331C743 425 693 482 610 482C506 482 349 382 349 152ZM573 444C634 444 667 399 667 315C667 219 636 113 592 60C574 39 548 27 517 27C459 27 425 72 425 151C425 264 464 387 513 427C526 438 549 444 573 444ZM1015 722L1003 733C951 707 915 698 843 691L839 670L887 670C911 670 921 663 921 646C921 638 920 629 919 622L871 354C857 279 841 210 789 1L798 -9L865 8L888 132C897 180 921 225 955 259C1024 59 1056 -9 1081 -9C1094 -9 1118 4 1162 35L1208 67L1200 86L1157 62C1143 54 1136 52 1128 52C1118 52 1111 58 1102 75C1067 139 1045 193 1006 316L1020 330C1081 391 1127 416 1177 416C1185 416 1196 414 1213 410L1230 473C1212 479 1194 482 1182 482C1116 482 1033 405 908 230ZM1571 111L1547 94C1494 56 1446 36 1410 36C1363 36 1334 73 1334 133C1334 158 1337 185 1342 214C1359 218 1468 248 1493 259C1578 296 1617 342 1617 404C1617 451 1583 482 1533 482C1465 496 1355 423 1318 349C1288 299 1258 180 1258 113C1258 35 1302 -11 1374 -11C1431 -11 1487 17 1579 92ZM1356 274C1373 343 1393 386 1422 412C1440 428 1471 440 1495 440C1524 440 1543 420 1543 388C1543 344 1508 297 1456 272C1428 258 1392 247 1347 237ZM1655 388L1662 368L1694 389C1731 412 1734 414 1741 414C1752 414 1759 404 1759 389C1759 338 1718 145 1677 2L1684 -9C1709 -2 1732 4 1754 8C1773 134 1794 199 1840 268C1894 352 1969 414 2014 414C2025 414 2031 405 2031 390C2031 372 2028 351 2020 319L1968 107C1959 70 1955 47 1955 31C1955 6 1966 -9 1985 -9C2011 -9 2047 12 2145 85L2135 103L2109 86C2080 67 2058 56 2048 56C2041 56 2035 65 2035 76C2035 81 2036 92 2037 96L2103 372C2110 401 2114 429 2114 446C2114 469 2103 482 2083 482C2041 482 1972 444 1913 389C1875 354 1847 320 1795 247L1833 408C1837 426 1839 438 1839 449C1839 470 1831 482 1816 482C1795 482 1756 460 1683 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,492.6458740234375,221.64668701171874);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,500.78125,221.64668701171874);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,515.1041870117188,225.96934350585937);"><path d="M462 224C462 345 355 366 308 374C388 436 418 482 418 541C418 630 344 689 233 689C165 689 120 670 72 622L43 498L74 498L92 554C103 588 166 622 218 622C283 622 336 569 336 506C336 431 277 368 206 368C198 368 187 369 174 370L159 371L147 318L154 312C192 329 211 334 238 334C321 334 369 281 369 190C369 88 308 21 215 21C169 21 128 36 98 64C74 86 61 109 42 163L15 153C36 92 44 56 50 6C103 -12 147 -20 184 -20C307 -20 462 87 462 224Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,525.125,221.64668701171874);"><path d="M51 726L32 700C87 636 187 526 187 266C187 -10 83 -131 32 -194L51 -215C104 -165 273 -23 273 265C273 542 108 675 51 726Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,540.6041870117188,221.64668701171874);"><path d="M604 347L604 406L65 406L65 347ZM604 134L604 193L65 193L65 134Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,564.3021240234375,221.64668701171874);"><path d="M289 -175C226 -161 206 -117 206 -45L206 128C206 207 197 253 125 272L125 274C194 292 206 335 206 409L206 595C206 667 224 707 289 726C189 726 134 703 134 578L134 392C134 327 120 292 58 273C124 254 134 223 134 151L134 -17C134 -149 176 -175 289 -175Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,573.65625,221.64668701171874);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,582.5208740234375,225.96934350585937);"><path d="M16 23L16 -3C203 -3 203 0 239 0C275 0 275 -3 468 -3L468 82C353 77 307 81 122 77L304 270C401 373 431 428 431 503C431 618 353 689 226 689C154 689 105 669 56 619L39 483L68 483L81 529C97 587 133 612 200 612C286 612 341 558 341 473C341 398 299 324 186 204Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,592.5416870117188,221.64668701171874);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,603.541748046875,221.64668701171874);"><path d="M374 390L318 107C317 99 305 61 305 31C305 6 316 -9 335 -9C370 -9 405 11 483 74L514 99L504 117L459 86C430 66 410 56 399 56C390 56 385 64 385 76C385 102 399 183 428 328L441 390L548 390L559 440C521 436 487 434 449 434C465 528 476 577 494 631L483 646C463 634 436 622 405 610L380 440C336 419 310 408 292 403L290 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,618.5,225.96934350585937);"><path d="M131 331C152 512 241 611 421 665L379 689C283 657 242 637 191 593C88 506 32 384 32 247C32 82 112 -20 241 -20C371 -20 468 83 468 219C468 334 399 409 293 409C216 409 184 370 131 331ZM255 349C331 349 382 283 382 184C382 80 331 13 254 13C169 13 123 86 123 220C123 255 127 274 138 291C160 325 207 349 255 349Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,629.7396240234375,221.64668701171874);"><path d="M275 273C213 292 199 327 199 392L199 578C199 703 144 726 44 726C109 707 127 667 127 595L127 409C127 335 139 292 208 274L208 272C136 253 127 207 127 128L127 -45C127 -117 107 -161 44 -175C157 -175 199 -149 199 -17L199 151C199 223 209 254 275 273Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g></g></g></g></g></g><g><g><g><g><g><g style="transform:matrix(1,0,0,1,439.125,281.64668701171877);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390ZM349 152C349 46 394 -11 477 -11C532 -11 592 15 637 57C699 116 743 230 743 331C743 425 693 482 610 482C506 482 349 382 349 152ZM573 444C634 444 667 399 667 315C667 219 636 113 592 60C574 39 548 27 517 27C459 27 425 72 425 151C425 264 464 387 513 427C526 438 549 444 573 444ZM1015 722L1003 733C951 707 915 698 843 691L839 670L887 670C911 670 921 663 921 646C921 638 920 629 919 622L871 354C857 279 841 210 789 1L798 -9L865 8L888 132C897 180 921 225 955 259C1024 59 1056 -9 1081 -9C1094 -9 1118 4 1162 35L1208 67L1200 86L1157 62C1143 54 1136 52 1128 52C1118 52 1111 58 1102 75C1067 139 1045 193 1006 316L1020 330C1081 391 1127 416 1177 416C1185 416 1196 414 1213 410L1230 473C1212 479 1194 482 1182 482C1116 482 1033 405 908 230ZM1571 111L1547 94C1494 56 1446 36 1410 36C1363 36 1334 73 1334 133C1334 158 1337 185 1342 214C1359 218 1468 248 1493 259C1578 296 1617 342 1617 404C1617 451 1583 482 1533 482C1465 496 1355 423 1318 349C1288 299 1258 180 1258 113C1258 35 1302 -11 1374 -11C1431 -11 1487 17 1579 92ZM1356 274C1373 343 1393 386 1422 412C1440 428 1471 440 1495 440C1524 440 1543 420 1543 388C1543 344 1508 297 1456 272C1428 258 1392 247 1347 237ZM1655 388L1662 368L1694 389C1731 412 1734 414 1741 414C1752 414 1759 404 1759 389C1759 338 1718 145 1677 2L1684 -9C1709 -2 1732 4 1754 8C1773 134 1794 199 1840 268C1894 352 1969 414 2014 414C2025 414 2031 405 2031 390C2031 372 2028 351 2020 319L1968 107C1959 70 1955 47 1955 31C1955 6 1966 -9 1985 -9C2011 -9 2047 12 2145 85L2135 103L2109 86C2080 67 2058 56 2048 56C2041 56 2035 65 2035 76C2035 81 2036 92 2037 96L2103 372C2110 401 2114 429 2114 446C2114 469 2103 482 2083 482C2041 482 1972 444 1913 389C1875 354 1847 320 1795 247L1833 408C1837 426 1839 438 1839 449C1839 470 1831 482 1816 482C1795 482 1756 460 1683 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,492.6458740234375,281.64668701171877);"><path d="M146 266C146 526 243 632 301 700L282 726C225 675 60 542 60 266C60 159 85 58 133 -32C168 -99 200 -138 282 -215L301 -194C255 -137 146 -15 146 266Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,500.78125,281.64668701171877);"><path d="M24 388L31 368L63 389C100 412 103 414 110 414C121 414 128 404 128 389C128 338 87 145 46 2L53 -9C78 -2 101 4 123 8C142 134 163 199 209 268C263 352 338 414 383 414C394 414 400 405 400 390C400 372 397 351 389 319L337 107C328 70 324 47 324 31C324 6 335 -9 354 -9C380 -9 416 12 514 85L504 103L478 86C449 67 427 56 417 56C410 56 404 65 404 76C404 81 405 92 406 96L472 372C479 401 483 429 483 446C483 469 472 482 452 482C410 482 341 444 282 389C244 354 216 320 164 247L202 408C206 426 208 438 208 449C208 470 200 482 185 482C164 482 125 460 52 408Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,515.1041870117188,285.9693435058594);"><path d="M280 181L280 106C280 46 269 32 220 30L158 27L158 -3C291 0 291 0 315 0C339 0 339 0 472 -3L472 27L424 30C375 33 364 46 364 106L364 181C423 181 444 180 472 177L472 248L364 245L365 697L285 667L2 204L2 181ZM280 245L65 245L280 597Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,525.125,281.64668701171877);"><path d="M51 726L32 700C87 636 187 526 187 266C187 -10 83 -131 32 -194L51 -215C104 -165 273 -23 273 265C273 542 108 675 51 726Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,540.6041870117188,281.64668701171877);"><path d="M604 347L604 406L65 406L65 347ZM604 134L604 193L65 193L65 134Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,564.3021240234375,281.64668701171877);"><path d="M289 -175C226 -161 206 -117 206 -45L206 128C206 207 197 253 125 272L125 274C194 292 206 335 206 409L206 595C206 667 224 707 289 726C189 726 134 703 134 578L134 392C134 327 120 292 58 273C124 254 134 223 134 151L134 -17C134 -149 176 -175 289 -175Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,573.65625,281.64668701171877);"><path d="M125 390L69 107C68 99 56 61 56 31C56 6 67 -9 86 -9C121 -9 156 11 234 74L265 99L255 117L210 86C181 66 161 56 150 56C141 56 136 64 136 76C136 102 150 183 179 328L192 390L299 390L310 440C272 436 238 434 200 434C216 528 227 577 245 631L234 646C214 634 187 622 156 610L131 440C87 419 61 408 43 403L41 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,582.5208740234375,285.9693435058594);"><path d="M280 181L280 106C280 46 269 32 220 30L158 27L158 -3C291 0 291 0 315 0C339 0 339 0 472 -3L472 27L424 30C375 33 364 46 364 106L364 181C423 181 444 180 472 177L472 248L364 245L365 697L285 667L2 204L2 181ZM280 245L65 245L280 597Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,592.5416870117188,281.64668701171877);"><path d="M204 123C177 114 159 108 106 93C99 17 74 -48 16 -144L30 -155L71 -136C152 -31 190 32 218 109Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g style="transform:matrix(1,0,0,1,603.541748046875,281.64668701171877);"><path d="M374 390L318 107C317 99 305 61 305 31C305 6 316 -9 335 -9C370 -9 405 11 483 74L514 99L504 117L459 86C430 66 410 56 399 56C390 56 385 64 385 76C385 102 399 183 428 328L441 390L548 390L559 440C521 436 487 434 449 434C465 528 476 577 494 631L483 646C463 634 436 622 405 610L380 440C336 419 310 408 292 403L290 390Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g><g><g><g><g style="transform:matrix(1,0,0,1,618.5,285.9693435058594);"><path d="M168 345C127 326 110 315 88 294C50 256 30 211 30 159C30 56 113 -20 226 -20C356 -20 464 82 464 206C464 286 427 329 313 381C404 443 436 485 436 545C436 631 365 689 259 689C140 689 53 613 53 508C53 440 80 402 168 345ZM284 295C347 267 385 218 385 164C385 80 322 14 241 14C156 14 101 74 101 167C101 240 130 286 204 331ZM223 423C160 454 128 494 128 544C128 610 176 655 247 655C320 655 368 607 368 534C368 477 343 438 278 396Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.017136,0,0,-0.017136,0,0);"></path></g></g></g></g><g style="transform:matrix(1,0,0,1,629.7396240234375,281.64668701171877);"><path d="M275 273C213 292 199 327 199 392L199 578C199 703 144 726 44 726C109 707 127 667 127 595L127 409C127 335 139 292 208 274L208 272C136 253 127 207 127 128L127 -45C127 -117 107 -161 44 -175C157 -175 199 -149 199 -17L199 151C199 223 209 254 275 273Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.024480000000000002,0,0,-0.024480000000000002,0,0);"></path></g></g></g></g></g></g><g><g><g style="transform:matrix(1,0,0,1,471.734375,61.95);"><path d="M35 623L177 623L295 624L295 0L384 0L384 624L501 623L643 623L643 689L35 689ZM627 221C627 85 732 -11 846 -11C960 -11 1066 84 1066 220C1066 345 974 461 846 461C728 461 627 357 627 221ZM705 231C705 352 782 399 846 399C910 399 987 353 987 231C987 106 913 53 846 53C780 53 705 105 705 231ZM1180 0L1250 0L1250 142L1330 224L1486 0L1568 0L1378 273L1546 445L1456 445L1252 236L1252 722L1180 722ZM1592 226C1592 102 1679 -11 1810 -11C1873 -11 1925 11 1968 40L1962 106C1918 74 1873 51 1810 51C1734 51 1666 117 1662 220L1972 220L1972 249C1963 420 1865 461 1794 461C1688 461 1592 360 1592 226ZM1667 275C1678 324 1718 399 1794 399C1823 399 1898 386 1915 275ZM2082 0L2160 0L2160 240C2160 314 2185 394 2262 394C2360 394 2360 319 2360 281L2360 0L2438 0L2438 288C2438 358 2429 455 2301 455C2213 455 2169 398 2155 380L2155 450L2082 450ZM2952 0L3030 0L3030 624C3039 580 3063 517 3102 411L3252 22L3324 22L3478 423L3538 587L3548 624L3549 592L3549 0L3627 0L3627 694L3512 694L3358 292C3309 164 3293 114 3290 92L3289 92C3285 115 3261 182 3220 293L3066 694L2952 694ZM3771 113C3771 67 3801 -11 3885 -11C3995 -11 4050 34 4051 35L4051 0L4127 0L4127 305C4122 389 4056 461 3961 461C3898 461 3852 445 3804 417L3810 350C3843 373 3885 401 3960 401C3973 401 3999 400 4023 371C4048 341 4048 307 4049 279L4049 245C3946 244 3771 219 3771 113ZM3844 114C3844 177 3977 192 4049 193L4049 130C4049 65 3980 51 3937 51C3883 51 3844 78 3844 114ZM4288 -195L4366 -195L4366 46C4399 15 4442 -11 4501 -11C4598 -11 4687 83 4687 224C4687 343 4624 455 4529 455C4495 455 4427 448 4363 396L4363 445L4288 445ZM4366 126L4366 334C4372 341 4406 391 4472 391C4554 391 4608 310 4608 222C4608 116 4533 50 4463 50C4404 50 4366 102 4366 126Z" stroke="rgb(0, 0, 0)" stroke-width="8" fill="rgb(0, 0, 0)" style="transform:matrix(0.02595,0,0,-0.02595,0,0);"></path></g></g></g></svg>
+</svg>
diff --git a/src/doc/4.0-rc1/_sources/architecture/dynamo.rst.txt b/src/doc/4.0-rc1/_sources/architecture/dynamo.rst.txt
new file mode 100644
index 0000000..5b17d9a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/architecture/dynamo.rst.txt
@@ -0,0 +1,537 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Dynamo
+======
+
+Apache Cassandra relies on a number of techniques from Amazon's `Dynamo
+<http://courses.cse.tamu.edu/caverlee/csce438/readings/dynamo-paper.pdf>`_
+distributed storage key-value system. Each node in the Dynamo system has three
+main components:
+
+- Request coordination over a partitioned dataset
+- Ring membership and failure detection
+- A local persistence (storage) engine
+
+Cassandra primarily draws from the first two clustering components,
+while using a storage engine based on a Log Structured Merge Tree
+(`LSM <http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.44.2782&rep=rep1&type=pdf>`_).
+In particular, Cassandra relies on Dynamo style:
+
+- Dataset partitioning using consistent hashing
+- Multi-master replication using versioned data and tunable consistency
+- Distributed cluster membership and failure detection via a gossip protocol
+- Incremental scale-out on commodity hardware
+
+Cassandra was designed this way to meet large-scale (PiB+) business-critical
+storage requirements. In particular, as applications demanded full global
+replication of petabyte scale datasets along with always available low-latency
+reads and writes, it became imperative to design a new kind of database model
+as the relational database systems of the time struggled to meet the new
+requirements of global scale applications.
+
+Dataset Partitioning: Consistent Hashing
+----------------------------------------
+
+Cassandra achieves horizontal scalability by
+`partitioning <https://en.wikipedia.org/wiki/Partition_(database)>`_
+all data stored in the system using a hash function. Each partition is replicated
+to multiple physical nodes, often across failure domains such as racks and even
+datacenters. As every replica can independently accept mutations to every key
+that it owns, every key must be versioned. Unlike in the original Dynamo paper
+where deterministic versions and vector clocks were used to reconcile concurrent
+updates to a key, Cassandra uses a simpler last write wins model where every
+mutation is timestamped (including deletes) and then the latest version of data
+is the "winning" value. Formally speaking, Cassandra uses a Last-Write-Wins Element-Set
+conflict-free replicated data type for each CQL row (a.k.a `LWW-Element-Set CRDT
+<https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type#LWW-Element-Set_(Last-Write-Wins-Element-Set)>`_)
+to resolve conflicting mutations on replica sets.
+
+ .. _consistent-hashing-token-ring:
+
+Consistent Hashing using a Token Ring
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Cassandra partitions data over storage nodes using a special form of hashing
+called `consistent hashing <https://en.wikipedia.org/wiki/Consistent_hashing>`_.
+In naive data hashing, you typically allocate keys to buckets by taking a hash
+of the key modulo the number of buckets. For example, if you want to distribute
+data to 100 nodes using naive hashing you might assign every node to a bucket
+between 0 and 100, hash the input key modulo 100, and store the data on the
+associated bucket. In this naive scheme, however, adding a single node might
+invalidate almost all of the mappings.
+
+Cassandra instead maps every node to one or more tokens on a continuous hash
+ring, and defines ownership by hashing a key onto the ring and then "walking"
+the ring in one direction, similar to the `Chord
+<https://pdos.csail.mit.edu/papers/chord:sigcomm01/chord_sigcomm.pdf>`_
+algorithm. The main difference of consistent hashing to naive data hashing is
+that when the number of nodes (buckets) to hash into changes, consistent
+hashing only has to move a small fraction of the keys.
+
+For example, if we have an eight node cluster with evenly spaced tokens, and
+a replication factor (RF) of 3, then to find the owning nodes for a key we
+first hash that key to generate a token (which is just the hash of the key),
+and then we "walk" the ring in a clockwise fashion until we encounter three
+distinct nodes, at which point we have found all the replicas of that key.
+This example of an eight node cluster with `RF=3` can be visualized as follows:
+
+.. figure:: images/ring.svg
+   :scale: 75 %
+   :alt: Dynamo Ring
+
+You can see that in a Dynamo like system, ranges of keys, also known as **token
+ranges**, map to the same physical set of nodes. In this example, all keys that
+fall in the token range excluding token 1 and including token 2 (`range(t1, t2]`)
+are stored on nodes 2, 3 and 4.
+
+Multiple Tokens per Physical Node (a.k.a. `vnodes`)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Simple single token consistent hashing works well if you have many physical
+nodes to spread data over, but with evenly spaced tokens and a small number of
+physical nodes, incremental scaling (adding just a few nodes of capacity) is
+difficult because there are no token selections for new nodes that can leave
+the ring balanced. Cassandra seeks to avoid token imbalance because uneven
+token ranges lead to uneven request load. For example, in the previous example
+there is no way to add a ninth token without causing imbalance; instead we
+would have to insert ``8`` tokens in the midpoints of the existing ranges.
+
+The Dynamo paper advocates for the use of "virtual nodes" to solve this
+imbalance problem. Virtual nodes solve the problem by assigning multiple
+tokens in the token ring to each physical node. By allowing a single physical
+node to take multiple positions in the ring, we can make small clusters look
+larger and therefore even with a single physical node addition we can make it
+look like we added many more nodes, effectively taking many smaller pieces of
+data from more ring neighbors when we add even a single node.
+
+Cassandra introduces some nomenclature to handle these concepts:
+
+- **Token**: A single position on the `dynamo` style hash ring.
+- **Endpoint**: A single physical IP and port on the network.
+- **Host ID**: A unique identifier for a single "physical" node, usually
+  present at one `Endpoint` and containing one or more `Tokens`.
+- **Virtual Node** (or **vnode**): A `Token` on the hash ring owned by the same
+  physical node, one with the same `Host ID`.
+
+The mapping of **Tokens** to **Endpoints** gives rise to the **Token Map**
+where Cassandra keeps track of what ring positions map to which physical
+endpoints.  For example, in the following figure we can represent an eight node
+cluster using only four physical nodes by assigning two tokens to every node:
+
+.. figure:: images/vnodes.svg
+   :scale: 75 %
+   :alt: Virtual Tokens Ring
+
+
+Multiple tokens per physical node provide the following benefits:
+
+1. When a new node is added it accepts approximately equal amounts of data from
+   other nodes in the ring, resulting in equal distribution of data across the
+   cluster.
+2. When a node is decommissioned, it loses data roughly equally to other members
+   of the ring, again keeping equal distribution of data across the cluster.
+3. If a node becomes unavailable, query load (especially token aware query load),
+   is evenly distributed across many other nodes.
+
+Multiple tokens, however, can also have disadvantages:
+
+1. Every token introduces up to ``2 * (RF - 1)`` additional neighbors on the
+   token ring, which means that there are more combinations of node failures
+   where we lose availability for a portion of the token ring. The more tokens
+   you have, `the higher the probability of an outage
+   <https://jolynch.github.io/pdf/cassandra-availability-virtual.pdf>`_.
+2. Cluster-wide maintenance operations are often slowed. For example, as the
+   number of tokens per node is increased, the number of discrete repair
+   operations the cluster must do also increases.
+3. Performance of operations that span token ranges could be affected.
+
+Note that in Cassandra ``2.x``, the only token allocation algorithm available
+was picking random tokens, which meant that to keep balance the default number
+of tokens per node had to be quite high, at ``256``. This had the effect of
+coupling many physical endpoints together, increasing the risk of
+unavailability. That is why in ``3.x +`` the new deterministic token allocator
+was added which intelligently picks tokens such that the ring is optimally
+balanced while requiring a much lower number of tokens per physical node.
+
+
+Multi-master Replication: Versioned Data and Tunable Consistency
+----------------------------------------------------------------
+
+Cassandra replicates every partition of data to many nodes across the cluster
+to maintain high availability and durability. When a mutation occurs, the
+coordinator hashes the partition key to determine the token range the data
+belongs to and then replicates the mutation to the replicas of that data
+according to the :ref:`Replication Strategy <replication-strategy>`.
+
+All replication strategies have the notion of a **replication factor** (``RF``),
+which indicates to Cassandra how many copies of the partition should exist.
+For example with a ``RF=3`` keyspace, the data will be written to three
+distinct **replicas**. Replicas are always chosen such that they are distinct
+physical nodes which is achieved by skipping virtual nodes if needed.
+Replication strategies may also choose to skip nodes present in the same failure
+domain such as racks or datacenters so that Cassandra clusters can tolerate
+failures of whole racks and even datacenters of nodes.
+
+.. _replication-strategy:
+
+Replication Strategy
+^^^^^^^^^^^^^^^^^^^^
+
+Cassandra supports pluggable **replication strategies**, which determine which
+physical nodes act as replicas for a given token range. Every keyspace of
+data has its own replication strategy. All production deployments should use
+the :ref:`network-topology-strategy` while the :ref:`simple-strategy` replication
+strategy is useful only for testing clusters where you do not yet know the
+datacenter layout of the cluster.
+
+.. _network-topology-strategy:
+
+``NetworkTopologyStrategy``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+``NetworkTopologyStrategy`` allows a replication factor to be specified for each
+datacenter in the cluster. Even if your cluster only uses a single datacenter,
+``NetworkTopologyStrategy`` should be preferred over ``SimpleStrategy`` to make it
+easier to add new physical or virtual datacenters to the cluster later.
+
+In addition to allowing the replication factor to be specified individually by
+datacenter, ``NetworkTopologyStrategy`` also attempts to choose replicas within a
+datacenter from different racks as specified by the :ref:`Snitch <snitch>`. If
+the number of racks is greater than or equal to the replication factor for the
+datacenter, each replica is guaranteed to be chosen from a different rack.
+Otherwise, each rack will hold at least one replica, but some racks may hold
+more than one. Note that this rack-aware behavior has some potentially
+`surprising implications
+<https://issues.apache.org/jira/browse/CASSANDRA-3810>`_.  For example, if
+there are not an even number of nodes in each rack, the data load on the
+smallest rack may be much higher.  Similarly, if a single node is bootstrapped
+into a brand new rack, it will be considered a replica for the entire ring.
+For this reason, many operators choose to configure all nodes in a single
+availability zone or similar failure domain as a single "rack".
+
+.. _simple-strategy:
+
+``SimpleStrategy``
+~~~~~~~~~~~~~~~~~~
+
+``SimpleStrategy`` allows a single integer ``replication_factor`` to be defined. This determines the number of nodes that
+should contain a copy of each row.  For example, if ``replication_factor`` is 3, then three different nodes should store
+a copy of each row.
+
+``SimpleStrategy`` treats all nodes identically, ignoring any configured datacenters or racks.  To determine the replicas
+for a token range, Cassandra iterates through the tokens in the ring, starting with the token range of interest.  For
+each token, it checks whether the owning node has been added to the set of replicas, and if it has not, it is added to
+the set.  This process continues until ``replication_factor`` distinct nodes have been added to the set of replicas.
+
+.. _transient-replication:
+
+Transient Replication
+~~~~~~~~~~~~~~~~~~~~~
+
+Transient replication is an experimental feature in Cassandra 4.0 not present
+in the original Dynamo paper. It allows you to configure a subset of replicas
+to only replicate data that hasn't been incrementally repaired. This allows you
+to decouple data redundancy from availability. For instance, if you have a
+keyspace replicated at rf 3, and alter it to rf 5 with 2 transient replicas,
+you go from being able to tolerate one failed replica to being able to tolerate
+two, without corresponding increase in storage usage. This is because 3 nodes
+will replicate all the data for a given token range, and the other 2 will only
+replicate data that hasn't been incrementally repaired.
+
+To use transient replication, you first need to enable it in
+``cassandra.yaml``. Once enabled, both ``SimpleStrategy`` and
+``NetworkTopologyStrategy`` can be configured to transiently replicate data.
+You configure it by specifying replication factor as
+``<total_replicas>/<transient_replicas`` Both ``SimpleStrategy`` and
+``NetworkTopologyStrategy`` support configuring transient replication.
+
+Transiently replicated keyspaces only support tables created with read_repair
+set to ``NONE`` and monotonic reads are not currently supported.  You also
+can't use ``LWT``, logged batches, or counters in 4.0. You will possibly never be
+able to use materialized views with transiently replicated keyspaces and
+probably never be able to use secondary indices with them.
+
+Transient replication is an experimental feature that may not be ready for
+production use. The expected audience is experienced users of Cassandra
+capable of fully validating a deployment of their particular application. That
+means being able check that operations like reads, writes, decommission,
+remove, rebuild, repair, and replace all work with your queries, data,
+configuration, operational practices, and availability requirements.
+
+It is anticipated that ``4.next`` will support monotonic reads with transient
+replication as well as LWT, logged batches, and counters.
+
+Data Versioning
+^^^^^^^^^^^^^^^
+
+Cassandra uses mutation timestamp versioning to guarantee eventual consistency of
+data. Specifically all mutations that enter the system do so with a timestamp
+provided either from a client clock or, absent a client provided timestamp,
+from the coordinator node's clock. Updates resolve according to the conflict
+resolution rule of last write wins. Cassandra's correctness does depend on
+these clocks, so make sure a proper time synchronization process is running
+such as NTP.
+
+Cassandra applies separate mutation timestamps to every column of every row
+within a CQL partition. Rows are guaranteed to be unique by primary key, and
+each column in a row resolve concurrent mutations according to last-write-wins
+conflict resolution. This means that updates to different primary keys within a
+partition can actually resolve without conflict! Furthermore the CQL collection
+types such as maps and sets use this same conflict free mechanism, meaning
+that concurrent updates to maps and sets are guaranteed to resolve as well.
+
+Replica Synchronization
+~~~~~~~~~~~~~~~~~~~~~~~
+
+As replicas in Cassandra can accept mutations independently, it is possible
+for some replicas to have newer data than others. Cassandra has many best-effort
+techniques to drive convergence of replicas including
+`Replica read repair <read-repair>` in the read path and
+`Hinted handoff <hints>` in the write path.
+
+These techniques are only best-effort, however, and to guarantee eventual
+consistency Cassandra implements `anti-entropy repair <repair>` where replicas
+calculate hierarchical hash-trees over their datasets called `Merkle Trees
+<https://en.wikipedia.org/wiki/Merkle_tree>`_ that can then be compared across
+replicas to identify mismatched data. Like the original Dynamo paper Cassandra
+supports "full" repairs where replicas hash their entire dataset, create Merkle
+trees, send them to each other and sync any ranges that don't match.
+
+Unlike the original Dynamo paper, Cassandra also implements sub-range repair
+and incremental repair. Sub-range repair allows Cassandra to increase the
+resolution of the hash trees (potentially down to the single partition level)
+by creating a larger number of trees that span only a portion of the data
+range.  Incremental repair allows Cassandra to only repair the partitions that
+have changed since the last repair.
+
+Tunable Consistency
+^^^^^^^^^^^^^^^^^^^
+
+Cassandra supports a per-operation tradeoff between consistency and
+availability through **Consistency Levels**. Cassandra's consistency levels
+are a version of Dynamo's ``R + W > N`` consistency mechanism where operators
+could configure the number of nodes that must participate in reads (``R``)
+and writes (``W``) to be larger than the replication factor (``N``). In
+Cassandra, you instead choose from a menu of common consistency levels which
+allow the operator to pick ``R`` and ``W`` behavior without knowing the
+replication factor. Generally writes will be visible to subsequent reads when
+the read consistency level contains enough nodes to guarantee a quorum intersection
+with the write consistency level.
+
+The following consistency levels are available:
+
+``ONE``
+  Only a single replica must respond.
+
+``TWO``
+  Two replicas must respond.
+
+``THREE``
+  Three replicas must respond.
+
+``QUORUM``
+  A majority (n/2 + 1) of the replicas must respond.
+
+``ALL``
+  All of the replicas must respond.
+
+``LOCAL_QUORUM``
+  A majority of the replicas in the local datacenter (whichever datacenter the coordinator is in) must respond.
+
+``EACH_QUORUM``
+  A majority of the replicas in each datacenter must respond.
+
+``LOCAL_ONE``
+  Only a single replica must respond.  In a multi-datacenter cluster, this also gaurantees that read requests are not
+  sent to replicas in a remote datacenter.
+
+``ANY``
+  A single replica may respond, or the coordinator may store a hint. If a hint is stored, the coordinator will later
+  attempt to replay the hint and deliver the mutation to the replicas.  This consistency level is only accepted for
+  write operations.
+
+Write operations **are always sent to all replicas**, regardless of consistency
+level. The consistency level simply controls how many responses the coordinator
+waits for before responding to the client.
+
+For read operations, the coordinator generally only issues read commands to
+enough replicas to satisfy the consistency level. The one exception to this is
+when speculative retry may issue a redundant read request to an extra replica
+if the original replicas have not responded within a specified time window.
+
+Picking Consistency Levels
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+It is common to pick read and write consistency levels such that the replica
+sets overlap, resulting in all acknowledged writes being visible to subsequent
+reads. This is typically expressed in the same terms Dynamo does, in that ``W +
+R > RF``, where ``W`` is the write consistency level, ``R`` is the read
+consistency level, and ``RF`` is the replication factor.  For example, if ``RF
+= 3``, a ``QUORUM`` request will require responses from at least ``2/3``
+replicas.  If ``QUORUM`` is used for both writes and reads, at least one of the
+replicas is guaranteed to participate in *both* the write and the read request,
+which in turn guarantees that the quorums will overlap and the write will be
+visible to the read.
+
+In a multi-datacenter environment, ``LOCAL_QUORUM`` can be used to provide a
+weaker but still useful guarantee: reads are guaranteed to see the latest write
+from within the same datacenter. This is often sufficient as clients homed to
+a single datacenter will read their own writes.
+
+If this type of strong consistency isn't required, lower consistency levels
+like ``LOCAL_ONE`` or ``ONE`` may be used to improve throughput, latency, and
+availability. With replication spanning multiple datacenters, ``LOCAL_ONE`` is
+typically less available than ``ONE`` but is faster as a rule. Indeed ``ONE``
+will succeed if a single replica is available in any datacenter.
+
+Distributed Cluster Membership and Failure Detection
+----------------------------------------------------
+
+The replication protocols and dataset partitioning rely on knowing which nodes
+are alive and dead in the cluster so that write and read operations can be
+optimally routed. In Cassandra liveness information is shared in a distributed
+fashion through a failure detection mechanism based on a gossip protocol.
+
+.. _gossip:
+
+Gossip
+^^^^^^
+
+Gossip is how Cassandra propagates basic cluster bootstrapping information such
+as endpoint membership and internode network protocol versions. In Cassandra's
+gossip system, nodes exchange state information not only about themselves but
+also about other nodes they know about. This information is versioned with a
+vector clock of ``(generation, version)`` tuples, where the generation is a
+monotonic timestamp and version is a logical clock the increments roughly every
+second. These logical clocks allow Cassandra gossip to ignore old versions of
+cluster state just by inspecting the logical clocks presented with gossip
+messages.
+
+Every node in the Cassandra cluster runs the gossip task independently and
+periodically. Every second, every node in the cluster:
+
+1. Updates the local node's heartbeat state (the version) and constructs the
+   node's local view of the cluster gossip endpoint state.
+2. Picks a random other node in the cluster to exchange gossip endpoint state
+   with.
+3. Probabilistically attempts to gossip with any unreachable nodes (if one exists)
+4. Gossips with a seed node if that didn't happen in step 2.
+
+When an operator first bootstraps a Cassandra cluster they designate certain
+nodes as "seed" nodes. Any node can be a seed node and the only difference
+between seed and non-seed nodes is seed nodes are allowed to bootstrap into the
+ring without seeing any other seed nodes. Furthermore, once a cluster is
+bootstrapped, seed nodes become "hotspots" for gossip due to step 4 above.
+
+As non-seed nodes must be able to contact at least one seed node in order to
+bootstrap into the cluster, it is common to include multiple seed nodes, often
+one for each rack or datacenter. Seed nodes are often chosen using existing
+off-the-shelf service discovery mechanisms.
+
+.. note::
+   Nodes do not have to agree on the seed nodes, and indeed once a cluster is
+   bootstrapped, newly launched nodes can be configured to use any existing
+   nodes as "seeds". The only advantage to picking the same nodes as seeds
+   is it increases their usefullness as gossip hotspots.
+
+Currently, gossip also propagates token metadata and schema *version*
+information. This information forms the control plane for scheduling data
+movements and schema pulls. For example, if a node sees a mismatch in schema
+version in gossip state, it will schedule a schema sync task with the other
+nodes. As token information propagates via gossip it is also the control plane
+for teaching nodes which endpoints own what data.
+
+Ring Membership and Failure Detection
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Gossip forms the basis of ring membership, but the **failure detector**
+ultimately makes decisions about if nodes are ``UP`` or ``DOWN``. Every node in
+Cassandra runs a variant of the `Phi Accrual Failure Detector
+<https://www.computer.org/csdl/proceedings-article/srds/2004/22390066/12OmNvT2phv>`_,
+in which every node is constantly making an independent decision of if their
+peer nodes are available or not. This decision is primarily based on received
+heartbeat state. For example, if a node does not see an increasing heartbeat
+from a node for a certain amount of time, the failure detector "convicts" that
+node, at which point Cassandra will stop routing reads to it (writes will
+typically be written to hints). If/when the node starts heartbeating again,
+Cassandra will try to reach out and connect, and if it can open communication
+channels it will mark that node as available.
+
+.. note::
+   UP and DOWN state are local node decisions and are not propagated with
+   gossip. Heartbeat state is propagated with gossip, but nodes will not
+   consider each other as "UP" until they can successfully message each other
+   over an actual network channel.
+
+Cassandra will never remove a node from gossip state without explicit
+instruction from an operator via a decommission operation or a new node
+bootstrapping with a ``replace_address_first_boot`` option. This choice is
+intentional to allow Cassandra nodes to temporarily fail without causing data
+to needlessly re-balance. This also helps to prevent simultaneous range
+movements, where multiple replicas of a token range are moving at the same
+time, which can violate monotonic consistency and can even cause data loss.
+
+Incremental Scale-out on Commodity Hardware
+--------------------------------------------
+
+Cassandra scales-out to meet the requirements of growth in data size and
+request rates. Scaling-out means adding additional nodes to the ring, and
+every additional node brings linear improvements in compute and storage. In
+contrast, scaling-up implies adding more capacity to the existing database
+nodes. Cassandra is also capable of scale-up, and in certain environments it
+may be preferable depending on the deployment. Cassandra gives operators the
+flexibility to chose either scale-out or scale-up.
+
+One key aspect of Dynamo that Cassandra follows is to attempt to run on
+commodity hardware, and many engineering choices are made under this
+assumption. For example, Cassandra assumes nodes can fail at any time,
+auto-tunes to make the best use of CPU and memory resources available and makes
+heavy use of advanced compression and caching techniques to get the most
+storage out of limited memory and storage capabilities.
+
+Simple Query Model
+^^^^^^^^^^^^^^^^^^
+
+Cassandra, like Dynamo, chooses not to provide cross-partition transactions
+that are common in SQL Relational Database Management Systems (RDBMS). This
+both gives the programmer a simpler read and write API, and allows Cassandra to
+more easily scale horizontally since multi-partition transactions spanning
+multiple nodes are notoriously difficult to implement and typically very
+latent.
+
+Instead, Cassanda chooses to offer fast, consistent, latency at any scale for
+single partition operations, allowing retrieval of entire partitions or only
+subsets of partitions based on primary key filters. Furthermore, Cassandra does
+support single partition compare and swap functionality via the lightweight
+transaction CQL API.
+
+Simple Interface for Storing Records
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Cassandra, in a slight departure from Dynamo, chooses a storage interface that
+is more sophisticated then "simple key value" stores but significantly less
+complex than SQL relational data models.  Cassandra presents a wide-column
+store interface, where partitions of data contain multiple rows, each of which
+contains a flexible set of individually typed columns. Every row is uniquely
+identified by the partition key and one or more clustering keys, and every row
+can have as many columns as needed.
+
+This allows users to flexibly add new columns to existing datasets as new
+requirements surface. Schema changes involve only metadata changes and run
+fully concurrently with live workloads. Therefore, users can safely add columns
+to existing Cassandra databases while remaining confident that query
+performance will not degrade.
diff --git a/src/doc/4.0-rc1/_sources/architecture/guarantees.rst.txt b/src/doc/4.0-rc1/_sources/architecture/guarantees.rst.txt
new file mode 100644
index 0000000..3cff808
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/architecture/guarantees.rst.txt
@@ -0,0 +1,76 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. _guarantees:
+
+Guarantees
+==============
+Apache Cassandra is a highly scalable and reliable database.  Cassandra is used in web based applications that serve large number of clients and the quantity of data processed is web-scale  (Petabyte) large.  Cassandra   makes some guarantees about its scalability, availability and reliability. To fully understand the inherent limitations of a storage system in an environment in which a certain level of network partition failure is to be expected and taken into account when designing the system it is important to first briefly  introduce the CAP theorem.
+
+What is CAP?
+^^^^^^^^^^^^^
+According to the CAP theorem it is not possible for a distributed data store to provide more than two of the following guarantees simultaneously.
+
+- Consistency: Consistency implies that every read receives the most recent write or errors out
+- Availability: Availability implies that every request receives a response. It is not guaranteed that the response contains the most recent write or data.
+- Partition tolerance: Partition tolerance refers to the tolerance of a storage system to failure of a network partition.  Even if some of the messages are dropped or delayed the system continues to operate.
+
+CAP theorem implies that when using a network partition, with the inherent risk of partition failure, one has to choose between consistency and availability and both cannot be guaranteed at the same time. CAP theorem is illustrated in Figure 1.
+
+.. figure:: Figure_1_guarantees.jpg
+
+Figure 1. CAP Theorem
+
+High availability is a priority in web based applications and to this objective Cassandra chooses Availability and Partition Tolerance from the CAP guarantees, compromising on data Consistency to some extent.
+
+Cassandra makes the following guarantees.
+
+- High Scalability
+- High Availability
+- Durability
+- Eventual Consistency of writes to a single table
+- Lightweight transactions with linearizable consistency
+- Batched writes across multiple tables are guaranteed to succeed completely or not at all
+- Secondary indexes are guaranteed to be consistent with their local replicas data
+
+High Scalability
+^^^^^^^^^^^^^^^^^
+Cassandra is a highly scalable storage system in which nodes may be added/removed as needed. Using gossip-based protocol a unified and consistent membership  list is kept at each node.
+
+High Availability
+^^^^^^^^^^^^^^^^^^^
+Cassandra guarantees high availability of data by  implementing a fault-tolerant storage system. Failure detection in a node is detected using a gossip-based protocol.
+
+Durability
+^^^^^^^^^^^^
+Cassandra guarantees data durability by using replicas. Replicas are multiple copies of a data stored on different nodes in a cluster. In a multi-datacenter environment the replicas may be stored on different datacenters. If one replica is lost due to unrecoverable  node/datacenter failure the data is not completely lost as replicas are still available.
+
+Eventual Consistency
+^^^^^^^^^^^^^^^^^^^^^^
+Meeting the requirements of performance, reliability, scalability and high availability in production Cassandra is an eventually consistent storage system. Eventually consistent implies that all updates reach all replicas eventually. Divergent versions of the same data may exist temporarily but they are eventually reconciled to a consistent state. Eventual consistency is a tradeoff to achieve high availability and it involves some read and write latencies.
+
+Lightweight transactions with linearizable consistency
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Data must be read and written in a sequential order. Paxos consensus protocol is used to implement lightweight transactions. Paxos protocol implements lightweight transactions that are able to handle concurrent operations using linearizable consistency. Linearizable consistency is sequential consistency with real-time constraints and it ensures transaction isolation with compare and set (CAS) transaction. With CAS replica data is compared and data that is found to be out of date is set to the most consistent value. Reads with linearizable consistency allow reading the current state of the data, which may possibly be uncommitted, without making a new addition or update.
+
+Batched Writes
+^^^^^^^^^^^^^^^
+
+The guarantee for batched writes across multiple tables is that they will eventually succeed, or none will.  Batch data is first written to batchlog system data, and when the batch data has been successfully stored in the cluster the batchlog data is removed.  The batch is replicated to another node to ensure the full batch completes in the event the coordinator node fails.
+
+Secondary Indexes
+^^^^^^^^^^^^^^^^^^
+A secondary index is an index on a column and is used to query a table that is normally not queryable. Secondary indexes when built are guaranteed to be consistent with their local replicas.
diff --git a/src/doc/4.0-rc1/_sources/architecture/index.rst.txt b/src/doc/4.0-rc1/_sources/architecture/index.rst.txt
new file mode 100644
index 0000000..58eda13
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/architecture/index.rst.txt
@@ -0,0 +1,29 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Architecture
+============
+
+This section describes the general architecture of Apache Cassandra.
+
+.. toctree::
+   :maxdepth: 2
+
+   overview
+   dynamo
+   storage_engine
+   guarantees
+
diff --git a/src/doc/4.0-rc1/_sources/architecture/overview.rst.txt b/src/doc/4.0-rc1/_sources/architecture/overview.rst.txt
new file mode 100644
index 0000000..e5fcbe3
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/architecture/overview.rst.txt
@@ -0,0 +1,114 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. _overview:
+
+Overview
+========
+
+Apache Cassandra is an open source, distributed, NoSQL database. It presents
+a partitioned wide column storage model with eventually consistent semantics.
+
+Apache Cassandra was initially designed at `Facebook
+<https://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf>`_
+using a staged event-driven architecture (`SEDA
+<http://www.sosp.org/2001/papers/welsh.pdf>`_) to implement a combination of
+Amazon’s `Dynamo
+<http://courses.cse.tamu.edu/caverlee/csce438/readings/dynamo-paper.pdf>`_
+distributed storage and replication techniques combined with Google's `Bigtable
+<https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf>`_
+data and storage engine model. Dynamo and Bigtable were both developed to meet
+emerging requirements for scalable, reliable and highly available storage
+systems, but each had areas that could be improved.
+
+Cassandra was designed as a best in class combination of both systems to meet
+emerging large scale, both in data footprint and query volume, storage
+requirements. As applications began to require full global replication and
+always available low-latency reads and writes, it became imperative to design a
+new kind of database model as the relational database systems of the time
+struggled to meet the new requirements of global scale applications.
+
+Systems like Cassandra are designed for these challenges and seek the
+following design objectives:
+
+- Full multi-master database replication
+- Global availability at low latency
+- Scaling out on commodity hardware
+- Linear throughput increase with each additional processor
+- Online load balancing and cluster growth
+- Partitioned key-oriented queries
+- Flexible schema
+
+Features
+--------
+
+Cassandra provides the Cassandra Query Language (CQL), an SQL-like language,
+to create and update database schema and access data. CQL allows users to
+organize data within a cluster of Cassandra nodes using:
+
+- **Keyspace**: defines how a dataset is replicated, for example in which
+  datacenters and how many copies. Keyspaces contain tables.
+- **Table**: defines the typed schema for a collection of partitions. Cassandra
+  tables have flexible addition of new columns to tables with zero downtime.
+  Tables contain partitions, which contain partitions, which contain columns.
+- **Partition**: defines the mandatory part of the primary key all rows in
+  Cassandra must have. All performant queries supply the partition key in
+  the query.
+- **Row**: contains a collection of columns identified by a unique primary key
+  made up of the partition key and optionally additional clustering keys.
+- **Column**: A single datum with a type which belong to a row.
+
+CQL supports numerous advanced features over a partitioned dataset such as:
+
+- Single partition lightweight transactions with atomic compare and set
+  semantics.
+- User-defined types, functions and aggregates
+- Collection types including sets, maps, and lists.
+- Local secondary indices
+- (Experimental) materialized views
+
+Cassandra explicitly chooses not to implement operations that require cross
+partition coordination as they are typically slow and hard to provide highly
+available global semantics. For example Cassandra does not support:
+
+- Cross partition transactions
+- Distributed joins
+- Foreign keys or referential integrity.
+
+Operating
+---------
+
+Apache Cassandra configuration settings are configured in the ``cassandra.yaml``
+file that can be edited by hand or with the aid of configuration management tools.
+Some settings can be manipulated live using an online interface, but others
+require a restart of the database to take effect.
+
+Cassandra provides tools for managing a cluster. The ``nodetool`` command
+interacts with Cassandra's live control interface, allowing runtime manipulation
+of many settings from ``cassandra.yaml``. The ``auditlogviewer`` is used
+to view the audit logs. The  ``fqltool`` is used to view, replay and compare
+full query logs.  The ``auditlogviewer`` and ``fqltool`` are new tools in
+Apache Cassandra 4.0.
+
+In addition, Cassandra supports out of the box atomic snapshot functionality,
+which presents a point in time snapshot of Cassandra's data for easy
+integration with many backup tools. Cassandra also supports incremental backups
+where data can be backed up as it is written.
+
+Apache Cassandra 4.0 has added several new features including virtual tables.
+transient replication, audit logging, full query logging, and support for Java
+11. Two of these features are experimental: transient replication and Java 11
+support.
diff --git a/src/doc/4.0-rc1/_sources/architecture/storage_engine.rst.txt b/src/doc/4.0-rc1/_sources/architecture/storage_engine.rst.txt
new file mode 100644
index 0000000..5e8a335
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/architecture/storage_engine.rst.txt
@@ -0,0 +1,208 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Storage Engine
+--------------
+
+.. _commit-log:
+
+CommitLog
+^^^^^^^^^
+
+Commitlogs are an append only log of all mutations local to a Cassandra node. Any data written to Cassandra will first be written to a commit log before being written to a memtable. This provides durability in the case of unexpected shutdown. On startup, any mutations in the commit log will be applied to memtables.
+
+All mutations write optimized by storing in commitlog segments, reducing the number of seeks needed to write to disk. Commitlog Segments are limited by the "commitlog_segment_size_in_mb" option, once the size is reached, a new commitlog segment is created. Commitlog segments can be archived, deleted, or recycled once all its data has been flushed to SSTables.  Commitlog segments are truncated when Cassandra has written data older than a certain point to the SSTables. Running "nodetool drain" before stopping Cassandra will write everything in the memtables to SSTables and remove the need to sync with the commitlogs on startup.
+
+- ``commitlog_segment_size_in_mb``: The default size is 32, which is almost always fine, but if you are archiving commitlog segments (see commitlog_archiving.properties), then you probably want a finer granularity of archiving; 8 or 16 MB is reasonable. Max mutation size is also configurable via max_mutation_size_in_kb setting in cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024.
+
+***NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must be set to at least twice the size of max_mutation_size_in_kb / 1024***
+
+*Default Value:* 32
+
+Commitlogs are an append only log of all mutations local to a Cassandra node. Any data written to Cassandra will first be written to a commit log before being written to a memtable. This provides durability in the case of unexpected shutdown. On startup, any mutations in the commit log will be applied.
+
+- ``commitlog_sync``: may be either “periodic” or “batch.”
+
+  - ``batch``: In batch mode, Cassandra won’t ack writes until the commit log has been fsynced to disk. It will wait "commitlog_sync_batch_window_in_ms" milliseconds between fsyncs. This window should be kept short because the writer threads will be unable to do extra work while waiting. You may need to increase concurrent_writes for the same reason.
+
+    - ``commitlog_sync_batch_window_in_ms``: Time to wait between "batch" fsyncs
+    *Default Value:* 2
+
+  - ``periodic``: In periodic mode, writes are immediately ack'ed, and the CommitLog is simply synced every "commitlog_sync_period_in_ms" milliseconds.
+
+    - ``commitlog_sync_period_in_ms``: Time to wait between "periodic" fsyncs
+    *Default Value:* 10000
+
+*Default Value:* periodic
+
+*** NOTE: In the event of an unexpected shutdown, Cassandra can lose up to the sync period or more if the sync is delayed. If using "batch" mode, it is recommended to store commitlogs in a separate, dedicated device.**
+
+
+- ``commitlog_directory``: This option is commented out by default When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $CASSANDRA_HOME/data/commitlog.
+
+*Default Value:* /var/lib/cassandra/commitlog
+
+- ``commitlog_compression``: Compression to apply to the commitlog. If omitted, the commit log will be written uncompressed. LZ4, Snappy, Deflate and Zstd compressors are supported.
+
+(Default Value: (complex option)::
+
+    #   - class_name: LZ4Compressor
+    #     parameters:
+    #         -
+
+- ``commitlog_total_space_in_mb``: Total space to use for commit logs on disk.
+
+If space gets above this value, Cassandra will flush every dirty CF in the oldest segment and remove it. So a small total commitlog space will tend to cause more flush activity on less-active columnfamilies.
+
+The default value is the smaller of 8192, and 1/4 of the total space of the commitlog volume.
+
+*Default Value:* 8192
+
+.. _memtables:
+
+Memtables
+^^^^^^^^^
+
+Memtables are in-memory structures where Cassandra buffers writes.  In general, there is one active memtable per table.
+Eventually, memtables are flushed onto disk and become immutable `SSTables`_.  This can be triggered in several
+ways:
+
+- The memory usage of the memtables exceeds the configured threshold  (see ``memtable_cleanup_threshold``)
+- The :ref:`commit-log` approaches its maximum size, and forces memtable flushes in order to allow commitlog segments to
+  be freed
+
+Memtables may be stored entirely on-heap or partially off-heap, depending on ``memtable_allocation_type``.
+
+SSTables
+^^^^^^^^
+
+SSTables are the immutable data files that Cassandra uses for persisting data on disk.
+
+As SSTables are flushed to disk from :ref:`memtables` or are streamed from other nodes, Cassandra triggers compactions
+which combine multiple SSTables into one.  Once the new SSTable has been written, the old SSTables can be removed.
+
+Each SSTable is comprised of multiple components stored in separate files:
+
+``Data.db``
+  The actual data, i.e. the contents of rows.
+
+``Index.db``
+  An index from partition keys to positions in the ``Data.db`` file.  For wide partitions, this may also include an
+  index to rows within a partition.
+
+``Summary.db``
+  A sampling of (by default) every 128th entry in the ``Index.db`` file.
+
+``Filter.db``
+  A Bloom Filter of the partition keys in the SSTable.
+
+``CompressionInfo.db``
+  Metadata about the offsets and lengths of compression chunks in the ``Data.db`` file.
+
+``Statistics.db``
+  Stores metadata about the SSTable, including information about timestamps, tombstones, clustering keys, compaction,
+  repair, compression, TTLs, and more.
+
+``Digest.crc32``
+  A CRC-32 digest of the ``Data.db`` file.
+
+``TOC.txt``
+  A plain text list of the component files for the SSTable.
+
+Within the ``Data.db`` file, rows are organized by partition.  These partitions are sorted in token order (i.e. by a
+hash of the partition key when the default partitioner, ``Murmur3Partition``, is used).  Within a partition, rows are
+stored in the order of their clustering keys.
+
+SSTables can be optionally compressed using block-based compression.
+
+SSTable Versions
+^^^^^^^^^^^^^^^^
+
+This section was created using the following
+`gist <https://gist.github.com/shyamsalimkumar/49a61e5bc6f403d20c55>`_
+which utilized this original
+`source <http://www.bajb.net/2013/03/cassandra-sstable-format-version-numbers/>`_.
+
+The version numbers, to date are:
+
+Version 0
+~~~~~~~~~
+
+* b (0.7.0): added version to sstable filenames
+* c (0.7.0): bloom filter component computes hashes over raw key bytes instead of strings
+* d (0.7.0): row size in data component becomes a long instead of int
+* e (0.7.0): stores undecorated keys in data and index components
+* f (0.7.0): switched bloom filter implementations in data component
+* g (0.8): tracks flushed-at context in metadata component
+
+Version 1
+~~~~~~~~~
+
+* h (1.0): tracks max client timestamp in metadata component
+* hb (1.0.3): records compression ration in metadata component
+* hc (1.0.4): records partitioner in metadata component
+* hd (1.0.10): includes row tombstones in maxtimestamp
+* he (1.1.3): includes ancestors generation in metadata component
+* hf (1.1.6): marker that replay position corresponds to 1.1.5+ millis-based id (see CASSANDRA-4782)
+* ia (1.2.0):
+
+  * column indexes are promoted to the index file
+  * records estimated histogram of deletion times in tombstones
+  * bloom filter (keys and columns) upgraded to Murmur3
+* ib (1.2.1): tracks min client timestamp in metadata component
+* ic (1.2.5): omits per-row bloom filter of column names
+
+Version 2
+~~~~~~~~~
+
+* ja (2.0.0):
+
+  * super columns are serialized as composites (note that there is no real format change, this is mostly a marker to know if we should expect super columns or not. We do need a major version bump however, because we should not allow streaming of super columns into this new format)
+  * tracks max local deletiontime in sstable metadata
+  * records bloom_filter_fp_chance in metadata component
+  * remove data size and column count from data file (CASSANDRA-4180)
+  * tracks max/min column values (according to comparator)
+* jb (2.0.1):
+
+  * switch from crc32 to adler32 for compression checksums
+  * checksum the compressed data
+* ka (2.1.0):
+
+  * new Statistics.db file format
+  * index summaries can be downsampled and the sampling level is persisted
+  * switch uncompressed checksums to adler32
+  * tracks presense of legacy (local and remote) counter shards
+* la (2.2.0): new file name format
+* lb (2.2.7): commit log lower bound included
+
+Version 3
+~~~~~~~~~
+
+* ma (3.0.0):
+
+  * swap bf hash order
+  * store rows natively
+* mb (3.0.7, 3.7): commit log lower bound included
+* mc (3.0.8, 3.9): commit log intervals included
+
+Example Code
+~~~~~~~~~~~~
+
+The following example is useful for finding all sstables that do not match the "ib" SSTable version
+
+.. code-block:: bash
+
+    find /var/lib/cassandra/data/ -type f | grep -v -- -ib- | grep -v "/snapshots"
diff --git a/src/doc/4.0-rc1/_sources/bugs.rst.txt b/src/doc/4.0-rc1/_sources/bugs.rst.txt
new file mode 100644
index 0000000..32d676f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/bugs.rst.txt
@@ -0,0 +1,30 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Reporting Bugs
+==============
+
+If you encounter a problem with Cassandra, the first places to ask for help are the :ref:`user mailing list
+<mailing-lists>` and the ``cassandra`` :ref:`Slack room <slack>`.
+
+If, after having asked for help, you suspect that you have found a bug in Cassandra, you should report it by opening a
+ticket through the `Apache Cassandra JIRA <https://issues.apache.org/jira/browse/CASSANDRA>`__. Please provide as much
+details as you can on your problem, and don't forget to indicate which version of Cassandra you are running and on which
+environment.
+
+Further details on how to contribute can be found at our :doc:`development/index` section. Please note that the source of
+this documentation is part of the Cassandra git repository and hence contributions to the documentation should follow the
+same path.
diff --git a/src/doc/4.0-rc1/_sources/configuration/cass_cl_archive_file.rst.txt b/src/doc/4.0-rc1/_sources/configuration/cass_cl_archive_file.rst.txt
new file mode 100644
index 0000000..fc14440
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/configuration/cass_cl_archive_file.rst.txt
@@ -0,0 +1,46 @@
+.. _cassandra-cl-archive:
+
+commitlog-archiving.properties file 
+================================
+
+The ``commitlog-archiving.properties`` configuration file can optionally set commands that are executed when archiving or restoring a commitlog segment. 
+
+===========================
+Options
+===========================
+
+``archive_command=<command>``
+------
+One command can be inserted with %path and %name arguments. %path is the fully qualified path of the commitlog segment to archive. %name is the filename of the commitlog. STDOUT, STDIN, or multiple commands cannot be executed. If multiple commands are required, add a pointer to a script in this option.
+
+**Example:** archive_command=/bin/ln %path /backup/%name
+
+**Default value:** blank
+
+``restore_command=<command>``
+------
+One command can be inserted with %from and %to arguments. %from is the fully qualified path to an archived commitlog segment using the specified restore directories. %to defines the directory to the live commitlog location.
+
+**Example:** restore_command=/bin/cp -f %from %to
+
+**Default value:** blank
+
+``restore_directories=<directory>``
+------
+Defines the directory to scan the recovery files into.
+
+**Default value:** blank
+
+``restore_point_in_time=<timestamp>``
+------
+Restore mutations created up to and including this timestamp in GMT in the format ``yyyy:MM:dd HH:mm:ss``.  Recovery will continue through the segment when the first client-supplied timestamp greater than this time is encountered, but only mutations less than or equal to this timestamp will be applied.
+
+**Example:** 2020:04:31 20:43:12
+
+**Default value:** blank
+
+``precision=<timestamp_precision>``
+------
+Precision of the timestamp used in the inserts. Choice is generally MILLISECONDS or MICROSECONDS
+
+**Default value:** MICROSECONDS
diff --git a/src/doc/4.0-rc1/_sources/configuration/cass_env_sh_file.rst.txt b/src/doc/4.0-rc1/_sources/configuration/cass_env_sh_file.rst.txt
new file mode 100644
index 0000000..eb48a51
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/configuration/cass_env_sh_file.rst.txt
@@ -0,0 +1,128 @@
+.. _cassandra-envsh:
+
+cassandra-env.sh file 
+=====================
+
+The ``cassandra-env.sh`` bash script file can be used to pass additional options to the Java virtual machine (JVM), such as maximum and minimum heap size, rather than setting them in the environment. If the JVM settings are static and do not need to be computed from the node characteristics, the :ref:`cassandra-jvm-options` files should be used instead. For example, commonly computed values are the heap sizes, using the system values.
+
+For example, add ``JVM_OPTS="$JVM_OPTS -Dcassandra.load_ring_state=false"`` to the ``cassandra_env.sh`` file
+and run the command-line ``cassandra`` to start. The option is set from the ``cassandra-env.sh`` file, and is equivalent to starting Cassandra with the command-line option ``cassandra -Dcassandra.load_ring_state=false``.
+
+The ``-D`` option specifies the start-up parameters in both the command line and ``cassandra-env.sh`` file. The following options are available:
+
+``cassandra.auto_bootstrap=false``
+----------------------------------
+Facilitates setting auto_bootstrap to false on initial set-up of the cluster. The next time you start the cluster, you do not need to change the ``cassandra.yaml`` file on each node to revert to true, the default value.
+
+``cassandra.available_processors=<number_of_processors>``
+---------------------------------------------------------
+In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors.
+
+``cassandra.config=<directory>``
+--------------------------------
+The directory location of the ``cassandra.yaml file``. The default location depends on the type of installation.
+
+``cassandra.ignore_dynamic_snitch_severity=true|false`` 
+-------------------------------------------------------
+Setting this property to true causes the dynamic snitch to ignore the severity indicator from gossip when scoring nodes.  Explore failure detection and recovery and dynamic snitching for more information.
+
+**Default:** false
+
+``cassandra.initial_token=<token>``
+-----------------------------------
+Use when virtual nodes (vnodes) are not used. Sets the initial partitioner token for a node the first time the node is started. 
+Note: Vnodes are highly recommended as they automatically select tokens.
+
+**Default:** disabled
+
+``cassandra.join_ring=true|false``
+----------------------------------
+Set to false to start Cassandra on a node but not have the node join the cluster. 
+You can use ``nodetool join`` and a JMX call to join the ring afterwards.
+
+**Default:** true
+
+``cassandra.load_ring_state=true|false``
+----------------------------------------
+Set to false to clear all gossip state for the node on restart. 
+
+**Default:** true
+
+``cassandra.metricsReporterConfigFile=<filename>``
+--------------------------------------------------
+Enable pluggable metrics reporter. Explore pluggable metrics reporting for more information.
+
+``cassandra.partitioner=<partitioner>``
+---------------------------------------
+Set the partitioner. 
+
+**Default:** org.apache.cassandra.dht.Murmur3Partitioner
+
+``cassandra.prepared_statements_cache_size_in_bytes=<cache_size>``
+------------------------------------------------------------------
+Set the cache size for prepared statements.
+
+``cassandra.replace_address=<listen_address of dead node>|<broadcast_address of dead node>``
+--------------------------------------------------------------------------------------------
+To replace a node that has died, restart a new node in its place specifying the ``listen_address`` or ``broadcast_address`` that the new node is assuming. The new node must not have any data in its data directory, the same state as before bootstrapping.
+Note: The ``broadcast_address`` defaults to the ``listen_address`` except when using the ``Ec2MultiRegionSnitch``.
+
+``cassandra.replayList=<table>``
+--------------------------------
+Allow restoring specific tables from an archived commit log.
+
+``cassandra.ring_delay_ms=<number_of_ms>``
+------------------------------------------
+Defines the amount of time a node waits to hear from other nodes before formally joining the ring. 
+
+**Default:** 1000ms
+
+``cassandra.native_transport_port=<port>``
+------------------------------------------
+Set the port on which the CQL native transport listens for clients. 
+
+**Default:** 9042
+
+``cassandra.rpc_port=<port>``
+-----------------------------
+Set the port for the Thrift RPC service, which is used for client connections. 
+
+**Default:** 9160
+
+``cassandra.storage_port=<port>``
+---------------------------------
+Set the port for inter-node communication. 
+
+**Default:** 7000
+
+``cassandra.ssl_storage_port=<port>``
+-------------------------------------
+Set the SSL port for encrypted communication. 
+
+**Default:** 7001
+
+``cassandra.start_native_transport=true|false``
+-----------------------------------------------
+Enable or disable the native transport server. See ``start_native_transport`` in ``cassandra.yaml``. 
+
+**Default:** true
+
+``cassandra.start_rpc=true|false``
+----------------------------------
+Enable or disable the Thrift RPC server. 
+
+**Default:** true
+
+``cassandra.triggers_dir=<directory>``
+--------------------------------------
+Set the default location for the trigger JARs. 
+
+**Default:** conf/triggers
+
+``cassandra.write_survey=true``
+-------------------------------
+For testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload.
+
+``consistent.rangemovement=true|false``
+---------------------------------------
+Set to true makes Cassandra perform bootstrap safely without violating consistency. False disables this.
diff --git a/src/doc/4.0-rc1/_sources/configuration/cass_jvm_options_file.rst.txt b/src/doc/4.0-rc1/_sources/configuration/cass_jvm_options_file.rst.txt
new file mode 100644
index 0000000..f5a6326
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/configuration/cass_jvm_options_file.rst.txt
@@ -0,0 +1,10 @@
+.. _cassandra-jvm-options:
+
+jvm-* files 
+===========
+
+Several files for JVM configuration are included in Cassandra. The ``jvm-server.options`` file, and corresponding files ``jvm8-server.options`` and ``jvm11-server.options`` are the main file for settings that affect the operation of the Cassandra JVM on cluster nodes. The file includes startup parameters, general JVM settings such as garbage collection, and heap settings. The ``jvm-clients.options`` and corresponding ``jvm8-clients.options`` and ``jvm11-clients.options`` files can be used to configure JVM settings for clients like ``nodetool`` and the ``sstable`` tools. 
+
+See each file for examples of settings.
+
+.. note:: The ``jvm-*`` files replace the :ref:`cassandra-envsh` file used in Cassandra versions prior to Cassandra 3.0. The ``cassandra-env.sh`` bash script file is still useful if JVM settings must be dynamically calculated based on system settings. The ``jvm-*`` files only store static JVM settings.
diff --git a/src/doc/4.0-rc1/_sources/configuration/cass_logback_xml_file.rst.txt b/src/doc/4.0-rc1/_sources/configuration/cass_logback_xml_file.rst.txt
new file mode 100644
index 0000000..3de1c77
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/configuration/cass_logback_xml_file.rst.txt
@@ -0,0 +1,157 @@
+.. _cassandra-logback-xml:
+
+logback.xml file 
+================================
+
+The ``logback.xml`` configuration file can optionally set logging levels for the logs written to ``system.log`` and ``debug.log``. The logging levels can also be set using ``nodetool setlogginglevels``.
+
+===========================
+Options
+===========================
+
+``appender name="<appender_choice>"...</appender>``
+------
+
+Specify log type and settings. Possible appender names are: ``SYSTEMLOG``, ``DEBUGLOG``, ``ASYNCDEBUGLOG``, and ``STDOUT``. ``SYSTEMLOG`` ensures that WARN and ERROR message are written synchronously to the specified file. ``DEBUGLOG`` and  ``ASYNCDEBUGLOG`` ensure that DEBUG messages are written either synchronously or asynchronously, respectively, to the specified file. ``STDOUT`` writes all messages to the console in a human-readable format.
+
+**Example:** <appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+
+``<file> <filename> </file>``
+------
+
+Specify the filename for a log.
+
+**Example:** <file>${cassandra.logdir}/system.log</file>
+
+``<level> <log_level> </level>``
+------
+
+Specify the level for a log. Part of the filter. Levels are: ``ALL``, ``TRACE``, ``DEBUG``, ``INFO``, ``WARN``, ``ERROR``, ``OFF``. ``TRACE`` creates the most verbose log, ``ERROR`` the least.
+
+.. note::
+Note: Increasing logging levels can generate heavy logging output on a moderately trafficked cluster.
+You can use the ``nodetool getlogginglevels`` command to see the current logging configuration.
+
+**Default:** INFO
+
+**Example:** <level>INFO</level>
+
+``<rollingPolicy class="<rolling_policy_choice>" <fileNamePattern><pattern_info></fileNamePattern> ... </rollingPolicy>``
+------
+
+Specify the policy for rolling logs over to an archive.
+
+**Example:** <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+
+``<fileNamePattern> <pattern_info> </fileNamePattern>``
+------
+
+Specify the pattern information for rolling over the log to archive. Part of the rolling policy.
+
+**Example:** <fileNamePattern>${cassandra.logdir}/system.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
+
+``<maxFileSize> <size> </maxFileSize>``
+------
+
+Specify the maximum file size to trigger rolling a log. Part of the rolling policy.
+
+**Example:** <maxFileSize>50MB</maxFileSize>
+
+``<maxHistory> <number_of_days> </maxHistory>``
+------
+
+Specify the maximum history in days to trigger rolling a log. Part of the rolling policy.
+
+**Example:** <maxHistory>7</maxHistory>
+
+``<encoder> <pattern>...</pattern> </encoder>``
+------
+
+Specify the format of the message. Part of the rolling policy.
+
+**Example:** <maxHistory>7</maxHistory>
+**Example:** <encoder> <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern> </encoder>
+
+Contents of default ``logback.xml``
+-----------------------
+
+.. code-block:: XML
+
+	<configuration scan="true" scanPeriod="60 seconds">
+	  <jmxConfigurator />
+
+	  <!-- No shutdown hook; we run it ourselves in StorageService after shutdown -->
+
+	  <!-- SYSTEMLOG rolling file appender to system.log (INFO level) -->
+
+	  <appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+	    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+      <level>INFO</level>
+	    </filter>
+	    <file>${cassandra.logdir}/system.log</file>
+	    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+	      <!-- rollover daily -->
+	      <fileNamePattern>${cassandra.logdir}/system.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
+	      <!-- each file should be at most 50MB, keep 7 days worth of history, but at most 5GB -->
+	      <maxFileSize>50MB</maxFileSize>
+	      <maxHistory>7</maxHistory>
+	      <totalSizeCap>5GB</totalSizeCap>
+	    </rollingPolicy>
+	    <encoder>
+	      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+	    </encoder>
+	  </appender>
+
+	  <!-- DEBUGLOG rolling file appender to debug.log (all levels) -->
+
+	  <appender name="DEBUGLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+	    <file>${cassandra.logdir}/debug.log</file>
+	    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+	      <!-- rollover daily -->
+	      <fileNamePattern>${cassandra.logdir}/debug.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
+	      <!-- each file should be at most 50MB, keep 7 days worth of history, but at most 5GB -->
+	      <maxFileSize>50MB</maxFileSize>
+	      <maxHistory>7</maxHistory>
+	      <totalSizeCap>5GB</totalSizeCap>
+	    </rollingPolicy>
+	    <encoder>
+	      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+	    </encoder>
+	  </appender>
+
+	  <!-- ASYNCLOG assynchronous appender to debug.log (all levels) -->
+
+	  <appender name="ASYNCDEBUGLOG" class="ch.qos.logback.classic.AsyncAppender">
+	    <queueSize>1024</queueSize>
+	    <discardingThreshold>0</discardingThreshold>
+	    <includeCallerData>true</includeCallerData>
+	    <appender-ref ref="DEBUGLOG" />
+	  </appender>
+
+	  <!-- STDOUT console appender to stdout (INFO level) -->
+
+	  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+	    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+	      <level>INFO</level>
+	    </filter>
+	    <encoder>
+	      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+	    </encoder>
+	  </appender>
+
+	  <!-- Uncomment bellow and corresponding appender-ref to activate logback metrics
+	  <appender name="LogbackMetrics" class="com.codahale.metrics.logback.InstrumentedAppender" />
+	   -->
+
+	  <root level="INFO">
+	    <appender-ref ref="SYSTEMLOG" />
+	    <appender-ref ref="STDOUT" />
+	    <appender-ref ref="ASYNCDEBUGLOG" /> <!-- Comment this line to disable debug.log -->
+	    <!--
+	    <appender-ref ref="LogbackMetrics" />
+	    -->
+	  </root>
+
+	  <logger name="org.apache.cassandra" level="DEBUG"/>
+	  <logger name="com.thinkaurelius.thrift" level="ERROR"/>
+	</configuration>
diff --git a/src/doc/4.0-rc1/_sources/configuration/cass_rackdc_file.rst.txt b/src/doc/4.0-rc1/_sources/configuration/cass_rackdc_file.rst.txt
new file mode 100644
index 0000000..9921092
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/configuration/cass_rackdc_file.rst.txt
@@ -0,0 +1,67 @@
+.. _cassandra-rackdc:
+
+cassandra-rackdc.properties file 
+================================
+
+Several :term:`snitch` options use the ``cassandra-rackdc.properties`` configuration file to determine which :term:`datacenters` and racks cluster nodes belong to. Information about the 
+network topology allows requests to be routed efficiently and to distribute replicas evenly. The following snitches can be configured here:
+
+- GossipingPropertyFileSnitch
+- AWS EC2 single-region snitch
+- AWS EC2 multi-region snitch
+
+The GossipingPropertyFileSnitch is recommended for production. This snitch uses the datacenter and rack information configured in a local node's ``cassandra-rackdc.properties``
+file and propagates the information to other nodes using :term:`gossip`. It is the default snitch and the settings in this properties file are enabled.
+
+The AWS EC2 snitches are configured for clusters in AWS. This snitch uses the ``cassandra-rackdc.properties`` options to designate one of two AWS EC2 datacenter and rack naming conventions:
+
+- legacy: Datacenter name is the part of the availability zone name preceding the last "-" when the zone ends in -1 and includes the number if not -1. Rack name is the portion of the availability zone name following  the last "-".
+
+          Examples: us-west-1a => dc: us-west, rack: 1a; us-west-2b => dc: us-west-2, rack: 2b;
+
+- standard: Datacenter name is the standard AWS region name, including the number. Rack name is the region plus the availability zone letter.
+
+          Examples: us-west-1a => dc: us-west-1, rack: us-west-1a; us-west-2b => dc: us-west-2, rack: us-west-2b;
+
+Either snitch can set to use the local or internal IP address when multiple datacenters are not communicating.
+
+===========================
+GossipingPropertyFileSnitch
+===========================
+
+``dc``
+------
+Name of the datacenter. The value is case-sensitive.
+
+**Default value:** DC1
+
+``rack``
+--------
+Rack designation. The value is case-sensitive.
+
+**Default value:** RAC1 
+
+===========================
+AWS EC2 snitch
+===========================
+
+``ec2_naming_scheme``
+---------------------
+Datacenter and rack naming convention. Options are ``legacy`` or ``standard`` (default). **This option is commented out by default.** 
+
+**Default value:** standard
+
+
+.. NOTE::
+          YOU MUST USE THE ``legacy`` VALUE IF YOU ARE UPGRADING A PRE-4.0 CLUSTER.
+
+===========================
+Either snitch
+===========================
+
+``prefer_local``
+----------------
+Option to use the local or internal IP address when communication is not across different datacenters. **This option is commented out by default.**
+
+**Default value:** true
+
diff --git a/src/doc/4.0-rc1/_sources/configuration/cass_topo_file.rst.txt b/src/doc/4.0-rc1/_sources/configuration/cass_topo_file.rst.txt
new file mode 100644
index 0000000..264addc
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/configuration/cass_topo_file.rst.txt
@@ -0,0 +1,48 @@
+.. _cassandra-topology:
+
+cassandra-topologies.properties file 
+================================
+
+The ``PropertyFileSnitch`` :term:`snitch` option uses the ``cassandra-topologies.properties`` configuration file to determine which :term:`datacenters` and racks cluster nodes belong to. If other snitches are used, the 
+:ref:cassandra_rackdc must be used. The snitch determines network topology (proximity by rack and datacenter) so that requests are routed efficiently and allows the database to distribute replicas evenly.
+
+Include every node in the cluster in the properties file, defining your datacenter names as in the keyspace definition. The datacenter and rack names are case-sensitive.
+
+The ``cassandra-topologies.properties`` file must be copied identically to every node in the cluster.
+
+
+===========================
+Example
+===========================
+This example uses three datacenters:
+
+.. code-block:: bash
+
+   # datacenter One
+
+   175.56.12.105=DC1:RAC1
+   175.50.13.200=DC1:RAC1
+   175.54.35.197=DC1:RAC1
+
+   120.53.24.101=DC1:RAC2
+   120.55.16.200=DC1:RAC2
+   120.57.102.103=DC1:RAC2
+
+   # datacenter Two
+
+   110.56.12.120=DC2:RAC1
+   110.50.13.201=DC2:RAC1
+   110.54.35.184=DC2:RAC1
+
+   50.33.23.120=DC2:RAC2
+   50.45.14.220=DC2:RAC2
+   50.17.10.203=DC2:RAC2
+
+   # datacenter Three
+
+   172.106.12.120=DC3:RAC1
+   172.106.12.121=DC3:RAC1
+   172.106.12.122=DC3:RAC1
+
+   # default for unknown nodes 
+   default =DC3:RAC1
diff --git a/src/doc/4.0-rc1/_sources/configuration/cass_yaml_file.rst.txt b/src/doc/4.0-rc1/_sources/configuration/cass_yaml_file.rst.txt
new file mode 100644
index 0000000..e3babbc
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/configuration/cass_yaml_file.rst.txt
@@ -0,0 +1,2101 @@
+.. _cassandra-yaml:
+
+cassandra.yaml file configuration 
+=================================
+
+``cluster_name``
+----------------
+The name of the cluster. This is mainly used to prevent machines in
+one logical cluster from joining another.
+
+*Default Value:* 'Test Cluster'
+
+``num_tokens``
+--------------
+
+This defines the number of tokens randomly assigned to this node on the ring
+The more tokens, relative to other nodes, the larger the proportion of data
+that this node will store. We recommend all nodes to have the same number
+of tokens assuming they have equal hardware capability.
+
+If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility,
+and will use the initial_token as described below.
+
+Specifying initial_token will override this setting on the node's initial start,
+on subsequent starts, this setting will apply even if initial token is set.
+
+We recommend setting ``allocate_tokens_for_local_replication_factor`` in conjunction with this setting to ensure even allocation.
+
+*Default Value:* 256
+
+``allocate_tokens_for_keyspace``
+--------------------------------
+*This option is commented out by default.*
+
+Triggers automatic allocation of num_tokens tokens for this node. The allocation
+algorithm attempts to choose tokens in a way that optimizes replicated load over
+the nodes in the datacenter for the replica factor.
+
+The load assigned to each node will be close to proportional to its number of
+vnodes.
+
+Only supported with the Murmur3Partitioner.
+
+Replica factor is determined via the replication strategy used by the specified
+keyspace.
+
+We recommend using the ``allocate_tokens_for_local_replication_factor`` setting instead for operational simplicity.
+
+*Default Value:* KEYSPACE
+
+``allocate_tokens_for_local_replication_factor``
+------------------------------------------------
+*This option is commented out by default.*
+
+Tokens will be allocated based on this replication factor, regardless of keyspace or datacenter.
+
+*Default Value:* 3
+
+``initial_token``
+-----------------
+*This option is commented out by default.*
+
+initial_token allows you to specify tokens manually.  While you can use it with
+vnodes (num_tokens > 1, above) -- in which case you should provide a 
+comma-separated list -- it's primarily used when adding nodes to legacy clusters 
+that do not have vnodes enabled.
+
+``hinted_handoff_enabled``
+--------------------------
+
+May either be "true" or "false" to enable globally
+
+*Default Value:* true
+
+``hinted_handoff_disabled_datacenters``
+---------------------------------------
+*This option is commented out by default.*
+
+When hinted_handoff_enabled is true, a black list of data centers that will not
+perform hinted handoff
+
+*Default Value (complex option)*::
+
+    #    - DC1
+    #    - DC2
+
+``max_hint_window_in_ms``
+-------------------------
+This defines the maximum amount of time a dead host will have hints
+generated.  After it has been dead this long, new hints for it will not be
+created until it has been seen alive and gone down again.
+
+*Default Value:* 10800000 # 3 hours
+
+``hinted_handoff_throttle_in_kb``
+---------------------------------
+
+Maximum throttle in KBs per second, per delivery thread.  This will be
+reduced proportionally to the number of nodes in the cluster.  (If there
+are two nodes in the cluster, each delivery thread will use the maximum
+rate; if there are three, each will throttle to half of the maximum,
+since we expect two nodes to be delivering hints simultaneously.)
+
+*Default Value:* 1024
+
+``max_hints_delivery_threads``
+------------------------------
+
+Number of threads with which to deliver hints;
+Consider increasing this number when you have multi-dc deployments, since
+cross-dc handoff tends to be slower
+
+*Default Value:* 2
+
+``hints_directory``
+-------------------
+*This option is commented out by default.*
+
+Directory where Cassandra should store hints.
+If not set, the default directory is $CASSANDRA_HOME/data/hints.
+
+*Default Value:*  /var/lib/cassandra/hints
+
+``hints_flush_period_in_ms``
+----------------------------
+
+How often hints should be flushed from the internal buffers to disk.
+Will *not* trigger fsync.
+
+*Default Value:* 10000
+
+``max_hints_file_size_in_mb``
+-----------------------------
+
+Maximum size for a single hints file, in megabytes.
+
+*Default Value:* 128
+
+``hints_compression``
+---------------------
+*This option is commented out by default.*
+
+Compression to apply to the hint files. If omitted, hints files
+will be written uncompressed. LZ4, Snappy, and Deflate compressors
+are supported.
+
+*Default Value (complex option)*::
+
+    #   - class_name: LZ4Compressor
+    #     parameters:
+    #         -
+
+``batchlog_replay_throttle_in_kb``
+----------------------------------
+Maximum throttle in KBs per second, total. This will be
+reduced proportionally to the number of nodes in the cluster.
+
+*Default Value:* 1024
+
+``authenticator``
+-----------------
+
+Authentication backend, implementing IAuthenticator; used to identify users
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator,
+PasswordAuthenticator}.
+
+- AllowAllAuthenticator performs no checks - set it to disable authentication.
+- PasswordAuthenticator relies on username/password pairs to authenticate
+  users. It keeps usernames and hashed passwords in system_auth.roles table.
+  Please increase system_auth keyspace replication factor if you use this authenticator.
+  If using PasswordAuthenticator, CassandraRoleManager must also be used (see below)
+
+*Default Value:* AllowAllAuthenticator
+
+``authorizer``
+--------------
+
+Authorization backend, implementing IAuthorizer; used to limit access/provide permissions
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer,
+CassandraAuthorizer}.
+
+- AllowAllAuthorizer allows any action to any user - set it to disable authorization.
+- CassandraAuthorizer stores permissions in system_auth.role_permissions table. Please
+  increase system_auth keyspace replication factor if you use this authorizer.
+
+*Default Value:* AllowAllAuthorizer
+
+``role_manager``
+----------------
+
+Part of the Authentication & Authorization backend, implementing IRoleManager; used
+to maintain grants and memberships between roles.
+Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager,
+which stores role information in the system_auth keyspace. Most functions of the
+IRoleManager require an authenticated login, so unless the configured IAuthenticator
+actually implements authentication, most of this functionality will be unavailable.
+
+- CassandraRoleManager stores role data in the system_auth keyspace. Please
+  increase system_auth keyspace replication factor if you use this role manager.
+
+*Default Value:* CassandraRoleManager
+
+``network_authorizer``
+----------------------
+
+Network authorization backend, implementing INetworkAuthorizer; used to restrict user
+access to certain DCs
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllNetworkAuthorizer,
+CassandraNetworkAuthorizer}.
+
+- AllowAllNetworkAuthorizer allows access to any DC to any user - set it to disable authorization.
+- CassandraNetworkAuthorizer stores permissions in system_auth.network_permissions table. Please
+  increase system_auth keyspace replication factor if you use this authorizer.
+
+*Default Value:* AllowAllNetworkAuthorizer
+
+``roles_validity_in_ms``
+------------------------
+
+Validity period for roles cache (fetching granted roles can be an expensive
+operation depending on the role manager, CassandraRoleManager is one example)
+Granted roles are cached for authenticated sessions in AuthenticatedUser and
+after the period specified here, become eligible for (async) reload.
+Defaults to 2000, set to 0 to disable caching entirely.
+Will be disabled automatically for AllowAllAuthenticator.
+
+*Default Value:* 2000
+
+``roles_update_interval_in_ms``
+-------------------------------
+*This option is commented out by default.*
+
+Refresh interval for roles cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If roles_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as roles_validity_in_ms.
+
+*Default Value:* 2000
+
+``permissions_validity_in_ms``
+------------------------------
+
+Validity period for permissions cache (fetching permissions can be an
+expensive operation depending on the authorizer, CassandraAuthorizer is
+one example). Defaults to 2000, set to 0 to disable.
+Will be disabled automatically for AllowAllAuthorizer.
+
+*Default Value:* 2000
+
+``permissions_update_interval_in_ms``
+-------------------------------------
+*This option is commented out by default.*
+
+Refresh interval for permissions cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If permissions_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as permissions_validity_in_ms.
+
+*Default Value:* 2000
+
+``credentials_validity_in_ms``
+------------------------------
+
+Validity period for credentials cache. This cache is tightly coupled to
+the provided PasswordAuthenticator implementation of IAuthenticator. If
+another IAuthenticator implementation is configured, this cache will not
+be automatically used and so the following settings will have no effect.
+Please note, credentials are cached in their encrypted form, so while
+activating this cache may reduce the number of queries made to the
+underlying table, it may not  bring a significant reduction in the
+latency of individual authentication attempts.
+Defaults to 2000, set to 0 to disable credentials caching.
+
+*Default Value:* 2000
+
+``credentials_update_interval_in_ms``
+-------------------------------------
+*This option is commented out by default.*
+
+Refresh interval for credentials cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If credentials_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as credentials_validity_in_ms.
+
+*Default Value:* 2000
+
+``partitioner``
+---------------
+
+The partitioner is responsible for distributing groups of rows (by
+partition key) across nodes in the cluster. The partitioner can NOT be
+changed without reloading all data.  If you are adding nodes or upgrading,
+you should set this to the same partitioner that you are currently using.
+
+The default partitioner is the Murmur3Partitioner. Older partitioners
+such as the RandomPartitioner, ByteOrderedPartitioner, and
+OrderPreservingPartitioner have been included for backward compatibility only.
+For new clusters, you should NOT change this value.
+
+
+*Default Value:* org.apache.cassandra.dht.Murmur3Partitioner
+
+``data_file_directories``
+-------------------------
+*This option is commented out by default.*
+
+Directories where Cassandra should store data on disk. If multiple
+directories are specified, Cassandra will spread data evenly across 
+them by partitioning the token ranges.
+If not set, the default directory is $CASSANDRA_HOME/data/data.
+
+*Default Value (complex option)*::
+
+    #     - /var/lib/cassandra/data
+
+``local_system_data_file_directory``
+-------------------------
+*This option is commented out by default.*
+
+Directory were Cassandra should store the data of the local system keyspaces.
+By default Cassandra will store the data of the local system keyspaces (at the exception of the system.batches,
+system.paxos, system.compaction_history, system.prepared_statements and system.repair tables) in the first of the data
+directories specified by data_file_directories.
+This approach ensures that if one of the other disks is lost Cassandra can continue to operate. For extra security
+this setting allows to store those data on a different directory that provides redundancy.
+
+``commitlog_directory``
+-----------------------
+*This option is commented out by default.*
+commit log.  when running on magnetic HDD, this should be a
+separate spindle than the data directories.
+If not set, the default directory is $CASSANDRA_HOME/data/commitlog.
+
+*Default Value:*  /var/lib/cassandra/commitlog
+
+``cdc_enabled``
+---------------
+
+Enable / disable CDC functionality on a per-node basis. This modifies the logic used
+for write path allocation rejection (standard: never reject. cdc: reject Mutation
+containing a CDC-enabled table if at space limit in cdc_raw_directory).
+
+*Default Value:* false
+
+``cdc_raw_directory``
+---------------------
+*This option is commented out by default.*
+
+CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the
+segment contains mutations for a CDC-enabled table. This should be placed on a
+separate spindle than the data directories. If not set, the default directory is
+$CASSANDRA_HOME/data/cdc_raw.
+
+*Default Value:*  /var/lib/cassandra/cdc_raw
+
+``disk_failure_policy``
+-----------------------
+
+Policy for data disk failures:
+
+die
+  shut down gossip and client transports and kill the JVM for any fs errors or
+  single-sstable errors, so the node can be replaced.
+
+stop_paranoid
+  shut down gossip and client transports even for single-sstable errors,
+  kill the JVM for errors during startup.
+
+stop
+  shut down gossip and client transports, leaving the node effectively dead, but
+  can still be inspected via JMX, kill the JVM for errors during startup.
+
+best_effort
+   stop using the failed disk and respond to requests based on
+   remaining available sstables.  This means you WILL see obsolete
+   data at CL.ONE!
+
+ignore
+   ignore fatal errors and let requests fail, as in pre-1.2 Cassandra
+
+*Default Value:* stop
+
+``commit_failure_policy``
+-------------------------
+
+Policy for commit disk failures:
+
+die
+  shut down the node and kill the JVM, so the node can be replaced.
+
+stop
+  shut down the node, leaving the node effectively dead, but
+  can still be inspected via JMX.
+
+stop_commit
+  shutdown the commit log, letting writes collect but
+  continuing to service reads, as in pre-2.0.5 Cassandra
+
+ignore
+  ignore fatal errors and let the batches fail
+
+*Default Value:* stop
+
+``prepared_statements_cache_size_mb``
+-------------------------------------
+
+Maximum size of the native protocol prepared statement cache
+
+Valid values are either "auto" (omitting the value) or a value greater 0.
+
+Note that specifying a too large value will result in long running GCs and possbily
+out-of-memory errors. Keep the value at a small fraction of the heap.
+
+If you constantly see "prepared statements discarded in the last minute because
+cache limit reached" messages, the first step is to investigate the root cause
+of these messages and check whether prepared statements are used correctly -
+i.e. use bind markers for variable parts.
+
+Do only change the default value, if you really have more prepared statements than
+fit in the cache. In most cases it is not neccessary to change this value.
+Constantly re-preparing statements is a performance penalty.
+
+Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater
+
+``key_cache_size_in_mb``
+------------------------
+
+Maximum size of the key cache in memory.
+
+Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
+minimum, sometimes more. The key cache is fairly tiny for the amount of
+time it saves, so it's worthwhile to use it at large numbers.
+The row cache saves even more time, but must contain the entire row,
+so it is extremely space-intensive. It's best to only use the
+row cache if you have hot rows or static rows.
+
+NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
+
+Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache.
+
+``key_cache_save_period``
+-------------------------
+
+Duration in seconds after which Cassandra should
+save the key cache. Caches are saved to saved_caches_directory as
+specified in this configuration file.
+
+Saved caches greatly improve cold-start speeds, and is relatively cheap in
+terms of I/O for the key cache. Row cache saving is much more expensive and
+has limited use.
+
+Default is 14400 or 4 hours.
+
+*Default Value:* 14400
+
+``key_cache_keys_to_save``
+--------------------------
+*This option is commented out by default.*
+
+Number of keys from the key cache to save
+Disabled by default, meaning all keys are going to be saved
+
+*Default Value:* 100
+
+``row_cache_class_name``
+------------------------
+*This option is commented out by default.*
+
+Row cache implementation class name. Available implementations:
+
+org.apache.cassandra.cache.OHCProvider
+  Fully off-heap row cache implementation (default).
+
+org.apache.cassandra.cache.SerializingCacheProvider
+  This is the row cache implementation availabile
+  in previous releases of Cassandra.
+
+*Default Value:* org.apache.cassandra.cache.OHCProvider
+
+``row_cache_size_in_mb``
+------------------------
+
+Maximum size of the row cache in memory.
+Please note that OHC cache implementation requires some additional off-heap memory to manage
+the map structures and some in-flight memory during operations before/after cache entries can be
+accounted against the cache capacity. This overhead is usually small compared to the whole capacity.
+Do not specify more memory that the system can afford in the worst usual situation and leave some
+headroom for OS block level cache. Do never allow your system to swap.
+
+Default value is 0, to disable row caching.
+
+*Default Value:* 0
+
+``row_cache_save_period``
+-------------------------
+
+Duration in seconds after which Cassandra should save the row cache.
+Caches are saved to saved_caches_directory as specified in this configuration file.
+
+Saved caches greatly improve cold-start speeds, and is relatively cheap in
+terms of I/O for the key cache. Row cache saving is much more expensive and
+has limited use.
+
+Default is 0 to disable saving the row cache.
+
+*Default Value:* 0
+
+``row_cache_keys_to_save``
+--------------------------
+*This option is commented out by default.*
+
+Number of keys from the row cache to save.
+Specify 0 (which is the default), meaning all keys are going to be saved
+
+*Default Value:* 100
+
+``counter_cache_size_in_mb``
+----------------------------
+
+Maximum size of the counter cache in memory.
+
+Counter cache helps to reduce counter locks' contention for hot counter cells.
+In case of RF = 1 a counter cache hit will cause Cassandra to skip the read before
+write entirely. With RF > 1 a counter cache hit will still help to reduce the duration
+of the lock hold, helping with hot counter cell updates, but will not allow skipping
+the read entirely. Only the local (clock, count) tuple of a counter cell is kept
+in memory, not the whole counter, so it's relatively cheap.
+
+NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
+
+Default value is empty to make it "auto" (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache.
+NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache.
+
+``counter_cache_save_period``
+-----------------------------
+
+Duration in seconds after which Cassandra should
+save the counter cache (keys only). Caches are saved to saved_caches_directory as
+specified in this configuration file.
+
+Default is 7200 or 2 hours.
+
+*Default Value:* 7200
+
+``counter_cache_keys_to_save``
+------------------------------
+*This option is commented out by default.*
+
+Number of keys from the counter cache to save
+Disabled by default, meaning all keys are going to be saved
+
+*Default Value:* 100
+
+``saved_caches_directory``
+--------------------------
+*This option is commented out by default.*
+
+saved caches
+If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.
+
+*Default Value:*  /var/lib/cassandra/saved_caches
+
+``commitlog_sync_batch_window_in_ms``
+-------------------------------------
+*This option is commented out by default.*
+
+commitlog_sync may be either "periodic", "group", or "batch." 
+
+When in batch mode, Cassandra won't ack writes until the commit log
+has been flushed to disk.  Each incoming write will trigger the flush task.
+commitlog_sync_batch_window_in_ms is a deprecated value. Previously it had
+almost no value, and is being removed.
+
+
+*Default Value:* 2
+
+``commitlog_sync_group_window_in_ms``
+-------------------------------------
+*This option is commented out by default.*
+
+group mode is similar to batch mode, where Cassandra will not ack writes
+until the commit log has been flushed to disk. The difference is group
+mode will wait up to commitlog_sync_group_window_in_ms between flushes.
+
+
+*Default Value:* 1000
+
+``commitlog_sync``
+------------------
+
+the default option is "periodic" where writes may be acked immediately
+and the CommitLog is simply synced every commitlog_sync_period_in_ms
+milliseconds.
+
+*Default Value:* periodic
+
+``commitlog_sync_period_in_ms``
+-------------------------------
+
+*Default Value:* 10000
+
+``periodic_commitlog_sync_lag_block_in_ms``
+-------------------------------------------
+*This option is commented out by default.*
+
+When in periodic commitlog mode, the number of milliseconds to block writes
+while waiting for a slow disk flush to complete.
+
+``commitlog_segment_size_in_mb``
+--------------------------------
+
+The size of the individual commitlog file segments.  A commitlog
+segment may be archived, deleted, or recycled once all the data
+in it (potentially from each columnfamily in the system) has been
+flushed to sstables.
+
+The default size is 32, which is almost always fine, but if you are
+archiving commitlog segments (see commitlog_archiving.properties),
+then you probably want a finer granularity of archiving; 8 or 16 MB
+is reasonable.
+Max mutation size is also configurable via max_mutation_size_in_kb setting in
+cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024.
+This should be positive and less than 2048.
+
+NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must
+be set to at least twice the size of max_mutation_size_in_kb / 1024
+
+
+*Default Value:* 32
+
+``commitlog_compression``
+-------------------------
+*This option is commented out by default.*
+
+Compression to apply to the commit log. If omitted, the commit log
+will be written uncompressed.  LZ4, Snappy, and Deflate compressors
+are supported.
+
+*Default Value (complex option)*::
+
+    #   - class_name: LZ4Compressor
+    #     parameters:
+    #         -
+
+``table``
+---------
+*This option is commented out by default.*
+Compression to apply to SSTables as they flush for compressed tables.
+Note that tables without compression enabled do not respect this flag.
+
+As high ratio compressors like LZ4HC, Zstd, and Deflate can potentially
+block flushes for too long, the default is to flush with a known fast
+compressor in those cases. Options are:
+
+none : Flush without compressing blocks but while still doing checksums.
+fast : Flush with a fast compressor. If the table is already using a
+       fast compressor that compressor is used.
+
+*Default Value:* Always flush with the same compressor that the table uses. This
+
+``flush_compression``
+---------------------
+*This option is commented out by default.*
+       was the pre 4.0 behavior.
+
+
+*Default Value:* fast
+
+``seed_provider``
+-----------------
+
+any class that implements the SeedProvider interface and has a
+constructor that takes a Map<String, String> of parameters will do.
+
+*Default Value (complex option)*::
+
+        # Addresses of hosts that are deemed contact points. 
+        # Cassandra nodes use this list of hosts to find each other and learn
+        # the topology of the ring.  You must change this if you are running
+        # multiple nodes!
+        - class_name: org.apache.cassandra.locator.SimpleSeedProvider
+          parameters:
+              # seeds is actually a comma-delimited list of addresses.
+              # Ex: "<ip1>,<ip2>,<ip3>"
+              - seeds: "127.0.0.1:7000"
+
+``concurrent_reads``
+--------------------
+For workloads with more data than can fit in memory, Cassandra's
+bottleneck will be reads that need to fetch data from
+disk. "concurrent_reads" should be set to (16 * number_of_drives) in
+order to allow the operations to enqueue low enough in the stack
+that the OS and drives can reorder them. Same applies to
+"concurrent_counter_writes", since counter writes read the current
+values before incrementing and writing them back.
+
+On the other hand, since writes are almost never IO bound, the ideal
+number of "concurrent_writes" is dependent on the number of cores in
+your system; (8 * number_of_cores) is a good rule of thumb.
+
+*Default Value:* 32
+
+``concurrent_writes``
+---------------------
+
+*Default Value:* 32
+
+``concurrent_counter_writes``
+-----------------------------
+
+*Default Value:* 32
+
+``concurrent_materialized_view_writes``
+---------------------------------------
+
+For materialized view writes, as there is a read involved, so this should
+be limited by the less of concurrent reads or concurrent writes.
+
+*Default Value:* 32
+
+``file_cache_size_in_mb``
+-------------------------
+*This option is commented out by default.*
+
+Maximum memory to use for sstable chunk cache and buffer pooling.
+32MB of this are reserved for pooling buffers, the rest is used as an
+cache that holds uncompressed sstable chunks.
+Defaults to the smaller of 1/4 of heap or 512MB. This pool is allocated off-heap,
+so is in addition to the memory allocated for heap. The cache also has on-heap
+overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size
+if the default 64k chunk size is used).
+Memory is only allocated when needed.
+
+*Default Value:* 512
+
+``buffer_pool_use_heap_if_exhausted``
+-------------------------------------
+*This option is commented out by default.*
+
+Flag indicating whether to allocate on or off heap when the sstable buffer
+pool is exhausted, that is when it has exceeded the maximum memory
+file_cache_size_in_mb, beyond which it will not cache buffers but allocate on request.
+
+
+*Default Value:* true
+
+``disk_optimization_strategy``
+------------------------------
+*This option is commented out by default.*
+
+The strategy for optimizing disk read
+Possible values are:
+ssd (for solid state disks, the default)
+spinning (for spinning disks)
+
+*Default Value:* ssd
+
+``memtable_heap_space_in_mb``
+-----------------------------
+*This option is commented out by default.*
+
+Total permitted memory to use for memtables. Cassandra will stop
+accepting writes when the limit is exceeded until a flush completes,
+and will trigger a flush based on memtable_cleanup_threshold
+If omitted, Cassandra will set both to 1/4 the size of the heap.
+
+*Default Value:* 2048
+
+``memtable_offheap_space_in_mb``
+--------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 2048
+
+``memtable_cleanup_threshold``
+------------------------------
+*This option is commented out by default.*
+
+memtable_cleanup_threshold is deprecated. The default calculation
+is the only reasonable choice. See the comments on  memtable_flush_writers
+for more information.
+
+Ratio of occupied non-flushing memtable size to total permitted size
+that will trigger a flush of the largest memtable. Larger mct will
+mean larger flushes and hence less compaction, but also less concurrent
+flush activity which can make it difficult to keep your disks fed
+under heavy write load.
+
+memtable_cleanup_threshold defaults to 1 / (memtable_flush_writers + 1)
+
+*Default Value:* 0.11
+
+``memtable_allocation_type``
+----------------------------
+
+Specify the way Cassandra allocates and manages memtable memory.
+Options are:
+
+heap_buffers
+  on heap nio buffers
+
+offheap_buffers
+  off heap (direct) nio buffers
+
+offheap_objects
+   off heap objects
+
+*Default Value:* heap_buffers
+
+``repair_session_space_in_mb``
+------------------------------
+*This option is commented out by default.*
+
+Limit memory usage for Merkle tree calculations during repairs. The default
+is 1/16th of the available heap. The main tradeoff is that smaller trees
+have less resolution, which can lead to over-streaming data. If you see heap
+pressure during repairs, consider lowering this, but you cannot go below
+one megabyte. If you see lots of over-streaming, consider raising
+this or using subrange repair.
+
+For more details see https://issues.apache.org/jira/browse/CASSANDRA-14096.
+
+
+``commitlog_total_space_in_mb``
+-------------------------------
+*This option is commented out by default.*
+
+Total space to use for commit logs on disk.
+
+If space gets above this value, Cassandra will flush every dirty CF
+in the oldest segment and remove it.  So a small total commitlog space
+will tend to cause more flush activity on less-active columnfamilies.
+
+The default value is the smaller of 8192, and 1/4 of the total space
+of the commitlog volume.
+
+
+*Default Value:* 8192
+
+``memtable_flush_writers``
+--------------------------
+*This option is commented out by default.*
+
+This sets the number of memtable flush writer threads per disk
+as well as the total number of memtables that can be flushed concurrently.
+These are generally a combination of compute and IO bound.
+
+Memtable flushing is more CPU efficient than memtable ingest and a single thread
+can keep up with the ingest rate of a whole server on a single fast disk
+until it temporarily becomes IO bound under contention typically with compaction.
+At that point you need multiple flush threads. At some point in the future
+it may become CPU bound all the time.
+
+You can tell if flushing is falling behind using the MemtablePool.BlockedOnAllocation
+metric which should be 0, but will be non-zero if threads are blocked waiting on flushing
+to free memory.
+
+memtable_flush_writers defaults to two for a single data directory.
+This means that two  memtables can be flushed concurrently to the single data directory.
+If you have multiple data directories the default is one memtable flushing at a time
+but the flush will use a thread per data directory so you will get two or more writers.
+
+Two is generally enough to flush on a fast disk [array] mounted as a single data directory.
+Adding more flush writers will result in smaller more frequent flushes that introduce more
+compaction overhead.
+
+There is a direct tradeoff between number of memtables that can be flushed concurrently
+and flush size and frequency. More is not better you just need enough flush writers
+to never stall waiting for flushing to free memory.
+
+
+*Default Value:* 2
+
+``cdc_total_space_in_mb``
+-------------------------
+*This option is commented out by default.*
+
+Total space to use for change-data-capture logs on disk.
+
+If space gets above this value, Cassandra will throw WriteTimeoutException
+on Mutations including tables with CDC enabled. A CDCCompactor is responsible
+for parsing the raw CDC logs and deleting them when parsing is completed.
+
+The default value is the min of 4096 mb and 1/8th of the total space
+of the drive where cdc_raw_directory resides.
+
+*Default Value:* 4096
+
+``cdc_free_space_check_interval_ms``
+------------------------------------
+*This option is commented out by default.*
+
+When we hit our cdc_raw limit and the CDCCompactor is either running behind
+or experiencing backpressure, we check at the following interval to see if any
+new space for cdc-tracked tables has been made available. Default to 250ms
+
+*Default Value:* 250
+
+``index_summary_capacity_in_mb``
+--------------------------------
+
+A fixed memory pool size in MB for for SSTable index summaries. If left
+empty, this will default to 5% of the heap size. If the memory usage of
+all index summaries exceeds this limit, SSTables with low read rates will
+shrink their index summaries in order to meet this limit.  However, this
+is a best-effort process. In extreme conditions Cassandra may need to use
+more than this amount of memory.
+
+``index_summary_resize_interval_in_minutes``
+--------------------------------------------
+
+How frequently index summaries should be resampled.  This is done
+periodically to redistribute memory from the fixed-size pool to sstables
+proportional their recent read rates.  Setting to -1 will disable this
+process, leaving existing index summaries at their current sampling level.
+
+*Default Value:* 60
+
+``trickle_fsync``
+-----------------
+
+Whether to, when doing sequential writing, fsync() at intervals in
+order to force the operating system to flush the dirty
+buffers. Enable this to avoid sudden dirty buffer flushing from
+impacting read latencies. Almost always a good idea on SSDs; not
+necessarily on platters.
+
+*Default Value:* false
+
+``trickle_fsync_interval_in_kb``
+--------------------------------
+
+*Default Value:* 10240
+
+``storage_port``
+----------------
+
+TCP port, for commands and data
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.
+
+*Default Value:* 7000
+
+``ssl_storage_port``
+--------------------
+
+SSL port, for legacy encrypted communication. This property is unused unless enabled in
+server_encryption_options (see below). As of cassandra 4.0, this property is deprecated
+as a single port can be used for either/both secure and insecure connections.
+For security reasons, you should not expose this port to the internet. Firewall it if needed.
+
+*Default Value:* 7001
+
+``listen_address``
+------------------
+
+Address or interface to bind to and tell other Cassandra nodes to connect to.
+You _must_ change this if you want multiple nodes to be able to communicate!
+
+Set listen_address OR listen_interface, not both.
+
+Leaving it blank leaves it up to InetAddress.getLocalHost(). This
+will always do the Right Thing _if_ the node is properly configured
+(hostname, name resolution, etc), and the Right Thing is to use the
+address associated with the hostname (it might not be).
+
+Setting listen_address to 0.0.0.0 is always wrong.
+
+
+*Default Value:* localhost
+
+``listen_interface``
+--------------------
+*This option is commented out by default.*
+
+Set listen_address OR listen_interface, not both. Interfaces must correspond
+to a single address, IP aliasing is not supported.
+
+*Default Value:* eth0
+
+``listen_interface_prefer_ipv6``
+--------------------------------
+*This option is commented out by default.*
+
+If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
+you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4
+address will be used. If true the first ipv6 address will be used. Defaults to false preferring
+ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.
+
+*Default Value:* false
+
+``broadcast_address``
+---------------------
+*This option is commented out by default.*
+
+Address to broadcast to other Cassandra nodes
+Leaving this blank will set it to the same value as listen_address
+
+*Default Value:* 1.2.3.4
+
+``listen_on_broadcast_address``
+-------------------------------
+*This option is commented out by default.*
+
+When using multiple physical network interfaces, set this
+to true to listen on broadcast_address in addition to
+the listen_address, allowing nodes to communicate in both
+interfaces.
+Ignore this property if the network configuration automatically
+routes  between the public and private networks such as EC2.
+
+*Default Value:* false
+
+``internode_authenticator``
+---------------------------
+*This option is commented out by default.*
+
+Internode authentication backend, implementing IInternodeAuthenticator;
+used to allow/disallow connections from peer nodes.
+
+*Default Value:* org.apache.cassandra.auth.AllowAllInternodeAuthenticator
+
+``start_native_transport``
+--------------------------
+
+Whether to start the native transport server.
+The address on which the native transport is bound is defined by rpc_address.
+
+*Default Value:* true
+
+``native_transport_port``
+-------------------------
+port for the CQL native transport to listen for clients on
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.
+
+*Default Value:* 9042
+
+``native_transport_port_ssl``
+-----------------------------
+*This option is commented out by default.*
+Enabling native transport encryption in client_encryption_options allows you to either use
+encryption for the standard port or to use a dedicated, additional port along with the unencrypted
+standard native_transport_port.
+Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption
+for native_transport_port. Setting native_transport_port_ssl to a different value
+from native_transport_port will use encryption for native_transport_port_ssl while
+keeping native_transport_port unencrypted.
+
+*Default Value:* 9142
+
+``native_transport_max_threads``
+--------------------------------
+*This option is commented out by default.*
+The maximum threads for handling requests (note that idle threads are stopped
+after 30 seconds so there is not corresponding minimum setting).
+
+*Default Value:* 128
+
+``native_transport_max_frame_size_in_mb``
+-----------------------------------------
+*This option is commented out by default.*
+
+The maximum size of allowed frame. Frame (requests) larger than this will
+be rejected as invalid. The default is 256MB. If you're changing this parameter,
+you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048.
+
+*Default Value:* 256
+
+``native_transport_frame_block_size_in_kb``
+-------------------------------------------
+*This option is commented out by default.*
+
+If checksumming is enabled as a protocol option, denotes the size of the chunks into which frame
+are bodies will be broken and checksummed.
+
+*Default Value:* 32
+
+``native_transport_max_concurrent_connections``
+-----------------------------------------------
+*This option is commented out by default.*
+
+The maximum number of concurrent client connections.
+The default is -1, which means unlimited.
+
+*Default Value:* -1
+
+``native_transport_max_concurrent_connections_per_ip``
+------------------------------------------------------
+*This option is commented out by default.*
+
+The maximum number of concurrent client connections per source ip.
+The default is -1, which means unlimited.
+
+*Default Value:* -1
+
+``native_transport_allow_older_protocols``
+------------------------------------------
+
+Controls whether Cassandra honors older, yet currently supported, protocol versions.
+The default is true, which means all supported protocols will be honored.
+
+*Default Value:* true
+
+``native_transport_idle_timeout_in_ms``
+---------------------------------------
+*This option is commented out by default.*
+
+Controls when idle client connections are closed. Idle connections are ones that had neither reads
+nor writes for a time period.
+
+Clients may implement heartbeats by sending OPTIONS native protocol message after a timeout, which
+will reset idle timeout timer on the server side. To close idle client connections, corresponding
+values for heartbeat intervals have to be set on the client side.
+
+Idle connection timeouts are disabled by default.
+
+*Default Value:* 60000
+
+``rpc_address``
+---------------
+
+The address or interface to bind the native transport server to.
+
+Set rpc_address OR rpc_interface, not both.
+
+Leaving rpc_address blank has the same effect as on listen_address
+(i.e. it will be based on the configured hostname of the node).
+
+Note that unlike listen_address, you can specify 0.0.0.0, but you must also
+set broadcast_rpc_address to a value other than 0.0.0.0.
+
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.
+
+*Default Value:* localhost
+
+``rpc_interface``
+-----------------
+*This option is commented out by default.*
+
+Set rpc_address OR rpc_interface, not both. Interfaces must correspond
+to a single address, IP aliasing is not supported.
+
+*Default Value:* eth1
+
+``rpc_interface_prefer_ipv6``
+-----------------------------
+*This option is commented out by default.*
+
+If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
+you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4
+address will be used. If true the first ipv6 address will be used. Defaults to false preferring
+ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.
+
+*Default Value:* false
+
+``broadcast_rpc_address``
+-------------------------
+*This option is commented out by default.*
+
+RPC address to broadcast to drivers and other Cassandra nodes. This cannot
+be set to 0.0.0.0. If left blank, this will be set to the value of
+rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must
+be set.
+
+*Default Value:* 1.2.3.4
+
+``rpc_keepalive``
+-----------------
+
+enable or disable keepalive on rpc/native connections
+
+*Default Value:* true
+
+``internode_send_buff_size_in_bytes``
+-------------------------------------
+*This option is commented out by default.*
+
+Uncomment to set socket buffer size for internode communication
+Note that when setting this, the buffer size is limited by net.core.wmem_max
+and when not setting it it is defined by net.ipv4.tcp_wmem
+See also:
+/proc/sys/net/core/wmem_max
+/proc/sys/net/core/rmem_max
+/proc/sys/net/ipv4/tcp_wmem
+/proc/sys/net/ipv4/tcp_wmem
+and 'man tcp'
+
+``internode_recv_buff_size_in_bytes``
+-------------------------------------
+*This option is commented out by default.*
+
+Uncomment to set socket buffer size for internode communication
+Note that when setting this, the buffer size is limited by net.core.wmem_max
+and when not setting it it is defined by net.ipv4.tcp_wmem
+
+``incremental_backups``
+-----------------------
+
+Set to true to have Cassandra create a hard link to each sstable
+flushed or streamed locally in a backups/ subdirectory of the
+keyspace data.  Removing these links is the operator's
+responsibility.
+
+*Default Value:* false
+
+``snapshot_before_compaction``
+------------------------------
+
+Whether or not to take a snapshot before each compaction.  Be
+careful using this option, since Cassandra won't clean up the
+snapshots for you.  Mostly useful if you're paranoid when there
+is a data format change.
+
+*Default Value:* false
+
+``auto_snapshot``
+-----------------
+
+Whether or not a snapshot is taken of the data before keyspace truncation
+or dropping of column families. The STRONGLY advised default of true 
+should be used to provide data safety. If you set this flag to false, you will
+lose data on truncation or drop.
+
+*Default Value:* true
+
+``column_index_size_in_kb``
+---------------------------
+
+Granularity of the collation index of rows within a partition.
+Increase if your rows are large, or if you have a very large
+number of rows per partition.  The competing goals are these:
+
+- a smaller granularity means more index entries are generated
+  and looking up rows withing the partition by collation column
+  is faster
+- but, Cassandra will keep the collation index in memory for hot
+  rows (as part of the key cache), so a larger granularity means
+  you can cache more hot rows
+
+*Default Value:* 64
+
+``column_index_cache_size_in_kb``
+---------------------------------
+
+Per sstable indexed key cache entries (the collation index in memory
+mentioned above) exceeding this size will not be held on heap.
+This means that only partition information is held on heap and the
+index entries are read from disk.
+
+Note that this size refers to the size of the
+serialized index information and not the size of the partition.
+
+*Default Value:* 2
+
+``concurrent_compactors``
+-------------------------
+*This option is commented out by default.*
+
+Number of simultaneous compactions to allow, NOT including
+validation "compactions" for anti-entropy repair.  Simultaneous
+compactions can help preserve read performance in a mixed read/write
+workload, by mitigating the tendency of small sstables to accumulate
+during a single long running compactions. The default is usually
+fine and if you experience problems with compaction running too
+slowly or too fast, you should look at
+compaction_throughput_mb_per_sec first.
+
+concurrent_compactors defaults to the smaller of (number of disks,
+number of cores), with a minimum of 2 and a maximum of 8.
+
+If your data directories are backed by SSD, you should increase this
+to the number of cores.
+
+*Default Value:* 1
+
+``concurrent_validations``
+--------------------------
+*This option is commented out by default.*
+
+Number of simultaneous repair validations to allow. Default is unbounded
+Values less than one are interpreted as unbounded (the default)
+
+*Default Value:* 0
+
+``concurrent_materialized_view_builders``
+-----------------------------------------
+
+Number of simultaneous materialized view builder tasks to allow.
+
+*Default Value:* 1
+
+``compaction_throughput_mb_per_sec``
+------------------------------------
+
+Throttles compaction to the given total throughput across the entire
+system. The faster you insert data, the faster you need to compact in
+order to keep the sstable count down, but in general, setting this to
+16 to 32 times the rate you are inserting data is more than sufficient.
+Setting this to 0 disables throttling. Note that this account for all types
+of compaction, including validation compaction.
+
+*Default Value:* 16
+
+``sstable_preemptive_open_interval_in_mb``
+------------------------------------------
+
+When compacting, the replacement sstable(s) can be opened before they
+are completely written, and used in place of the prior sstables for
+any range that has been written. This helps to smoothly transfer reads 
+between the sstables, reducing page cache churn and keeping hot rows hot
+
+*Default Value:* 50
+
+``stream_entire_sstables``
+--------------------------
+*This option is commented out by default.*
+
+When enabled, permits Cassandra to zero-copy stream entire eligible
+SSTables between nodes, including every component.
+This speeds up the network transfer significantly subject to
+throttling specified by stream_throughput_outbound_megabits_per_sec.
+Enabling this will reduce the GC pressure on sending and receiving node.
+When unset, the default is enabled. While this feature tries to keep the
+disks balanced, it cannot guarantee it. This feature will be automatically
+disabled if internode encryption is enabled. Currently this can be used with
+Leveled Compaction. Once CASSANDRA-14586 is fixed other compaction strategies
+will benefit as well when used in combination with CASSANDRA-6696.
+
+*Default Value:* true
+
+``stream_throughput_outbound_megabits_per_sec``
+-----------------------------------------------
+*This option is commented out by default.*
+
+Throttles all outbound streaming file transfers on this node to the
+given total throughput in Mbps. This is necessary because Cassandra does
+mostly sequential IO when streaming data during bootstrap or repair, which
+can lead to saturating the network connection and degrading rpc performance.
+When unset, the default is 200 Mbps or 25 MB/s.
+
+*Default Value:* 200
+
+``inter_dc_stream_throughput_outbound_megabits_per_sec``
+--------------------------------------------------------
+*This option is commented out by default.*
+
+Throttles all streaming file transfer between the datacenters,
+this setting allows users to throttle inter dc stream throughput in addition
+to throttling all network stream traffic as configured with
+stream_throughput_outbound_megabits_per_sec
+When unset, the default is 200 Mbps or 25 MB/s
+
+*Default Value:* 200
+
+``read_request_timeout_in_ms``
+------------------------------
+
+How long the coordinator should wait for read operations to complete.
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 5000
+
+``range_request_timeout_in_ms``
+-------------------------------
+How long the coordinator should wait for seq or index scans to complete.
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 10000
+
+``write_request_timeout_in_ms``
+-------------------------------
+How long the coordinator should wait for writes to complete.
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 2000
+
+``counter_write_request_timeout_in_ms``
+---------------------------------------
+How long the coordinator should wait for counter writes to complete.
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 5000
+
+``cas_contention_timeout_in_ms``
+--------------------------------
+How long a coordinator should continue to retry a CAS operation
+that contends with other proposals for the same row.
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 1000
+
+``truncate_request_timeout_in_ms``
+----------------------------------
+How long the coordinator should wait for truncates to complete
+(This can be much longer, because unless auto_snapshot is disabled
+we need to flush first so we can snapshot before removing the data.)
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 60000
+
+``request_timeout_in_ms``
+-------------------------
+The default timeout for other, miscellaneous operations.
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 10000
+
+``internode_application_send_queue_capacity_in_bytes``
+------------------------------------------------------
+*This option is commented out by default.*
+
+Defensive settings for protecting Cassandra from true network partitions.
+See (CASSANDRA-14358) for details.
+
+
+``internode_tcp_connect_timeout_in_ms``
+---------------------------------------
+The amount of time to wait for internode tcp connections to establish.
+
+*Default Value:* 2000
+
+``internode_tcp_user_timeout_in_ms``
+------------------------------------
+The amount of time unacknowledged data is allowed on a connection before we throw out the connection
+Note this is only supported on Linux + epoll, and it appears to behave oddly above a setting of 30000
+(it takes much longer than 30s) as of Linux 4.12. If you want something that high set this to 0
+which picks up the OS default and configure the net.ipv4.tcp_retries2 sysctl to be ~8.
+
+*Default Value:* 30000
+
+``internode_streaming_tcp_user_timeout_in_ms``
+----------------------------------------------
+The amount of time unacknowledged data is allowed on a streaming connection before we close the connection.
+
+*Default Value:* 300000 (5 minutes)
+
+``internode_application_timeout_in_ms``
+---------------------------------------
+The maximum continuous period a connection may be unwritable in application space.
+
+*Default Value:* 30000
+
+Global, per-endpoint and per-connection limits imposed on messages queued for delivery to other nodes
+and waiting to be processed on arrival from other nodes in the cluster.  These limits are applied to the on-wire
+size of the message being sent or received.
+
+The basic per-link limit is consumed in isolation before any endpoint or global limit is imposed.
+Each node-pair has three links: urgent, small and large.  So any given node may have a maximum of
+N*3*(internode_application_send_queue_capacity_in_bytes+internode_application_receive_queue_capacity_in_bytes)
+messages queued without any coordination between them although in practice, with token-aware routing, only RF*tokens
+nodes should need to communicate with significant bandwidth.
+
+The per-endpoint limit is imposed on all messages exceeding the per-link limit, simultaneously with the global limit,
+on all links to or from a single node in the cluster.
+The global limit is imposed on all messages exceeding the per-link limit, simultaneously with the per-endpoint limit,
+on all links to or from any node in the cluster.
+
+
+*Default Value:* 4194304                       #4MiB
+
+``internode_application_send_queue_reserve_endpoint_capacity_in_bytes``
+-----------------------------------------------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 134217728    #128MiB
+
+``internode_application_send_queue_reserve_global_capacity_in_bytes``
+---------------------------------------------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 536870912      #512MiB
+
+``internode_application_receive_queue_capacity_in_bytes``
+---------------------------------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 4194304                    #4MiB
+
+``internode_application_receive_queue_reserve_endpoint_capacity_in_bytes``
+--------------------------------------------------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 134217728 #128MiB
+
+``internode_application_receive_queue_reserve_global_capacity_in_bytes``
+------------------------------------------------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 536870912   #512MiB
+
+``slow_query_log_timeout_in_ms``
+--------------------------------
+
+
+How long before a node logs slow queries. Select queries that take longer than
+this timeout to execute, will generate an aggregated log message, so that slow queries
+can be identified. Set this value to zero to disable slow query logging.
+
+*Default Value:* 500
+
+``cross_node_timeout``
+----------------------
+*This option is commented out by default.*
+
+Enable operation timeout information exchange between nodes to accurately
+measure request timeouts.  If disabled, replicas will assume that requests
+were forwarded to them instantly by the coordinator, which means that
+under overload conditions we will waste that much extra time processing 
+already-timed-out requests.
+
+Warning: It is generally assumed that users have setup NTP on their clusters, and that clocks are modestly in sync, 
+since this is a requirement for general correctness of last write wins.
+
+*Default Value:* true
+
+``streaming_keep_alive_period_in_secs``
+---------------------------------------
+*This option is commented out by default.*
+
+Set keep-alive period for streaming
+This node will send a keep-alive message periodically with this period.
+If the node does not receive a keep-alive message from the peer for
+2 keep-alive cycles the stream session times out and fail
+Default value is 300s (5 minutes), which means stalled stream
+times out in 10 minutes by default
+
+*Default Value:* 300
+
+``streaming_connections_per_host``
+----------------------------------
+*This option is commented out by default.*
+
+Limit number of connections per host for streaming
+Increase this when you notice that joins are CPU-bound rather that network
+bound (for example a few nodes with big files).
+
+*Default Value:* 1
+
+``phi_convict_threshold``
+-------------------------
+*This option is commented out by default.*
+
+
+phi value that must be reached for a host to be marked down.
+most users should never need to adjust this.
+
+*Default Value:* 8
+
+``endpoint_snitch``
+-------------------
+
+endpoint_snitch -- Set this to a class that implements
+IEndpointSnitch.  The snitch has two functions:
+
+- it teaches Cassandra enough about your network topology to route
+  requests efficiently
+- it allows Cassandra to spread replicas around your cluster to avoid
+  correlated failures. It does this by grouping machines into
+  "datacenters" and "racks."  Cassandra will do its best not to have
+  more than one replica on the same "rack" (which may not actually
+  be a physical location)
+
+CASSANDRA WILL NOT ALLOW YOU TO SWITCH TO AN INCOMPATIBLE SNITCH
+ONCE DATA IS INSERTED INTO THE CLUSTER.  This would cause data loss.
+This means that if you start with the default SimpleSnitch, which
+locates every node on "rack1" in "datacenter1", your only options
+if you need to add another datacenter are GossipingPropertyFileSnitch
+(and the older PFS).  From there, if you want to migrate to an
+incompatible snitch like Ec2Snitch you can do it by adding new nodes
+under Ec2Snitch (which will locate them in a new "datacenter") and
+decommissioning the old ones.
+
+Out of the box, Cassandra provides:
+
+SimpleSnitch:
+   Treats Strategy order as proximity. This can improve cache
+   locality when disabling read repair.  Only appropriate for
+   single-datacenter deployments.
+
+GossipingPropertyFileSnitch
+   This should be your go-to snitch for production use.  The rack
+   and datacenter for the local node are defined in
+   cassandra-rackdc.properties and propagated to other nodes via
+   gossip.  If cassandra-topology.properties exists, it is used as a
+   fallback, allowing migration from the PropertyFileSnitch.
+
+PropertyFileSnitch:
+   Proximity is determined by rack and data center, which are
+   explicitly configured in cassandra-topology.properties.
+
+Ec2Snitch:
+   Appropriate for EC2 deployments in a single Region. Loads Region
+   and Availability Zone information from the EC2 API. The Region is
+   treated as the datacenter, and the Availability Zone as the rack.
+   Only private IPs are used, so this will not work across multiple
+   Regions.
+
+Ec2MultiRegionSnitch:
+   Uses public IPs as broadcast_address to allow cross-region
+   connectivity.  (Thus, you should set seed addresses to the public
+   IP as well.) You will need to open the storage_port or
+   ssl_storage_port on the public IP firewall.  (For intra-Region
+   traffic, Cassandra will switch to the private IP after
+   establishing a connection.)
+
+RackInferringSnitch:
+   Proximity is determined by rack and data center, which are
+   assumed to correspond to the 3rd and 2nd octet of each node's IP
+   address, respectively.  Unless this happens to match your
+   deployment conventions, this is best used as an example of
+   writing a custom Snitch class and is provided in that spirit.
+
+You can use a custom Snitch by setting this to the full class name
+of the snitch, which will be assumed to be on your classpath.
+
+*Default Value:* SimpleSnitch
+
+``dynamic_snitch_update_interval_in_ms``
+----------------------------------------
+
+controls how often to perform the more expensive part of host score
+calculation
+
+*Default Value:* 100 
+
+``dynamic_snitch_reset_interval_in_ms``
+---------------------------------------
+controls how often to reset all host scores, allowing a bad host to
+possibly recover
+
+*Default Value:* 600000
+
+``dynamic_snitch_badness_threshold``
+------------------------------------
+if set greater than zero, this will allow
+'pinning' of replicas to hosts in order to increase cache capacity.
+The badness threshold will control how much worse the pinned host has to be
+before the dynamic snitch will prefer other replicas over it.  This is
+expressed as a double which represents a percentage.  Thus, a value of
+0.2 means Cassandra would continue to prefer the static snitch values
+until the pinned host was 20% worse than the fastest.
+
+*Default Value:* 0.1
+
+``server_encryption_options``
+-----------------------------
+
+Enable or disable inter-node encryption
+JVM and netty defaults for supported SSL socket protocols and cipher suites can
+be replaced using custom encryption options. This is not recommended
+unless you have policies in place that dictate certain settings, or
+need to disable vulnerable ciphers or protocols in case the JVM cannot
+be updated.
+FIPS compliant settings can be configured at JVM level and should not
+involve changing encryption settings here:
+https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html
+
+*NOTE* No custom encryption options are enabled at the moment
+The available internode options are : all, none, dc, rack
+If set to dc cassandra will encrypt the traffic between the DCs
+If set to rack cassandra will encrypt the traffic between the racks
+
+The passwords used in these options must match the passwords used when generating
+the keystore and truststore.  For instructions on generating these files, see:
+http://download.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore
+
+
+*Default Value (complex option)*::
+
+        # set to true for allowing secure incoming connections
+        enabled: false
+        # If enabled and optional are both set to true, encrypted and unencrypted connections are handled on the storage_port
+        optional: false
+        # if enabled, will open up an encrypted listening socket on ssl_storage_port. Should be used
+        # during upgrade to 4.0; otherwise, set to false.
+        enable_legacy_ssl_storage_port: false
+        # on outbound connections, determine which type of peers to securely connect to. 'enabled' must be set to true.
+        internode_encryption: none
+        keystore: conf/.keystore
+        keystore_password: cassandra
+        truststore: conf/.truststore
+        truststore_password: cassandra
+        # More advanced defaults below:
+        # protocol: TLS
+        # store_type: JKS
+        # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]
+        # require_client_auth: false
+        # require_endpoint_verification: false
+
+``client_encryption_options``
+-----------------------------
+enable or disable client-to-server encryption.
+
+*Default Value (complex option)*::
+
+        enabled: false
+        # If enabled and optional is set to true encrypted and unencrypted connections are handled.
+        optional: false
+        keystore: conf/.keystore
+        keystore_password: cassandra
+        # require_client_auth: false
+        # Set trustore and truststore_password if require_client_auth is true
+        # truststore: conf/.truststore
+        # truststore_password: cassandra
+        # More advanced defaults below:
+        # protocol: TLS
+        # store_type: JKS
+        # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]
+
+``internode_compression``
+-------------------------
+internode_compression controls whether traffic between nodes is
+compressed.
+Can be:
+
+all
+  all traffic is compressed
+
+dc
+  traffic between different datacenters is compressed
+
+none
+  nothing is compressed.
+
+*Default Value:* dc
+
+``inter_dc_tcp_nodelay``
+------------------------
+
+Enable or disable tcp_nodelay for inter-dc communication.
+Disabling it will result in larger (but fewer) network packets being sent,
+reducing overhead from the TCP protocol itself, at the cost of increasing
+latency if you block for cross-datacenter responses.
+
+*Default Value:* false
+
+``tracetype_query_ttl``
+-----------------------
+
+TTL for different trace types used during logging of the repair process.
+
+*Default Value:* 86400
+
+``tracetype_repair_ttl``
+------------------------
+
+*Default Value:* 604800
+
+``enable_user_defined_functions``
+---------------------------------
+
+If unset, all GC Pauses greater than gc_log_threshold_in_ms will log at
+INFO level
+UDFs (user defined functions) are disabled by default.
+As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code.
+
+*Default Value:* false
+
+``enable_scripted_user_defined_functions``
+------------------------------------------
+
+Enables scripted UDFs (JavaScript UDFs).
+Java UDFs are always enabled, if enable_user_defined_functions is true.
+Enable this option to be able to use UDFs with "language javascript" or any custom JSR-223 provider.
+This option has no effect, if enable_user_defined_functions is false.
+
+*Default Value:* false
+
+``windows_timer_interval``
+--------------------------
+
+The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation.
+Lowering this value on Windows can provide much tighter latency and better throughput, however
+some virtualized environments may see a negative performance impact from changing this setting
+below their system default. The sysinternals 'clockres' tool can confirm your system's default
+setting.
+
+*Default Value:* 1
+
+``transparent_data_encryption_options``
+---------------------------------------
+
+
+Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from
+a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by
+the "key_alias" is the only key that will be used for encrypt opertaions; previously used keys
+can still (and should!) be in the keystore and will be used on decrypt operations
+(to handle the case of key rotation).
+
+It is strongly recommended to download and install Java Cryptography Extension (JCE)
+Unlimited Strength Jurisdiction Policy Files for your version of the JDK.
+(current link: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)
+
+Currently, only the following file types are supported for transparent data encryption, although
+more are coming in future cassandra releases: commitlog, hints
+
+*Default Value (complex option)*::
+
+        enabled: false
+        chunk_length_kb: 64
+        cipher: AES/CBC/PKCS5Padding
+        key_alias: testing:1
+        # CBC IV length for AES needs to be 16 bytes (which is also the default size)
+        # iv_length: 16
+        key_provider:
+          - class_name: org.apache.cassandra.security.JKSKeyProvider
+            parameters:
+              - keystore: conf/.keystore
+                keystore_password: cassandra
+                store_type: JCEKS
+                key_password: cassandra
+
+``tombstone_warn_threshold``
+----------------------------
+
+####################
+SAFETY THRESHOLDS #
+####################
+
+When executing a scan, within or across a partition, we need to keep the
+tombstones seen in memory so we can return them to the coordinator, which
+will use them to make sure other replicas also know about the deleted rows.
+With workloads that generate a lot of tombstones, this can cause performance
+problems and even exaust the server heap.
+(http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets)
+Adjust the thresholds here if you understand the dangers and want to
+scan more tombstones anyway.  These thresholds may also be adjusted at runtime
+using the StorageService mbean.
+
+*Default Value:* 1000
+
+``tombstone_failure_threshold``
+-------------------------------
+
+*Default Value:* 100000
+
+``batch_size_warn_threshold_in_kb``
+-----------------------------------
+
+Log WARN on any multiple-partition batch size exceeding this value. 5kb per batch by default.
+Caution should be taken on increasing the size of this threshold as it can lead to node instability.
+
+*Default Value:* 5
+
+``batch_size_fail_threshold_in_kb``
+-----------------------------------
+
+Fail any multiple-partition batch exceeding this value. 50kb (10x warn threshold) by default.
+
+*Default Value:* 50
+
+``unlogged_batch_across_partitions_warn_threshold``
+---------------------------------------------------
+
+Log WARN on any batches not of type LOGGED than span across more partitions than this limit
+
+*Default Value:* 10
+
+``compaction_large_partition_warning_threshold_mb``
+---------------------------------------------------
+
+Log a warning when compacting partitions larger than this value
+
+*Default Value:* 100
+
+``gc_log_threshold_in_ms``
+--------------------------
+*This option is commented out by default.*
+
+GC Pauses greater than 200 ms will be logged at INFO level
+This threshold can be adjusted to minimize logging if necessary
+
+*Default Value:* 200
+
+``gc_warn_threshold_in_ms``
+---------------------------
+*This option is commented out by default.*
+
+GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level
+Adjust the threshold based on your application throughput requirement. Setting to 0
+will deactivate the feature.
+
+*Default Value:* 1000
+
+``max_value_size_in_mb``
+------------------------
+*This option is commented out by default.*
+
+Maximum size of any value in SSTables. Safety measure to detect SSTable corruption
+early. Any value size larger than this threshold will result into marking an SSTable
+as corrupted. This should be positive and less than 2048.
+
+*Default Value:* 256
+
+``back_pressure_enabled``
+-------------------------
+
+Back-pressure settings #
+If enabled, the coordinator will apply the back-pressure strategy specified below to each mutation
+sent to replicas, with the aim of reducing pressure on overloaded replicas.
+
+*Default Value:* false
+
+``back_pressure_strategy``
+--------------------------
+The back-pressure strategy applied.
+The default implementation, RateBasedBackPressure, takes three arguments:
+high ratio, factor, and flow type, and uses the ratio between incoming mutation responses and outgoing mutation requests.
+If below high ratio, outgoing mutations are rate limited according to the incoming rate decreased by the given factor;
+if above high ratio, the rate limiting is increased by the given factor;
+such factor is usually best configured between 1 and 10, use larger values for a faster recovery
+at the expense of potentially more dropped mutations;
+the rate limiting is applied according to the flow type: if FAST, it's rate limited at the speed of the fastest replica,
+if SLOW at the speed of the slowest one.
+New strategies can be added. Implementors need to implement org.apache.cassandra.net.BackpressureStrategy and
+provide a public constructor accepting a Map<String, Object>.
+
+``otc_coalescing_strategy``
+---------------------------
+*This option is commented out by default.*
+
+Coalescing Strategies #
+Coalescing multiples messages turns out to significantly boost message processing throughput (think doubling or more).
+On bare metal, the floor for packet processing throughput is high enough that many applications won't notice, but in
+virtualized environments, the point at which an application can be bound by network packet processing can be
+surprisingly low compared to the throughput of task processing that is possible inside a VM. It's not that bare metal
+doesn't benefit from coalescing messages, it's that the number of packets a bare metal network interface can process
+is sufficient for many applications such that no load starvation is experienced even without coalescing.
+There are other benefits to coalescing network messages that are harder to isolate with a simple metric like messages
+per second. By coalescing multiple tasks together, a network thread can process multiple messages for the cost of one
+trip to read from a socket, and all the task submission work can be done at the same time reducing context switching
+and increasing cache friendliness of network message processing.
+See CASSANDRA-8692 for details.
+
+Strategy to use for coalescing messages in OutboundTcpConnection.
+Can be fixed, movingaverage, timehorizon, disabled (default).
+You can also specify a subclass of CoalescingStrategies.CoalescingStrategy by name.
+
+*Default Value:* DISABLED
+
+``otc_coalescing_window_us``
+----------------------------
+*This option is commented out by default.*
+
+How many microseconds to wait for coalescing. For fixed strategy this is the amount of time after the first
+message is received before it will be sent with any accompanying messages. For moving average this is the
+maximum amount of time that will be waited as well as the interval at which messages must arrive on average
+for coalescing to be enabled.
+
+*Default Value:* 200
+
+``otc_coalescing_enough_coalesced_messages``
+--------------------------------------------
+*This option is commented out by default.*
+
+Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128.
+
+*Default Value:* 8
+
+``otc_backlog_expiration_interval_ms``
+--------------------------------------
+*This option is commented out by default.*
+
+How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection.
+Expiration is done if messages are piling up in the backlog. Droppable messages are expired to free the memory
+taken by expired messages. The interval should be between 0 and 1000, and in most installations the default value
+will be appropriate. A smaller value could potentially expire messages slightly sooner at the expense of more CPU
+time and queue contention while iterating the backlog of messages.
+An interval of 0 disables any wait time, which is the behavior of former Cassandra versions.
+
+
+*Default Value:* 200
+
+``ideal_consistency_level``
+---------------------------
+*This option is commented out by default.*
+
+Track a metric per keyspace indicating whether replication achieved the ideal consistency
+level for writes without timing out. This is different from the consistency level requested by
+each write which may be lower in order to facilitate availability.
+
+*Default Value:* EACH_QUORUM
+
+``automatic_sstable_upgrade``
+-----------------------------
+*This option is commented out by default.*
+
+Automatically upgrade sstables after upgrade - if there is no ordinary compaction to do, the
+oldest non-upgraded sstable will get upgraded to the latest version
+
+*Default Value:* false
+
+``max_concurrent_automatic_sstable_upgrades``
+---------------------------------------------
+*This option is commented out by default.*
+Limit the number of concurrent sstable upgrades
+
+*Default Value:* 1
+
+``audit_logging_options``
+-------------------------
+
+Audit logging - Logs every incoming CQL command request, authentication to a node. See the docs
+on audit_logging for full details about the various configuration options.
+
+``full_query_logging_options``
+------------------------------
+*This option is commented out by default.*
+
+
+default options for full query logging - these can be overridden from command line when executing
+nodetool enablefullquerylog
+
+``corrupted_tombstone_strategy``
+--------------------------------
+*This option is commented out by default.*
+
+validate tombstones on reads and compaction
+can be either "disabled", "warn" or "exception"
+
+*Default Value:* disabled
+
+``diagnostic_events_enabled``
+-----------------------------
+
+Diagnostic Events #
+If enabled, diagnostic events can be helpful for troubleshooting operational issues. Emitted events contain details
+on internal state and temporal relationships across events, accessible by clients via JMX.
+
+*Default Value:* false
+
+``native_transport_flush_in_batches_legacy``
+--------------------------------------------
+*This option is commented out by default.*
+
+Use native transport TCP message coalescing. If on upgrade to 4.0 you found your throughput decreasing, and in
+particular you run an old kernel or have very fewer client connections, this option might be worth evaluating.
+
+*Default Value:* false
+
+``repaired_data_tracking_for_range_reads_enabled``
+--------------------------------------------------
+
+Enable tracking of repaired state of data during reads and comparison between replicas
+Mismatches between the repaired sets of replicas can be characterized as either confirmed
+or unconfirmed. In this context, unconfirmed indicates that the presence of pending repair
+sessions, unrepaired partition tombstones, or some other condition means that the disparity
+cannot be considered conclusive. Confirmed mismatches should be a trigger for investigation
+as they may be indicative of corruption or data loss.
+There are separate flags for range vs partition reads as single partition reads are only tracked
+when CL > 1 and a digest mismatch occurs. Currently, range queries don't use digests so if
+enabled for range reads, all range reads will include repaired data tracking. As this adds
+some overhead, operators may wish to disable it whilst still enabling it for partition reads
+
+*Default Value:* false
+
+``repaired_data_tracking_for_partition_reads_enabled``
+------------------------------------------------------
+
+*Default Value:* false
+
+``report_unconfirmed_repaired_data_mismatches``
+-----------------------------------------------
+If false, only confirmed mismatches will be reported. If true, a separate metric for unconfirmed
+mismatches will also be recorded. This is to avoid potential signal:noise issues are unconfirmed
+mismatches are less actionable than confirmed ones.
+
+*Default Value:* false
+
+``enable_materialized_views``
+-----------------------------
+
+########################
+EXPERIMENTAL FEATURES #
+########################
+
+Enables materialized view creation on this node.
+Materialized views are considered experimental and are not recommended for production use.
+
+*Default Value:* false
+
+``enable_sasi_indexes``
+-----------------------
+
+Enables SASI index creation on this node.
+SASI indexes are considered experimental and are not recommended for production use.
+
+*Default Value:* false
+
+``enable_transient_replication``
+--------------------------------
+
+Enables creation of transiently replicated keyspaces on this node.
+Transient replication is experimental and is not recommended for production use.
+
+*Default Value:* false
diff --git a/src/doc/4.0-rc1/_sources/configuration/cassandra_config_file.rst.txt b/src/doc/4.0-rc1/_sources/configuration/cassandra_config_file.rst.txt
new file mode 100644
index 0000000..dee3da5
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/configuration/cassandra_config_file.rst.txt
@@ -0,0 +1,2159 @@
+.. _cassandra-yaml:
+
+Cassandra Configuration File
+============================
+
+``cluster_name``
+----------------
+
+The name of the cluster. This is mainly used to prevent machines in
+one logical cluster from joining another.
+
+*Default Value:* 'Test Cluster'
+
+``num_tokens``
+--------------
+
+This defines the number of tokens randomly assigned to this node on the ring
+The more tokens, relative to other nodes, the larger the proportion of data
+that this node will store. You probably want all nodes to have the same number
+of tokens assuming they have equal hardware capability.
+
+If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility,
+and will use the initial_token as described below.
+
+Specifying initial_token will override this setting on the node's initial start,
+on subsequent starts, this setting will apply even if initial token is set.
+
+See https://cassandra.apache.org/doc/latest/getting_started/production.html#tokens for
+best practice information about num_tokens.
+
+
+*Default Value:* 16
+
+``allocate_tokens_for_keyspace``
+--------------------------------
+*This option is commented out by default.*
+
+Triggers automatic allocation of num_tokens tokens for this node. The allocation
+algorithm attempts to choose tokens in a way that optimizes replicated load over
+the nodes in the datacenter for the replica factor.
+
+The load assigned to each node will be close to proportional to its number of
+vnodes.
+
+Only supported with the Murmur3Partitioner.
+
+Replica factor is determined via the replication strategy used by the specified
+keyspace.
+
+*Default Value:* KEYSPACE
+
+``allocate_tokens_for_local_replication_factor``
+------------------------------------------------
+
+Replica factor is explicitly set, regardless of keyspace or datacenter.
+This is the replica factor within the datacenter, like NTS.
+
+*Default Value:* 3
+
+``initial_token``
+-----------------
+*This option is commented out by default.*
+
+initial_token allows you to specify tokens manually.  While you can use it with
+vnodes (num_tokens > 1, above) -- in which case you should provide a 
+comma-separated list -- it's primarily used when adding nodes to legacy clusters 
+that do not have vnodes enabled.
+
+``hinted_handoff_enabled``
+--------------------------
+
+May either be "true" or "false" to enable globally
+
+*Default Value:* true
+
+``hinted_handoff_disabled_datacenters``
+---------------------------------------
+*This option is commented out by default.*
+
+When hinted_handoff_enabled is true, a black list of data centers that will not
+perform hinted handoff
+
+*Default Value (complex option)*::
+
+    #    - DC1
+    #    - DC2
+
+``max_hint_window_in_ms``
+-------------------------
+this defines the maximum amount of time a dead host will have hints
+generated.  After it has been dead this long, new hints for it will not be
+created until it has been seen alive and gone down again.
+
+*Default Value:* 10800000 # 3 hours
+
+``hinted_handoff_throttle_in_kb``
+---------------------------------
+
+Maximum throttle in KBs per second, per delivery thread.  This will be
+reduced proportionally to the number of nodes in the cluster.  (If there
+are two nodes in the cluster, each delivery thread will use the maximum
+rate; if there are three, each will throttle to half of the maximum,
+since we expect two nodes to be delivering hints simultaneously.)
+
+*Default Value:* 1024
+
+``max_hints_delivery_threads``
+------------------------------
+
+Number of threads with which to deliver hints;
+Consider increasing this number when you have multi-dc deployments, since
+cross-dc handoff tends to be slower
+
+*Default Value:* 2
+
+``hints_directory``
+-------------------
+*This option is commented out by default.*
+
+Directory where Cassandra should store hints.
+If not set, the default directory is $CASSANDRA_HOME/data/hints.
+
+*Default Value:*  /var/lib/cassandra/hints
+
+``hints_flush_period_in_ms``
+----------------------------
+
+How often hints should be flushed from the internal buffers to disk.
+Will *not* trigger fsync.
+
+*Default Value:* 10000
+
+``max_hints_file_size_in_mb``
+-----------------------------
+
+Maximum size for a single hints file, in megabytes.
+
+*Default Value:* 128
+
+``hints_compression``
+---------------------
+*This option is commented out by default.*
+
+Compression to apply to the hint files. If omitted, hints files
+will be written uncompressed. LZ4, Snappy, and Deflate compressors
+are supported.
+
+*Default Value (complex option)*::
+
+    #   - class_name: LZ4Compressor
+    #     parameters:
+    #         -
+
+``batchlog_replay_throttle_in_kb``
+----------------------------------
+Maximum throttle in KBs per second, total. This will be
+reduced proportionally to the number of nodes in the cluster.
+
+*Default Value:* 1024
+
+``authenticator``
+-----------------
+
+Authentication backend, implementing IAuthenticator; used to identify users
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator,
+PasswordAuthenticator}.
+
+- AllowAllAuthenticator performs no checks - set it to disable authentication.
+- PasswordAuthenticator relies on username/password pairs to authenticate
+  users. It keeps usernames and hashed passwords in system_auth.roles table.
+  Please increase system_auth keyspace replication factor if you use this authenticator.
+  If using PasswordAuthenticator, CassandraRoleManager must also be used (see below)
+
+*Default Value:* AllowAllAuthenticator
+
+``authorizer``
+--------------
+
+Authorization backend, implementing IAuthorizer; used to limit access/provide permissions
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer,
+CassandraAuthorizer}.
+
+- AllowAllAuthorizer allows any action to any user - set it to disable authorization.
+- CassandraAuthorizer stores permissions in system_auth.role_permissions table. Please
+  increase system_auth keyspace replication factor if you use this authorizer.
+
+*Default Value:* AllowAllAuthorizer
+
+``role_manager``
+----------------
+
+Part of the Authentication & Authorization backend, implementing IRoleManager; used
+to maintain grants and memberships between roles.
+Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager,
+which stores role information in the system_auth keyspace. Most functions of the
+IRoleManager require an authenticated login, so unless the configured IAuthenticator
+actually implements authentication, most of this functionality will be unavailable.
+
+- CassandraRoleManager stores role data in the system_auth keyspace. Please
+  increase system_auth keyspace replication factor if you use this role manager.
+
+*Default Value:* CassandraRoleManager
+
+``network_authorizer``
+----------------------
+
+Network authorization backend, implementing INetworkAuthorizer; used to restrict user
+access to certain DCs
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllNetworkAuthorizer,
+CassandraNetworkAuthorizer}.
+
+- AllowAllNetworkAuthorizer allows access to any DC to any user - set it to disable authorization.
+- CassandraNetworkAuthorizer stores permissions in system_auth.network_permissions table. Please
+  increase system_auth keyspace replication factor if you use this authorizer.
+
+*Default Value:* AllowAllNetworkAuthorizer
+
+``roles_validity_in_ms``
+------------------------
+
+Validity period for roles cache (fetching granted roles can be an expensive
+operation depending on the role manager, CassandraRoleManager is one example)
+Granted roles are cached for authenticated sessions in AuthenticatedUser and
+after the period specified here, become eligible for (async) reload.
+Defaults to 2000, set to 0 to disable caching entirely.
+Will be disabled automatically for AllowAllAuthenticator.
+
+*Default Value:* 2000
+
+``roles_update_interval_in_ms``
+-------------------------------
+*This option is commented out by default.*
+
+Refresh interval for roles cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If roles_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as roles_validity_in_ms.
+
+*Default Value:* 2000
+
+``permissions_validity_in_ms``
+------------------------------
+
+Validity period for permissions cache (fetching permissions can be an
+expensive operation depending on the authorizer, CassandraAuthorizer is
+one example). Defaults to 2000, set to 0 to disable.
+Will be disabled automatically for AllowAllAuthorizer.
+
+*Default Value:* 2000
+
+``permissions_update_interval_in_ms``
+-------------------------------------
+*This option is commented out by default.*
+
+Refresh interval for permissions cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If permissions_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as permissions_validity_in_ms.
+
+*Default Value:* 2000
+
+``credentials_validity_in_ms``
+------------------------------
+
+Validity period for credentials cache. This cache is tightly coupled to
+the provided PasswordAuthenticator implementation of IAuthenticator. If
+another IAuthenticator implementation is configured, this cache will not
+be automatically used and so the following settings will have no effect.
+Please note, credentials are cached in their encrypted form, so while
+activating this cache may reduce the number of queries made to the
+underlying table, it may not  bring a significant reduction in the
+latency of individual authentication attempts.
+Defaults to 2000, set to 0 to disable credentials caching.
+
+*Default Value:* 2000
+
+``credentials_update_interval_in_ms``
+-------------------------------------
+*This option is commented out by default.*
+
+Refresh interval for credentials cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If credentials_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as credentials_validity_in_ms.
+
+*Default Value:* 2000
+
+``partitioner``
+---------------
+
+The partitioner is responsible for distributing groups of rows (by
+partition key) across nodes in the cluster. The partitioner can NOT be
+changed without reloading all data.  If you are adding nodes or upgrading,
+you should set this to the same partitioner that you are currently using.
+
+The default partitioner is the Murmur3Partitioner. Older partitioners
+such as the RandomPartitioner, ByteOrderedPartitioner, and
+OrderPreservingPartitioner have been included for backward compatibility only.
+For new clusters, you should NOT change this value.
+
+
+*Default Value:* org.apache.cassandra.dht.Murmur3Partitioner
+
+``data_file_directories``
+-------------------------
+*This option is commented out by default.*
+
+Directories where Cassandra should store data on disk. If multiple
+directories are specified, Cassandra will spread data evenly across 
+them by partitioning the token ranges.
+If not set, the default directory is $CASSANDRA_HOME/data/data.
+
+*Default Value (complex option)*::
+
+    #     - /var/lib/cassandra/data
+
+``local_system_data_file_directory``
+------------------------------------
+*This option is commented out by default.*
+Directory were Cassandra should store the data of the local system keyspaces.
+By default Cassandra will store the data of the local system keyspaces in the first of the data directories specified
+by data_file_directories.
+This approach ensures that if one of the other disks is lost Cassandra can continue to operate. For extra security
+this setting allows to store those data on a different directory that provides redundancy.
+
+``commitlog_directory``
+-----------------------
+*This option is commented out by default.*
+
+commit log.  when running on magnetic HDD, this should be a
+separate spindle than the data directories.
+If not set, the default directory is $CASSANDRA_HOME/data/commitlog.
+
+*Default Value:*  /var/lib/cassandra/commitlog
+
+``cdc_enabled``
+---------------
+
+Enable / disable CDC functionality on a per-node basis. This modifies the logic used
+for write path allocation rejection (standard: never reject. cdc: reject Mutation
+containing a CDC-enabled table if at space limit in cdc_raw_directory).
+
+*Default Value:* false
+
+``cdc_raw_directory``
+---------------------
+*This option is commented out by default.*
+
+CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the
+segment contains mutations for a CDC-enabled table. This should be placed on a
+separate spindle than the data directories. If not set, the default directory is
+$CASSANDRA_HOME/data/cdc_raw.
+
+*Default Value:*  /var/lib/cassandra/cdc_raw
+
+``disk_failure_policy``
+-----------------------
+
+Policy for data disk failures:
+
+die
+  shut down gossip and client transports and kill the JVM for any fs errors or
+  single-sstable errors, so the node can be replaced.
+
+stop_paranoid
+  shut down gossip and client transports even for single-sstable errors,
+  kill the JVM for errors during startup.
+
+stop
+  shut down gossip and client transports, leaving the node effectively dead, but
+  can still be inspected via JMX, kill the JVM for errors during startup.
+
+best_effort
+   stop using the failed disk and respond to requests based on
+   remaining available sstables.  This means you WILL see obsolete
+   data at CL.ONE!
+
+ignore
+   ignore fatal errors and let requests fail, as in pre-1.2 Cassandra
+
+*Default Value:* stop
+
+``commit_failure_policy``
+-------------------------
+
+Policy for commit disk failures:
+
+die
+  shut down the node and kill the JVM, so the node can be replaced.
+
+stop
+  shut down the node, leaving the node effectively dead, but
+  can still be inspected via JMX.
+
+stop_commit
+  shutdown the commit log, letting writes collect but
+  continuing to service reads, as in pre-2.0.5 Cassandra
+
+ignore
+  ignore fatal errors and let the batches fail
+
+*Default Value:* stop
+
+``prepared_statements_cache_size_mb``
+-------------------------------------
+
+Maximum size of the native protocol prepared statement cache
+
+Valid values are either "auto" (omitting the value) or a value greater 0.
+
+Note that specifying a too large value will result in long running GCs and possbily
+out-of-memory errors. Keep the value at a small fraction of the heap.
+
+If you constantly see "prepared statements discarded in the last minute because
+cache limit reached" messages, the first step is to investigate the root cause
+of these messages and check whether prepared statements are used correctly -
+i.e. use bind markers for variable parts.
+
+Do only change the default value, if you really have more prepared statements than
+fit in the cache. In most cases it is not neccessary to change this value.
+Constantly re-preparing statements is a performance penalty.
+
+Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater
+
+``key_cache_size_in_mb``
+------------------------
+
+Maximum size of the key cache in memory.
+
+Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
+minimum, sometimes more. The key cache is fairly tiny for the amount of
+time it saves, so it's worthwhile to use it at large numbers.
+The row cache saves even more time, but must contain the entire row,
+so it is extremely space-intensive. It's best to only use the
+row cache if you have hot rows or static rows.
+
+NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
+
+Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache.
+
+``key_cache_save_period``
+-------------------------
+
+Duration in seconds after which Cassandra should
+save the key cache. Caches are saved to saved_caches_directory as
+specified in this configuration file.
+
+Saved caches greatly improve cold-start speeds, and is relatively cheap in
+terms of I/O for the key cache. Row cache saving is much more expensive and
+has limited use.
+
+Default is 14400 or 4 hours.
+
+*Default Value:* 14400
+
+``key_cache_keys_to_save``
+--------------------------
+*This option is commented out by default.*
+
+Number of keys from the key cache to save
+Disabled by default, meaning all keys are going to be saved
+
+*Default Value:* 100
+
+``row_cache_class_name``
+------------------------
+*This option is commented out by default.*
+
+Row cache implementation class name. Available implementations:
+
+org.apache.cassandra.cache.OHCProvider
+  Fully off-heap row cache implementation (default).
+
+org.apache.cassandra.cache.SerializingCacheProvider
+  This is the row cache implementation availabile
+  in previous releases of Cassandra.
+
+*Default Value:* org.apache.cassandra.cache.OHCProvider
+
+``row_cache_size_in_mb``
+------------------------
+
+Maximum size of the row cache in memory.
+Please note that OHC cache implementation requires some additional off-heap memory to manage
+the map structures and some in-flight memory during operations before/after cache entries can be
+accounted against the cache capacity. This overhead is usually small compared to the whole capacity.
+Do not specify more memory that the system can afford in the worst usual situation and leave some
+headroom for OS block level cache. Do never allow your system to swap.
+
+Default value is 0, to disable row caching.
+
+*Default Value:* 0
+
+``row_cache_save_period``
+-------------------------
+
+Duration in seconds after which Cassandra should save the row cache.
+Caches are saved to saved_caches_directory as specified in this configuration file.
+
+Saved caches greatly improve cold-start speeds, and is relatively cheap in
+terms of I/O for the key cache. Row cache saving is much more expensive and
+has limited use.
+
+Default is 0 to disable saving the row cache.
+
+*Default Value:* 0
+
+``row_cache_keys_to_save``
+--------------------------
+*This option is commented out by default.*
+
+Number of keys from the row cache to save.
+Specify 0 (which is the default), meaning all keys are going to be saved
+
+*Default Value:* 100
+
+``counter_cache_size_in_mb``
+----------------------------
+
+Maximum size of the counter cache in memory.
+
+Counter cache helps to reduce counter locks' contention for hot counter cells.
+In case of RF = 1 a counter cache hit will cause Cassandra to skip the read before
+write entirely. With RF > 1 a counter cache hit will still help to reduce the duration
+of the lock hold, helping with hot counter cell updates, but will not allow skipping
+the read entirely. Only the local (clock, count) tuple of a counter cell is kept
+in memory, not the whole counter, so it's relatively cheap.
+
+NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
+
+Default value is empty to make it "auto" (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache.
+NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache.
+
+``counter_cache_save_period``
+-----------------------------
+
+Duration in seconds after which Cassandra should
+save the counter cache (keys only). Caches are saved to saved_caches_directory as
+specified in this configuration file.
+
+Default is 7200 or 2 hours.
+
+*Default Value:* 7200
+
+``counter_cache_keys_to_save``
+------------------------------
+*This option is commented out by default.*
+
+Number of keys from the counter cache to save
+Disabled by default, meaning all keys are going to be saved
+
+*Default Value:* 100
+
+``saved_caches_directory``
+--------------------------
+*This option is commented out by default.*
+
+saved caches
+If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.
+
+*Default Value:*  /var/lib/cassandra/saved_caches
+
+``commitlog_sync_batch_window_in_ms``
+-------------------------------------
+*This option is commented out by default.*
+
+commitlog_sync may be either "periodic", "group", or "batch." 
+
+When in batch mode, Cassandra won't ack writes until the commit log
+has been flushed to disk.  Each incoming write will trigger the flush task.
+commitlog_sync_batch_window_in_ms is a deprecated value. Previously it had
+almost no value, and is being removed.
+
+
+*Default Value:* 2
+
+``commitlog_sync_group_window_in_ms``
+-------------------------------------
+*This option is commented out by default.*
+
+group mode is similar to batch mode, where Cassandra will not ack writes
+until the commit log has been flushed to disk. The difference is group
+mode will wait up to commitlog_sync_group_window_in_ms between flushes.
+
+
+*Default Value:* 1000
+
+``commitlog_sync``
+------------------
+
+the default option is "periodic" where writes may be acked immediately
+and the CommitLog is simply synced every commitlog_sync_period_in_ms
+milliseconds.
+
+*Default Value:* periodic
+
+``commitlog_sync_period_in_ms``
+-------------------------------
+
+*Default Value:* 10000
+
+``periodic_commitlog_sync_lag_block_in_ms``
+-------------------------------------------
+*This option is commented out by default.*
+
+When in periodic commitlog mode, the number of milliseconds to block writes
+while waiting for a slow disk flush to complete.
+
+``commitlog_segment_size_in_mb``
+--------------------------------
+
+The size of the individual commitlog file segments.  A commitlog
+segment may be archived, deleted, or recycled once all the data
+in it (potentially from each columnfamily in the system) has been
+flushed to sstables.
+
+The default size is 32, which is almost always fine, but if you are
+archiving commitlog segments (see commitlog_archiving.properties),
+then you probably want a finer granularity of archiving; 8 or 16 MB
+is reasonable.
+Max mutation size is also configurable via max_mutation_size_in_kb setting in
+cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024.
+This should be positive and less than 2048.
+
+NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must
+be set to at least twice the size of max_mutation_size_in_kb / 1024
+
+
+*Default Value:* 32
+
+``commitlog_compression``
+-------------------------
+*This option is commented out by default.*
+
+Compression to apply to the commit log. If omitted, the commit log
+will be written uncompressed.  LZ4, Snappy, and Deflate compressors
+are supported.
+
+*Default Value (complex option)*::
+
+    #   - class_name: LZ4Compressor
+    #     parameters:
+    #         -
+
+``table``
+---------
+*This option is commented out by default.*
+Compression to apply to SSTables as they flush for compressed tables.
+Note that tables without compression enabled do not respect this flag.
+
+As high ratio compressors like LZ4HC, Zstd, and Deflate can potentially
+block flushes for too long, the default is to flush with a known fast
+compressor in those cases. Options are:
+
+none : Flush without compressing blocks but while still doing checksums.
+fast : Flush with a fast compressor. If the table is already using a
+       fast compressor that compressor is used.
+
+*Default Value:* Always flush with the same compressor that the table uses. This
+
+``flush_compression``
+---------------------
+*This option is commented out by default.*
+       was the pre 4.0 behavior.
+
+
+*Default Value:* fast
+
+``seed_provider``
+-----------------
+
+any class that implements the SeedProvider interface and has a
+constructor that takes a Map<String, String> of parameters will do.
+
+*Default Value (complex option)*::
+
+        # Addresses of hosts that are deemed contact points. 
+        # Cassandra nodes use this list of hosts to find each other and learn
+        # the topology of the ring.  You must change this if you are running
+        # multiple nodes!
+        - class_name: org.apache.cassandra.locator.SimpleSeedProvider
+          parameters:
+              # seeds is actually a comma-delimited list of addresses.
+              # Ex: "<ip1>,<ip2>,<ip3>"
+              - seeds: "127.0.0.1:7000"
+
+``concurrent_reads``
+--------------------
+For workloads with more data than can fit in memory, Cassandra's
+bottleneck will be reads that need to fetch data from
+disk. "concurrent_reads" should be set to (16 * number_of_drives) in
+order to allow the operations to enqueue low enough in the stack
+that the OS and drives can reorder them. Same applies to
+"concurrent_counter_writes", since counter writes read the current
+values before incrementing and writing them back.
+
+On the other hand, since writes are almost never IO bound, the ideal
+number of "concurrent_writes" is dependent on the number of cores in
+your system; (8 * number_of_cores) is a good rule of thumb.
+
+*Default Value:* 32
+
+``concurrent_writes``
+---------------------
+
+*Default Value:* 32
+
+``concurrent_counter_writes``
+-----------------------------
+
+*Default Value:* 32
+
+``concurrent_materialized_view_writes``
+---------------------------------------
+
+For materialized view writes, as there is a read involved, so this should
+be limited by the less of concurrent reads or concurrent writes.
+
+*Default Value:* 32
+
+``networking_cache_size_in_mb``
+-------------------------------
+*This option is commented out by default.*
+
+Maximum memory to use for inter-node and client-server networking buffers.
+
+Defaults to the smaller of 1/16 of heap or 128MB. This pool is allocated off-heap,
+so is in addition to the memory allocated for heap. The cache also has on-heap
+overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size
+if the default 64k chunk size is used).
+Memory is only allocated when needed.
+
+*Default Value:* 128
+
+``file_cache_enabled``
+----------------------
+*This option is commented out by default.*
+
+Enable the sstable chunk cache.  The chunk cache will store recently accessed
+sections of the sstable in-memory as uncompressed buffers.
+
+*Default Value:* false
+
+``file_cache_size_in_mb``
+-------------------------
+*This option is commented out by default.*
+
+Maximum memory to use for sstable chunk cache and buffer pooling.
+32MB of this are reserved for pooling buffers, the rest is used for chunk cache
+that holds uncompressed sstable chunks.
+Defaults to the smaller of 1/4 of heap or 512MB. This pool is allocated off-heap,
+so is in addition to the memory allocated for heap. The cache also has on-heap
+overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size
+if the default 64k chunk size is used).
+Memory is only allocated when needed.
+
+*Default Value:* 512
+
+``buffer_pool_use_heap_if_exhausted``
+-------------------------------------
+*This option is commented out by default.*
+
+Flag indicating whether to allocate on or off heap when the sstable buffer
+pool is exhausted, that is when it has exceeded the maximum memory
+file_cache_size_in_mb, beyond which it will not cache buffers but allocate on request.
+
+
+*Default Value:* true
+
+``disk_optimization_strategy``
+------------------------------
+*This option is commented out by default.*
+
+The strategy for optimizing disk read
+Possible values are:
+ssd (for solid state disks, the default)
+spinning (for spinning disks)
+
+*Default Value:* ssd
+
+``memtable_heap_space_in_mb``
+-----------------------------
+*This option is commented out by default.*
+
+Total permitted memory to use for memtables. Cassandra will stop
+accepting writes when the limit is exceeded until a flush completes,
+and will trigger a flush based on memtable_cleanup_threshold
+If omitted, Cassandra will set both to 1/4 the size of the heap.
+
+*Default Value:* 2048
+
+``memtable_offheap_space_in_mb``
+--------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 2048
+
+``memtable_cleanup_threshold``
+------------------------------
+*This option is commented out by default.*
+
+memtable_cleanup_threshold is deprecated. The default calculation
+is the only reasonable choice. See the comments on  memtable_flush_writers
+for more information.
+
+Ratio of occupied non-flushing memtable size to total permitted size
+that will trigger a flush of the largest memtable. Larger mct will
+mean larger flushes and hence less compaction, but also less concurrent
+flush activity which can make it difficult to keep your disks fed
+under heavy write load.
+
+memtable_cleanup_threshold defaults to 1 / (memtable_flush_writers + 1)
+
+*Default Value:* 0.11
+
+``memtable_allocation_type``
+----------------------------
+
+Specify the way Cassandra allocates and manages memtable memory.
+Options are:
+
+heap_buffers
+  on heap nio buffers
+
+offheap_buffers
+  off heap (direct) nio buffers
+
+offheap_objects
+   off heap objects
+
+*Default Value:* heap_buffers
+
+``repair_session_space_in_mb``
+------------------------------
+*This option is commented out by default.*
+
+Limit memory usage for Merkle tree calculations during repairs. The default
+is 1/16th of the available heap. The main tradeoff is that smaller trees
+have less resolution, which can lead to over-streaming data. If you see heap
+pressure during repairs, consider lowering this, but you cannot go below
+one megabyte. If you see lots of over-streaming, consider raising
+this or using subrange repair.
+
+For more details see https://issues.apache.org/jira/browse/CASSANDRA-14096.
+
+
+``commitlog_total_space_in_mb``
+-------------------------------
+*This option is commented out by default.*
+
+Total space to use for commit logs on disk.
+
+If space gets above this value, Cassandra will flush every dirty CF
+in the oldest segment and remove it.  So a small total commitlog space
+will tend to cause more flush activity on less-active columnfamilies.
+
+The default value is the smaller of 8192, and 1/4 of the total space
+of the commitlog volume.
+
+
+*Default Value:* 8192
+
+``memtable_flush_writers``
+--------------------------
+*This option is commented out by default.*
+
+This sets the number of memtable flush writer threads per disk
+as well as the total number of memtables that can be flushed concurrently.
+These are generally a combination of compute and IO bound.
+
+Memtable flushing is more CPU efficient than memtable ingest and a single thread
+can keep up with the ingest rate of a whole server on a single fast disk
+until it temporarily becomes IO bound under contention typically with compaction.
+At that point you need multiple flush threads. At some point in the future
+it may become CPU bound all the time.
+
+You can tell if flushing is falling behind using the MemtablePool.BlockedOnAllocation
+metric which should be 0, but will be non-zero if threads are blocked waiting on flushing
+to free memory.
+
+memtable_flush_writers defaults to two for a single data directory.
+This means that two  memtables can be flushed concurrently to the single data directory.
+If you have multiple data directories the default is one memtable flushing at a time
+but the flush will use a thread per data directory so you will get two or more writers.
+
+Two is generally enough to flush on a fast disk [array] mounted as a single data directory.
+Adding more flush writers will result in smaller more frequent flushes that introduce more
+compaction overhead.
+
+There is a direct tradeoff between number of memtables that can be flushed concurrently
+and flush size and frequency. More is not better you just need enough flush writers
+to never stall waiting for flushing to free memory.
+
+
+*Default Value:* 2
+
+``cdc_total_space_in_mb``
+-------------------------
+*This option is commented out by default.*
+
+Total space to use for change-data-capture logs on disk.
+
+If space gets above this value, Cassandra will throw WriteTimeoutException
+on Mutations including tables with CDC enabled. A CDCCompactor is responsible
+for parsing the raw CDC logs and deleting them when parsing is completed.
+
+The default value is the min of 4096 mb and 1/8th of the total space
+of the drive where cdc_raw_directory resides.
+
+*Default Value:* 4096
+
+``cdc_free_space_check_interval_ms``
+------------------------------------
+*This option is commented out by default.*
+
+When we hit our cdc_raw limit and the CDCCompactor is either running behind
+or experiencing backpressure, we check at the following interval to see if any
+new space for cdc-tracked tables has been made available. Default to 250ms
+
+*Default Value:* 250
+
+``index_summary_capacity_in_mb``
+--------------------------------
+
+A fixed memory pool size in MB for for SSTable index summaries. If left
+empty, this will default to 5% of the heap size. If the memory usage of
+all index summaries exceeds this limit, SSTables with low read rates will
+shrink their index summaries in order to meet this limit.  However, this
+is a best-effort process. In extreme conditions Cassandra may need to use
+more than this amount of memory.
+
+``index_summary_resize_interval_in_minutes``
+--------------------------------------------
+
+How frequently index summaries should be resampled.  This is done
+periodically to redistribute memory from the fixed-size pool to sstables
+proportional their recent read rates.  Setting to -1 will disable this
+process, leaving existing index summaries at their current sampling level.
+
+*Default Value:* 60
+
+``trickle_fsync``
+-----------------
+
+Whether to, when doing sequential writing, fsync() at intervals in
+order to force the operating system to flush the dirty
+buffers. Enable this to avoid sudden dirty buffer flushing from
+impacting read latencies. Almost always a good idea on SSDs; not
+necessarily on platters.
+
+*Default Value:* false
+
+``trickle_fsync_interval_in_kb``
+--------------------------------
+
+*Default Value:* 10240
+
+``storage_port``
+----------------
+
+TCP port, for commands and data
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.
+
+*Default Value:* 7000
+
+``ssl_storage_port``
+--------------------
+
+SSL port, for legacy encrypted communication. This property is unused unless enabled in
+server_encryption_options (see below). As of cassandra 4.0, this property is deprecated
+as a single port can be used for either/both secure and insecure connections.
+For security reasons, you should not expose this port to the internet. Firewall it if needed.
+
+*Default Value:* 7001
+
+``listen_address``
+------------------
+
+Address or interface to bind to and tell other Cassandra nodes to connect to.
+You _must_ change this if you want multiple nodes to be able to communicate!
+
+Set listen_address OR listen_interface, not both.
+
+Leaving it blank leaves it up to InetAddress.getLocalHost(). This
+will always do the Right Thing _if_ the node is properly configured
+(hostname, name resolution, etc), and the Right Thing is to use the
+address associated with the hostname (it might not be). If unresolvable
+it will fall back to InetAddress.getLoopbackAddress(), which is wrong for production systems.
+
+Setting listen_address to 0.0.0.0 is always wrong.
+
+
+*Default Value:* localhost
+
+``listen_interface``
+--------------------
+*This option is commented out by default.*
+
+Set listen_address OR listen_interface, not both. Interfaces must correspond
+to a single address, IP aliasing is not supported.
+
+*Default Value:* eth0
+
+``listen_interface_prefer_ipv6``
+--------------------------------
+*This option is commented out by default.*
+
+If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
+you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4
+address will be used. If true the first ipv6 address will be used. Defaults to false preferring
+ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.
+
+*Default Value:* false
+
+``broadcast_address``
+---------------------
+*This option is commented out by default.*
+
+Address to broadcast to other Cassandra nodes
+Leaving this blank will set it to the same value as listen_address
+
+*Default Value:* 1.2.3.4
+
+``listen_on_broadcast_address``
+-------------------------------
+*This option is commented out by default.*
+
+When using multiple physical network interfaces, set this
+to true to listen on broadcast_address in addition to
+the listen_address, allowing nodes to communicate in both
+interfaces.
+Ignore this property if the network configuration automatically
+routes  between the public and private networks such as EC2.
+
+*Default Value:* false
+
+``internode_authenticator``
+---------------------------
+*This option is commented out by default.*
+
+Internode authentication backend, implementing IInternodeAuthenticator;
+used to allow/disallow connections from peer nodes.
+
+*Default Value:* org.apache.cassandra.auth.AllowAllInternodeAuthenticator
+
+``start_native_transport``
+--------------------------
+
+Whether to start the native transport server.
+The address on which the native transport is bound is defined by rpc_address.
+
+*Default Value:* true
+
+``native_transport_port``
+-------------------------
+port for the CQL native transport to listen for clients on
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.
+
+*Default Value:* 9042
+
+``native_transport_port_ssl``
+-----------------------------
+*This option is commented out by default.*
+Enabling native transport encryption in client_encryption_options allows you to either use
+encryption for the standard port or to use a dedicated, additional port along with the unencrypted
+standard native_transport_port.
+Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption
+for native_transport_port. Setting native_transport_port_ssl to a different value
+from native_transport_port will use encryption for native_transport_port_ssl while
+keeping native_transport_port unencrypted.
+
+*Default Value:* 9142
+
+``native_transport_max_threads``
+--------------------------------
+*This option is commented out by default.*
+The maximum threads for handling requests (note that idle threads are stopped
+after 30 seconds so there is not corresponding minimum setting).
+
+*Default Value:* 128
+
+``native_transport_max_frame_size_in_mb``
+-----------------------------------------
+*This option is commented out by default.*
+
+The maximum size of allowed frame. Frame (requests) larger than this will
+be rejected as invalid. The default is 256MB. If you're changing this parameter,
+you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048.
+
+*Default Value:* 256
+
+``native_transport_max_concurrent_connections``
+-----------------------------------------------
+*This option is commented out by default.*
+
+The maximum number of concurrent client connections.
+The default is -1, which means unlimited.
+
+*Default Value:* -1
+
+``native_transport_max_concurrent_connections_per_ip``
+------------------------------------------------------
+*This option is commented out by default.*
+
+The maximum number of concurrent client connections per source ip.
+The default is -1, which means unlimited.
+
+*Default Value:* -1
+
+``native_transport_allow_older_protocols``
+------------------------------------------
+
+Controls whether Cassandra honors older, yet currently supported, protocol versions.
+The default is true, which means all supported protocols will be honored.
+
+*Default Value:* true
+
+``native_transport_idle_timeout_in_ms``
+---------------------------------------
+*This option is commented out by default.*
+
+Controls when idle client connections are closed. Idle connections are ones that had neither reads
+nor writes for a time period.
+
+Clients may implement heartbeats by sending OPTIONS native protocol message after a timeout, which
+will reset idle timeout timer on the server side. To close idle client connections, corresponding
+values for heartbeat intervals have to be set on the client side.
+
+Idle connection timeouts are disabled by default.
+
+*Default Value:* 60000
+
+``rpc_address``
+---------------
+
+The address or interface to bind the native transport server to.
+
+Set rpc_address OR rpc_interface, not both.
+
+Leaving rpc_address blank has the same effect as on listen_address
+(i.e. it will be based on the configured hostname of the node).
+
+Note that unlike listen_address, you can specify 0.0.0.0, but you must also
+set broadcast_rpc_address to a value other than 0.0.0.0.
+
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.
+
+*Default Value:* localhost
+
+``rpc_interface``
+-----------------
+*This option is commented out by default.*
+
+Set rpc_address OR rpc_interface, not both. Interfaces must correspond
+to a single address, IP aliasing is not supported.
+
+*Default Value:* eth1
+
+``rpc_interface_prefer_ipv6``
+-----------------------------
+*This option is commented out by default.*
+
+If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
+you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4
+address will be used. If true the first ipv6 address will be used. Defaults to false preferring
+ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.
+
+*Default Value:* false
+
+``broadcast_rpc_address``
+-------------------------
+*This option is commented out by default.*
+
+RPC address to broadcast to drivers and other Cassandra nodes. This cannot
+be set to 0.0.0.0. If left blank, this will be set to the value of
+rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must
+be set.
+
+*Default Value:* 1.2.3.4
+
+``rpc_keepalive``
+-----------------
+
+enable or disable keepalive on rpc/native connections
+
+*Default Value:* true
+
+``internode_send_buff_size_in_bytes``
+-------------------------------------
+*This option is commented out by default.*
+
+Uncomment to set socket buffer size for internode communication
+Note that when setting this, the buffer size is limited by net.core.wmem_max
+and when not setting it it is defined by net.ipv4.tcp_wmem
+See also:
+/proc/sys/net/core/wmem_max
+/proc/sys/net/core/rmem_max
+/proc/sys/net/ipv4/tcp_wmem
+/proc/sys/net/ipv4/tcp_wmem
+and 'man tcp'
+
+``internode_recv_buff_size_in_bytes``
+-------------------------------------
+*This option is commented out by default.*
+
+Uncomment to set socket buffer size for internode communication
+Note that when setting this, the buffer size is limited by net.core.wmem_max
+and when not setting it it is defined by net.ipv4.tcp_wmem
+
+``incremental_backups``
+-----------------------
+
+Set to true to have Cassandra create a hard link to each sstable
+flushed or streamed locally in a backups/ subdirectory of the
+keyspace data.  Removing these links is the operator's
+responsibility.
+
+*Default Value:* false
+
+``snapshot_before_compaction``
+------------------------------
+
+Whether or not to take a snapshot before each compaction.  Be
+careful using this option, since Cassandra won't clean up the
+snapshots for you.  Mostly useful if you're paranoid when there
+is a data format change.
+
+*Default Value:* false
+
+``auto_snapshot``
+-----------------
+
+Whether or not a snapshot is taken of the data before keyspace truncation
+or dropping of column families. The STRONGLY advised default of true 
+should be used to provide data safety. If you set this flag to false, you will
+lose data on truncation or drop.
+
+*Default Value:* true
+
+``snapshot_links_per_second``
+-----------------------------
+
+The act of creating or clearing a snapshot involves creating or removing
+potentially tens of thousands of links, which can cause significant performance
+impact, especially on consumer grade SSDs. A non-zero value here can
+be used to throttle these links to avoid negative performance impact of
+taking and clearing snapshots
+
+*Default Value:* 0
+
+``column_index_size_in_kb``
+---------------------------
+
+Granularity of the collation index of rows within a partition.
+Increase if your rows are large, or if you have a very large
+number of rows per partition.  The competing goals are these:
+
+- a smaller granularity means more index entries are generated
+  and looking up rows withing the partition by collation column
+  is faster
+- but, Cassandra will keep the collation index in memory for hot
+  rows (as part of the key cache), so a larger granularity means
+  you can cache more hot rows
+
+*Default Value:* 64
+
+``column_index_cache_size_in_kb``
+---------------------------------
+
+Per sstable indexed key cache entries (the collation index in memory
+mentioned above) exceeding this size will not be held on heap.
+This means that only partition information is held on heap and the
+index entries are read from disk.
+
+Note that this size refers to the size of the
+serialized index information and not the size of the partition.
+
+*Default Value:* 2
+
+``concurrent_compactors``
+-------------------------
+*This option is commented out by default.*
+
+Number of simultaneous compactions to allow, NOT including
+validation "compactions" for anti-entropy repair.  Simultaneous
+compactions can help preserve read performance in a mixed read/write
+workload, by mitigating the tendency of small sstables to accumulate
+during a single long running compactions. The default is usually
+fine and if you experience problems with compaction running too
+slowly or too fast, you should look at
+compaction_throughput_mb_per_sec first.
+
+concurrent_compactors defaults to the smaller of (number of disks,
+number of cores), with a minimum of 2 and a maximum of 8.
+
+If your data directories are backed by SSD, you should increase this
+to the number of cores.
+
+*Default Value:* 1
+
+``concurrent_validations``
+--------------------------
+*This option is commented out by default.*
+
+Number of simultaneous repair validations to allow. If not set or set to
+a value less than 1, it defaults to the value of concurrent_compactors.
+To set a value greeater than concurrent_compactors at startup, the system
+property cassandra.allow_unlimited_concurrent_validations must be set to
+true. To dynamically resize to a value > concurrent_compactors on a running
+node, first call the bypassConcurrentValidatorsLimit method on the
+org.apache.cassandra.db:type=StorageService mbean
+
+*Default Value:* 0
+
+``concurrent_materialized_view_builders``
+-----------------------------------------
+
+Number of simultaneous materialized view builder tasks to allow.
+
+*Default Value:* 1
+
+``compaction_throughput_mb_per_sec``
+------------------------------------
+
+Throttles compaction to the given total throughput across the entire
+system. The faster you insert data, the faster you need to compact in
+order to keep the sstable count down, but in general, setting this to
+16 to 32 times the rate you are inserting data is more than sufficient.
+Setting this to 0 disables throttling. Note that this accounts for all types
+of compaction, including validation compaction (building Merkle trees
+for repairs).
+
+*Default Value:* 64
+
+``sstable_preemptive_open_interval_in_mb``
+------------------------------------------
+
+When compacting, the replacement sstable(s) can be opened before they
+are completely written, and used in place of the prior sstables for
+any range that has been written. This helps to smoothly transfer reads 
+between the sstables, reducing page cache churn and keeping hot rows hot
+
+*Default Value:* 50
+
+``stream_entire_sstables``
+--------------------------
+*This option is commented out by default.*
+
+When enabled, permits Cassandra to zero-copy stream entire eligible
+SSTables between nodes, including every component.
+This speeds up the network transfer significantly subject to
+throttling specified by stream_throughput_outbound_megabits_per_sec.
+Enabling this will reduce the GC pressure on sending and receiving node.
+When unset, the default is enabled. While this feature tries to keep the
+disks balanced, it cannot guarantee it. This feature will be automatically
+disabled if internode encryption is enabled.
+
+*Default Value:* true
+
+``stream_throughput_outbound_megabits_per_sec``
+-----------------------------------------------
+*This option is commented out by default.*
+
+Throttles all outbound streaming file transfers on this node to the
+given total throughput in Mbps. This is necessary because Cassandra does
+mostly sequential IO when streaming data during bootstrap or repair, which
+can lead to saturating the network connection and degrading rpc performance.
+When unset, the default is 200 Mbps or 25 MB/s.
+
+*Default Value:* 200
+
+``inter_dc_stream_throughput_outbound_megabits_per_sec``
+--------------------------------------------------------
+*This option is commented out by default.*
+
+Throttles all streaming file transfer between the datacenters,
+this setting allows users to throttle inter dc stream throughput in addition
+to throttling all network stream traffic as configured with
+stream_throughput_outbound_megabits_per_sec
+When unset, the default is 200 Mbps or 25 MB/s
+
+*Default Value:* 200
+
+``read_request_timeout_in_ms``
+------------------------------
+
+How long the coordinator should wait for read operations to complete.
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 5000
+
+``range_request_timeout_in_ms``
+-------------------------------
+How long the coordinator should wait for seq or index scans to complete.
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 10000
+
+``write_request_timeout_in_ms``
+-------------------------------
+How long the coordinator should wait for writes to complete.
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 2000
+
+``counter_write_request_timeout_in_ms``
+---------------------------------------
+How long the coordinator should wait for counter writes to complete.
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 5000
+
+``cas_contention_timeout_in_ms``
+--------------------------------
+How long a coordinator should continue to retry a CAS operation
+that contends with other proposals for the same row.
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 1000
+
+``truncate_request_timeout_in_ms``
+----------------------------------
+How long the coordinator should wait for truncates to complete
+(This can be much longer, because unless auto_snapshot is disabled
+we need to flush first so we can snapshot before removing the data.)
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 60000
+
+``request_timeout_in_ms``
+-------------------------
+The default timeout for other, miscellaneous operations.
+Lowest acceptable value is 10 ms.
+
+*Default Value:* 10000
+
+``internode_application_send_queue_capacity_in_bytes``
+------------------------------------------------------
+*This option is commented out by default.*
+
+Defensive settings for protecting Cassandra from true network partitions.
+See (CASSANDRA-14358) for details.
+
+The amount of time to wait for internode tcp connections to establish.
+internode_tcp_connect_timeout_in_ms = 2000
+
+The amount of time unacknowledged data is allowed on a connection before we throw out the connection
+Note this is only supported on Linux + epoll, and it appears to behave oddly above a setting of 30000
+(it takes much longer than 30s) as of Linux 4.12. If you want something that high set this to 0
+which picks up the OS default and configure the net.ipv4.tcp_retries2 sysctl to be ~8.
+internode_tcp_user_timeout_in_ms = 30000
+
+The amount of time unacknowledged data is allowed on a streaming connection.
+The default is 5 minutes. Increase it or set it to 0 in order to increase the timeout.
+internode_streaming_tcp_user_timeout_in_ms = 300000
+
+The maximum continuous period a connection may be unwritable in application space
+internode_application_timeout_in_ms = 30000
+
+Global, per-endpoint and per-connection limits imposed on messages queued for delivery to other nodes
+and waiting to be processed on arrival from other nodes in the cluster.  These limits are applied to the on-wire
+size of the message being sent or received.
+
+The basic per-link limit is consumed in isolation before any endpoint or global limit is imposed.
+Each node-pair has three links: urgent, small and large.  So any given node may have a maximum of
+N*3*(internode_application_send_queue_capacity_in_bytes+internode_application_receive_queue_capacity_in_bytes)
+messages queued without any coordination between them although in practice, with token-aware routing, only RF*tokens
+nodes should need to communicate with significant bandwidth.
+
+The per-endpoint limit is imposed on all messages exceeding the per-link limit, simultaneously with the global limit,
+on all links to or from a single node in the cluster.
+The global limit is imposed on all messages exceeding the per-link limit, simultaneously with the per-endpoint limit,
+on all links to or from any node in the cluster.
+
+
+*Default Value:* 4194304                       #4MiB
+
+``internode_application_send_queue_reserve_endpoint_capacity_in_bytes``
+-----------------------------------------------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 134217728    #128MiB
+
+``internode_application_send_queue_reserve_global_capacity_in_bytes``
+---------------------------------------------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 536870912      #512MiB
+
+``internode_application_receive_queue_capacity_in_bytes``
+---------------------------------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 4194304                    #4MiB
+
+``internode_application_receive_queue_reserve_endpoint_capacity_in_bytes``
+--------------------------------------------------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 134217728 #128MiB
+
+``internode_application_receive_queue_reserve_global_capacity_in_bytes``
+------------------------------------------------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 536870912   #512MiB
+
+``slow_query_log_timeout_in_ms``
+--------------------------------
+
+
+How long before a node logs slow queries. Select queries that take longer than
+this timeout to execute, will generate an aggregated log message, so that slow queries
+can be identified. Set this value to zero to disable slow query logging.
+
+*Default Value:* 500
+
+``cross_node_timeout``
+----------------------
+*This option is commented out by default.*
+
+Enable operation timeout information exchange between nodes to accurately
+measure request timeouts.  If disabled, replicas will assume that requests
+were forwarded to them instantly by the coordinator, which means that
+under overload conditions we will waste that much extra time processing 
+already-timed-out requests.
+
+Warning: It is generally assumed that users have setup NTP on their clusters, and that clocks are modestly in sync, 
+since this is a requirement for general correctness of last write wins.
+
+*Default Value:* true
+
+``streaming_keep_alive_period_in_secs``
+---------------------------------------
+*This option is commented out by default.*
+
+Set keep-alive period for streaming
+This node will send a keep-alive message periodically with this period.
+If the node does not receive a keep-alive message from the peer for
+2 keep-alive cycles the stream session times out and fail
+Default value is 300s (5 minutes), which means stalled stream
+times out in 10 minutes by default
+
+*Default Value:* 300
+
+``streaming_connections_per_host``
+----------------------------------
+*This option is commented out by default.*
+
+Limit number of connections per host for streaming
+Increase this when you notice that joins are CPU-bound rather that network
+bound (for example a few nodes with big files).
+
+*Default Value:* 1
+
+``phi_convict_threshold``
+-------------------------
+*This option is commented out by default.*
+
+
+phi value that must be reached for a host to be marked down.
+most users should never need to adjust this.
+
+*Default Value:* 8
+
+``endpoint_snitch``
+-------------------
+
+endpoint_snitch -- Set this to a class that implements
+IEndpointSnitch.  The snitch has two functions:
+
+- it teaches Cassandra enough about your network topology to route
+  requests efficiently
+- it allows Cassandra to spread replicas around your cluster to avoid
+  correlated failures. It does this by grouping machines into
+  "datacenters" and "racks."  Cassandra will do its best not to have
+  more than one replica on the same "rack" (which may not actually
+  be a physical location)
+
+CASSANDRA WILL NOT ALLOW YOU TO SWITCH TO AN INCOMPATIBLE SNITCH
+ONCE DATA IS INSERTED INTO THE CLUSTER.  This would cause data loss.
+This means that if you start with the default SimpleSnitch, which
+locates every node on "rack1" in "datacenter1", your only options
+if you need to add another datacenter are GossipingPropertyFileSnitch
+(and the older PFS).  From there, if you want to migrate to an
+incompatible snitch like Ec2Snitch you can do it by adding new nodes
+under Ec2Snitch (which will locate them in a new "datacenter") and
+decommissioning the old ones.
+
+Out of the box, Cassandra provides:
+
+SimpleSnitch:
+   Treats Strategy order as proximity. This can improve cache
+   locality when disabling read repair.  Only appropriate for
+   single-datacenter deployments.
+
+GossipingPropertyFileSnitch
+   This should be your go-to snitch for production use.  The rack
+   and datacenter for the local node are defined in
+   cassandra-rackdc.properties and propagated to other nodes via
+   gossip.  If cassandra-topology.properties exists, it is used as a
+   fallback, allowing migration from the PropertyFileSnitch.
+
+PropertyFileSnitch:
+   Proximity is determined by rack and data center, which are
+   explicitly configured in cassandra-topology.properties.
+
+Ec2Snitch:
+   Appropriate for EC2 deployments in a single Region. Loads Region
+   and Availability Zone information from the EC2 API. The Region is
+   treated as the datacenter, and the Availability Zone as the rack.
+   Only private IPs are used, so this will not work across multiple
+   Regions.
+
+Ec2MultiRegionSnitch:
+   Uses public IPs as broadcast_address to allow cross-region
+   connectivity.  (Thus, you should set seed addresses to the public
+   IP as well.) You will need to open the storage_port or
+   ssl_storage_port on the public IP firewall.  (For intra-Region
+   traffic, Cassandra will switch to the private IP after
+   establishing a connection.)
+
+RackInferringSnitch:
+   Proximity is determined by rack and data center, which are
+   assumed to correspond to the 3rd and 2nd octet of each node's IP
+   address, respectively.  Unless this happens to match your
+   deployment conventions, this is best used as an example of
+   writing a custom Snitch class and is provided in that spirit.
+
+You can use a custom Snitch by setting this to the full class name
+of the snitch, which will be assumed to be on your classpath.
+
+*Default Value:* SimpleSnitch
+
+``dynamic_snitch_update_interval_in_ms``
+----------------------------------------
+
+controls how often to perform the more expensive part of host score
+calculation
+
+*Default Value:* 100 
+
+``dynamic_snitch_reset_interval_in_ms``
+---------------------------------------
+controls how often to reset all host scores, allowing a bad host to
+possibly recover
+
+*Default Value:* 600000
+
+``dynamic_snitch_badness_threshold``
+------------------------------------
+if set greater than zero, this will allow
+'pinning' of replicas to hosts in order to increase cache capacity.
+The badness threshold will control how much worse the pinned host has to be
+before the dynamic snitch will prefer other replicas over it.  This is
+expressed as a double which represents a percentage.  Thus, a value of
+0.2 means Cassandra would continue to prefer the static snitch values
+until the pinned host was 20% worse than the fastest.
+
+*Default Value:* 1.0
+
+``server_encryption_options``
+-----------------------------
+
+Configure server-to-server internode encryption
+
+JVM and netty defaults for supported SSL socket protocols and cipher suites can
+be replaced using custom encryption options. This is not recommended
+unless you have policies in place that dictate certain settings, or
+need to disable vulnerable ciphers or protocols in case the JVM cannot
+be updated.
+
+FIPS compliant settings can be configured at JVM level and should not
+involve changing encryption settings here:
+https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html
+
+**NOTE** this default configuration is an insecure configuration. If you need to
+enable server-to-server encryption generate server keystores (and truststores for mutual
+authentication) per:
+http://download.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore
+Then perform the following configuration changes:
+
+Step 1: Set internode_encryption=<dc|rack|all> and explicitly set optional=true. Restart all nodes
+
+Step 2: Set optional=false (or remove it) and if you generated truststores and want to use mutual
+auth set require_client_auth=true. Restart all nodes
+
+*Default Value (complex option)*::
+
+        # On outbound connections, determine which type of peers to securely connect to.
+        #   The available options are :
+        #     none : Do not encrypt outgoing connections
+        #     dc   : Encrypt connections to peers in other datacenters but not within datacenters
+        #     rack : Encrypt connections to peers in other racks but not within racks
+        #     all  : Always use encrypted connections
+        internode_encryption: none
+        # When set to true, encrypted and unencrypted connections are allowed on the storage_port
+        # This should _only be true_ while in unencrypted or transitional operation
+        # optional defaults to true if internode_encryption is none
+        # optional: true
+        # If enabled, will open up an encrypted listening socket on ssl_storage_port. Should only be used
+        # during upgrade to 4.0; otherwise, set to false.
+        enable_legacy_ssl_storage_port: false
+        # Set to a valid keystore if internode_encryption is dc, rack or all
+        keystore: conf/.keystore
+        keystore_password: cassandra
+        # Verify peer server certificates
+        require_client_auth: false
+        # Set to a valid trustore if require_client_auth is true
+        truststore: conf/.truststore
+        truststore_password: cassandra
+        # Verify that the host name in the certificate matches the connected host
+        require_endpoint_verification: false
+        # More advanced defaults:
+        # protocol: TLS
+        # store_type: JKS
+        # cipher_suites: [
+        #   TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
+        #   TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
+        #   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA,
+        #   TLS_RSA_WITH_AES_256_CBC_SHA
+        # ]
+
+``client_encryption_options``
+-----------------------------
+Configure client-to-server encryption.
+
+**NOTE** this default configuration is an insecure configuration. If you need to
+enable client-to-server encryption generate server keystores (and truststores for mutual
+authentication) per:
+http://download.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore
+Then perform the following configuration changes:
+
+Step 1: Set enabled=true and explicitly set optional=true. Restart all nodes
+
+Step 2: Set optional=false (or remove it) and if you generated truststores and want to use mutual
+auth set require_client_auth=true. Restart all nodes
+
+*Default Value (complex option)*::
+
+        # Enable client-to-server encryption
+        enabled: false
+        # When set to true, encrypted and unencrypted connections are allowed on the native_transport_port
+        # This should _only be true_ while in unencrypted or transitional operation
+        # optional defaults to true when enabled is false, and false when enabled is true.
+        # optional: true
+        # Set keystore and keystore_password to valid keystores if enabled is true
+        keystore: conf/.keystore
+        keystore_password: cassandra
+        # Verify client certificates
+        require_client_auth: false
+        # Set trustore and truststore_password if require_client_auth is true
+        # truststore: conf/.truststore
+        # truststore_password: cassandra
+        # More advanced defaults:
+        # protocol: TLS
+        # store_type: JKS
+        # cipher_suites: [
+        #   TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
+        #   TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
+        #   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA,
+        #   TLS_RSA_WITH_AES_256_CBC_SHA
+        # ]
+
+``internode_compression``
+-------------------------
+internode_compression controls whether traffic between nodes is
+compressed.
+Can be:
+
+all
+  all traffic is compressed
+
+dc
+  traffic between different datacenters is compressed
+
+none
+  nothing is compressed.
+
+*Default Value:* dc
+
+``inter_dc_tcp_nodelay``
+------------------------
+
+Enable or disable tcp_nodelay for inter-dc communication.
+Disabling it will result in larger (but fewer) network packets being sent,
+reducing overhead from the TCP protocol itself, at the cost of increasing
+latency if you block for cross-datacenter responses.
+
+*Default Value:* false
+
+``tracetype_query_ttl``
+-----------------------
+
+TTL for different trace types used during logging of the repair process.
+
+*Default Value:* 86400
+
+``tracetype_repair_ttl``
+------------------------
+
+*Default Value:* 604800
+
+``enable_user_defined_functions``
+---------------------------------
+
+If unset, all GC Pauses greater than gc_log_threshold_in_ms will log at
+INFO level
+UDFs (user defined functions) are disabled by default.
+As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code.
+
+*Default Value:* false
+
+``enable_scripted_user_defined_functions``
+------------------------------------------
+
+Enables scripted UDFs (JavaScript UDFs).
+Java UDFs are always enabled, if enable_user_defined_functions is true.
+Enable this option to be able to use UDFs with "language javascript" or any custom JSR-223 provider.
+This option has no effect, if enable_user_defined_functions is false.
+
+*Default Value:* false
+
+``windows_timer_interval``
+--------------------------
+
+The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation.
+Lowering this value on Windows can provide much tighter latency and better throughput, however
+some virtualized environments may see a negative performance impact from changing this setting
+below their system default. The sysinternals 'clockres' tool can confirm your system's default
+setting.
+
+*Default Value:* 1
+
+``transparent_data_encryption_options``
+---------------------------------------
+
+
+Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from
+a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by
+the "key_alias" is the only key that will be used for encrypt opertaions; previously used keys
+can still (and should!) be in the keystore and will be used on decrypt operations
+(to handle the case of key rotation).
+
+It is strongly recommended to download and install Java Cryptography Extension (JCE)
+Unlimited Strength Jurisdiction Policy Files for your version of the JDK.
+(current link: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)
+
+Currently, only the following file types are supported for transparent data encryption, although
+more are coming in future cassandra releases: commitlog, hints
+
+*Default Value (complex option)*::
+
+        enabled: false
+        chunk_length_kb: 64
+        cipher: AES/CBC/PKCS5Padding
+        key_alias: testing:1
+        # CBC IV length for AES needs to be 16 bytes (which is also the default size)
+        # iv_length: 16
+        key_provider:
+          - class_name: org.apache.cassandra.security.JKSKeyProvider
+            parameters:
+              - keystore: conf/.keystore
+                keystore_password: cassandra
+                store_type: JCEKS
+                key_password: cassandra
+
+``tombstone_warn_threshold``
+----------------------------
+
+####################
+SAFETY THRESHOLDS #
+####################
+
+When executing a scan, within or across a partition, we need to keep the
+tombstones seen in memory so we can return them to the coordinator, which
+will use them to make sure other replicas also know about the deleted rows.
+With workloads that generate a lot of tombstones, this can cause performance
+problems and even exaust the server heap.
+(http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets)
+Adjust the thresholds here if you understand the dangers and want to
+scan more tombstones anyway.  These thresholds may also be adjusted at runtime
+using the StorageService mbean.
+
+*Default Value:* 1000
+
+``tombstone_failure_threshold``
+-------------------------------
+
+*Default Value:* 100000
+
+``replica_filtering_protection``
+--------------------------------
+
+Filtering and secondary index queries at read consistency levels above ONE/LOCAL_ONE use a
+mechanism called replica filtering protection to ensure that results from stale replicas do
+not violate consistency. (See CASSANDRA-8272 and CASSANDRA-15907 for more details.) This
+mechanism materializes replica results by partition on-heap at the coordinator. The more possibly
+stale results returned by the replicas, the more rows materialized during the query.
+
+``batch_size_warn_threshold_in_kb``
+-----------------------------------
+
+Log WARN on any multiple-partition batch size exceeding this value. 5kb per batch by default.
+Caution should be taken on increasing the size of this threshold as it can lead to node instability.
+
+*Default Value:* 5
+
+``batch_size_fail_threshold_in_kb``
+-----------------------------------
+
+Fail any multiple-partition batch exceeding this value. 50kb (10x warn threshold) by default.
+
+*Default Value:* 50
+
+``unlogged_batch_across_partitions_warn_threshold``
+---------------------------------------------------
+
+Log WARN on any batches not of type LOGGED than span across more partitions than this limit
+
+*Default Value:* 10
+
+``compaction_large_partition_warning_threshold_mb``
+---------------------------------------------------
+
+Log a warning when compacting partitions larger than this value
+
+*Default Value:* 100
+
+``gc_log_threshold_in_ms``
+--------------------------
+*This option is commented out by default.*
+
+GC Pauses greater than 200 ms will be logged at INFO level
+This threshold can be adjusted to minimize logging if necessary
+
+*Default Value:* 200
+
+``gc_warn_threshold_in_ms``
+---------------------------
+*This option is commented out by default.*
+
+GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level
+Adjust the threshold based on your application throughput requirement. Setting to 0
+will deactivate the feature.
+
+*Default Value:* 1000
+
+``max_value_size_in_mb``
+------------------------
+*This option is commented out by default.*
+
+Maximum size of any value in SSTables. Safety measure to detect SSTable corruption
+early. Any value size larger than this threshold will result into marking an SSTable
+as corrupted. This should be positive and less than 2048.
+
+*Default Value:* 256
+
+``otc_coalescing_strategy``
+---------------------------
+*This option is commented out by default.*
+
+Coalescing Strategies #
+Coalescing multiples messages turns out to significantly boost message processing throughput (think doubling or more).
+On bare metal, the floor for packet processing throughput is high enough that many applications won't notice, but in
+virtualized environments, the point at which an application can be bound by network packet processing can be
+surprisingly low compared to the throughput of task processing that is possible inside a VM. It's not that bare metal
+doesn't benefit from coalescing messages, it's that the number of packets a bare metal network interface can process
+is sufficient for many applications such that no load starvation is experienced even without coalescing.
+There are other benefits to coalescing network messages that are harder to isolate with a simple metric like messages
+per second. By coalescing multiple tasks together, a network thread can process multiple messages for the cost of one
+trip to read from a socket, and all the task submission work can be done at the same time reducing context switching
+and increasing cache friendliness of network message processing.
+See CASSANDRA-8692 for details.
+
+Strategy to use for coalescing messages in OutboundTcpConnection.
+Can be fixed, movingaverage, timehorizon, disabled (default).
+You can also specify a subclass of CoalescingStrategies.CoalescingStrategy by name.
+
+*Default Value:* DISABLED
+
+``otc_coalescing_window_us``
+----------------------------
+*This option is commented out by default.*
+
+How many microseconds to wait for coalescing. For fixed strategy this is the amount of time after the first
+message is received before it will be sent with any accompanying messages. For moving average this is the
+maximum amount of time that will be waited as well as the interval at which messages must arrive on average
+for coalescing to be enabled.
+
+*Default Value:* 200
+
+``otc_coalescing_enough_coalesced_messages``
+--------------------------------------------
+*This option is commented out by default.*
+
+Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128.
+
+*Default Value:* 8
+
+``otc_backlog_expiration_interval_ms``
+--------------------------------------
+*This option is commented out by default.*
+
+How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection.
+Expiration is done if messages are piling up in the backlog. Droppable messages are expired to free the memory
+taken by expired messages. The interval should be between 0 and 1000, and in most installations the default value
+will be appropriate. A smaller value could potentially expire messages slightly sooner at the expense of more CPU
+time and queue contention while iterating the backlog of messages.
+An interval of 0 disables any wait time, which is the behavior of former Cassandra versions.
+
+
+*Default Value:* 200
+
+``ideal_consistency_level``
+---------------------------
+*This option is commented out by default.*
+
+Track a metric per keyspace indicating whether replication achieved the ideal consistency
+level for writes without timing out. This is different from the consistency level requested by
+each write which may be lower in order to facilitate availability.
+
+*Default Value:* EACH_QUORUM
+
+``automatic_sstable_upgrade``
+-----------------------------
+*This option is commented out by default.*
+
+Automatically upgrade sstables after upgrade - if there is no ordinary compaction to do, the
+oldest non-upgraded sstable will get upgraded to the latest version
+
+*Default Value:* false
+
+``max_concurrent_automatic_sstable_upgrades``
+---------------------------------------------
+*This option is commented out by default.*
+Limit the number of concurrent sstable upgrades
+
+*Default Value:* 1
+
+``audit_logging_options``
+-------------------------
+
+Audit logging - Logs every incoming CQL command request, authentication to a node. See the docs
+on audit_logging for full details about the various configuration options.
+
+``full_query_logging_options``
+------------------------------
+*This option is commented out by default.*
+
+
+default options for full query logging - these can be overridden from command line when executing
+nodetool enablefullquerylog
+
+``corrupted_tombstone_strategy``
+--------------------------------
+*This option is commented out by default.*
+
+validate tombstones on reads and compaction
+can be either "disabled", "warn" or "exception"
+
+*Default Value:* disabled
+
+``diagnostic_events_enabled``
+-----------------------------
+
+Diagnostic Events #
+If enabled, diagnostic events can be helpful for troubleshooting operational issues. Emitted events contain details
+on internal state and temporal relationships across events, accessible by clients via JMX.
+
+*Default Value:* false
+
+``native_transport_flush_in_batches_legacy``
+--------------------------------------------
+*This option is commented out by default.*
+
+Use native transport TCP message coalescing. If on upgrade to 4.0 you found your throughput decreasing, and in
+particular you run an old kernel or have very fewer client connections, this option might be worth evaluating.
+
+*Default Value:* false
+
+``repaired_data_tracking_for_range_reads_enabled``
+--------------------------------------------------
+
+Enable tracking of repaired state of data during reads and comparison between replicas
+Mismatches between the repaired sets of replicas can be characterized as either confirmed
+or unconfirmed. In this context, unconfirmed indicates that the presence of pending repair
+sessions, unrepaired partition tombstones, or some other condition means that the disparity
+cannot be considered conclusive. Confirmed mismatches should be a trigger for investigation
+as they may be indicative of corruption or data loss.
+There are separate flags for range vs partition reads as single partition reads are only tracked
+when CL > 1 and a digest mismatch occurs. Currently, range queries don't use digests so if
+enabled for range reads, all range reads will include repaired data tracking. As this adds
+some overhead, operators may wish to disable it whilst still enabling it for partition reads
+
+*Default Value:* false
+
+``repaired_data_tracking_for_partition_reads_enabled``
+------------------------------------------------------
+
+*Default Value:* false
+
+``report_unconfirmed_repaired_data_mismatches``
+-----------------------------------------------
+If false, only confirmed mismatches will be reported. If true, a separate metric for unconfirmed
+mismatches will also be recorded. This is to avoid potential signal:noise issues are unconfirmed
+mismatches are less actionable than confirmed ones.
+
+*Default Value:* false
+
+``table_count_warn_threshold``
+------------------------------
+*This option is commented out by default.*
+
+Having many tables and/or keyspaces negatively affects performance of many operations in the
+cluster. When the number of tables/keyspaces in the cluster exceeds the following thresholds
+a client warning will be sent back to the user when creating a table or keyspace.
+
+*Default Value:* 150
+
+``keyspace_count_warn_threshold``
+---------------------------------
+*This option is commented out by default.*
+
+*Default Value:* 40
+
+``enable_materialized_views``
+-----------------------------
+
+########################
+EXPERIMENTAL FEATURES #
+########################
+
+Enables materialized view creation on this node.
+Materialized views are considered experimental and are not recommended for production use.
+
+*Default Value:* false
+
+``enable_sasi_indexes``
+-----------------------
+
+Enables SASI index creation on this node.
+SASI indexes are considered experimental and are not recommended for production use.
+
+*Default Value:* false
+
+``enable_transient_replication``
+--------------------------------
+
+Enables creation of transiently replicated keyspaces on this node.
+Transient replication is experimental and is not recommended for production use.
+
+*Default Value:* false
diff --git a/src/doc/4.0-rc1/_sources/configuration/index.rst.txt b/src/doc/4.0-rc1/_sources/configuration/index.rst.txt
new file mode 100644
index 0000000..ea34af3
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/configuration/index.rst.txt
@@ -0,0 +1,31 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Configuring Cassandra
+=====================
+
+This section describes how to configure Apache Cassandra.
+
+.. toctree::
+   :maxdepth: 1
+
+   cass_yaml_file
+   cass_rackdc_file
+   cass_env_sh_file
+   cass_topo_file
+   cass_cl_archive_file
+   cass_logback_xml_file
+   cass_jvm_options_file
diff --git a/src/doc/4.0-rc1/_sources/contactus.rst.txt b/src/doc/4.0-rc1/_sources/contactus.rst.txt
new file mode 100644
index 0000000..3ed9004
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/contactus.rst.txt
@@ -0,0 +1,50 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Contact us
+==========
+
+You can get in touch with the Cassandra community either via the mailing lists or :ref:`Slack rooms <slack>`.
+
+.. _mailing-lists:
+
+Mailing lists
+-------------
+
+The following mailing lists are available:
+
+- `Users <http://www.mail-archive.com/user@cassandra.apache.org/>`__ – General discussion list for users - `Subscribe
+  <user-subscribe@cassandra.apache.org>`__
+- `Developers <http://www.mail-archive.com/dev@cassandra.apache.org/>`__ – Development related discussion - `Subscribe
+  <dev-subscribe@cassandra.apache.org>`__
+- `Commits <http://www.mail-archive.com/commits@cassandra.apache.org/>`__ – Commit notification source repository -
+  `Subscribe <commits-subscribe@cassandra.apache.org>`__
+- `Client Libraries <http://www.mail-archive.com/client-dev@cassandra.apache.org/>`__ – Discussion related to the
+  development of idiomatic client APIs - `Subscribe <client-dev-subscribe@cassandra.apache.org>`__
+
+Subscribe by sending an email to the email address in the Subscribe links above. Follow the instructions in the welcome
+email to confirm your subscription. Make sure to keep the welcome email as it contains instructions on how to
+unsubscribe.
+
+.. _slack:
+
+Slack
+-----
+To chat with developers or users in real-time, join our rooms on `ASF Slack <https://s.apache.org/slack-invite>`__:
+
+- ``cassandra`` - for user questions and general discussions.
+- ``cassandra-dev`` - strictly for questions or discussions related to Cassandra development.
+
diff --git a/src/doc/4.0-rc1/_sources/cql/appendices.rst.txt b/src/doc/4.0-rc1/_sources/cql/appendices.rst.txt
new file mode 100644
index 0000000..456170d
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/appendices.rst.txt
@@ -0,0 +1,333 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+Appendices
+----------
+
+.. _appendix-A:
+
+Appendix A: CQL Keywords
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+CQL distinguishes between *reserved* and *non-reserved* keywords.
+Reserved keywords cannot be used as identifier, they are truly reserved
+for the language (but one can enclose a reserved keyword by
+double-quotes to use it as an identifier). Non-reserved keywords however
+only have a specific meaning in certain context but can used as
+identifier otherwise. The only *raison d’être* of these non-reserved
+keywords is convenience: some keyword are non-reserved when it was
+always easy for the parser to decide whether they were used as keywords
+or not.
+
++--------------------+-------------+
+| Keyword            | Reserved?   |
++====================+=============+
+| ``ADD``            | yes         |
++--------------------+-------------+
+| ``AGGREGATE``      | no          |
++--------------------+-------------+
+| ``ALL``            | no          |
++--------------------+-------------+
+| ``ALLOW``          | yes         |
++--------------------+-------------+
+| ``ALTER``          | yes         |
++--------------------+-------------+
+| ``AND``            | yes         |
++--------------------+-------------+
+| ``APPLY``          | yes         |
++--------------------+-------------+
+| ``AS``             | no          |
++--------------------+-------------+
+| ``ASC``            | yes         |
++--------------------+-------------+
+| ``ASCII``          | no          |
++--------------------+-------------+
+| ``AUTHORIZE``      | yes         |
++--------------------+-------------+
+| ``BATCH``          | yes         |
++--------------------+-------------+
+| ``BEGIN``          | yes         |
++--------------------+-------------+
+| ``BIGINT``         | no          |
++--------------------+-------------+
+| ``BLOB``           | no          |
++--------------------+-------------+
+| ``BOOLEAN``        | no          |
++--------------------+-------------+
+| ``BY``             | yes         |
++--------------------+-------------+
+| ``CALLED``         | no          |
++--------------------+-------------+
+| ``CLUSTERING``     | no          |
++--------------------+-------------+
+| ``COLUMNFAMILY``   | yes         |
++--------------------+-------------+
+| ``COMPACT``        | no          |
++--------------------+-------------+
+| ``CONTAINS``       | no          |
++--------------------+-------------+
+| ``COUNT``          | no          |
++--------------------+-------------+
+| ``COUNTER``        | no          |
++--------------------+-------------+
+| ``CREATE``         | yes         |
++--------------------+-------------+
+| ``CUSTOM``         | no          |
++--------------------+-------------+
+| ``DATE``           | no          |
++--------------------+-------------+
+| ``DECIMAL``        | no          |
++--------------------+-------------+
+| ``DELETE``         | yes         |
++--------------------+-------------+
+| ``DESC``           | yes         |
++--------------------+-------------+
+| ``DESCRIBE``       | yes         |
++--------------------+-------------+
+| ``DISTINCT``       | no          |
++--------------------+-------------+
+| ``DOUBLE``         | no          |
++--------------------+-------------+
+| ``DROP``           | yes         |
++--------------------+-------------+
+| ``ENTRIES``        | yes         |
++--------------------+-------------+
+| ``EXECUTE``        | yes         |
++--------------------+-------------+
+| ``EXISTS``         | no          |
++--------------------+-------------+
+| ``FILTERING``      | no          |
++--------------------+-------------+
+| ``FINALFUNC``      | no          |
++--------------------+-------------+
+| ``FLOAT``          | no          |
++--------------------+-------------+
+| ``FROM``           | yes         |
++--------------------+-------------+
+| ``FROZEN``         | no          |
++--------------------+-------------+
+| ``FULL``           | yes         |
++--------------------+-------------+
+| ``FUNCTION``       | no          |
++--------------------+-------------+
+| ``FUNCTIONS``      | no          |
++--------------------+-------------+
+| ``GRANT``          | yes         |
++--------------------+-------------+
+| ``IF``             | yes         |
++--------------------+-------------+
+| ``IN``             | yes         |
++--------------------+-------------+
+| ``INDEX``          | yes         |
++--------------------+-------------+
+| ``INET``           | no          |
++--------------------+-------------+
+| ``INFINITY``       | yes         |
++--------------------+-------------+
+| ``INITCOND``       | no          |
++--------------------+-------------+
+| ``INPUT``          | no          |
++--------------------+-------------+
+| ``INSERT``         | yes         |
++--------------------+-------------+
+| ``INT``            | no          |
++--------------------+-------------+
+| ``INTO``           | yes         |
++--------------------+-------------+
+| ``JSON``           | no          |
++--------------------+-------------+
+| ``KEY``            | no          |
++--------------------+-------------+
+| ``KEYS``           | no          |
++--------------------+-------------+
+| ``KEYSPACE``       | yes         |
++--------------------+-------------+
+| ``KEYSPACES``      | no          |
++--------------------+-------------+
+| ``LANGUAGE``       | no          |
++--------------------+-------------+
+| ``LIMIT``          | yes         |
++--------------------+-------------+
+| ``LIST``           | no          |
++--------------------+-------------+
+| ``LOGIN``          | no          |
++--------------------+-------------+
+| ``MAP``            | no          |
++--------------------+-------------+
+| ``MODIFY``         | yes         |
++--------------------+-------------+
+| ``NAN``            | yes         |
++--------------------+-------------+
+| ``NOLOGIN``        | no          |
++--------------------+-------------+
+| ``NORECURSIVE``    | yes         |
++--------------------+-------------+
+| ``NOSUPERUSER``    | no          |
++--------------------+-------------+
+| ``NOT``            | yes         |
++--------------------+-------------+
+| ``NULL``           | yes         |
++--------------------+-------------+
+| ``OF``             | yes         |
++--------------------+-------------+
+| ``ON``             | yes         |
++--------------------+-------------+
+| ``OPTIONS``        | no          |
++--------------------+-------------+
+| ``OR``             | yes         |
++--------------------+-------------+
+| ``ORDER``          | yes         |
++--------------------+-------------+
+| ``PASSWORD``       | no          |
++--------------------+-------------+
+| ``PERMISSION``     | no          |
++--------------------+-------------+
+| ``PERMISSIONS``    | no          |
++--------------------+-------------+
+| ``PRIMARY``        | yes         |
++--------------------+-------------+
+| ``RENAME``         | yes         |
++--------------------+-------------+
+| ``REPLACE``        | yes         |
++--------------------+-------------+
+| ``RETURNS``        | no          |
++--------------------+-------------+
+| ``REVOKE``         | yes         |
++--------------------+-------------+
+| ``ROLE``           | no          |
++--------------------+-------------+
+| ``ROLES``          | no          |
++--------------------+-------------+
+| ``SCHEMA``         | yes         |
++--------------------+-------------+
+| ``SELECT``         | yes         |
++--------------------+-------------+
+| ``SET``            | yes         |
++--------------------+-------------+
+| ``SFUNC``          | no          |
++--------------------+-------------+
+| ``SMALLINT``       | no          |
++--------------------+-------------+
+| ``STATIC``         | no          |
++--------------------+-------------+
+| ``STORAGE``        | no          |
++--------------------+-------------+
+| ``STYPE``          | no          |
++--------------------+-------------+
+| ``SUPERUSER``      | no          |
++--------------------+-------------+
+| ``TABLE``          | yes         |
++--------------------+-------------+
+| ``TEXT``           | no          |
++--------------------+-------------+
+| ``TIME``           | no          |
++--------------------+-------------+
+| ``TIMESTAMP``      | no          |
++--------------------+-------------+
+| ``TIMEUUID``       | no          |
++--------------------+-------------+
+| ``TINYINT``        | no          |
++--------------------+-------------+
+| ``TO``             | yes         |
++--------------------+-------------+
+| ``TOKEN``          | yes         |
++--------------------+-------------+
+| ``TRIGGER``        | no          |
++--------------------+-------------+
+| ``TRUNCATE``       | yes         |
++--------------------+-------------+
+| ``TTL``            | no          |
++--------------------+-------------+
+| ``TUPLE``          | no          |
++--------------------+-------------+
+| ``TYPE``           | no          |
++--------------------+-------------+
+| ``UNLOGGED``       | yes         |
++--------------------+-------------+
+| ``UPDATE``         | yes         |
++--------------------+-------------+
+| ``USE``            | yes         |
++--------------------+-------------+
+| ``USER``           | no          |
++--------------------+-------------+
+| ``USERS``          | no          |
++--------------------+-------------+
+| ``USING``          | yes         |
++--------------------+-------------+
+| ``UUID``           | no          |
++--------------------+-------------+
+| ``VALUES``         | no          |
++--------------------+-------------+
+| ``VARCHAR``        | no          |
++--------------------+-------------+
+| ``VARINT``         | no          |
++--------------------+-------------+
+| ``WHERE``          | yes         |
++--------------------+-------------+
+| ``WITH``           | yes         |
++--------------------+-------------+
+| ``WRITETIME``      | no          |
++--------------------+-------------+
+
+Appendix B: CQL Reserved Types
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following type names are not currently used by CQL, but are reserved
+for potential future use. User-defined types may not use reserved type
+names as their name.
+
++-----------------+
+| type            |
++=================+
+| ``bitstring``   |
++-----------------+
+| ``byte``        |
++-----------------+
+| ``complex``     |
++-----------------+
+| ``enum``        |
++-----------------+
+| ``interval``    |
++-----------------+
+| ``macaddr``     |
++-----------------+
+
+
+Appendix C: Dropping Compact Storage
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+``ALTER ... DROP COMPACT STORAGE`` statement makes Compact Tables CQL-compatible,
+exposing internal structure of Thrift/Compact Tables:
+
+- CQL-created Compact Tables that have no clustering columns, will expose an
+  additional clustering column ``column1`` with ``UTF8Type``.
+- CQL-created Compact Tables that had no regular columns, will expose a
+  regular column ``value`` with ``BytesType``.
+- For CQL-Created Compact Tables, all columns originally defined as
+  ``regular`` will be come ``static``
+- CQL-created Compact Tables that have clustering but have no regular
+  columns will have an empty value column (of ``EmptyType``)
+- SuperColumn Tables (can only be created through Thrift) will expose
+  a compact value map with an empty name.
+- Thrift-created Compact Tables will have types corresponding to their
+  Thrift definition.
+- If a row was written while a table was still compact but it has no live
+  cells due to later row or cell deletions, it may continue to be simply 
+  left out of query results, as is the normal behavior for compact tables.
+  Rows written after a table is fully CQL-compatible, if they have no live
+  cells but a live primary key, may be present in query results with null values.
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_sources/cql/changes.rst.txt b/src/doc/4.0-rc1/_sources/cql/changes.rst.txt
new file mode 100644
index 0000000..6691f15
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/changes.rst.txt
@@ -0,0 +1,211 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+Changes
+-------
+
+The following describes the changes in each version of CQL.
+
+3.4.5
+^^^^^
+
+- Adds support for arithmetic operators (:jira:`11935`)
+- Adds support for ``+`` and ``-`` operations on dates (:jira:`11936`)
+- Adds ``currentTimestamp``, ``currentDate``, ``currentTime`` and ``currentTimeUUID`` functions (:jira:`13132`)
+
+
+3.4.4
+^^^^^
+
+- ``ALTER TABLE`` ``ALTER`` has been removed; a column's type may not be changed after creation (:jira:`12443`).
+- ``ALTER TYPE`` ``ALTER`` has been removed; a field's type may not be changed after creation (:jira:`12443`).
+
+3.4.3
+^^^^^
+
+- Adds a new ``duration `` :ref:`data types <data-types>` (:jira:`11873`).
+- Support for ``GROUP BY`` (:jira:`10707`).
+- Adds a ``DEFAULT UNSET`` option for ``INSERT JSON`` to ignore omitted columns (:jira:`11424`).
+- Allows ``null`` as a legal value for TTL on insert and update. It will be treated as equivalent to inserting a 0 (:jira:`12216`).
+
+3.4.2
+^^^^^
+
+- If a table has a non zero ``default_time_to_live``, then explicitly specifying a TTL of 0 in an ``INSERT`` or
+  ``UPDATE`` statement will result in the new writes not having any expiration (that is, an explicit TTL of 0 cancels
+  the ``default_time_to_live``). This wasn't the case before and the ``default_time_to_live`` was applied even though a
+  TTL had been explicitly set.
+- ``ALTER TABLE`` ``ADD`` and ``DROP`` now allow multiple columns to be added/removed.
+- New ``PER PARTITION LIMIT`` option for ``SELECT`` statements (see `CASSANDRA-7017
+  <https://issues.apache.org/jira/browse/CASSANDRA-7017)>`__.
+- :ref:`User-defined functions <cql-functions>` can now instantiate ``UDTValue`` and ``TupleValue`` instances via the
+  new ``UDFContext`` interface (see `CASSANDRA-10818 <https://issues.apache.org/jira/browse/CASSANDRA-10818)>`__.
+- :ref:`User-defined types <udts>` may now be stored in a non-frozen form, allowing individual fields to be updated and
+  deleted in ``UPDATE`` statements and ``DELETE`` statements, respectively. (`CASSANDRA-7423
+  <https://issues.apache.org/jira/browse/CASSANDRA-7423)>`__).
+
+3.4.1
+^^^^^
+
+- Adds ``CAST`` functions.
+
+3.4.0
+^^^^^
+
+- Support for :ref:`materialized views <materialized-views>`.
+- ``DELETE`` support for inequality expressions and ``IN`` restrictions on any primary key columns.
+- ``UPDATE`` support for ``IN`` restrictions on any primary key columns.
+
+3.3.1
+^^^^^
+
+- The syntax ``TRUNCATE TABLE X`` is now accepted as an alias for ``TRUNCATE X``.
+
+3.3.0
+^^^^^
+
+- :ref:`User-defined functions and aggregates <cql-functions>` are now supported.
+- Allows double-dollar enclosed strings literals as an alternative to single-quote enclosed strings.
+- Introduces Roles to supersede user based authentication and access control
+- New ``date``, ``time``, ``tinyint`` and ``smallint`` :ref:`data types <data-types>` have been added.
+- :ref:`JSON support <cql-json>` has been added
+- Adds new time conversion functions and deprecate ``dateOf`` and ``unixTimestampOf``.
+
+3.2.0
+^^^^^
+
+- :ref:`User-defined types <udts>` supported.
+- ``CREATE INDEX`` now supports indexing collection columns, including indexing the keys of map collections through the
+  ``keys()`` function
+- Indexes on collections may be queried using the new ``CONTAINS`` and ``CONTAINS KEY`` operators
+- :ref:`Tuple types <tuples>` were added to hold fixed-length sets of typed positional fields.
+- ``DROP INDEX`` now supports optionally specifying a keyspace.
+
+3.1.7
+^^^^^
+
+- ``SELECT`` statements now support selecting multiple rows in a single partition using an ``IN`` clause on combinations
+  of clustering columns.
+- ``IF NOT EXISTS`` and ``IF EXISTS`` syntax is now supported by ``CREATE USER`` and ``DROP USER`` statements,
+  respectively.
+
+3.1.6
+^^^^^
+
+- A new ``uuid()`` method has been added.
+- Support for ``DELETE ... IF EXISTS`` syntax.
+
+3.1.5
+^^^^^
+
+- It is now possible to group clustering columns in a relation, see :ref:`WHERE <where-clause>` clauses.
+- Added support for :ref:`static columns <static-columns>`.
+
+3.1.4
+^^^^^
+
+- ``CREATE INDEX`` now allows specifying options when creating CUSTOM indexes.
+
+3.1.3
+^^^^^
+
+- Millisecond precision formats have been added to the :ref:`timestamp <timestamps>` parser.
+
+3.1.2
+^^^^^
+
+- ``NaN`` and ``Infinity`` has been added as valid float constants. They are now reserved keywords. In the unlikely case
+  you we using them as a column identifier (or keyspace/table one), you will now need to double quote them.
+
+3.1.1
+^^^^^
+
+- ``SELECT`` statement now allows listing the partition keys (using the ``DISTINCT`` modifier). See `CASSANDRA-4536
+  <https://issues.apache.org/jira/browse/CASSANDRA-4536>`__.
+- The syntax ``c IN ?`` is now supported in ``WHERE`` clauses. In that case, the value expected for the bind variable
+  will be a list of whatever type ``c`` is.
+- It is now possible to use named bind variables (using ``:name`` instead of ``?``).
+
+3.1.0
+^^^^^
+
+- ``ALTER TABLE`` ``DROP`` option added.
+- ``SELECT`` statement now supports aliases in select clause. Aliases in WHERE and ORDER BY clauses are not supported.
+- ``CREATE`` statements for ``KEYSPACE``, ``TABLE`` and ``INDEX`` now supports an ``IF NOT EXISTS`` condition.
+  Similarly, ``DROP`` statements support a ``IF EXISTS`` condition.
+- ``INSERT`` statements optionally supports a ``IF NOT EXISTS`` condition and ``UPDATE`` supports ``IF`` conditions.
+
+3.0.5
+^^^^^
+
+- ``SELECT``, ``UPDATE``, and ``DELETE`` statements now allow empty ``IN`` relations (see `CASSANDRA-5626
+  <https://issues.apache.org/jira/browse/CASSANDRA-5626)>`__.
+
+3.0.4
+^^^^^
+
+- Updated the syntax for custom :ref:`secondary indexes <secondary-indexes>`.
+- Non-equal condition on the partition key are now never supported, even for ordering partitioner as this was not
+  correct (the order was **not** the one of the type of the partition key). Instead, the ``token`` method should always
+  be used for range queries on the partition key (see :ref:`WHERE clauses <where-clause>`).
+
+3.0.3
+^^^^^
+
+- Support for custom :ref:`secondary indexes <secondary-indexes>` has been added.
+
+3.0.2
+^^^^^
+
+- Type validation for the :ref:`constants <constants>` has been fixed. For instance, the implementation used to allow
+  ``'2'`` as a valid value for an ``int`` column (interpreting it has the equivalent of ``2``), or ``42`` as a valid
+  ``blob`` value (in which case ``42`` was interpreted as an hexadecimal representation of the blob). This is no longer
+  the case, type validation of constants is now more strict. See the :ref:`data types <data-types>` section for details
+  on which constant is allowed for which type.
+- The type validation fixed of the previous point has lead to the introduction of blobs constants to allow the input of
+  blobs. Do note that while the input of blobs as strings constant is still supported by this version (to allow smoother
+  transition to blob constant), it is now deprecated and will be removed by a future version. If you were using strings
+  as blobs, you should thus update your client code ASAP to switch blob constants.
+- A number of functions to convert native types to blobs have also been introduced. Furthermore the token function is
+  now also allowed in select clauses. See the :ref:`section on functions <cql-functions>` for details.
+
+3.0.1
+^^^^^
+
+- Date strings (and timestamps) are no longer accepted as valid ``timeuuid`` values. Doing so was a bug in the sense
+  that date string are not valid ``timeuuid``, and it was thus resulting in `confusing behaviors
+  <https://issues.apache.org/jira/browse/CASSANDRA-4936>`__. However, the following new methods have been added to help
+  working with ``timeuuid``: ``now``, ``minTimeuuid``, ``maxTimeuuid`` ,
+  ``dateOf`` and ``unixTimestampOf``.
+- Float constants now support the exponent notation. In other words, ``4.2E10`` is now a valid floating point value.
+
+Versioning
+^^^^^^^^^^
+
+Versioning of the CQL language adheres to the `Semantic Versioning <http://semver.org>`__ guidelines. Versions take the
+form X.Y.Z where X, Y, and Z are integer values representing major, minor, and patch level respectively. There is no
+correlation between Cassandra release versions and the CQL language version.
+
+========= =============================================================================================================
+ version   description
+========= =============================================================================================================
+ Major     The major version *must* be bumped when backward incompatible changes are introduced. This should rarely
+           occur.
+ Minor     Minor version increments occur when new, but backward compatible, functionality is introduced.
+ Patch     The patch version is incremented when bugs are fixed.
+========= =============================================================================================================
diff --git a/src/doc/4.0-rc1/_sources/cql/ddl.rst.txt b/src/doc/4.0-rc1/_sources/cql/ddl.rst.txt
new file mode 100644
index 0000000..2f442e9
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/ddl.rst.txt
@@ -0,0 +1,1177 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _data-definition:
+
+Data Definition
+---------------
+
+CQL stores data in *tables*, whose schema defines the layout of said data in the table, and those tables are grouped in
+*keyspaces*. A keyspace defines a number of options that applies to all the tables it contains, most prominently of
+which is the :ref:`replication strategy <replication-strategy>` used by the keyspace. It is generally encouraged to use
+one keyspace by *application*, and thus many cluster may define only one keyspace.
+
+This section describes the statements used to create, modify, and remove those keyspace and tables.
+
+Common definitions
+^^^^^^^^^^^^^^^^^^
+
+The names of the keyspaces and tables are defined by the following grammar:
+
+.. productionlist::
+   keyspace_name: `name`
+   table_name: [ `keyspace_name` '.' ] `name`
+   name: `unquoted_name` | `quoted_name`
+   unquoted_name: re('[a-zA-Z_0-9]{1, 48}')
+   quoted_name: '"' `unquoted_name` '"'
+
+Both keyspace and table name should be comprised of only alphanumeric characters, cannot be empty and are limited in
+size to 48 characters (that limit exists mostly to avoid filenames (which may include the keyspace and table name) to go
+over the limits of certain file systems). By default, keyspace and table names are case insensitive (``myTable`` is
+equivalent to ``mytable``) but case sensitivity can be forced by using double-quotes (``"myTable"`` is different from
+``mytable``).
+
+Further, a table is always part of a keyspace and a table name can be provided fully-qualified by the keyspace it is
+part of. If is is not fully-qualified, the table is assumed to be in the *current* keyspace (see :ref:`USE statement
+<use-statement>`).
+
+Further, the valid names for columns is simply defined as:
+
+.. productionlist::
+   column_name: `identifier`
+
+We also define the notion of statement options for use in the following section:
+
+.. productionlist::
+   options: `option` ( AND `option` )*
+   option: `identifier` '=' ( `identifier` | `constant` | `map_literal` )
+
+.. _create-keyspace-statement:
+
+CREATE KEYSPACE
+^^^^^^^^^^^^^^^
+
+A keyspace is created using a ``CREATE KEYSPACE`` statement:
+
+.. productionlist::
+   create_keyspace_statement: CREATE KEYSPACE [ IF NOT EXISTS ] `keyspace_name` WITH `options`
+
+For instance::
+
+    CREATE KEYSPACE excelsior
+        WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
+
+    CREATE KEYSPACE excalibur
+        WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 3}
+        AND durable_writes = false;
+
+Attempting to create a keyspace that already exists will return an error unless the ``IF NOT EXISTS`` option is used. If
+it is used, the statement will be a no-op if the keyspace already exists.
+
+The supported ``options`` are:
+
+=================== ========== =========== ========= ===================================================================
+name                 kind       mandatory   default   description
+=================== ========== =========== ========= ===================================================================
+``replication``      *map*      yes                   The replication strategy and options to use for the keyspace (see
+                                                      details below).
+``durable_writes``   *simple*   no          true      Whether to use the commit log for updates on this keyspace
+                                                      (disable this option at your own risk!).
+=================== ========== =========== ========= ===================================================================
+
+The ``replication`` property is mandatory and must at least contains the ``'class'`` sub-option which defines the
+:ref:`replication strategy <replication-strategy>` class to use. The rest of the sub-options depends on what replication
+strategy is used. By default, Cassandra support the following ``'class'``:
+
+.. _replication-strategy:
+
+``SimpleStrategy``
+""""""""""""""""""
+
+A simple strategy that defines a replication factor for data to be spread
+across the entire cluster. This is generally not a wise choice for production
+because it does not respect datacenter layouts and can lead to wildly varying
+query latency. For a production ready strategy, see
+``NetworkTopologyStrategy``. ``SimpleStrategy`` supports a single mandatory argument:
+
+========================= ====== ======= =============================================
+sub-option                 type   since   description
+========================= ====== ======= =============================================
+``'replication_factor'``   int    all     The number of replicas to store per range
+========================= ====== ======= =============================================
+
+``NetworkTopologyStrategy``
+"""""""""""""""""""""""""""
+
+A production ready replication strategy that allows to set the replication
+factor independently for each data-center. The rest of the sub-options are
+key-value pairs where a key is a data-center name and its value is the
+associated replication factor. Options:
+
+===================================== ====== ====== =============================================
+sub-option                             type   since  description
+===================================== ====== ====== =============================================
+``'<datacenter>'``                     int    all    The number of replicas to store per range in
+                                                     the provided datacenter.
+``'replication_factor'``               int    4.0    The number of replicas to use as a default
+                                                     per datacenter if not specifically provided.
+                                                     Note that this always defers to existing
+                                                     definitions or explicit datacenter settings.
+                                                     For example, to have three replicas per
+                                                     datacenter, supply this with a value of 3.
+===================================== ====== ====== =============================================
+
+Note that when ``ALTER`` ing keyspaces and supplying ``replication_factor``,
+auto-expansion will only *add* new datacenters for safety, it will not alter
+existing datacenters or remove any even if they are no longer in the cluster.
+If you want to remove datacenters while still supplying ``replication_factor``,
+explicitly zero out the datacenter you want to have zero replicas.
+
+An example of auto-expanding datacenters with two datacenters: ``DC1`` and ``DC2``::
+
+    CREATE KEYSPACE excalibur
+        WITH replication = {'class': 'NetworkTopologyStrategy', 'replication_factor' : 3}
+
+    DESCRIBE KEYSPACE excalibur
+        CREATE KEYSPACE excalibur WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': '3', 'DC2': '3'} AND durable_writes = true;
+
+
+An example of auto-expanding and overriding a datacenter::
+
+    CREATE KEYSPACE excalibur
+        WITH replication = {'class': 'NetworkTopologyStrategy', 'replication_factor' : 3, 'DC2': 2}
+
+    DESCRIBE KEYSPACE excalibur
+        CREATE KEYSPACE excalibur WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': '3', 'DC2': '2'} AND durable_writes = true;
+
+An example that excludes a datacenter while using ``replication_factor``::
+
+    CREATE KEYSPACE excalibur
+        WITH replication = {'class': 'NetworkTopologyStrategy', 'replication_factor' : 3, 'DC2': 0} ;
+
+    DESCRIBE KEYSPACE excalibur
+        CREATE KEYSPACE excalibur WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': '3'} AND durable_writes = true;
+
+If transient replication has been enabled, transient replicas can be configured for both
+``SimpleStrategy`` and ``NetworkTopologyStrategy`` by defining replication factors in the format ``'<total_replicas>/<transient_replicas>'``
+
+For instance, this keyspace will have 3 replicas in DC1, 1 of which is transient, and 5 replicas in DC2, 2 of which are transient::
+
+    CREATE KEYSPACE some_keysopace
+               WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1' : '3/1'', 'DC2' : '5/2'};
+
+.. _use-statement:
+
+USE
+^^^
+
+The ``USE`` statement allows to change the *current* keyspace (for the *connection* on which it is executed). A number
+of objects in CQL are bound to a keyspace (tables, user-defined types, functions, ...) and the current keyspace is the
+default keyspace used when those objects are referred without a fully-qualified name (that is, without being prefixed a
+keyspace name). A ``USE`` statement simply takes the keyspace to use as current as argument:
+
+.. productionlist::
+   use_statement: USE `keyspace_name`
+
+.. _alter-keyspace-statement:
+
+ALTER KEYSPACE
+^^^^^^^^^^^^^^
+
+An ``ALTER KEYSPACE`` statement allows to modify the options of a keyspace:
+
+.. productionlist::
+   alter_keyspace_statement: ALTER KEYSPACE `keyspace_name` WITH `options`
+
+For instance::
+
+    ALTER KEYSPACE Excelsior
+        WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 4};
+
+The supported options are the same than for :ref:`creating a keyspace <create-keyspace-statement>`.
+
+.. _drop-keyspace-statement:
+
+DROP KEYSPACE
+^^^^^^^^^^^^^
+
+Dropping a keyspace can be done using the ``DROP KEYSPACE`` statement:
+
+.. productionlist::
+   drop_keyspace_statement: DROP KEYSPACE [ IF EXISTS ] `keyspace_name`
+
+For instance::
+
+    DROP KEYSPACE Excelsior;
+
+Dropping a keyspace results in the immediate, irreversible removal of that keyspace, including all the tables, UTD and
+functions in it, and all the data contained in those tables.
+
+If the keyspace does not exists, the statement will return an error, unless ``IF EXISTS`` is used in which case the
+operation is a no-op.
+
+.. _create-table-statement:
+
+CREATE TABLE
+^^^^^^^^^^^^
+
+Creating a new table uses the ``CREATE TABLE`` statement:
+
+.. productionlist::
+   create_table_statement: CREATE TABLE [ IF NOT EXISTS ] `table_name`
+                         : '('
+                         :     `column_definition`
+                         :     ( ',' `column_definition` )*
+                         :     [ ',' PRIMARY KEY '(' `primary_key` ')' ]
+                         : ')' [ WITH `table_options` ]
+   column_definition: `column_name` `cql_type` [ STATIC ] [ PRIMARY KEY]
+   primary_key: `partition_key` [ ',' `clustering_columns` ]
+   partition_key: `column_name`
+                : | '(' `column_name` ( ',' `column_name` )* ')'
+   clustering_columns: `column_name` ( ',' `column_name` )*
+   table_options: CLUSTERING ORDER BY '(' `clustering_order` ')' [ AND `options` ]
+                   : | `options`
+   clustering_order: `column_name` (ASC | DESC) ( ',' `column_name` (ASC | DESC) )*
+
+For instance::
+
+    CREATE TABLE monkeySpecies (
+        species text PRIMARY KEY,
+        common_name text,
+        population varint,
+        average_size int
+    ) WITH comment='Important biological records';
+
+    CREATE TABLE timeline (
+        userid uuid,
+        posted_month int,
+        posted_time uuid,
+        body text,
+        posted_by text,
+        PRIMARY KEY (userid, posted_month, posted_time)
+    ) WITH compaction = { 'class' : 'LeveledCompactionStrategy' };
+
+    CREATE TABLE loads (
+        machine inet,
+        cpu int,
+        mtime timeuuid,
+        load float,
+        PRIMARY KEY ((machine, cpu), mtime)
+    ) WITH CLUSTERING ORDER BY (mtime DESC);
+
+A CQL table has a name and is composed of a set of *rows*. Creating a table amounts to defining which :ref:`columns
+<column-definition>` the rows will be composed, which of those columns compose the :ref:`primary key <primary-key>`, as
+well as optional :ref:`options <create-table-options>` for the table.
+
+Attempting to create an already existing table will return an error unless the ``IF NOT EXISTS`` directive is used. If
+it is used, the statement will be a no-op if the table already exists.
+
+
+.. _column-definition:
+
+Column definitions
+~~~~~~~~~~~~~~~~~~
+
+Every rows in a CQL table has a set of predefined columns defined at the time of the table creation (or added later
+using an :ref:`alter statement<alter-table-statement>`).
+
+A :token:`column_definition` is primarily comprised of the name of the column defined and it's :ref:`type <data-types>`,
+which restrict which values are accepted for that column. Additionally, a column definition can have the following
+modifiers:
+
+``STATIC``
+    it declares the column as being a :ref:`static column <static-columns>`.
+
+``PRIMARY KEY``
+    it declares the column as being the sole component of the :ref:`primary key <primary-key>` of the table.
+
+.. _static-columns:
+
+Static columns
+``````````````
+Some columns can be declared as ``STATIC`` in a table definition. A column that is static will be “shared” by all the
+rows belonging to the same partition (having the same :ref:`partition key <partition-key>`). For instance::
+
+    CREATE TABLE t (
+        pk int,
+        t int,
+        v text,
+        s text static,
+        PRIMARY KEY (pk, t)
+    );
+
+    INSERT INTO t (pk, t, v, s) VALUES (0, 0, 'val0', 'static0');
+    INSERT INTO t (pk, t, v, s) VALUES (0, 1, 'val1', 'static1');
+
+    SELECT * FROM t;
+       pk | t | v      | s
+      ----+---+--------+-----------
+       0  | 0 | 'val0' | 'static1'
+       0  | 1 | 'val1' | 'static1'
+
+As can be seen, the ``s`` value is the same (``static1``) for both of the row in the partition (the partition key in
+that example being ``pk``, both rows are in that same partition): the 2nd insertion has overridden the value for ``s``.
+
+The use of static columns as the following restrictions:
+
+- a table without clustering columns cannot have static columns (in a table without clustering columns, every partition
+  has only one row, and so every column is inherently static).
+- only non ``PRIMARY KEY`` columns can be static.
+
+.. _primary-key:
+
+The Primary key
+~~~~~~~~~~~~~~~
+
+Within a table, a row is uniquely identified by its ``PRIMARY KEY``, and hence all table **must** define a PRIMARY KEY
+(and only one). A ``PRIMARY KEY`` definition is composed of one or more of the columns defined in the table.
+Syntactically, the primary key is defined the keywords ``PRIMARY KEY`` followed by comma-separated list of the column
+names composing it within parenthesis, but if the primary key has only one column, one can alternatively follow that
+column definition by the ``PRIMARY KEY`` keywords. The order of the columns in the primary key definition matter.
+
+A CQL primary key is composed of 2 parts:
+
+- the :ref:`partition key <partition-key>` part. It is the first component of the primary key definition. It can be a
+  single column or, using additional parenthesis, can be multiple columns. A table always have at least a partition key,
+  the smallest possible table definition is::
+
+      CREATE TABLE t (k text PRIMARY KEY);
+
+- the :ref:`clustering columns <clustering-columns>`. Those are the columns after the first component of the primary key
+  definition, and the order of those columns define the *clustering order*.
+
+Some example of primary key definition are:
+
+- ``PRIMARY KEY (a)``: ``a`` is the partition key and there is no clustering columns.
+- ``PRIMARY KEY (a, b, c)`` : ``a`` is the partition key and ``b`` and ``c`` are the clustering columns.
+- ``PRIMARY KEY ((a, b), c)`` : ``a`` and ``b`` compose the partition key (this is often called a *composite* partition
+  key) and ``c`` is the clustering column.
+
+
+.. _partition-key:
+
+The partition key
+`````````````````
+
+Within a table, CQL defines the notion of a *partition*. A partition is simply the set of rows that share the same value
+for their partition key. Note that if the partition key is composed of multiple columns, then rows belong to the same
+partition only they have the same values for all those partition key column. So for instance, given the following table
+definition and content::
+
+    CREATE TABLE t (
+        a int,
+        b int,
+        c int,
+        d int,
+        PRIMARY KEY ((a, b), c, d)
+    );
+
+    SELECT * FROM t;
+       a | b | c | d
+      ---+---+---+---
+       0 | 0 | 0 | 0    // row 1
+       0 | 0 | 1 | 1    // row 2
+       0 | 1 | 2 | 2    // row 3
+       0 | 1 | 3 | 3    // row 4
+       1 | 1 | 4 | 4    // row 5
+
+``row 1`` and ``row 2`` are in the same partition, ``row 3`` and ``row 4`` are also in the same partition (but a
+different one) and ``row 5`` is in yet another partition.
+
+Note that a table always has a partition key, and that if the table has no :ref:`clustering columns
+<clustering-columns>`, then every partition of that table is only comprised of a single row (since the primary key
+uniquely identifies rows and the primary key is equal to the partition key if there is no clustering columns).
+
+The most important property of partition is that all the rows belonging to the same partition are guarantee to be stored
+on the same set of replica nodes. In other words, the partition key of a table defines which of the rows will be
+localized together in the Cluster, and it is thus important to choose your partition key wisely so that rows that needs
+to be fetch together are in the same partition (so that querying those rows together require contacting a minimum of
+nodes).
+
+Please note however that there is a flip-side to this guarantee: as all rows sharing a partition key are guaranteed to
+be stored on the same set of replica node, a partition key that groups too much data can create a hotspot.
+
+Another useful property of a partition is that when writing data, all the updates belonging to a single partition are
+done *atomically* and in *isolation*, which is not the case across partitions.
+
+The proper choice of the partition key and clustering columns for a table is probably one of the most important aspect
+of data modeling in Cassandra, and it largely impact which queries can be performed, and how efficiently they are.
+
+
+.. _clustering-columns:
+
+The clustering columns
+``````````````````````
+
+The clustering columns of a table defines the clustering order for the partition of that table. For a given
+:ref:`partition <partition-key>`, all the rows are physically ordered inside Cassandra by that clustering order. For
+instance, given::
+
+    CREATE TABLE t (
+        a int,
+        b int,
+        c int,
+        PRIMARY KEY (a, b, c)
+    );
+
+    SELECT * FROM t;
+       a | b | c
+      ---+---+---
+       0 | 0 | 4     // row 1
+       0 | 1 | 9     // row 2
+       0 | 2 | 2     // row 3
+       0 | 3 | 3     // row 4
+
+then the rows (which all belong to the same partition) are all stored internally in the order of the values of their
+``b`` column (the order they are displayed above). So where the partition key of the table allows to group rows on the
+same replica set, the clustering columns controls how those rows are stored on the replica. That sorting allows the
+retrieval of a range of rows within a partition (for instance, in the example above, ``SELECT * FROM t WHERE a = 0 AND b
+> 1 and b <= 3``) to be very efficient.
+
+
+.. _create-table-options:
+
+Table options
+~~~~~~~~~~~~~
+
+A CQL table has a number of options that can be set at creation (and, for most of them, :ref:`altered
+<alter-table-statement>` later). These options are specified after the ``WITH`` keyword and are described
+in the following sections.
+
+.. _compact-tables:
+
+ COMPACT STORAGE tables
+ ``````````````
+
+.. warning:: It is strongly discouraged to create new tables with the ``COMPACT STORAGE`` option. Since Cassandra 3.0,
+    compact storage tables have the exact same layout internally than non compact ones (for the same schema obviously),
+    and declaring a table compact **only** creates artificial limitations on the table definition and usage. As of Cassandra
+    |version| ``COMPACT STORAGE`` cannot be removed.
+
+.. warning:: ``DROP COMPACT STORAGE`` is not recommended for production environments. There are still cases where a change of
+    behavior is observed. To name a few: (1) Hidden columns show up, which breaks ``SELECT *`` queries.
+    (2) ``DELETE v`` and ``UPDATE v WITH TTL`` would result into row removals in non-dense compact storage tables (CASSANDRA-16069)
+    (3) ``INSERT`` allows skipping clusterings, which are filled with nulls by default.
+
+ A *compact storage* table is one defined with the ``COMPACT STORAGE`` option. This option is only maintained for backward
+ compatibility for definitions created before CQL version 3 and shouldn't be used for new tables. 4.0 supports partially
+ ``COMPACT STORAGE``. There is no support for super column family. Since Cassandra 3.0, compact storage tables have the exact
+ same layout internally than non compact ones (for the same schema obviously), and declaring a table with this option creates
+ limitations for the table which are largely arbitrary (and exists for historical reasons). Amongst those limitation:
+
+ - a compact storage table cannot use collections nor static columns.
+ - if a compact storage table has at least one clustering column, then it must have *exactly* one column outside of the primary
+   key ones. This implies you cannot add or remove columns after creation in particular.
+ - a compact storage table is limited in the indexes it can create, and no materialized view can be created on it.
+
+But please bear in mind that the ``CLUSTERING ORDER`` option cannot be changed after table creation and
+has influences on the performance of some queries.
+
+.. _clustering-order:
+
+Reversing the clustering order
+``````````````````````````````
+
+The clustering order of a table is defined by the :ref:`clustering columns <clustering-columns>` of that table. By
+default, that ordering is based on natural order of those clustering order, but the ``CLUSTERING ORDER`` allows to
+change that clustering order to use the *reverse* natural order for some (potentially all) of the columns.
+
+The ``CLUSTERING ORDER`` option takes the comma-separated list of the clustering column, each with a ``ASC`` (for
+*ascendant*, e.g. the natural order) or ``DESC`` (for *descendant*, e.g. the reverse natural order). Note in particular
+that the default (if the ``CLUSTERING ORDER`` option is not used) is strictly equivalent to using the option with all
+clustering columns using the ``ASC`` modifier.
+
+Note that this option is basically a hint for the storage engine to change the order in which it stores the row but it
+has 3 visible consequences:
+
+# it limits which ``ORDER BY`` clause are allowed for :ref:`selects <select-statement>` on that table. You can only
+  order results by the clustering order or the reverse clustering order. Meaning that if a table has 2 clustering column
+  ``a`` and ``b`` and you defined ``WITH CLUSTERING ORDER (a DESC, b ASC)``, then in queries you will be allowed to use
+  ``ORDER BY (a DESC, b ASC)`` and (reverse clustering order) ``ORDER BY (a ASC, b DESC)`` but **not** ``ORDER BY (a
+  ASC, b ASC)`` (nor ``ORDER BY (a DESC, b DESC)``).
+# it also change the default order of results when queried (if no ``ORDER BY`` is provided). Results are always returned
+  in clustering order (within a partition).
+# it has a small performance impact on some queries as queries in reverse clustering order are slower than the one in
+  forward clustering order. In practice, this means that if you plan on querying mostly in the reverse natural order of
+  your columns (which is common with time series for instance where you often want data from the newest to the oldest),
+  it is an optimization to declare a descending clustering order.
+
+.. _create-table-general-options:
+
+Other table options
+```````````````````
+
+.. todo:: review (misses cdc if nothing else) and link to proper categories when appropriate (compaction for instance)
+
+A table supports the following options:
+
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| option                         | kind     | default     | description                                               |
++================================+==========+=============+===========================================================+
+| ``comment``                    | *simple* | none        | A free-form, human-readable comment.                      |
+| ``speculative_retry``          | *simple* | 99PERCENTILE| :ref:`Speculative retry options                           |
+|                                |          |             | <speculative-retry-options>`.                             |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``cdc``                        | *boolean*| false       | Create a Change Data Capture (CDC) log on the table.      |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``additional_write_policy``    | *simple* | 99PERCENTILE| :ref:`Speculative retry options                           |
+|                                |          |             | <speculative-retry-options>`.                             |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``gc_grace_seconds``           | *simple* | 864000      | Time to wait before garbage collecting tombstones         |
+|                                |          |             | (deletion markers).                                       |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``bloom_filter_fp_chance``     | *simple* | 0.00075     | The target probability of false positive of the sstable   |
+|                                |          |             | bloom filters. Said bloom filters will be sized to provide|
+|                                |          |             | the provided probability (thus lowering this value impact |
+|                                |          |             | the size of bloom filters in-memory and on-disk)          |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``default_time_to_live``       | *simple* | 0           | The default expiration time (“TTL”) in seconds for a      |
+|                                |          |             | table.                                                    |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``compaction``                 | *map*    | *see below* | :ref:`Compaction options <cql-compaction-options>`.       |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``compression``                | *map*    | *see below* | :ref:`Compression options <cql-compression-options>`.     |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``caching``                    | *map*    | *see below* | :ref:`Caching options <cql-caching-options>`.             |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``memtable_flush_period_in_ms``| *simple* | 0           | Time (in ms) before Cassandra flushes memtables to disk.  |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+| ``read_repair``                | *simple* | BLOCKING    | Sets read repair behavior (see below)                     |
++--------------------------------+----------+-------------+-----------------------------------------------------------+
+
+.. _speculative-retry-options:
+
+Speculative retry options
+#########################
+
+By default, Cassandra read coordinators only query as many replicas as necessary to satisfy
+consistency levels: one for consistency level ``ONE``, a quorum for ``QUORUM``, and so on.
+``speculative_retry`` determines when coordinators may query additional replicas, which is useful
+when replicas are slow or unresponsive.  Speculative retries are used to reduce the latency.  The speculative_retry option may be
+used to configure rapid read protection with which a coordinator sends more requests than needed to satisfy the Consistency level.
+
+Pre-4.0 speculative Retry Policy takes a single string as a parameter, this can be ``NONE``, ``ALWAYS``, ``99PERCENTILE`` (PERCENTILE), ``50MS`` (CUSTOM).
+
+Examples of setting speculative retry are:
+
+::
+
+  ALTER TABLE users WITH speculative_retry = '10ms';
+
+
+Or,
+
+::
+
+  ALTER TABLE users WITH speculative_retry = '99PERCENTILE';
+
+The problem with these settings is when a single host goes into an unavailable state this drags up the percentiles. This means if we
+are set to use ``p99`` alone, we might not speculate when we intended to to because the value at the specified percentile has gone so high.
+As a fix 4.0 adds  support for hybrid ``MIN()``, ``MAX()`` speculative retry policies (`CASSANDRA-14293
+<https://issues.apache.org/jira/browse/CASSANDRA-14293>`_). This means if the normal ``p99`` for the
+table is <50ms, we will still speculate at this value and not drag the tail latencies up... but if the ``p99th`` goes above what we know we
+should never exceed we use that instead.
+
+In 4.0 the values (case-insensitive) discussed in the following table are supported:
+
+============================ ======================== =============================================================================
+ Format                       Example                  Description
+============================ ======================== =============================================================================
+ ``XPERCENTILE``             90.5PERCENTILE           Coordinators record average per-table response times for all replicas.
+                                                      If a replica takes longer than ``X`` percent of this table's average
+                                                      response time, the coordinator queries an additional replica.
+                                                      ``X`` must be between 0 and 100.
+ ``XP``                      90.5P                    Synonym for ``XPERCENTILE``
+ ``Yms``                     25ms                     If a replica takes more than ``Y`` milliseconds to respond,
+                                                      the coordinator queries an additional replica.
+ ``MIN(XPERCENTILE,YMS)``    MIN(99PERCENTILE,35MS)   A hybrid policy that will use either the specified percentile or fixed
+                                                      milliseconds depending on which value is lower at the time of calculation.
+                                                      Parameters are ``XPERCENTILE``, ``XP``, or ``Yms``.
+                                                      This is helpful to help protect against a single slow instance; in the
+                                                      happy case the 99th percentile is normally lower than the specified
+                                                      fixed value however, a slow host may skew the percentile very high
+                                                      meaning the slower the cluster gets, the higher the value of the percentile,
+                                                      and the higher the calculated time used to determine if we should
+                                                      speculate or not. This allows us to set an upper limit that we want to
+                                                      speculate at, but avoid skewing the tail latencies by speculating at the
+                                                      lower value when the percentile is less than the specified fixed upper bound.
+ ``MAX(XPERCENTILE,YMS)``    MAX(90.5P,25ms)          A hybrid policy that will use either the specified percentile or fixed
+                                                      milliseconds depending on which value is higher at the time of calculation.
+ ``ALWAYS``                                           Coordinators always query all replicas.
+ ``NEVER``                                            Coordinators never query additional replicas.
+============================ =================== =============================================================================
+
+As of version 4.0 speculative retry allows more friendly params (`CASSANDRA-13876
+<https://issues.apache.org/jira/browse/CASSANDRA-13876>`_). The ``speculative_retry`` is more flexible with case. As an example a
+value does not have to be ``NONE``, and the following are supported alternatives.
+
+::
+
+  alter table users WITH speculative_retry = 'none';
+  alter table users WITH speculative_retry = 'None';
+
+The text component is case insensitive and for ``nPERCENTILE`` version 4.0 allows ``nP``, for instance ``99p``.
+In a hybrid value for speculative retry, one of the two values must be a fixed millisecond value and the other a percentile value.
+
+Some examples:
+
+::
+
+ min(99percentile,50ms)
+ max(99p,50MS)
+ MAX(99P,50ms)
+ MIN(99.9PERCENTILE,50ms)
+ max(90percentile,100MS)
+ MAX(100.0PERCENTILE,60ms)
+
+Two values of the same kind cannot be specified such as ``min(90percentile,99percentile)`` as it wouldn’t be a hybrid value.
+This setting does not affect reads with consistency level ``ALL`` because they already query all replicas.
+
+Note that frequently reading from additional replicas can hurt cluster performance.
+When in doubt, keep the default ``99PERCENTILE``.
+
+
+``additional_write_policy`` specifies the threshold at which a cheap quorum write will be upgraded to include transient replicas.
+
+.. _cql-compaction-options:
+
+Compaction options
+##################
+
+The ``compaction`` options must at least define the ``'class'`` sub-option, that defines the compaction strategy class
+to use. The supported class are ``'SizeTieredCompactionStrategy'`` (:ref:`STCS <STCS>`),
+``'LeveledCompactionStrategy'`` (:ref:`LCS <LCS>`) and ``'TimeWindowCompactionStrategy'`` (:ref:`TWCS <TWCS>`) (the
+``'DateTieredCompactionStrategy'`` is also supported but is deprecated and ``'TimeWindowCompactionStrategy'`` should be
+preferred instead). The default is ``'SizeTieredCompactionStrategy'``. Custom strategy can be provided by specifying the full class name as a :ref:`string constant
+<constants>`.
+
+All default strategies support a number of :ref:`common options <compaction-options>`, as well as options specific to
+the strategy chosen (see the section corresponding to your strategy for details: :ref:`STCS <stcs-options>`, :ref:`LCS
+<lcs-options>` and :ref:`TWCS <TWCS>`).
+
+.. _cql-compression-options:
+
+Compression options
+###################
+
+The ``compression`` options define if and how the sstables of the table are compressed. Compression is configured on a per-table
+basis as an optional argument to ``CREATE TABLE`` or ``ALTER TABLE``. The following sub-options are
+available:
+
+========================= =============== =============================================================================
+ Option                    Default         Description
+========================= =============== =============================================================================
+ ``class``                 LZ4Compressor   The compression algorithm to use. Default compressor are: LZ4Compressor,
+                                           SnappyCompressor, DeflateCompressor and ZstdCompressor. Use ``'enabled' : false`` to disable
+                                           compression. Custom compressor can be provided by specifying the full class
+                                           name as a “string constant”:#constants.
+
+ ``enabled``               true            Enable/disable sstable compression. If the ``enabled`` option is set to ``false`` no other
+                                           options must be specified.
+
+ ``chunk_length_in_kb``    64              On disk SSTables are compressed by block (to allow random reads). This
+                                           defines the size (in KB) of said block. Bigger values may improve the
+                                           compression rate, but increases the minimum size of data to be read from disk
+                                           for a read. The default value is an optimal value for compressing tables. Chunk length must
+                                           be a power of 2 because so is assumed so when computing the chunk number from an uncompressed
+                                           file offset.  Block size may be adjusted based on read/write access patterns such as:
+
+                                             - How much data is typically requested at once
+                                             - Average size of rows in the table
+
+ ``crc_check_chance``      1.0             Determines how likely Cassandra is to verify the checksum on each compression chunk during
+                                           reads.
+
+  ``compression_level``    3               Compression level. It is only applicable for ``ZstdCompressor`` and accepts values between
+                                           ``-131072`` and ``22``.
+========================= =============== =============================================================================
+
+
+For instance, to create a table with LZ4Compressor and a chunk_lenth_in_kb of 4KB::
+
+   CREATE TABLE simple (
+      id int,
+      key text,
+      value text,
+      PRIMARY KEY (key, value)
+   ) with compression = {'class': 'LZ4Compressor', 'chunk_length_in_kb': 4};
+
+
+.. _cql-caching-options:
+
+Caching options
+###############
+
+Caching optimizes the use of cache memory of a table. The cached data is weighed by size and access frequency. The ``caching``
+options allows to configure both the *key cache* and the *row cache* for the table. The following
+sub-options are available:
+
+======================== ========= ====================================================================================
+ Option                   Default   Description
+======================== ========= ====================================================================================
+ ``keys``                 ALL       Whether to cache keys (“key cache”) for this table. Valid values are: ``ALL`` and
+                                    ``NONE``.
+ ``rows_per_partition``   NONE      The amount of rows to cache per partition (“row cache”). If an integer ``n`` is
+                                    specified, the first ``n`` queried rows of a partition will be cached. Other
+                                    possible options are ``ALL``, to cache all rows of a queried partition, or ``NONE``
+                                    to disable row caching.
+======================== ========= ====================================================================================
+
+
+For instance, to create a table with both a key cache and 10 rows per partition::
+
+    CREATE TABLE simple (
+    id int,
+    key text,
+    value text,
+    PRIMARY KEY (key, value)
+    ) WITH caching = {'keys': 'ALL', 'rows_per_partition': 10};
+
+
+Read Repair options
+###################
+
+The ``read_repair`` options configures the read repair behavior to allow tuning for various performance and
+consistency behaviors. Two consistency properties are affected by read repair behavior.
+
+- Monotonic Quorum Reads: Provided by ``BLOCKING``. Monotonic quorum reads prevents reads from appearing to go back
+  in time in some circumstances. When monotonic quorum reads are not provided and a write fails to reach a quorum of
+  replicas, it may be visible in one read, and then disappear in a subsequent read.
+- Write Atomicity: Provided by ``NONE``. Write atomicity prevents reads from returning partially applied writes.
+  Cassandra attempts to provide partition level write atomicity, but since only the data covered by a SELECT statement
+  is repaired by a read repair, read repair can break write atomicity when data is read at a more granular level than it
+  is written. For example read repair can break write atomicity if you write multiple rows to a clustered partition in a
+  batch, but then select a single row by specifying the clustering column in a SELECT statement.
+
+The available read repair settings are:
+
+Blocking
+````````
+The default setting. When ``read_repair`` is set to ``BLOCKING``, and a read repair is triggered, the read will block
+on writes sent to other replicas until the CL is reached by the writes. Provides monotonic quorum reads, but not partition
+level write atomicity
+
+None
+````
+
+When ``read_repair`` is set to ``NONE``, the coordinator will reconcile any differences between replicas, but will not
+attempt to repair them. Provides partition level write atomicity, but not monotonic quorum reads.
+
+
+Other considerations:
+#####################
+
+- Adding new columns (see ``ALTER TABLE`` below) is a constant time operation. There is thus no need to try to
+  anticipate future usage when creating a table.
+
+.. _alter-table-statement:
+
+ALTER TABLE
+^^^^^^^^^^^
+
+Altering an existing table uses the ``ALTER TABLE`` statement:
+
+.. productionlist::
+   alter_table_statement: ALTER TABLE `table_name` `alter_table_instruction`
+   alter_table_instruction: ADD `column_name` `cql_type` ( ',' `column_name` `cql_type` )*
+                          : | DROP `column_name` ( `column_name` )*
+                          : | WITH `options`
+
+For instance::
+
+    ALTER TABLE addamsFamily ADD gravesite varchar;
+
+    ALTER TABLE addamsFamily
+           WITH comment = 'A most excellent and useful table';
+
+The ``ALTER TABLE`` statement can:
+
+- Add new column(s) to the table (through the ``ADD`` instruction). Note that the primary key of a table cannot be
+  changed and thus newly added column will, by extension, never be part of the primary key. Also note that :ref:`compact
+  tables <compact-tables>` have restrictions regarding column addition. Note that this is constant (in the amount of
+  data the cluster contains) time operation.
+- Remove column(s) from the table. This drops both the column and all its content, but note that while the column
+  becomes immediately unavailable, its content is only removed lazily during compaction. Please also see the warnings
+  below. Due to lazy removal, the altering itself is a constant (in the amount of data removed or contained in the
+  cluster) time operation.
+- Change some of the table options (through the ``WITH`` instruction). The :ref:`supported options
+  <create-table-options>` are the same that when creating a table (outside of ``CLUSTERING
+  ORDER`` that cannot be changed after creation). Note that setting any ``compaction`` sub-options has the effect of
+  erasing all previous ``compaction`` options, so you need to re-specify all the sub-options if you want to keep them.
+  The same note applies to the set of ``compression`` sub-options.
+
+.. warning:: Dropping a column assumes that the timestamps used for the value of this column are "real" timestamp in
+   microseconds. Using "real" timestamps in microseconds is the default is and is **strongly** recommended but as
+   Cassandra allows the client to provide any timestamp on any table it is theoretically possible to use another
+   convention. Please be aware that if you do so, dropping a column will not work correctly.
+
+.. warning:: Once a column is dropped, it is allowed to re-add a column with the same name than the dropped one
+   **unless** the type of the dropped column was a (non-frozen) column (due to an internal technical limitation).
+
+
+.. _drop-table-statement:
+
+DROP TABLE
+^^^^^^^^^^
+
+Dropping a table uses the ``DROP TABLE`` statement:
+
+.. productionlist::
+   drop_table_statement: DROP TABLE [ IF EXISTS ] `table_name`
+
+Dropping a table results in the immediate, irreversible removal of the table, including all data it contains.
+
+If the table does not exist, the statement will return an error, unless ``IF EXISTS`` is used in which case the
+operation is a no-op.
+
+.. _truncate-statement:
+
+TRUNCATE
+^^^^^^^^
+
+A table can be truncated using the ``TRUNCATE`` statement:
+
+.. productionlist::
+   truncate_statement: TRUNCATE [ TABLE ] `table_name`
+
+Note that ``TRUNCATE TABLE foo`` is allowed for consistency with other DDL statements but tables are the only object
+that can be truncated currently and so the ``TABLE`` keyword can be omitted.
+
+Truncating a table permanently removes all existing data from the table, but without removing the table itself.
+
+.. _describe-statements:
+
+DESCRIBE
+^^^^^^^^
+
+Statements used to outputs information about the connected Cassandra cluster,
+or about the data objects stored in the cluster.
+
+.. warning:: Describe statement resultset that exceed the page size are paged. If a schema changes is detected between
+   two pages the query will fail with an ``InvalidRequestException``. It is safe to retry the whole ``DESCRIBE``
+   statement after such an error.
+ 
+DESCRIBE KEYSPACES
+""""""""""""""""""
+
+Output the names of all keyspaces.
+
+.. productionlist::
+   describe_keyspaces_statement: DESCRIBE KEYSPACES
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+======================== ========= ====================================================================================
+
+DESCRIBE KEYSPACE
+"""""""""""""""""
+
+Output CQL commands that could be used to recreate the given keyspace, and the objects in it 
+(such as tables, types, functions, etc.).
+
+.. productionlist::
+   describe_keyspace_statement: DESCRIBE [ONLY] KEYSPACE [`keyspace_name`] [WITH INTERNALS]
+
+The ``keyspace_name`` argument may be omitted, in which case the current keyspace will be described.
+
+If ``WITH INTERNALS`` is specified, the output contains the table IDs and is adopted to represent the DDL necessary 
+to "re-create" dropped columns.
+
+If ``ONLY`` is specified, only the DDL to recreate the keyspace will be created. All keyspace elements, like tables,
+types, functions, etc will be omitted.
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+ create_statement             text  The CQL statement to use to recreate the schema element
+======================== ========= ====================================================================================
+
+DESCRIBE TABLES
+"""""""""""""""
+
+Output the names of all tables in the current keyspace, or in all keyspaces if there is no current keyspace.
+
+.. productionlist::
+   describe_tables_statement: DESCRIBE TABLES
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+======================== ========= ====================================================================================
+
+DESCRIBE TABLE
+""""""""""""""
+
+Output CQL commands that could be used to recreate the given table.
+
+.. productionlist::
+   describe_table_statement: DESCRIBE TABLE [`keyspace_name`.]`table_name` [WITH INTERNALS]
+
+If `WITH INTERNALS` is specified, the output contains the table ID and is adopted to represent the DDL necessary
+to "re-create" dropped columns.
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+ create_statement             text  The CQL statement to use to recreate the schema element
+======================== ========= ====================================================================================
+
+DESCRIBE INDEX
+""""""""""""""
+
+Output the CQL command that could be used to recreate the given index.
+
+.. productionlist::
+   describe_index_statement: DESCRIBE INDEX [`keyspace_name`.]`index_name`
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+ create_statement             text  The CQL statement to use to recreate the schema element
+======================== ========= ====================================================================================
+
+
+DESCRIBE MATERIALIZED VIEW
+""""""""""""""""""""""""""
+
+Output the CQL command that could be used to recreate the given materialized view.
+
+.. productionlist::
+   describe_materialized_view_statement: DESCRIBE MATERIALIZED VIEW [`keyspace_name`.]`view_name`
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+ create_statement             text  The CQL statement to use to recreate the schema element
+======================== ========= ====================================================================================
+
+DESCRIBE CLUSTER
+""""""""""""""""
+
+Output information about the connected Cassandra cluster, such as the cluster name, and the partitioner and snitch
+in use. When you are connected to a non-system keyspace, also shows endpoint-range ownership information for
+the Cassandra ring.
+
+.. productionlist::
+   describe_cluster_statement: DESCRIBE CLUSTER
+
+Returned columns:
+
+======================== ====================== ========================================================================
+ Columns                  Type                   Description
+======================== ====================== ========================================================================
+ cluster                                   text  The cluster name
+ partitioner                               text  The partitioner being used by the cluster
+ snitch                                    text  The snitch being used by the cluster
+ range_ownership          map<text, list<text>>  The CQL statement to use to recreate the schema element
+======================== ====================== ========================================================================
+
+DESCRIBE SCHEMA
+"""""""""""""""
+
+Output CQL commands that could be used to recreate the entire (non-system) schema.
+Works as though "DESCRIBE KEYSPACE k" was invoked for each non-system keyspace
+
+.. productionlist::
+   describe_schema_statement: DESCRIBE [FULL] SCHEMA [WITH INTERNALS]
+
+Use ``DESCRIBE FULL SCHEMA`` to include the system keyspaces.
+
+If ``WITH INTERNALS`` is specified, the output contains the table IDs and is adopted to represent the DDL necessary
+to "re-create" dropped columns.
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+ create_statement             text  The CQL statement to use to recreate the schema element
+======================== ========= ====================================================================================
+
+DESCRIBE TYPES
+""""""""""""""
+
+Output the names of all user-defined-types in the current keyspace, or in all keyspaces if there is no current keyspace.
+
+.. productionlist::
+   describe_types_statement: DESCRIBE TYPES
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+======================== ========= ====================================================================================
+
+DESCRIBE TYPE
+"""""""""""""
+
+Output the CQL command that could be used to recreate the given user-defined-type.
+
+.. productionlist::
+   describe_type_statement: DESCRIBE TYPE [`keyspace_name`.]`type_name`
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+ create_statement             text  The CQL statement to use to recreate the schema element
+======================== ========= ====================================================================================
+
+DESCRIBE FUNCTIONS
+""""""""""""""""""
+
+Output the names of all user-defined-functions in the current keyspace, or in all keyspaces if there is no current
+keyspace.
+
+.. productionlist::
+   describe_functions_statement: DESCRIBE FUNCTIONS
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+======================== ========= ====================================================================================
+
+DESCRIBE FUNCTION
+"""""""""""""""""
+
+Output the CQL command that could be used to recreate the given user-defined-function.
+
+.. productionlist::
+   describe_function_statement: DESCRIBE FUNCTION [`keyspace_name`.]`function_name`
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+ create_statement             text  The CQL statement to use to recreate the schema element
+======================== ========= ====================================================================================
+
+DESCRIBE AGGREGATES
+"""""""""""""""""""
+
+Output the names of all user-defined-aggregates in the current keyspace, or in all keyspaces if there is no current
+keyspace.
+
+.. productionlist::
+   describe_aggregates_statement: DESCRIBE AGGREGATES
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+======================== ========= ====================================================================================
+
+DESCRIBE AGGREGATE
+""""""""""""""""""
+
+Output the CQL command that could be used to recreate the given user-defined-aggregate.
+
+.. productionlist::
+   describe_aggregate_statement: DESCRIBE AGGREGATE [`keyspace_name`.]`aggregate_name`
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+ create_statement             text  The CQL statement to use to recreate the schema element
+======================== ========= ====================================================================================
+
+DESCRIBE object
+"""""""""""""""
+
+Output CQL commands that could be used to recreate the entire object schema, where object can be either a keyspace 
+or a table or an index or a materialized view (in this order).
+
+.. productionlist::
+   describe_object_statement: DESCRIBE `object_name` [WITH INTERNALS]
+
+If ``WITH INTERNALS`` is specified and ``object_name`` represents a keyspace or table the output contains the table IDs
+and is adopted to represent the DDL necessary to "re-create" dropped columns.
+
+``object_name`` cannot be any of the "describe what" qualifiers like "cluster", "table", etc.
+
+Returned columns:
+
+======================== ========= ====================================================================================
+ Columns                  Type      Description
+======================== ========= ====================================================================================
+ keyspace_name                text  The keyspace name
+ type                         text  The schema element type
+ name                         text  The schema element name
+ create_statement             text  The CQL statement to use to recreate the schema element
+======================== ========= ====================================================================================
+
diff --git a/src/doc/4.0-rc1/_sources/cql/definitions.rst.txt b/src/doc/4.0-rc1/_sources/cql/definitions.rst.txt
new file mode 100644
index 0000000..8ccb630
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/definitions.rst.txt
@@ -0,0 +1,236 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. _UUID: https://en.wikipedia.org/wiki/Universally_unique_identifier
+
+.. highlight:: cql
+
+Definitions
+-----------
+
+.. _conventions:
+
+Conventions
+^^^^^^^^^^^
+
+To aid in specifying the CQL syntax, we will use the following conventions in this document:
+
+- Language rules will be given in an informal `BNF variant
+  <http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form#Variants>`_ notation. In particular, we'll use square brakets
+  (``[ item ]``) for optional items, ``*`` and ``+`` for repeated items (where ``+`` imply at least one).
+- The grammar will also use the following convention for convenience: non-terminal term will be lowercase (and link to
+  their definition) while terminal keywords will be provided "all caps". Note however that keywords are
+  :ref:`identifiers` and are thus case insensitive in practice. We will also define some early construction using
+  regexp, which we'll indicate with ``re(<some regular expression>)``.
+- The grammar is provided for documentation purposes and leave some minor details out.  For instance, the comma on the
+  last column definition in a ``CREATE TABLE`` statement is optional but supported if present even though the grammar in
+  this document suggests otherwise. Also, not everything accepted by the grammar is necessarily valid CQL.
+- References to keywords or pieces of CQL code in running text will be shown in a ``fixed-width font``.
+
+
+.. _identifiers:
+
+Identifiers and keywords
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+The CQL language uses *identifiers* (or *names*) to identify tables, columns and other objects. An identifier can be either
+unquoted or quoted. The unquoted identifier is a token matching the regular expression ``[a-zA-Z][a-zA-Z0-9_]*``.
+In the case of quoted, the identity can contain non-ASCII characters between the quotation marks, with one exception that
+Cassandra does not accept non-ASCII characters, if the quoted identifier is used for keyspace name or table name.
+
+A number of such identifiers, like ``SELECT`` or ``WITH``, are *keywords*. They have a fixed meaning for the language
+and most are reserved. The list of those keywords can be found in :ref:`appendix-A`.
+
+Identifiers and (unquoted) keywords are case insensitive. Thus ``SELECT`` is the same than ``select`` or ``sElEcT``, and
+``myId`` is the same than ``myid`` or ``MYID``. A convention often used (in particular by the samples of this
+documentation) is to use upper case for keywords and lower case for other identifiers.
+
+There is a second kind of identifiers called *quoted identifiers* defined by enclosing an arbitrary sequence of
+characters (non empty) in double-quotes(``"``). Quoted identifiers are never keywords. Thus ``"select"`` is not a
+reserved keyword and can be used to refer to a column (note that using this is particularly advised), while ``select``
+would raise a parsing error. Also, contrarily to unquoted identifiers and keywords, quoted identifiers are case
+sensitive (``"My Quoted Id"`` is *different* from ``"my quoted id"``). A fully lowercase quoted identifier that matches
+``[a-zA-Z][a-zA-Z0-9_]*`` is however *equivalent* to the unquoted identifier obtained by removing the double-quote (so
+``"myid"`` is equivalent to ``myid`` and to ``myId`` but different from ``"myId"``).  Inside a quoted identifier, the
+double-quote character can be repeated to escape it, so ``"foo "" bar"`` is a valid identifier.
+
+.. note:: *quoted identifiers* allows to declare columns with arbitrary names, and those can sometime clash with
+   specific names used by the server. For instance, when using conditional update, the server will respond with a
+   result-set containing a special result named ``"[applied]"``. If you’ve declared a column with such a name, this
+   could potentially confuse some tools and should be avoided. In general, unquoted identifiers should be preferred but
+   if you use quoted identifiers, it is strongly advised to avoid any name enclosed by squared brackets (like
+   ``"[applied]"``) and any name that looks like a function call (like ``"f(x)"``).
+
+More formally, we have:
+
+.. productionlist::
+   identifier: `unquoted_identifier` | `quoted_identifier`
+   unquoted_identifier: re('[a-zA-Z][a-zA-Z0-9_]*')
+   quoted_identifier: '"' (any character where " can appear if doubled)+ '"'
+
+.. _constants:
+
+Constants
+^^^^^^^^^
+
+CQL defines the following kind of *constants*:
+
+.. productionlist::
+   constant: `string` | `integer` | `float` | `boolean` | `uuid` | `blob` | NULL
+   string: '\'' (any character where ' can appear if doubled)+ '\''
+         : '$$' (any character other than '$$') '$$'
+   integer: re('-?[0-9]+')
+   float: re('-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9+])?') | NAN | INFINITY
+   boolean: TRUE | FALSE
+   uuid: `hex`{8}-`hex`{4}-`hex`{4}-`hex`{4}-`hex`{12}
+   hex: re("[0-9a-fA-F]")
+   blob: '0' ('x' | 'X') `hex`+
+
+In other words:
+
+- A string constant is an arbitrary sequence of characters enclosed by single-quote(``'``). A single-quote
+  can be included by repeating it, e.g. ``'It''s raining today'``. Those are not to be confused with quoted
+  :ref:`identifiers` that use double-quotes. Alternatively, a string can be defined by enclosing the arbitrary sequence
+  of characters by two dollar characters, in which case single-quote can be used without escaping (``$$It's raining
+  today$$``). That latter form is often used when defining :ref:`user-defined functions <udfs>` to avoid having to
+  escape single-quote characters in function body (as they are more likely to occur than ``$$``).
+- Integer, float and boolean constant are defined as expected. Note however than float allows the special ``NaN`` and
+  ``Infinity`` constants.
+- CQL supports UUID_ constants.
+- Blobs content are provided in hexadecimal and prefixed by ``0x``.
+- The special ``NULL`` constant denotes the absence of value.
+
+For how these constants are typed, see the :ref:`data-types` section.
+
+Terms
+^^^^^
+
+CQL has the notion of a *term*, which denotes the kind of values that CQL support. Terms are defined by:
+
+.. productionlist::
+   term: `constant` | `literal` | `function_call` | `arithmetic_operation` | `type_hint` | `bind_marker`
+   literal: `collection_literal` | `udt_literal` | `tuple_literal`
+   function_call: `identifier` '(' [ `term` (',' `term`)* ] ')'
+   arithmetic_operation: '-' `term` | `term` ('+' | '-' | '*' | '/' | '%') `term`
+   type_hint: '(' `cql_type` `)` term
+   bind_marker: '?' | ':' `identifier`
+
+A term is thus one of:
+
+- A :ref:`constant <constants>`.
+- A literal for either :ref:`a collection <collections>`, :ref:`a user-defined type <udts>` or :ref:`a tuple <tuples>`
+  (see the linked sections for details).
+- A function call: see :ref:`the section on functions <cql-functions>` for details on which :ref:`native function
+  <native-functions>` exists and how to define your own :ref:`user-defined ones <udfs>`.
+- An arithmetic operation between terms. see :ref:`the section on arithmetic operations <arithmetic_operators>`
+- A *type hint*: see the :ref:`related section <type-hints>` for details.
+- A bind marker, which denotes a variable to be bound at execution time. See the section on :ref:`prepared-statements`
+  for details. A bind marker can be either anonymous (``?``) or named (``:some_name``). The latter form provides a more
+  convenient way to refer to the variable for binding it and should generally be preferred.
+
+
+Comments
+^^^^^^^^
+
+A comment in CQL is a line beginning by either double dashes (``--``) or double slash (``//``).
+
+Multi-line comments are also supported through enclosure within ``/*`` and ``*/`` (but nesting is not supported).
+
+::
+
+    -- This is a comment
+    // This is a comment too
+    /* This is
+       a multi-line comment */
+
+Statements
+^^^^^^^^^^
+
+CQL consists of statements that can be divided in the following categories:
+
+- :ref:`data-definition` statements, to define and change how the data is stored (keyspaces and tables).
+- :ref:`data-manipulation` statements, for selecting, inserting and deleting data.
+- :ref:`secondary-indexes` statements.
+- :ref:`materialized-views` statements.
+- :ref:`cql-roles` statements.
+- :ref:`cql-permissions` statements.
+- :ref:`User-Defined Functions <udfs>` statements.
+- :ref:`udts` statements.
+- :ref:`cql-triggers` statements.
+
+All the statements are listed below and are described in the rest of this documentation (see links above):
+
+.. productionlist::
+   cql_statement: `statement` [ ';' ]
+   statement: `ddl_statement`
+            : | `dml_statement`
+            : | `secondary_index_statement`
+            : | `materialized_view_statement`
+            : | `role_or_permission_statement`
+            : | `udf_statement`
+            : | `udt_statement`
+            : | `trigger_statement`
+   ddl_statement: `use_statement`
+                : | `create_keyspace_statement`
+                : | `alter_keyspace_statement`
+                : | `drop_keyspace_statement`
+                : | `create_table_statement`
+                : | `alter_table_statement`
+                : | `drop_table_statement`
+                : | `truncate_statement`
+    dml_statement: `select_statement`
+                 : | `insert_statement`
+                 : | `update_statement`
+                 : | `delete_statement`
+                 : | `batch_statement`
+    secondary_index_statement: `create_index_statement`
+                             : | `drop_index_statement`
+    materialized_view_statement: `create_materialized_view_statement`
+                               : | `drop_materialized_view_statement`
+    role_or_permission_statement: `create_role_statement`
+                                : | `alter_role_statement`
+                                : | `drop_role_statement`
+                                : | `grant_role_statement`
+                                : | `revoke_role_statement`
+                                : | `list_roles_statement`
+                                : | `grant_permission_statement`
+                                : | `revoke_permission_statement`
+                                : | `list_permissions_statement`
+                                : | `create_user_statement`
+                                : | `alter_user_statement`
+                                : | `drop_user_statement`
+                                : | `list_users_statement`
+    udf_statement: `create_function_statement`
+                 : | `drop_function_statement`
+                 : | `create_aggregate_statement`
+                 : | `drop_aggregate_statement`
+    udt_statement: `create_type_statement`
+                 : | `alter_type_statement`
+                 : | `drop_type_statement`
+    trigger_statement: `create_trigger_statement`
+                     : | `drop_trigger_statement`
+
+.. _prepared-statements:
+
+Prepared Statements
+^^^^^^^^^^^^^^^^^^^
+
+CQL supports *prepared statements*. Prepared statements are an optimization that allows to parse a query only once but
+execute it multiple times with different concrete values.
+
+Any statement that uses at least one bind marker (see :token:`bind_marker`) will need to be *prepared*. After which the statement
+can be *executed* by provided concrete values for each of its marker. The exact details of how a statement is prepared
+and then executed depends on the CQL driver used and you should refer to your driver documentation.
diff --git a/src/doc/4.0-rc1/_sources/cql/dml.rst.txt b/src/doc/4.0-rc1/_sources/cql/dml.rst.txt
new file mode 100644
index 0000000..1308de5
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/dml.rst.txt
@@ -0,0 +1,522 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _data-manipulation:
+
+Data Manipulation
+-----------------
+
+This section describes the statements supported by CQL to insert, update, delete and query data.
+
+.. _select-statement:
+
+SELECT
+^^^^^^
+
+Querying data from data is done using a ``SELECT`` statement:
+
+.. productionlist::
+   select_statement: SELECT [ JSON | DISTINCT ] ( `select_clause` | '*' )
+                   : FROM `table_name`
+                   : [ WHERE `where_clause` ]
+                   : [ GROUP BY `group_by_clause` ]
+                   : [ ORDER BY `ordering_clause` ]
+                   : [ PER PARTITION LIMIT (`integer` | `bind_marker`) ]
+                   : [ LIMIT (`integer` | `bind_marker`) ]
+                   : [ ALLOW FILTERING ]
+   select_clause: `selector` [ AS `identifier` ] ( ',' `selector` [ AS `identifier` ] )
+   selector: `column_name`
+           : | `term`
+           : | CAST '(' `selector` AS `cql_type` ')'
+           : | `function_name` '(' [ `selector` ( ',' `selector` )* ] ')'
+           : | COUNT '(' '*' ')'
+   where_clause: `relation` ( AND `relation` )*
+   relation: `column_name` `operator` `term`
+           : '(' `column_name` ( ',' `column_name` )* ')' `operator` `tuple_literal`
+           : TOKEN '(' `column_name` ( ',' `column_name` )* ')' `operator` `term`
+   operator: '=' | '<' | '>' | '<=' | '>=' | '!=' | IN | CONTAINS | CONTAINS KEY
+   group_by_clause: `column_name` ( ',' `column_name` )*
+   ordering_clause: `column_name` [ ASC | DESC ] ( ',' `column_name` [ ASC | DESC ] )*
+
+For instance::
+
+    SELECT name, occupation FROM users WHERE userid IN (199, 200, 207);
+    SELECT JSON name, occupation FROM users WHERE userid = 199;
+    SELECT name AS user_name, occupation AS user_occupation FROM users;
+
+    SELECT time, value
+    FROM events
+    WHERE event_type = 'myEvent'
+      AND time > '2011-02-03'
+      AND time <= '2012-01-01'
+
+    SELECT COUNT (*) AS user_count FROM users;
+
+The ``SELECT`` statements reads one or more columns for one or more rows in a table. It returns a result-set of the rows
+matching the request, where each row contains the values for the selection corresponding to the query. Additionally,
+:ref:`functions <cql-functions>` including :ref:`aggregation <aggregate-functions>` ones can be applied to the result.
+
+A ``SELECT`` statement contains at least a :ref:`selection clause <selection-clause>` and the name of the table on which
+the selection is on (note that CQL does **not** joins or sub-queries and thus a select statement only apply to a single
+table). In most case, a select will also have a :ref:`where clause <where-clause>` and it can optionally have additional
+clauses to :ref:`order <ordering-clause>` or :ref:`limit <limit-clause>` the results. Lastly, :ref:`queries that require
+filtering <allow-filtering>` can be allowed if the ``ALLOW FILTERING`` flag is provided.
+
+.. _selection-clause:
+
+Selection clause
+~~~~~~~~~~~~~~~~
+
+The :token:`select_clause` determines which columns needs to be queried and returned in the result-set, as well as any
+transformation to apply to this result before returning. It consists of a comma-separated list of *selectors* or,
+alternatively, of the wildcard character (``*``) to select all the columns defined in the table.
+
+Selectors
+`````````
+
+A :token:`selector` can be one of:
+
+- A column name of the table selected, to retrieve the values for that column.
+- A term, which is usually used nested inside other selectors like functions (if a term is selected directly, then the
+  corresponding column of the result-set will simply have the value of this term for every row returned).
+- A casting, which allows to convert a nested selector to a (compatible) type.
+- A function call, where the arguments are selector themselves. See the section on :ref:`functions <cql-functions>` for
+  more details.
+- The special call ``COUNT(*)`` to the :ref:`COUNT function <count-function>`, which counts all non-null results.
+
+Aliases
+```````
+
+Every *top-level* selector can also be aliased (using `AS`). If so, the name of the corresponding column in the result
+set will be that of the alias. For instance::
+
+    // Without alias
+    SELECT intAsBlob(4) FROM t;
+
+    //  intAsBlob(4)
+    // --------------
+    //  0x00000004
+
+    // With alias
+    SELECT intAsBlob(4) AS four FROM t;
+
+    //  four
+    // ------------
+    //  0x00000004
+
+.. note:: Currently, aliases aren't recognized anywhere else in the statement where they are used (not in the ``WHERE``
+   clause, not in the ``ORDER BY`` clause, ...). You must use the orignal column name instead.
+
+
+``WRITETIME`` and ``TTL`` function
+```````````````````````````````````
+
+Selection supports two special functions (that aren't allowed anywhere else): ``WRITETIME`` and ``TTL``. Both function
+take only one argument and that argument *must* be a column name (so for instance ``TTL(3)`` is invalid).
+
+Those functions allow to retrieve meta-information that are stored internally for each column, namely:
+
+- the timestamp of the value of the column for ``WRITETIME``.
+- the remaining time to live (in seconds) for the value of the column if it set to expire (and ``null`` otherwise).
+
+.. _where-clause:
+
+The ``WHERE`` clause
+~~~~~~~~~~~~~~~~~~~~
+
+The ``WHERE`` clause specifies which rows must be queried. It is composed of relations on the columns that are part of
+the ``PRIMARY KEY`` and/or have a `secondary index <#createIndexStmt>`__ defined on them.
+
+Not all relations are allowed in a query. For instance, non-equal relations (where ``IN`` is considered as an equal
+relation) on a partition key are not supported (but see the use of the ``TOKEN`` method below to do non-equal queries on
+the partition key). Moreover, for a given partition key, the clustering columns induce an ordering of rows and relations
+on them is restricted to the relations that allow to select a **contiguous** (for the ordering) set of rows. For
+instance, given::
+
+    CREATE TABLE posts (
+        userid text,
+        blog_title text,
+        posted_at timestamp,
+        entry_title text,
+        content text,
+        category int,
+        PRIMARY KEY (userid, blog_title, posted_at)
+    )
+
+The following query is allowed::
+
+    SELECT entry_title, content FROM posts
+     WHERE userid = 'john doe'
+       AND blog_title='John''s Blog'
+       AND posted_at >= '2012-01-01' AND posted_at < '2012-01-31'
+
+But the following one is not, as it does not select a contiguous set of rows (and we suppose no secondary indexes are
+set)::
+
+    // Needs a blog_title to be set to select ranges of posted_at
+    SELECT entry_title, content FROM posts
+     WHERE userid = 'john doe'
+       AND posted_at >= '2012-01-01' AND posted_at < '2012-01-31'
+
+When specifying relations, the ``TOKEN`` function can be used on the ``PARTITION KEY`` column to query. In that case,
+rows will be selected based on the token of their ``PARTITION_KEY`` rather than on the value. Note that the token of a
+key depends on the partitioner in use, and that in particular the RandomPartitioner won't yield a meaningful order. Also
+note that ordering partitioners always order token values by bytes (so even if the partition key is of type int,
+``token(-1) > token(0)`` in particular). Example::
+
+    SELECT * FROM posts
+     WHERE token(userid) > token('tom') AND token(userid) < token('bob')
+
+Moreover, the ``IN`` relation is only allowed on the last column of the partition key and on the last column of the full
+primary key.
+
+It is also possible to “group” ``CLUSTERING COLUMNS`` together in a relation using the tuple notation. For instance::
+
+    SELECT * FROM posts
+     WHERE userid = 'john doe'
+       AND (blog_title, posted_at) > ('John''s Blog', '2012-01-01')
+
+will request all rows that sorts after the one having “John's Blog” as ``blog_tile`` and '2012-01-01' for ``posted_at``
+in the clustering order. In particular, rows having a ``post_at <= '2012-01-01'`` will be returned as long as their
+``blog_title > 'John''s Blog'``, which would not be the case for::
+
+    SELECT * FROM posts
+     WHERE userid = 'john doe'
+       AND blog_title > 'John''s Blog'
+       AND posted_at > '2012-01-01'
+
+The tuple notation may also be used for ``IN`` clauses on clustering columns::
+
+    SELECT * FROM posts
+     WHERE userid = 'john doe'
+       AND (blog_title, posted_at) IN (('John''s Blog', '2012-01-01'), ('Extreme Chess', '2014-06-01'))
+
+The ``CONTAINS`` operator may only be used on collection columns (lists, sets, and maps). In the case of maps,
+``CONTAINS`` applies to the map values. The ``CONTAINS KEY`` operator may only be used on map columns and applies to the
+map keys.
+
+.. _group-by-clause:
+
+Grouping results
+~~~~~~~~~~~~~~~~
+
+The ``GROUP BY`` option allows to condense into a single row all selected rows that share the same values for a set
+of columns.
+
+Using the ``GROUP BY`` option, it is only possible to group rows at the partition key level or at a clustering column
+level. By consequence, the ``GROUP BY`` option only accept as arguments primary key column names in the primary key
+order. If a primary key column is restricted by an equality restriction it is not required to be present in the
+``GROUP BY`` clause.
+
+Aggregate functions will produce a separate value for each group. If no ``GROUP BY`` clause is specified,
+aggregates functions will produce a single value for all the rows.
+
+If a column is selected without an aggregate function, in a statement with a ``GROUP BY``, the first value encounter
+in each group will be returned.
+
+.. _ordering-clause:
+
+Ordering results
+~~~~~~~~~~~~~~~~
+
+The ``ORDER BY`` clause allows to select the order of the returned results. It takes as argument a list of column names
+along with the order for the column (``ASC`` for ascendant and ``DESC`` for descendant, omitting the order being
+equivalent to ``ASC``). Currently the possible orderings are limited by the :ref:`clustering order <clustering-order>`
+defined on the table:
+
+- if the table has been defined without any specific ``CLUSTERING ORDER``, then then allowed orderings are the order
+  induced by the clustering columns and the reverse of that one.
+- otherwise, the orderings allowed are the order of the ``CLUSTERING ORDER`` option and the reversed one.
+
+.. _limit-clause:
+
+Limiting results
+~~~~~~~~~~~~~~~~
+
+The ``LIMIT`` option to a ``SELECT`` statement limits the number of rows returned by a query, while the ``PER PARTITION
+LIMIT`` option limits the number of rows returned for a given partition by the query. Note that both type of limit can
+used in the same statement.
+
+.. _allow-filtering:
+
+Allowing filtering
+~~~~~~~~~~~~~~~~~~
+
+By default, CQL only allows select queries that don't involve “filtering” server side, i.e. queries where we know that
+all (live) record read will be returned (maybe partly) in the result set. The reasoning is that those “non filtering”
+queries have predictable performance in the sense that they will execute in a time that is proportional to the amount of
+data **returned** by the query (which can be controlled through ``LIMIT``).
+
+The ``ALLOW FILTERING`` option allows to explicitly allow (some) queries that require filtering. Please note that a
+query using ``ALLOW FILTERING`` may thus have unpredictable performance (for the definition above), i.e. even a query
+that selects a handful of records **may** exhibit performance that depends on the total amount of data stored in the
+cluster.
+
+For instance, considering the following table holding user profiles with their year of birth (with a secondary index on
+it) and country of residence::
+
+    CREATE TABLE users (
+        username text PRIMARY KEY,
+        firstname text,
+        lastname text,
+        birth_year int,
+        country text
+    )
+
+    CREATE INDEX ON users(birth_year);
+
+Then the following queries are valid::
+
+    SELECT * FROM users;
+    SELECT * FROM users WHERE birth_year = 1981;
+
+because in both case, Cassandra guarantees that these queries performance will be proportional to the amount of data
+returned. In particular, if no users are born in 1981, then the second query performance will not depend of the number
+of user profile stored in the database (not directly at least: due to secondary index implementation consideration, this
+query may still depend on the number of node in the cluster, which indirectly depends on the amount of data stored.
+Nevertheless, the number of nodes will always be multiple number of magnitude lower than the number of user profile
+stored). Of course, both query may return very large result set in practice, but the amount of data returned can always
+be controlled by adding a ``LIMIT``.
+
+However, the following query will be rejected::
+
+    SELECT * FROM users WHERE birth_year = 1981 AND country = 'FR';
+
+because Cassandra cannot guarantee that it won't have to scan large amount of data even if the result to those query is
+small. Typically, it will scan all the index entries for users born in 1981 even if only a handful are actually from
+France. However, if you “know what you are doing”, you can force the execution of this query by using ``ALLOW
+FILTERING`` and so the following query is valid::
+
+    SELECT * FROM users WHERE birth_year = 1981 AND country = 'FR' ALLOW FILTERING;
+
+.. _insert-statement:
+
+INSERT
+^^^^^^
+
+Inserting data for a row is done using an ``INSERT`` statement:
+
+.. productionlist::
+   insert_statement: INSERT INTO `table_name` ( `names_values` | `json_clause` )
+                   : [ IF NOT EXISTS ]
+                   : [ USING `update_parameter` ( AND `update_parameter` )* ]
+   names_values: `names` VALUES `tuple_literal`
+   json_clause: JSON `string` [ DEFAULT ( NULL | UNSET ) ]
+   names: '(' `column_name` ( ',' `column_name` )* ')'
+
+For instance::
+
+    INSERT INTO NerdMovies (movie, director, main_actor, year)
+                    VALUES ('Serenity', 'Joss Whedon', 'Nathan Fillion', 2005)
+          USING TTL 86400;
+
+    INSERT INTO NerdMovies JSON '{"movie": "Serenity",
+                                  "director": "Joss Whedon",
+                                  "year": 2005}';
+
+The ``INSERT`` statement writes one or more columns for a given row in a table. Note that since a row is identified by
+its ``PRIMARY KEY``, at least the columns composing it must be specified. The list of columns to insert to must be
+supplied when using the ``VALUES`` syntax. When using the ``JSON`` syntax, they are optional. See the
+section on :ref:`JSON support <cql-json>` for more detail.
+
+Note that unlike in SQL, ``INSERT`` does not check the prior existence of the row by default: the row is created if none
+existed before, and updated otherwise. Furthermore, there is no mean to know which of creation or update happened.
+
+It is however possible to use the ``IF NOT EXISTS`` condition to only insert if the row does not exist prior to the
+insertion. But please note that using ``IF NOT EXISTS`` will incur a non negligible performance cost (internally, Paxos
+will be used) so this should be used sparingly.
+
+All updates for an ``INSERT`` are applied atomically and in isolation.
+
+Please refer to the :ref:`UPDATE <update-parameters>` section for informations on the :token:`update_parameter`.
+
+Also note that ``INSERT`` does not support counters, while ``UPDATE`` does.
+
+.. _update-statement:
+
+UPDATE
+^^^^^^
+
+Updating a row is done using an ``UPDATE`` statement:
+
+.. productionlist::
+   update_statement: UPDATE `table_name`
+                   : [ USING `update_parameter` ( AND `update_parameter` )* ]
+                   : SET `assignment` ( ',' `assignment` )*
+                   : WHERE `where_clause`
+                   : [ IF ( EXISTS | `condition` ( AND `condition` )*) ]
+   update_parameter: ( TIMESTAMP | TTL ) ( `integer` | `bind_marker` )
+   assignment: `simple_selection` '=' `term`
+             :| `column_name` '=' `column_name` ( '+' | '-' ) `term`
+             :| `column_name` '=' `list_literal` '+' `column_name`
+   simple_selection: `column_name`
+                   :| `column_name` '[' `term` ']'
+                   :| `column_name` '.' `field_name
+   condition: `simple_selection` `operator` `term`
+
+For instance::
+
+    UPDATE NerdMovies USING TTL 400
+       SET director   = 'Joss Whedon',
+           main_actor = 'Nathan Fillion',
+           year       = 2005
+     WHERE movie = 'Serenity';
+
+    UPDATE UserActions
+       SET total = total + 2
+       WHERE user = B70DE1D0-9908-4AE3-BE34-5573E5B09F14
+         AND action = 'click';
+
+The ``UPDATE`` statement writes one or more columns for a given row in a table. The :token:`where_clause` is used to
+select the row to update and must include all columns composing the ``PRIMARY KEY``. Non primary key columns are then
+set using the ``SET`` keyword.
+
+Note that unlike in SQL, ``UPDATE`` does not check the prior existence of the row by default (except through ``IF``, see
+below): the row is created if none existed before, and updated otherwise. Furthermore, there are no means to know
+whether a creation or update occurred.
+
+It is however possible to use the conditions on some columns through ``IF``, in which case the row will not be updated
+unless the conditions are met. But, please note that using ``IF`` conditions will incur a non-negligible performance
+cost (internally, Paxos will be used) so this should be used sparingly.
+
+In an ``UPDATE`` statement, all updates within the same partition key are applied atomically and in isolation.
+
+Regarding the :token:`assignment`:
+
+- ``c = c + 3`` is used to increment/decrement counters. The column name after the '=' sign **must** be the same than
+  the one before the '=' sign. Note that increment/decrement is only allowed on counters, and are the *only* update
+  operations allowed on counters. See the section on :ref:`counters <counters>` for details.
+- ``id = id + <some-collection>`` and ``id[value1] = value2`` are for collections, see the :ref:`relevant section
+  <collections>` for details.
+- ``id.field = 3`` is for setting the value of a field on a non-frozen user-defined types. see the :ref:`relevant section
+  <udts>` for details.
+
+.. _update-parameters:
+
+Update parameters
+~~~~~~~~~~~~~~~~~
+
+The ``UPDATE``, ``INSERT`` (and ``DELETE`` and ``BATCH`` for the ``TIMESTAMP``) statements support the following
+parameters:
+
+- ``TIMESTAMP``: sets the timestamp for the operation. If not specified, the coordinator will use the current time (in
+  microseconds) at the start of statement execution as the timestamp. This is usually a suitable default.
+- ``TTL``: specifies an optional Time To Live (in seconds) for the inserted values. If set, the inserted values are
+  automatically removed from the database after the specified time. Note that the TTL concerns the inserted values, not
+  the columns themselves. This means that any subsequent update of the column will also reset the TTL (to whatever TTL
+  is specified in that update). By default, values never expire. A TTL of 0 is equivalent to no TTL. If the table has a
+  default_time_to_live, a TTL of 0 will remove the TTL for the inserted or updated values. A TTL of ``null`` is equivalent
+  to inserting with a TTL of 0.
+
+.. _delete_statement:
+
+DELETE
+^^^^^^
+
+Deleting rows or parts of rows uses the ``DELETE`` statement:
+
+.. productionlist::
+   delete_statement: DELETE [ `simple_selection` ( ',' `simple_selection` ) ]
+                   : FROM `table_name`
+                   : [ USING `update_parameter` ( AND `update_parameter` )* ]
+                   : WHERE `where_clause`
+                   : [ IF ( EXISTS | `condition` ( AND `condition` )*) ]
+
+For instance::
+
+    DELETE FROM NerdMovies USING TIMESTAMP 1240003134
+     WHERE movie = 'Serenity';
+
+    DELETE phone FROM Users
+     WHERE userid IN (C73DE1D3-AF08-40F3-B124-3FF3E5109F22, B70DE1D0-9908-4AE3-BE34-5573E5B09F14);
+
+The ``DELETE`` statement deletes columns and rows. If column names are provided directly after the ``DELETE`` keyword,
+only those columns are deleted from the row indicated by the ``WHERE`` clause. Otherwise, whole rows are removed.
+
+The ``WHERE`` clause specifies which rows are to be deleted. Multiple rows may be deleted with one statement by using an
+``IN`` operator. A range of rows may be deleted using an inequality operator (such as ``>=``).
+
+``DELETE`` supports the ``TIMESTAMP`` option with the same semantics as in :ref:`updates <update-parameters>`.
+
+In a ``DELETE`` statement, all deletions within the same partition key are applied atomically and in isolation.
+
+A ``DELETE`` operation can be conditional through the use of an ``IF`` clause, similar to ``UPDATE`` and ``INSERT``
+statements. However, as with ``INSERT`` and ``UPDATE`` statements, this will incur a non-negligible performance cost
+(internally, Paxos will be used) and so should be used sparingly.
+
+.. _batch_statement:
+
+BATCH
+^^^^^
+
+Multiple ``INSERT``, ``UPDATE`` and ``DELETE`` can be executed in a single statement by grouping them through a
+``BATCH`` statement:
+
+.. productionlist::
+   batch_statement: BEGIN [ UNLOGGED | COUNTER ] BATCH
+                   : [ USING `update_parameter` ( AND `update_parameter` )* ]
+                   : `modification_statement` ( ';' `modification_statement` )*
+                   : APPLY BATCH
+   modification_statement: `insert_statement` | `update_statement` | `delete_statement`
+
+For instance::
+
+    BEGIN BATCH
+       INSERT INTO users (userid, password, name) VALUES ('user2', 'ch@ngem3b', 'second user');
+       UPDATE users SET password = 'ps22dhds' WHERE userid = 'user3';
+       INSERT INTO users (userid, password) VALUES ('user4', 'ch@ngem3c');
+       DELETE name FROM users WHERE userid = 'user1';
+    APPLY BATCH;
+
+The ``BATCH`` statement group multiple modification statements (insertions/updates and deletions) into a single
+statement. It serves several purposes:
+
+- It saves network round-trips between the client and the server (and sometimes between the server coordinator and the
+  replicas) when batching multiple updates.
+- All updates in a ``BATCH`` belonging to a given partition key are performed in isolation.
+- By default, all operations in the batch are performed as *logged*, to ensure all mutations eventually complete (or
+  none will). See the notes on :ref:`UNLOGGED batches <unlogged-batches>` for more details.
+
+Note that:
+
+- ``BATCH`` statements may only contain ``UPDATE``, ``INSERT`` and ``DELETE`` statements (not other batches for instance).
+- Batches are *not* a full analogue for SQL transactions.
+- If a timestamp is not specified for each operation, then all operations will be applied with the same timestamp
+  (either one generated automatically, or the timestamp provided at the batch level). Due to Cassandra's conflict
+  resolution procedure in the case of `timestamp ties <http://wiki.apache.org/cassandra/FAQ#clocktie>`__, operations may
+  be applied in an order that is different from the order they are listed in the ``BATCH`` statement. To force a
+  particular operation ordering, you must specify per-operation timestamps.
+- A LOGGED batch to a single partition will be converted to an UNLOGGED batch as an optimization.
+
+.. _unlogged-batches:
+
+``UNLOGGED`` batches
+~~~~~~~~~~~~~~~~~~~~
+
+By default, Cassandra uses a batch log to ensure all operations in a batch eventually complete or none will (note
+however that operations are only isolated within a single partition).
+
+There is a performance penalty for batch atomicity when a batch spans multiple partitions. If you do not want to incur
+this penalty, you can tell Cassandra to skip the batchlog with the ``UNLOGGED`` option. If the ``UNLOGGED`` option is
+used, a failed batch might leave the patch only partly applied.
+
+``COUNTER`` batches
+~~~~~~~~~~~~~~~~~~~
+
+Use the ``COUNTER`` option for batched counter updates. Unlike other
+updates in Cassandra, counter updates are not idempotent.
diff --git a/src/doc/4.0-rc1/_sources/cql/functions.rst.txt b/src/doc/4.0-rc1/_sources/cql/functions.rst.txt
new file mode 100644
index 0000000..965125a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/functions.rst.txt
@@ -0,0 +1,581 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _cql-functions:
+
+.. Need some intro for UDF and native functions in general and point those to it.
+.. _udfs:
+.. _native-functions:
+
+Functions
+---------
+
+CQL supports 2 main categories of functions:
+
+- the :ref:`scalar functions <scalar-functions>`, which simply take a number of values and produce an output with it.
+- the :ref:`aggregate functions <aggregate-functions>`, which are used to aggregate multiple rows results from a
+  ``SELECT`` statement.
+
+In both cases, CQL provides a number of native "hard-coded" functions as well as the ability to create new user-defined
+functions.
+
+.. note:: By default, the use of user-defined functions is disabled by default for security concerns (even when
+   enabled, the execution of user-defined functions is sandboxed and a "rogue" function should not be allowed to do
+   evil, but no sandbox is perfect so using user-defined functions is opt-in). See the ``enable_user_defined_functions``
+   in ``cassandra.yaml`` to enable them.
+
+A function is identifier by its name:
+
+.. productionlist::
+   function_name: [ `keyspace_name` '.' ] `name`
+
+.. _scalar-functions:
+
+Scalar functions
+^^^^^^^^^^^^^^^^
+
+.. _scalar-native-functions:
+
+Native functions
+~~~~~~~~~~~~~~~~
+
+Cast
+````
+
+The ``cast`` function can be used to converts one native datatype to another.
+
+The following table describes the conversions supported by the ``cast`` function. Cassandra will silently ignore any
+cast converting a datatype into its own datatype.
+
+=============== =======================================================================================================
+ From            To
+=============== =======================================================================================================
+ ``ascii``       ``text``, ``varchar``
+ ``bigint``      ``tinyint``, ``smallint``, ``int``, ``float``, ``double``, ``decimal``, ``varint``, ``text``,
+                 ``varchar``
+ ``boolean``     ``text``, ``varchar``
+ ``counter``     ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``double``, ``decimal``, ``varint``,
+                 ``text``, ``varchar``
+ ``date``        ``timestamp``
+ ``decimal``     ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``double``, ``varint``, ``text``,
+                 ``varchar``
+ ``double``      ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``decimal``, ``varint``, ``text``,
+                 ``varchar``
+ ``float``       ``tinyint``, ``smallint``, ``int``, ``bigint``, ``double``, ``decimal``, ``varint``, ``text``,
+                 ``varchar``
+ ``inet``        ``text``, ``varchar``
+ ``int``         ``tinyint``, ``smallint``, ``bigint``, ``float``, ``double``, ``decimal``, ``varint``, ``text``,
+                 ``varchar``
+ ``smallint``    ``tinyint``, ``int``, ``bigint``, ``float``, ``double``, ``decimal``, ``varint``, ``text``,
+                 ``varchar``
+ ``time``        ``text``, ``varchar``
+ ``timestamp``   ``date``, ``text``, ``varchar``
+ ``timeuuid``    ``timestamp``, ``date``, ``text``, ``varchar``
+ ``tinyint``     ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``double``, ``decimal``, ``varint``,
+                 ``text``, ``varchar``
+ ``uuid``        ``text``, ``varchar``
+ ``varint``      ``tinyint``, ``smallint``, ``int``, ``bigint``, ``float``, ``double``, ``decimal``, ``text``,
+                 ``varchar``
+=============== =======================================================================================================
+
+The conversions rely strictly on Java's semantics. For example, the double value 1 will be converted to the text value
+'1.0'. For instance::
+
+    SELECT avg(cast(count as double)) FROM myTable
+
+Token
+`````
+
+The ``token`` function allows to compute the token for a given partition key. The exact signature of the token function
+depends on the table concerned and of the partitioner used by the cluster.
+
+The type of the arguments of the ``token`` depend on the type of the partition key columns. The return type depend on
+the partitioner in use:
+
+- For Murmur3Partitioner, the return type is ``bigint``.
+- For RandomPartitioner, the return type is ``varint``.
+- For ByteOrderedPartitioner, the return type is ``blob``.
+
+For instance, in a cluster using the default Murmur3Partitioner, if a table is defined by::
+
+    CREATE TABLE users (
+        userid text PRIMARY KEY,
+        username text,
+    )
+
+then the ``token`` function will take a single argument of type ``text`` (in that case, the partition key is ``userid``
+(there is no clustering columns so the partition key is the same than the primary key)), and the return type will be
+``bigint``.
+
+Uuid
+````
+The ``uuid`` function takes no parameters and generates a random type 4 uuid suitable for use in ``INSERT`` or
+``UPDATE`` statements.
+
+.. _timeuuid-functions:
+
+Timeuuid functions
+``````````````````
+
+``now``
+#######
+
+The ``now`` function takes no arguments and generates, on the coordinator node, a new unique timeuuid at the 
+time the function is invoked. Note that this method is useful for insertion but is largely non-sensical in
+``WHERE`` clauses. For instance, a query of the form::
+
+    SELECT * FROM myTable WHERE t = now()
+
+will never return any result by design, since the value returned by ``now()`` is guaranteed to be unique.
+
+``currentTimeUUID`` is an alias of ``now``.
+
+``minTimeuuid`` and ``maxTimeuuid``
+###################################
+
+The ``minTimeuuid`` (resp. ``maxTimeuuid``) function takes a ``timestamp`` value ``t`` (which can be `either a timestamp
+or a date string <timestamps>`) and return a *fake* ``timeuuid`` corresponding to the *smallest* (resp. *biggest*)
+possible ``timeuuid`` having for timestamp ``t``. So for instance::
+
+    SELECT * FROM myTable
+     WHERE t > maxTimeuuid('2013-01-01 00:05+0000')
+       AND t < minTimeuuid('2013-02-02 10:00+0000')
+
+will select all rows where the ``timeuuid`` column ``t`` is strictly older than ``'2013-01-01 00:05+0000'`` but strictly
+younger than ``'2013-02-02 10:00+0000'``. Please note that ``t >= maxTimeuuid('2013-01-01 00:05+0000')`` would still
+*not* select a ``timeuuid`` generated exactly at '2013-01-01 00:05+0000' and is essentially equivalent to ``t >
+maxTimeuuid('2013-01-01 00:05+0000')``.
+
+.. note:: We called the values generated by ``minTimeuuid`` and ``maxTimeuuid`` *fake* UUID because they do no respect
+   the Time-Based UUID generation process specified by the `RFC 4122 <http://www.ietf.org/rfc/rfc4122.txt>`__. In
+   particular, the value returned by these 2 methods will not be unique. This means you should only use those methods
+   for querying (as in the example above). Inserting the result of those methods is almost certainly *a bad idea*.
+
+Datetime functions
+``````````````````
+
+Retrieving the current date/time
+################################
+
+The following functions can be used to retrieve the date/time at the time where the function is invoked:
+
+===================== ===============
+ Function name         Output type
+===================== ===============
+ ``currentTimestamp``  ``timestamp``
+ ``currentDate``       ``date``
+ ``currentTime``       ``time``
+ ``currentTimeUUID``   ``timeUUID``
+===================== ===============
+
+For example the last 2 days of data can be retrieved using::
+
+    SELECT * FROM myTable WHERE date >= currentDate() - 2d
+
+Time conversion functions
+#########################
+
+A number of functions are provided to “convert” a ``timeuuid``, a ``timestamp`` or a ``date`` into another ``native``
+type.
+
+===================== =============== ===================================================================
+ Function name         Input type      Description
+===================== =============== ===================================================================
+ ``toDate``            ``timeuuid``    Converts the ``timeuuid`` argument into a ``date`` type
+ ``toDate``            ``timestamp``   Converts the ``timestamp`` argument into a ``date`` type
+ ``toTimestamp``       ``timeuuid``    Converts the ``timeuuid`` argument into a ``timestamp`` type
+ ``toTimestamp``       ``date``        Converts the ``date`` argument into a ``timestamp`` type
+ ``toUnixTimestamp``   ``timeuuid``    Converts the ``timeuuid`` argument into a ``bigInt`` raw value
+ ``toUnixTimestamp``   ``timestamp``   Converts the ``timestamp`` argument into a ``bigInt`` raw value
+ ``toUnixTimestamp``   ``date``        Converts the ``date`` argument into a ``bigInt`` raw value
+ ``dateOf``            ``timeuuid``    Similar to ``toTimestamp(timeuuid)`` (DEPRECATED)
+ ``unixTimestampOf``   ``timeuuid``    Similar to ``toUnixTimestamp(timeuuid)`` (DEPRECATED)
+===================== =============== ===================================================================
+
+Blob conversion functions
+`````````````````````````
+A number of functions are provided to “convert” the native types into binary data (``blob``). For every
+``<native-type>`` ``type`` supported by CQL (a notable exceptions is ``blob``, for obvious reasons), the function
+``typeAsBlob`` takes a argument of type ``type`` and return it as a ``blob``. Conversely, the function ``blobAsType``
+takes a 64-bit ``blob`` argument and convert it to a ``bigint`` value. And so for instance, ``bigintAsBlob(3)`` is
+``0x0000000000000003`` and ``blobAsBigint(0x0000000000000003)`` is ``3``.
+
+.. _user-defined-scalar-functions:
+
+User-defined functions
+~~~~~~~~~~~~~~~~~~~~~~
+
+User-defined functions allow execution of user-provided code in Cassandra. By default, Cassandra supports defining
+functions in *Java* and *JavaScript*. Support for other JSR 223 compliant scripting languages (such as Python, Ruby, and
+Scala) can be added by adding a JAR to the classpath.
+
+UDFs are part of the Cassandra schema. As such, they are automatically propagated to all nodes in the cluster.
+
+UDFs can be *overloaded* - i.e. multiple UDFs with different argument types but the same function name. Example::
+
+    CREATE FUNCTION sample ( arg int ) ...;
+    CREATE FUNCTION sample ( arg text ) ...;
+
+User-defined functions are susceptible to all of the normal problems with the chosen programming language. Accordingly,
+implementations should be safe against null pointer exceptions, illegal arguments, or any other potential source of
+exceptions. An exception during function execution will result in the entire statement failing.
+
+It is valid to use *complex* types like collections, tuple types and user-defined types as argument and return types.
+Tuple types and user-defined types are handled by the conversion functions of the DataStax Java Driver. Please see the
+documentation of the Java Driver for details on handling tuple types and user-defined types.
+
+Arguments for functions can be literals or terms. Prepared statement placeholders can be used, too.
+
+Note that you can use the double-quoted string syntax to enclose the UDF source code. For example::
+
+    CREATE FUNCTION some_function ( arg int )
+        RETURNS NULL ON NULL INPUT
+        RETURNS int
+        LANGUAGE java
+        AS $$ return arg; $$;
+
+    SELECT some_function(column) FROM atable ...;
+    UPDATE atable SET col = some_function(?) ...;
+
+    CREATE TYPE custom_type (txt text, i int);
+    CREATE FUNCTION fct_using_udt ( udtarg frozen )
+        RETURNS NULL ON NULL INPUT
+        RETURNS text
+        LANGUAGE java
+        AS $$ return udtarg.getString("txt"); $$;
+
+User-defined functions can be used in ``SELECT``, ``INSERT`` and ``UPDATE`` statements.
+
+The implicitly available ``udfContext`` field (or binding for script UDFs) provides the necessary functionality to
+create new UDT and tuple values::
+
+    CREATE TYPE custom_type (txt text, i int);
+    CREATE FUNCTION fct\_using\_udt ( somearg int )
+        RETURNS NULL ON NULL INPUT
+        RETURNS custom_type
+        LANGUAGE java
+        AS $$
+            UDTValue udt = udfContext.newReturnUDTValue();
+            udt.setString("txt", "some string");
+            udt.setInt("i", 42);
+            return udt;
+        $$;
+
+The definition of the ``UDFContext`` interface can be found in the Apache Cassandra source code for
+``org.apache.cassandra.cql3.functions.UDFContext``.
+
+.. code-block:: java
+
+    public interface UDFContext
+    {
+        UDTValue newArgUDTValue(String argName);
+        UDTValue newArgUDTValue(int argNum);
+        UDTValue newReturnUDTValue();
+        UDTValue newUDTValue(String udtName);
+        TupleValue newArgTupleValue(String argName);
+        TupleValue newArgTupleValue(int argNum);
+        TupleValue newReturnTupleValue();
+        TupleValue newTupleValue(String cqlDefinition);
+    }
+
+Java UDFs already have some imports for common interfaces and classes defined. These imports are:
+
+.. code-block:: java
+
+    import java.nio.ByteBuffer;
+    import java.util.List;
+    import java.util.Map;
+    import java.util.Set;
+    import org.apache.cassandra.cql3.functions.UDFContext;
+    import com.datastax.driver.core.TypeCodec;
+    import com.datastax.driver.core.TupleValue;
+    import com.datastax.driver.core.UDTValue;
+
+Please note, that these convenience imports are not available for script UDFs.
+
+.. _create-function-statement:
+
+CREATE FUNCTION
+```````````````
+
+Creating a new user-defined function uses the ``CREATE FUNCTION`` statement:
+
+.. productionlist::
+   create_function_statement: CREATE [ OR REPLACE ] FUNCTION [ IF NOT EXISTS]
+                            :     `function_name` '(' `arguments_declaration` ')'
+                            :     [ CALLED | RETURNS NULL ] ON NULL INPUT
+                            :     RETURNS `cql_type`
+                            :     LANGUAGE `identifier`
+                            :     AS `string`
+   arguments_declaration: `identifier` `cql_type` ( ',' `identifier` `cql_type` )*
+
+For instance::
+
+    CREATE OR REPLACE FUNCTION somefunction(somearg int, anotherarg text, complexarg frozen<someUDT>, listarg list)
+        RETURNS NULL ON NULL INPUT
+        RETURNS text
+        LANGUAGE java
+        AS $$
+            // some Java code
+        $$;
+
+    CREATE FUNCTION IF NOT EXISTS akeyspace.fname(someArg int)
+        CALLED ON NULL INPUT
+        RETURNS text
+        LANGUAGE java
+        AS $$
+            // some Java code
+        $$;
+
+``CREATE FUNCTION`` with the optional ``OR REPLACE`` keywords either creates a function or replaces an existing one with
+the same signature. A ``CREATE FUNCTION`` without ``OR REPLACE`` fails if a function with the same signature already
+exists.
+
+If the optional ``IF NOT EXISTS`` keywords are used, the function will
+only be created if another function with the same signature does not
+exist.
+
+``OR REPLACE`` and ``IF NOT EXISTS`` cannot be used together.
+
+Behavior on invocation with ``null`` values must be defined for each
+function. There are two options:
+
+#. ``RETURNS NULL ON NULL INPUT`` declares that the function will always
+   return ``null`` if any of the input arguments is ``null``.
+#. ``CALLED ON NULL INPUT`` declares that the function will always be
+   executed.
+
+Function Signature
+##################
+
+Signatures are used to distinguish individual functions. The signature consists of:
+
+#. The fully qualified function name - i.e *keyspace* plus *function-name*
+#. The concatenated list of all argument types
+
+Note that keyspace names, function names and argument types are subject to the default naming conventions and
+case-sensitivity rules.
+
+Functions belong to a keyspace. If no keyspace is specified in ``<function-name>``, the current keyspace is used (i.e.
+the keyspace specified using the ``USE`` statement). It is not possible to create a user-defined function in one of the
+system keyspaces.
+
+.. _drop-function-statement:
+
+DROP FUNCTION
+`````````````
+
+Dropping a function uses the ``DROP FUNCTION`` statement:
+
+.. productionlist::
+   drop_function_statement: DROP FUNCTION [ IF EXISTS ] `function_name` [ '(' `arguments_signature` ')' ]
+   arguments_signature: `cql_type` ( ',' `cql_type` )*
+
+For instance::
+
+    DROP FUNCTION myfunction;
+    DROP FUNCTION mykeyspace.afunction;
+    DROP FUNCTION afunction ( int );
+    DROP FUNCTION afunction ( text );
+
+You must specify the argument types (:token:`arguments_signature`) of the function to drop if there are multiple
+functions with the same name but a different signature (overloaded functions).
+
+``DROP FUNCTION`` with the optional ``IF EXISTS`` keywords drops a function if it exists, but does not throw an error if
+it doesn't
+
+.. _aggregate-functions:
+
+Aggregate functions
+^^^^^^^^^^^^^^^^^^^
+
+Aggregate functions work on a set of rows. They receive values for each row and returns one value for the whole set.
+
+If ``normal`` columns, ``scalar functions``, ``UDT`` fields, ``writetime`` or ``ttl`` are selected together with
+aggregate functions, the values returned for them will be the ones of the first row matching the query.
+
+Native aggregates
+~~~~~~~~~~~~~~~~~
+
+.. _count-function:
+
+Count
+`````
+
+The ``count`` function can be used to count the rows returned by a query. Example::
+
+    SELECT COUNT (*) FROM plays;
+    SELECT COUNT (1) FROM plays;
+
+It also can be used to count the non null value of a given column::
+
+    SELECT COUNT (scores) FROM plays;
+
+Max and Min
+```````````
+
+The ``max`` and ``min`` functions can be used to compute the maximum and the minimum value returned by a query for a
+given column. For instance::
+
+    SELECT MIN (players), MAX (players) FROM plays WHERE game = 'quake';
+
+Sum
+```
+
+The ``sum`` function can be used to sum up all the values returned by a query for a given column. For instance::
+
+    SELECT SUM (players) FROM plays;
+
+Avg
+```
+
+The ``avg`` function can be used to compute the average of all the values returned by a query for a given column. For
+instance::
+
+    SELECT AVG (players) FROM plays;
+
+.. _user-defined-aggregates-functions:
+
+User-Defined Aggregates
+~~~~~~~~~~~~~~~~~~~~~~~
+
+User-defined aggregates allow the creation of custom aggregate functions. Common examples of aggregate functions are
+*count*, *min*, and *max*.
+
+Each aggregate requires an *initial state* (``INITCOND``, which defaults to ``null``) of type ``STYPE``. The first
+argument of the state function must have type ``STYPE``. The remaining arguments of the state function must match the
+types of the user-defined aggregate arguments. The state function is called once for each row, and the value returned by
+the state function becomes the new state. After all rows are processed, the optional ``FINALFUNC`` is executed with last
+state value as its argument.
+
+``STYPE`` is mandatory in order to be able to distinguish possibly overloaded versions of the state and/or final
+function (since the overload can appear after creation of the aggregate).
+
+User-defined aggregates can be used in ``SELECT`` statement.
+
+A complete working example for user-defined aggregates (assuming that a keyspace has been selected using the ``USE``
+statement)::
+
+    CREATE OR REPLACE FUNCTION averageState(state tuple<int,bigint>, val int)
+        CALLED ON NULL INPUT
+        RETURNS tuple
+        LANGUAGE java
+        AS $$
+            if (val != null) {
+                state.setInt(0, state.getInt(0)+1);
+                state.setLong(1, state.getLong(1)+val.intValue());
+            }
+            return state;
+        $$;
+
+    CREATE OR REPLACE FUNCTION averageFinal (state tuple<int,bigint>)
+        CALLED ON NULL INPUT
+        RETURNS double
+        LANGUAGE java
+        AS $$
+            double r = 0;
+            if (state.getInt(0) == 0) return null;
+            r = state.getLong(1);
+            r /= state.getInt(0);
+            return Double.valueOf(r);
+        $$;
+
+    CREATE OR REPLACE AGGREGATE average(int)
+        SFUNC averageState
+        STYPE tuple
+        FINALFUNC averageFinal
+        INITCOND (0, 0);
+
+    CREATE TABLE atable (
+        pk int PRIMARY KEY,
+        val int
+    );
+
+    INSERT INTO atable (pk, val) VALUES (1,1);
+    INSERT INTO atable (pk, val) VALUES (2,2);
+    INSERT INTO atable (pk, val) VALUES (3,3);
+    INSERT INTO atable (pk, val) VALUES (4,4);
+
+    SELECT average(val) FROM atable;
+
+.. _create-aggregate-statement:
+
+CREATE AGGREGATE
+````````````````
+
+Creating (or replacing) a user-defined aggregate function uses the ``CREATE AGGREGATE`` statement:
+
+.. productionlist::
+   create_aggregate_statement: CREATE [ OR REPLACE ] AGGREGATE [ IF NOT EXISTS ]
+                             :     `function_name` '(' `arguments_signature` ')'
+                             :     SFUNC `function_name`
+                             :     STYPE `cql_type`
+                             :     [ FINALFUNC `function_name` ]
+                             :     [ INITCOND `term` ]
+
+See above for a complete example.
+
+``CREATE AGGREGATE`` with the optional ``OR REPLACE`` keywords either creates an aggregate or replaces an existing one
+with the same signature. A ``CREATE AGGREGATE`` without ``OR REPLACE`` fails if an aggregate with the same signature
+already exists.
+
+``CREATE AGGREGATE`` with the optional ``IF NOT EXISTS`` keywords either creates an aggregate if it does not already
+exist.
+
+``OR REPLACE`` and ``IF NOT EXISTS`` cannot be used together.
+
+``STYPE`` defines the type of the state value and must be specified.
+
+The optional ``INITCOND`` defines the initial state value for the aggregate. It defaults to ``null``. A non-\ ``null``
+``INITCOND`` must be specified for state functions that are declared with ``RETURNS NULL ON NULL INPUT``.
+
+``SFUNC`` references an existing function to be used as the state modifying function. The type of first argument of the
+state function must match ``STYPE``. The remaining argument types of the state function must match the argument types of
+the aggregate function. State is not updated for state functions declared with ``RETURNS NULL ON NULL INPUT`` and called
+with ``null``.
+
+The optional ``FINALFUNC`` is called just before the aggregate result is returned. It must take only one argument with
+type ``STYPE``. The return type of the ``FINALFUNC`` may be a different type. A final function declared with ``RETURNS
+NULL ON NULL INPUT`` means that the aggregate's return value will be ``null``, if the last state is ``null``.
+
+If no ``FINALFUNC`` is defined, the overall return type of the aggregate function is ``STYPE``. If a ``FINALFUNC`` is
+defined, it is the return type of that function.
+
+.. _drop-aggregate-statement:
+
+DROP AGGREGATE
+``````````````
+
+Dropping an user-defined aggregate function uses the ``DROP AGGREGATE`` statement:
+
+.. productionlist::
+   drop_aggregate_statement: DROP AGGREGATE [ IF EXISTS ] `function_name` [ '(' `arguments_signature` ')' ]
+
+For instance::
+
+    DROP AGGREGATE myAggregate;
+    DROP AGGREGATE myKeyspace.anAggregate;
+    DROP AGGREGATE someAggregate ( int );
+    DROP AGGREGATE someAggregate ( text );
+
+The ``DROP AGGREGATE`` statement removes an aggregate created using ``CREATE AGGREGATE``. You must specify the argument
+types of the aggregate to drop if there are multiple aggregates with the same name but a different signature (overloaded
+aggregates).
+
+``DROP AGGREGATE`` with the optional ``IF EXISTS`` keywords drops an aggregate if it exists, and does nothing if a
+function with the signature does not exist.
diff --git a/src/doc/4.0-rc1/_sources/cql/index.rst.txt b/src/doc/4.0-rc1/_sources/cql/index.rst.txt
new file mode 100644
index 0000000..b4c21cf
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/index.rst.txt
@@ -0,0 +1,47 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. _cql:
+
+The Cassandra Query Language (CQL)
+==================================
+
+This document describes the Cassandra Query Language (CQL) [#]_. Note that this document describes the last version of
+the languages. However, the `changes <#changes>`_ section provides the diff between the different versions of CQL.
+
+CQL offers a model close to SQL in the sense that data is put in *tables* containing *rows* of *columns*. For
+that reason, when used in this document, these terms (tables, rows and columns) have the same definition than they have
+in SQL.
+
+.. toctree::
+   :maxdepth: 2
+
+   definitions
+   types
+   ddl
+   dml
+   indexes
+   mvs
+   security
+   functions
+   operators
+   json
+   triggers
+   appendices
+   changes
+
+.. [#] Technically, this document CQL version 3, which is not backward compatible with CQL version 1 and 2 (which have
+   been deprecated and remove) and differs from it in numerous ways.
diff --git a/src/doc/4.0-rc1/_sources/cql/indexes.rst.txt b/src/doc/4.0-rc1/_sources/cql/indexes.rst.txt
new file mode 100644
index 0000000..81fe429
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/indexes.rst.txt
@@ -0,0 +1,83 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _secondary-indexes:
+
+Secondary Indexes
+-----------------
+
+CQL supports creating secondary indexes on tables, allowing queries on the table to use those indexes. A secondary index
+is identified by a name defined by:
+
+.. productionlist::
+   index_name: re('[a-zA-Z_0-9]+')
+
+
+
+.. _create-index-statement:
+
+CREATE INDEX
+^^^^^^^^^^^^
+
+Creating a secondary index on a table uses the ``CREATE INDEX`` statement:
+
+.. productionlist::
+   create_index_statement: CREATE [ CUSTOM ] INDEX [ IF NOT EXISTS ] [ `index_name` ]
+                         :     ON `table_name` '(' `index_identifier` ')'
+                         :     [ USING `string` [ WITH OPTIONS = `map_literal` ] ]
+   index_identifier: `column_name`
+                   :| ( KEYS | VALUES | ENTRIES | FULL ) '(' `column_name` ')'
+
+For instance::
+
+    CREATE INDEX userIndex ON NerdMovies (user);
+    CREATE INDEX ON Mutants (abilityId);
+    CREATE INDEX ON users (keys(favs));
+    CREATE CUSTOM INDEX ON users (email) USING 'path.to.the.IndexClass';
+    CREATE CUSTOM INDEX ON users (email) USING 'path.to.the.IndexClass' WITH OPTIONS = {'storage': '/mnt/ssd/indexes/'};
+
+The ``CREATE INDEX`` statement is used to create a new (automatic) secondary index for a given (existing) column in a
+given table. A name for the index itself can be specified before the ``ON`` keyword, if desired. If data already exists
+for the column, it will be indexed asynchronously. After the index is created, new data for the column is indexed
+automatically at insertion time.
+
+Attempting to create an already existing index will return an error unless the ``IF NOT EXISTS`` option is used. If it
+is used, the statement will be a no-op if the index already exists.
+
+Indexes on Map Keys
+~~~~~~~~~~~~~~~~~~~
+
+When creating an index on a :ref:`maps <maps>`, you may index either the keys or the values. If the column identifier is
+placed within the ``keys()`` function, the index will be on the map keys, allowing you to use ``CONTAINS KEY`` in
+``WHERE`` clauses. Otherwise, the index will be on the map values.
+
+.. _drop-index-statement:
+
+DROP INDEX
+^^^^^^^^^^
+
+Dropping a secondary index uses the ``DROP INDEX`` statement:
+
+.. productionlist::
+   drop_index_statement: DROP INDEX [ IF EXISTS ] `index_name`
+
+The ``DROP INDEX`` statement is used to drop an existing secondary index. The argument of the statement is the index
+name, which may optionally specify the keyspace of the index.
+
+If the index does not exists, the statement will return an error, unless ``IF EXISTS`` is used in which case the
+operation is a no-op.
diff --git a/src/doc/4.0-rc1/_sources/cql/json.rst.txt b/src/doc/4.0-rc1/_sources/cql/json.rst.txt
new file mode 100644
index 0000000..539180a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/json.rst.txt
@@ -0,0 +1,115 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _cql-json:
+
+JSON Support
+------------
+
+Cassandra 2.2 introduces JSON support to :ref:`SELECT <select-statement>` and :ref:`INSERT <insert-statement>`
+statements. This support does not fundamentally alter the CQL API (for example, the schema is still enforced), it simply
+provides a convenient way to work with JSON documents.
+
+SELECT JSON
+^^^^^^^^^^^
+
+With ``SELECT`` statements, the ``JSON`` keyword can be used to return each row as a single ``JSON`` encoded map. The
+remainder of the ``SELECT`` statement behavior is the same.
+
+The result map keys are the same as the column names in a normal result set. For example, a statement like ``SELECT JSON
+a, ttl(b) FROM ...`` would result in a map with keys ``"a"`` and ``"ttl(b)"``. However, this is one notable exception:
+for symmetry with ``INSERT JSON`` behavior, case-sensitive column names with upper-case letters will be surrounded with
+double quotes. For example, ``SELECT JSON myColumn FROM ...`` would result in a map key ``"\"myColumn\""`` (note the
+escaped quotes).
+
+The map values will ``JSON``-encoded representations (as described below) of the result set values.
+
+INSERT JSON
+^^^^^^^^^^^
+
+With ``INSERT`` statements, the new ``JSON`` keyword can be used to enable inserting a ``JSON`` encoded map as a single
+row. The format of the ``JSON`` map should generally match that returned by a ``SELECT JSON`` statement on the same
+table. In particular, case-sensitive column names should be surrounded with double quotes. For example, to insert into a
+table with two columns named "myKey" and "value", you would do the following::
+
+    INSERT INTO mytable JSON '{ "\"myKey\"": 0, "value": 0}'
+
+By default (or if ``DEFAULT NULL`` is explicitly used), a column omitted from the ``JSON`` map will be set to ``NULL``,
+meaning that any pre-existing value for that column will be removed (resulting in a tombstone being created).
+Alternatively, if the ``DEFAULT UNSET`` directive is used after the value, omitted column values will be left unset,
+meaning that pre-existing values for those column will be preserved.
+
+
+JSON Encoding of Cassandra Data Types
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Where possible, Cassandra will represent and accept data types in their native ``JSON`` representation. Cassandra will
+also accept string representations matching the CQL literal format for all single-field types. For example, floats,
+ints, UUIDs, and dates can be represented by CQL literal strings. However, compound types, such as collections, tuples,
+and user-defined types must be represented by native ``JSON`` collections (maps and lists) or a JSON-encoded string
+representation of the collection.
+
+The following table describes the encodings that Cassandra will accept in ``INSERT JSON`` values (and ``fromJson()``
+arguments) as well as the format Cassandra will use when returning data for ``SELECT JSON`` statements (and
+``fromJson()``):
+
+=============== ======================== =============== ==============================================================
+ Type            Formats accepted         Return format   Notes
+=============== ======================== =============== ==============================================================
+ ``ascii``       string                   string          Uses JSON's ``\u`` character escape
+ ``bigint``      integer, string          integer         String must be valid 64 bit integer
+ ``blob``        string                   string          String should be 0x followed by an even number of hex digits
+ ``boolean``     boolean, string          boolean         String must be "true" or "false"
+ ``date``        string                   string          Date in format ``YYYY-MM-DD``, timezone UTC
+ ``decimal``     integer, float, string   float           May exceed 32 or 64-bit IEEE-754 floating point precision in
+                                                          client-side decoder
+ ``double``      integer, float, string   float           String must be valid integer or float
+ ``float``       integer, float, string   float           String must be valid integer or float
+ ``inet``        string                   string          IPv4 or IPv6 address
+ ``int``         integer, string          integer         String must be valid 32 bit integer
+ ``list``        list, string             list            Uses JSON's native list representation
+ ``map``         map, string              map             Uses JSON's native map representation
+ ``smallint``    integer, string          integer         String must be valid 16 bit integer
+ ``set``         list, string             list            Uses JSON's native list representation
+ ``text``        string                   string          Uses JSON's ``\u`` character escape
+ ``time``        string                   string          Time of day in format ``HH-MM-SS[.fffffffff]``
+ ``timestamp``   integer, string          string          A timestamp. Strings constant allows to input :ref:`timestamps
+                                                          as dates <timestamps>`. Datestamps with format ``YYYY-MM-DD
+                                                          HH:MM:SS.SSS`` are returned.
+ ``timeuuid``    string                   string          Type 1 UUID. See :token:`constant` for the UUID format
+ ``tinyint``     integer, string          integer         String must be valid 8 bit integer
+ ``tuple``       list, string             list            Uses JSON's native list representation
+ ``UDT``         map, string              map             Uses JSON's native map representation with field names as keys
+ ``uuid``        string                   string          See :token:`constant` for the UUID format
+ ``varchar``     string                   string          Uses JSON's ``\u`` character escape
+ ``varint``      integer, string          integer         Variable length; may overflow 32 or 64 bit integers in
+                                                          client-side decoder
+=============== ======================== =============== ==============================================================
+
+The fromJson() Function
+^^^^^^^^^^^^^^^^^^^^^^^
+
+The ``fromJson()`` function may be used similarly to ``INSERT JSON``, but for a single column value. It may only be used
+in the ``VALUES`` clause of an ``INSERT`` statement or as one of the column values in an ``UPDATE``, ``DELETE``, or
+``SELECT`` statement. For example, it cannot be used in the selection clause of a ``SELECT`` statement.
+
+The toJson() Function
+^^^^^^^^^^^^^^^^^^^^^
+
+The ``toJson()`` function may be used similarly to ``SELECT JSON``, but for a single column value. It may only be used
+in the selection clause of a ``SELECT`` statement.
diff --git a/src/doc/4.0-rc1/_sources/cql/mvs.rst.txt b/src/doc/4.0-rc1/_sources/cql/mvs.rst.txt
new file mode 100644
index 0000000..200090a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/mvs.rst.txt
@@ -0,0 +1,179 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _materialized-views:
+
+Materialized Views
+------------------
+
+Materialized views names are defined by:
+
+.. productionlist::
+   view_name: re('[a-zA-Z_0-9]+')
+
+
+.. _create-materialized-view-statement:
+
+CREATE MATERIALIZED VIEW
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+You can create a materialized view on a table using a ``CREATE MATERIALIZED VIEW`` statement:
+
+.. productionlist::
+   create_materialized_view_statement: CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] `view_name` AS
+                                     :     `select_statement`
+                                     :     PRIMARY KEY '(' `primary_key` ')'
+                                     :     WITH `table_options`
+
+For instance::
+
+    CREATE MATERIALIZED VIEW monkeySpecies_by_population AS
+        SELECT * FROM monkeySpecies
+        WHERE population IS NOT NULL AND species IS NOT NULL
+        PRIMARY KEY (population, species)
+        WITH comment='Allow query by population instead of species';
+
+The ``CREATE MATERIALIZED VIEW`` statement creates a new materialized view. Each such view is a set of *rows* which
+corresponds to rows which are present in the underlying, or base, table specified in the ``SELECT`` statement. A
+materialized view cannot be directly updated, but updates to the base table will cause corresponding updates in the
+view.
+
+Creating a materialized view has 3 main parts:
+
+- The :ref:`select statement <mv-select>` that restrict the data included in the view.
+- The :ref:`primary key <mv-primary-key>` definition for the view.
+- The :ref:`options <mv-options>` for the view.
+
+Attempting to create an already existing materialized view will return an error unless the ``IF NOT EXISTS`` option is
+used. If it is used, the statement will be a no-op if the materialized view already exists.
+
+.. note:: By default, materialized views are built in a single thread. The initial build can be parallelized by
+   increasing the number of threads specified by the property ``concurrent_materialized_view_builders`` in
+   ``cassandra.yaml``. This property can also be manipulated at runtime through both JMX and the
+   ``setconcurrentviewbuilders`` and ``getconcurrentviewbuilders`` nodetool commands.
+
+.. _mv-select:
+
+MV select statement
+```````````````````
+
+The select statement of a materialized view creation defines which of the base table is included in the view. That
+statement is limited in a number of ways:
+
+- the :ref:`selection <selection-clause>` is limited to those that only select columns of the base table. In other
+  words, you can't use any function (aggregate or not), casting, term, etc. Aliases are also not supported. You can
+  however use `*` as a shortcut of selecting all columns. Further, :ref:`static columns <static-columns>` cannot be
+  included in a materialized view (which means ``SELECT *`` isn't allowed if the base table has static columns).
+- the ``WHERE`` clause have the following restrictions:
+
+  - it cannot include any :token:`bind_marker`.
+  - the columns that are not part of the *base table* primary key can only be restricted by an ``IS NOT NULL``
+    restriction. No other restriction is allowed.
+  - as the columns that are part of the *view* primary key cannot be null, they must always be at least restricted by a
+    ``IS NOT NULL`` restriction (or any other restriction, but they must have one).
+
+- it cannot have neither an :ref:`ordering clause <ordering-clause>`, nor a :ref:`limit <limit-clause>`, nor :ref:`ALLOW
+  FILTERING <allow-filtering>`.
+
+.. _mv-primary-key:
+
+MV primary key
+``````````````
+
+A view must have a primary key and that primary key must conform to the following restrictions:
+
+- it must contain all the primary key columns of the base table. This ensures that every row of the view correspond to
+  exactly one row of the base table.
+- it can only contain a single column that is not a primary key column in the base table.
+
+So for instance, give the following base table definition::
+
+    CREATE TABLE t (
+        k int,
+        c1 int,
+        c2 int,
+        v1 int,
+        v2 int,
+        PRIMARY KEY (k, c1, c2)
+    )
+
+then the following view definitions are allowed::
+
+    CREATE MATERIALIZED VIEW mv1 AS
+        SELECT * FROM t WHERE k IS NOT NULL AND c1 IS NOT NULL AND c2 IS NOT NULL
+        PRIMARY KEY (c1, k, c2)
+
+    CREATE MATERIALIZED VIEW mv1 AS
+        SELECT * FROM t WHERE k IS NOT NULL AND c1 IS NOT NULL AND c2 IS NOT NULL
+        PRIMARY KEY (v1, k, c1, c2)
+
+but the following ones are **not** allowed::
+
+    // Error: cannot include both v1 and v2 in the primary key as both are not in the base table primary key
+    CREATE MATERIALIZED VIEW mv1 AS
+        SELECT * FROM t WHERE k IS NOT NULL AND c1 IS NOT NULL AND c2 IS NOT NULL AND v1 IS NOT NULL
+        PRIMARY KEY (v1, v2, k, c1, c2)
+
+    // Error: must include k in the primary as it's a base table primary key column
+    CREATE MATERIALIZED VIEW mv1 AS
+        SELECT * FROM t WHERE c1 IS NOT NULL AND c2 IS NOT NULL
+        PRIMARY KEY (c1, c2)
+
+
+.. _mv-options:
+
+MV options
+``````````
+
+A materialized view is internally implemented by a table and as such, creating a MV allows the :ref:`same options than
+creating a table <create-table-options>`.
+
+
+.. _alter-materialized-view-statement:
+
+ALTER MATERIALIZED VIEW
+^^^^^^^^^^^^^^^^^^^^^^^
+
+After creation, you can alter the options of a materialized view using the ``ALTER MATERIALIZED VIEW`` statement:
+
+.. productionlist::
+   alter_materialized_view_statement: ALTER MATERIALIZED VIEW `view_name` WITH `table_options`
+
+The options that can be updated are the same than at creation time and thus the :ref:`same than for tables
+<create-table-options>`.
+
+.. _drop-materialized-view-statement:
+
+DROP MATERIALIZED VIEW
+^^^^^^^^^^^^^^^^^^^^^^
+
+Dropping a materialized view users the ``DROP MATERIALIZED VIEW`` statement:
+
+.. productionlist::
+   drop_materialized_view_statement: DROP MATERIALIZED VIEW [ IF EXISTS ] `view_name`;
+
+If the materialized view does not exists, the statement will return an error, unless ``IF EXISTS`` is used in which case
+the operation is a no-op.
+
+MV Limitations
+```````````````
+
+.. Note:: Removal of columns not selected in the Materialized View (via ``UPDATE base SET unselected_column = null`` or
+          ``DELETE unselected_column FROM base``) may shadow missed updates to other columns received by hints or repair.
+          For this reason, we advise against doing deletions on base columns not selected in views until this is
+          fixed on CASSANDRA-13826.
diff --git a/src/doc/4.0-rc1/_sources/cql/operators.rst.txt b/src/doc/4.0-rc1/_sources/cql/operators.rst.txt
new file mode 100644
index 0000000..1faf0d0
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/operators.rst.txt
@@ -0,0 +1,74 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _arithmetic_operators:
+
+Arithmetic Operators
+--------------------
+
+CQL supports the following operators:
+
+=============== =======================================================================================================
+ Operator        Description
+=============== =======================================================================================================
+ \- (unary)      Negates operand
+ \+              Addition
+ \-              Substraction
+ \*              Multiplication
+ /               Division
+ %               Returns the remainder of a division
+=============== =======================================================================================================
+
+.. _number-arithmetic:
+
+Number Arithmetic
+^^^^^^^^^^^^^^^^^
+
+All arithmetic operations are supported on numeric types or counters.
+
+The return type of the operation will be based on the operand types:
+
+============= =========== ========== ========== ========== ========== ========== ========== ========== ==========
+ left/right   tinyint      smallint   int        bigint     counter    float      double     varint     decimal
+============= =========== ========== ========== ========== ========== ========== ========== ========== ==========
+ **tinyint**   tinyint     smallint   int        bigint     bigint     float      double     varint     decimal
+ **smallint**  smallint    smallint   int        bigint     bigint     float      double     varint     decimal
+ **int**       int         int        int        bigint     bigint     float      double     varint     decimal
+ **bigint**    bigint      bigint     bigint     bigint     bigint     double     double     varint     decimal
+ **counter**   bigint      bigint     bigint     bigint     bigint     double     double     varint     decimal
+ **float**     float       float      float      double     double     float      double     decimal    decimal
+ **double**    double      double     double     double     double     double     double     decimal    decimal
+ **varint**    varint      varint     varint     decimal    decimal    decimal    decimal    decimal    decimal
+ **decimal**   decimal     decimal    decimal    decimal    decimal    decimal    decimal    decimal    decimal
+============= =========== ========== ========== ========== ========== ========== ========== ========== ==========
+
+``*``, ``/`` and ``%`` operators have a higher precedence level than ``+`` and ``-`` operator. By consequence,
+they will be evaluated before. If two operator in an expression have the same precedence level, they will be evaluated
+left to right based on their position in the expression.
+
+.. _datetime--arithmetic:
+
+Datetime Arithmetic
+^^^^^^^^^^^^^^^^^^^
+
+A ``duration`` can be added (+) or substracted (-) from a ``timestamp`` or a ``date`` to create a new
+``timestamp`` or ``date``. So for instance::
+
+    SELECT * FROM myTable WHERE t = '2017-01-01' - 2d
+
+will select all the records with a value of ``t`` which is in the last 2 days of 2016.
diff --git a/src/doc/4.0-rc1/_sources/cql/security.rst.txt b/src/doc/4.0-rc1/_sources/cql/security.rst.txt
new file mode 100644
index 0000000..429a1ef
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/security.rst.txt
@@ -0,0 +1,538 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _cql-security:
+
+Security
+--------
+
+.. _cql-roles:
+
+Database Roles
+^^^^^^^^^^^^^^
+
+CQL uses database roles to represent users and group of users. Syntactically, a role is defined by:
+
+.. productionlist::
+   role_name: `identifier` | `string`
+
+.. _create-role-statement:
+
+CREATE ROLE
+~~~~~~~~~~~
+
+Creating a role uses the ``CREATE ROLE`` statement:
+
+.. productionlist::
+   create_role_statement: CREATE ROLE [ IF NOT EXISTS ] `role_name`
+                        :     [ WITH `role_options` ]
+   role_options: `role_option` ( AND `role_option` )*
+   role_option: PASSWORD '=' `string`
+              :| LOGIN '=' `boolean`
+              :| SUPERUSER '=' `boolean`
+              :| OPTIONS '=' `map_literal`
+              :| ACCESS TO DATACENTERS `set_literal`
+              :| ACCESS TO ALL DATACENTERS
+
+For instance::
+
+    CREATE ROLE new_role;
+    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true;
+    CREATE ROLE bob WITH PASSWORD = 'password_b' AND LOGIN = true AND SUPERUSER = true;
+    CREATE ROLE carlos WITH OPTIONS = { 'custom_option1' : 'option1_value', 'custom_option2' : 99 };
+    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true AND ACCESS TO DATACENTERS {'DC1', 'DC3'};
+    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true AND ACCESS TO ALL DATACENTERS;
+
+By default roles do not possess ``LOGIN`` privileges or ``SUPERUSER`` status.
+
+:ref:`Permissions <cql-permissions>` on database resources are granted to roles; types of resources include keyspaces,
+tables, functions and roles themselves. Roles may be granted to other roles to create hierarchical permissions
+structures; in these hierarchies, permissions and ``SUPERUSER`` status are inherited, but the ``LOGIN`` privilege is
+not.
+
+If a role has the ``LOGIN`` privilege, clients may identify as that role when connecting. For the duration of that
+connection, the client will acquire any roles and privileges granted to that role.
+
+Only a client with with the ``CREATE`` permission on the database roles resource may issue ``CREATE ROLE`` requests (see
+the :ref:`relevant section <cql-permissions>` below), unless the client is a ``SUPERUSER``. Role management in Cassandra
+is pluggable and custom implementations may support only a subset of the listed options.
+
+Role names should be quoted if they contain non-alphanumeric characters.
+
+.. _setting-credentials-for-internal-authentication:
+
+Setting credentials for internal authentication
+```````````````````````````````````````````````
+
+Use the ``WITH PASSWORD`` clause to set a password for internal authentication, enclosing the password in single
+quotation marks.
+
+If internal authentication has not been set up or the role does not have ``LOGIN`` privileges, the ``WITH PASSWORD``
+clause is not necessary.
+
+Restricting connections to specific datacenters
+```````````````````````````````````````````````
+
+If a ``network_authorizer`` has been configured, you can restrict login roles to specific datacenters with the
+``ACCESS TO DATACENTERS`` clause followed by a set literal of datacenters the user can access. Not specifiying
+datacenters implicitly grants access to all datacenters. The clause ``ACCESS TO ALL DATACENTERS`` can be used for
+explicitness, but there's no functional difference.
+
+Creating a role conditionally
+`````````````````````````````
+
+Attempting to create an existing role results in an invalid query condition unless the ``IF NOT EXISTS`` option is used.
+If the option is used and the role exists, the statement is a no-op::
+
+    CREATE ROLE other_role;
+    CREATE ROLE IF NOT EXISTS other_role;
+
+
+.. _alter-role-statement:
+
+ALTER ROLE
+~~~~~~~~~~
+
+Altering a role options uses the ``ALTER ROLE`` statement:
+
+.. productionlist::
+   alter_role_statement: ALTER ROLE `role_name` WITH `role_options`
+
+For instance::
+
+    ALTER ROLE bob WITH PASSWORD = 'PASSWORD_B' AND SUPERUSER = false;
+
+Restricting connections to specific datacenters
+```````````````````````````````````````````````
+
+If a ``network_authorizer`` has been configured, you can restrict login roles to specific datacenters with the
+``ACCESS TO DATACENTERS`` clause followed by a set literal of datacenters the user can access. To remove any
+data center restrictions, use the ``ACCESS TO ALL DATACENTERS`` clause.
+
+Conditions on executing ``ALTER ROLE`` statements:
+
+-  A client must have ``SUPERUSER`` status to alter the ``SUPERUSER`` status of another role
+-  A client cannot alter the ``SUPERUSER`` status of any role it currently holds
+-  A client can only modify certain properties of the role with which it identified at login (e.g. ``PASSWORD``)
+-  To modify properties of a role, the client must be granted ``ALTER`` :ref:`permission <cql-permissions>` on that role
+
+.. _drop-role-statement:
+
+DROP ROLE
+~~~~~~~~~
+
+Dropping a role uses the ``DROP ROLE`` statement:
+
+.. productionlist::
+   drop_role_statement: DROP ROLE [ IF EXISTS ] `role_name`
+
+``DROP ROLE`` requires the client to have ``DROP`` :ref:`permission <cql-permissions>` on the role in question. In
+addition, client may not ``DROP`` the role with which it identified at login. Finally, only a client with ``SUPERUSER``
+status may ``DROP`` another ``SUPERUSER`` role.
+
+Attempting to drop a role which does not exist results in an invalid query condition unless the ``IF EXISTS`` option is
+used. If the option is used and the role does not exist the statement is a no-op.
+
+.. note:: DROP ROLE intentionally does not terminate any open user sessions. Currently connected sessions will remain
+   connected and will retain the ability to perform any database actions which do not require :ref:`authorization<authorization>`.
+   However, if authorization is enabled, :ref:`permissions<cql-permissions>` of the dropped role are also revoked,
+   subject to the :ref:`caching options<auth-caching>` configured in :ref:`cassandra.yaml<cassandra-yaml>`.
+   Should a dropped role be subsequently recreated and have new :ref:`permissions<grant-permission-statement>` or
+   :ref:`roles<grant-role-statement>` granted to it, any client sessions still connected will acquire the newly granted
+   permissions and roles.
+
+.. _grant-role-statement:
+
+GRANT ROLE
+~~~~~~~~~~
+
+Granting a role to another uses the ``GRANT ROLE`` statement:
+
+.. productionlist::
+   grant_role_statement: GRANT `role_name` TO `role_name`
+
+For instance::
+
+    GRANT report_writer TO alice;
+
+This statement grants the ``report_writer`` role to ``alice``. Any permissions granted to ``report_writer`` are also
+acquired by ``alice``.
+
+Roles are modelled as a directed acyclic graph, so circular grants are not permitted. The following examples result in
+error conditions::
+
+    GRANT role_a TO role_b;
+    GRANT role_b TO role_a;
+
+    GRANT role_a TO role_b;
+    GRANT role_b TO role_c;
+    GRANT role_c TO role_a;
+
+.. _revoke-role-statement:
+
+REVOKE ROLE
+~~~~~~~~~~~
+
+Revoking a role uses the ``REVOKE ROLE`` statement:
+
+.. productionlist::
+   revoke_role_statement: REVOKE `role_name` FROM `role_name`
+
+For instance::
+
+    REVOKE report_writer FROM alice;
+
+This statement revokes the ``report_writer`` role from ``alice``. Any permissions that ``alice`` has acquired via the
+``report_writer`` role are also revoked.
+
+.. _list-roles-statement:
+
+LIST ROLES
+~~~~~~~~~~
+
+All the known roles (in the system or granted to specific role) can be listed using the ``LIST ROLES`` statement:
+
+.. productionlist::
+   list_roles_statement: LIST ROLES [ OF `role_name` ] [ NORECURSIVE ]
+
+For instance::
+
+    LIST ROLES;
+
+returns all known roles in the system, this requires ``DESCRIBE`` permission on the database roles resource. And::
+
+    LIST ROLES OF alice;
+
+enumerates all roles granted to ``alice``, including those transitively acquired. But::
+
+    LIST ROLES OF bob NORECURSIVE
+
+lists all roles directly granted to ``bob`` without including any of the transitively acquired ones.
+
+Users
+^^^^^
+
+Prior to the introduction of roles in Cassandra 2.2, authentication and authorization were based around the concept of a
+``USER``. For backward compatibility, the legacy syntax has been preserved with ``USER`` centric statements becoming
+synonyms for the ``ROLE`` based equivalents. In other words, creating/updating a user is just a different syntax for
+creating/updating a role.
+
+.. _create-user-statement:
+
+CREATE USER
+~~~~~~~~~~~
+
+Creating a user uses the ``CREATE USER`` statement:
+
+.. productionlist::
+   create_user_statement: CREATE USER [ IF NOT EXISTS ] `role_name` [ WITH PASSWORD `string` ] [ `user_option` ]
+   user_option: SUPERUSER | NOSUPERUSER
+
+For instance::
+
+    CREATE USER alice WITH PASSWORD 'password_a' SUPERUSER;
+    CREATE USER bob WITH PASSWORD 'password_b' NOSUPERUSER;
+
+``CREATE USER`` is equivalent to ``CREATE ROLE`` where the ``LOGIN`` option is ``true``. So, the following pairs of
+statements are equivalent::
+
+    CREATE USER alice WITH PASSWORD 'password_a' SUPERUSER;
+    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true AND SUPERUSER = true;
+
+    CREATE USER IF NOT EXISTS alice WITH PASSWORD 'password_a' SUPERUSER;
+    CREATE ROLE IF NOT EXISTS alice WITH PASSWORD = 'password_a' AND LOGIN = true AND SUPERUSER = true;
+
+    CREATE USER alice WITH PASSWORD 'password_a' NOSUPERUSER;
+    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true AND SUPERUSER = false;
+
+    CREATE USER alice WITH PASSWORD 'password_a' NOSUPERUSER;
+    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true;
+
+    CREATE USER alice WITH PASSWORD 'password_a';
+    CREATE ROLE alice WITH PASSWORD = 'password_a' AND LOGIN = true;
+
+.. _alter-user-statement:
+
+ALTER USER
+~~~~~~~~~~
+
+Altering the options of a user uses the ``ALTER USER`` statement:
+
+.. productionlist::
+   alter_user_statement: ALTER USER `role_name` [ WITH PASSWORD `string` ] [ `user_option` ]
+
+For instance::
+
+    ALTER USER alice WITH PASSWORD 'PASSWORD_A';
+    ALTER USER bob SUPERUSER;
+
+.. _drop-user-statement:
+
+DROP USER
+~~~~~~~~~
+
+Dropping a user uses the ``DROP USER`` statement:
+
+.. productionlist::
+   drop_user_statement: DROP USER [ IF EXISTS ] `role_name`
+
+.. _list-users-statement:
+
+LIST USERS
+~~~~~~~~~~
+
+Existing users can be listed using the ``LIST USERS`` statement:
+
+.. productionlist::
+   list_users_statement: LIST USERS
+
+Note that this statement is equivalent to::
+
+    LIST ROLES;
+
+but only roles with the ``LOGIN`` privilege are included in the output.
+
+Data Control
+^^^^^^^^^^^^
+
+.. _cql-permissions:
+
+Permissions
+~~~~~~~~~~~
+
+Permissions on resources are granted to roles; there are several different types of resources in Cassandra and each type
+is modelled hierarchically:
+
+- The hierarchy of Data resources, Keyspaces and Tables has the structure ``ALL KEYSPACES`` -> ``KEYSPACE`` ->
+  ``TABLE``.
+- Function resources have the structure ``ALL FUNCTIONS`` -> ``KEYSPACE`` -> ``FUNCTION``
+- Resources representing roles have the structure ``ALL ROLES`` -> ``ROLE``
+- Resources representing JMX ObjectNames, which map to sets of MBeans/MXBeans, have the structure ``ALL MBEANS`` ->
+  ``MBEAN``
+
+Permissions can be granted at any level of these hierarchies and they flow downwards. So granting a permission on a
+resource higher up the chain automatically grants that same permission on all resources lower down. For example,
+granting ``SELECT`` on a ``KEYSPACE`` automatically grants it on all ``TABLES`` in that ``KEYSPACE``. Likewise, granting
+a permission on ``ALL FUNCTIONS`` grants it on every defined function, regardless of which keyspace it is scoped in. It
+is also possible to grant permissions on all functions scoped to a particular keyspace.
+
+Modifications to permissions are visible to existing client sessions; that is, connections need not be re-established
+following permissions changes.
+
+The full set of available permissions is:
+
+- ``CREATE``
+- ``ALTER``
+- ``DROP``
+- ``SELECT``
+- ``MODIFY``
+- ``AUTHORIZE``
+- ``DESCRIBE``
+- ``EXECUTE``
+
+Not all permissions are applicable to every type of resource. For instance, ``EXECUTE`` is only relevant in the context
+of functions or mbeans; granting ``EXECUTE`` on a resource representing a table is nonsensical. Attempting to ``GRANT``
+a permission on resource to which it cannot be applied results in an error response. The following illustrates which
+permissions can be granted on which types of resource, and which statements are enabled by that permission.
+
+=============== =============================== =======================================================================
+ Permission      Resource                        Operations
+=============== =============================== =======================================================================
+ ``CREATE``      ``ALL KEYSPACES``               ``CREATE KEYSPACE`` and ``CREATE TABLE`` in any keyspace
+ ``CREATE``      ``KEYSPACE``                    ``CREATE TABLE`` in specified keyspace
+ ``CREATE``      ``ALL FUNCTIONS``               ``CREATE FUNCTION`` in any keyspace and ``CREATE AGGREGATE`` in any
+                                                 keyspace
+ ``CREATE``      ``ALL FUNCTIONS IN KEYSPACE``   ``CREATE FUNCTION`` and ``CREATE AGGREGATE`` in specified keyspace
+ ``CREATE``      ``ALL ROLES``                   ``CREATE ROLE``
+ ``ALTER``       ``ALL KEYSPACES``               ``ALTER KEYSPACE`` and ``ALTER TABLE`` in any keyspace
+ ``ALTER``       ``KEYSPACE``                    ``ALTER KEYSPACE`` and ``ALTER TABLE`` in specified keyspace
+ ``ALTER``       ``TABLE``                       ``ALTER TABLE``
+ ``ALTER``       ``ALL FUNCTIONS``               ``CREATE FUNCTION`` and ``CREATE AGGREGATE``: replacing any existing
+ ``ALTER``       ``ALL FUNCTIONS IN KEYSPACE``   ``CREATE FUNCTION`` and ``CREATE AGGREGATE``: replacing existing in
+                                                 specified keyspace
+ ``ALTER``       ``FUNCTION``                    ``CREATE FUNCTION`` and ``CREATE AGGREGATE``: replacing existing
+ ``ALTER``       ``ALL ROLES``                   ``ALTER ROLE`` on any role
+ ``ALTER``       ``ROLE``                        ``ALTER ROLE``
+ ``DROP``        ``ALL KEYSPACES``               ``DROP KEYSPACE`` and ``DROP TABLE`` in any keyspace
+ ``DROP``        ``KEYSPACE``                    ``DROP TABLE`` in specified keyspace
+ ``DROP``        ``TABLE``                       ``DROP TABLE``
+ ``DROP``        ``ALL FUNCTIONS``               ``DROP FUNCTION`` and ``DROP AGGREGATE`` in any keyspace
+ ``DROP``        ``ALL FUNCTIONS IN KEYSPACE``   ``DROP FUNCTION`` and ``DROP AGGREGATE`` in specified keyspace
+ ``DROP``        ``FUNCTION``                    ``DROP FUNCTION``
+ ``DROP``        ``ALL ROLES``                   ``DROP ROLE`` on any role
+ ``DROP``        ``ROLE``                        ``DROP ROLE``
+ ``SELECT``      ``ALL KEYSPACES``               ``SELECT`` on any table
+ ``SELECT``      ``KEYSPACE``                    ``SELECT`` on any table in specified keyspace
+ ``SELECT``      ``TABLE``                       ``SELECT`` on specified table
+ ``SELECT``      ``ALL MBEANS``                  Call getter methods on any mbean
+ ``SELECT``      ``MBEANS``                      Call getter methods on any mbean matching a wildcard pattern
+ ``SELECT``      ``MBEAN``                       Call getter methods on named mbean
+ ``MODIFY``      ``ALL KEYSPACES``               ``INSERT``, ``UPDATE``, ``DELETE`` and ``TRUNCATE`` on any table
+ ``MODIFY``      ``KEYSPACE``                    ``INSERT``, ``UPDATE``, ``DELETE`` and ``TRUNCATE`` on any table in
+                                                 specified keyspace
+ ``MODIFY``      ``TABLE``                       ``INSERT``, ``UPDATE``, ``DELETE`` and ``TRUNCATE`` on specified table
+ ``MODIFY``      ``ALL MBEANS``                  Call setter methods on any mbean
+ ``MODIFY``      ``MBEANS``                      Call setter methods on any mbean matching a wildcard pattern
+ ``MODIFY``      ``MBEAN``                       Call setter methods on named mbean
+ ``AUTHORIZE``   ``ALL KEYSPACES``               ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any table
+ ``AUTHORIZE``   ``KEYSPACE``                    ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any table in
+                                                 specified keyspace
+ ``AUTHORIZE``   ``TABLE``                       ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on specified table
+ ``AUTHORIZE``   ``ALL FUNCTIONS``               ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any function
+ ``AUTHORIZE``   ``ALL FUNCTIONS IN KEYSPACE``   ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` in specified keyspace
+ ``AUTHORIZE``   ``FUNCTION``                    ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on specified function
+ ``AUTHORIZE``   ``ALL MBEANS``                  ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any mbean
+ ``AUTHORIZE``   ``MBEANS``                      ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on any mbean matching
+                                                 a wildcard pattern
+ ``AUTHORIZE``   ``MBEAN``                       ``GRANT PERMISSION`` and ``REVOKE PERMISSION`` on named mbean
+ ``AUTHORIZE``   ``ALL ROLES``                   ``GRANT ROLE`` and ``REVOKE ROLE`` on any role
+ ``AUTHORIZE``   ``ROLES``                       ``GRANT ROLE`` and ``REVOKE ROLE`` on specified roles
+ ``DESCRIBE``    ``ALL ROLES``                   ``LIST ROLES`` on all roles or only roles granted to another,
+                                                 specified role
+ ``DESCRIBE``    ``ALL MBEANS``                  Retrieve metadata about any mbean from the platform's MBeanServer
+ ``DESCRIBE``    ``MBEANS``                      Retrieve metadata about any mbean matching a wildcard patter from the
+                                                 platform's MBeanServer
+ ``DESCRIBE``    ``MBEAN``                       Retrieve metadata about a named mbean from the platform's MBeanServer
+ ``EXECUTE``     ``ALL FUNCTIONS``               ``SELECT``, ``INSERT`` and ``UPDATE`` using any function, and use of
+                                                 any function in ``CREATE AGGREGATE``
+ ``EXECUTE``     ``ALL FUNCTIONS IN KEYSPACE``   ``SELECT``, ``INSERT`` and ``UPDATE`` using any function in specified
+                                                 keyspace and use of any function in keyspace in ``CREATE AGGREGATE``
+ ``EXECUTE``     ``FUNCTION``                    ``SELECT``, ``INSERT`` and ``UPDATE`` using specified function and use
+                                                 of the function in ``CREATE AGGREGATE``
+ ``EXECUTE``     ``ALL MBEANS``                  Execute operations on any mbean
+ ``EXECUTE``     ``MBEANS``                      Execute operations on any mbean matching a wildcard pattern
+ ``EXECUTE``     ``MBEAN``                       Execute operations on named mbean
+=============== =============================== =======================================================================
+
+.. _grant-permission-statement:
+
+GRANT PERMISSION
+~~~~~~~~~~~~~~~~
+
+Granting a permission uses the ``GRANT PERMISSION`` statement:
+
+.. productionlist::
+   grant_permission_statement: GRANT `permissions` ON `resource` TO `role_name`
+   permissions: ALL [ PERMISSIONS ] | `permission` [ PERMISSION ]
+   permission: CREATE | ALTER | DROP | SELECT | MODIFY | AUTHORIZE | DESCRIBE | EXECUTE
+   resource: ALL KEYSPACES
+           :| KEYSPACE `keyspace_name`
+           :| [ TABLE ] `table_name`
+           :| ALL ROLES
+           :| ROLE `role_name`
+           :| ALL FUNCTIONS [ IN KEYSPACE `keyspace_name` ]
+           :| FUNCTION `function_name` '(' [ `cql_type` ( ',' `cql_type` )* ] ')'
+           :| ALL MBEANS
+           :| ( MBEAN | MBEANS ) `string`
+
+For instance::
+
+    GRANT SELECT ON ALL KEYSPACES TO data_reader;
+
+This gives any user with the role ``data_reader`` permission to execute ``SELECT`` statements on any table across all
+keyspaces::
+
+    GRANT MODIFY ON KEYSPACE keyspace1 TO data_writer;
+
+This give any user with the role ``data_writer`` permission to perform ``UPDATE``, ``INSERT``, ``UPDATE``, ``DELETE``
+and ``TRUNCATE`` queries on all tables in the ``keyspace1`` keyspace::
+
+    GRANT DROP ON keyspace1.table1 TO schema_owner;
+
+This gives any user with the ``schema_owner`` role permissions to ``DROP`` ``keyspace1.table1``::
+
+    GRANT EXECUTE ON FUNCTION keyspace1.user_function( int ) TO report_writer;
+
+This grants any user with the ``report_writer`` role permission to execute ``SELECT``, ``INSERT`` and ``UPDATE`` queries
+which use the function ``keyspace1.user_function( int )``::
+
+    GRANT DESCRIBE ON ALL ROLES TO role_admin;
+
+This grants any user with the ``role_admin`` role permission to view any and all roles in the system with a ``LIST
+ROLES`` statement
+
+.. _grant-all:
+
+GRANT ALL
+`````````
+
+When the ``GRANT ALL`` form is used, the appropriate set of permissions is determined automatically based on the target
+resource.
+
+Automatic Granting
+``````````````````
+
+When a resource is created, via a ``CREATE KEYSPACE``, ``CREATE TABLE``, ``CREATE FUNCTION``, ``CREATE AGGREGATE`` or
+``CREATE ROLE`` statement, the creator (the role the database user who issues the statement is identified as), is
+automatically granted all applicable permissions on the new resource.
+
+.. _revoke-permission-statement:
+
+REVOKE PERMISSION
+~~~~~~~~~~~~~~~~~
+
+Revoking a permission from a role uses the ``REVOKE PERMISSION`` statement:
+
+.. productionlist::
+   revoke_permission_statement: REVOKE `permissions` ON `resource` FROM `role_name`
+
+For instance::
+
+    REVOKE SELECT ON ALL KEYSPACES FROM data_reader;
+    REVOKE MODIFY ON KEYSPACE keyspace1 FROM data_writer;
+    REVOKE DROP ON keyspace1.table1 FROM schema_owner;
+    REVOKE EXECUTE ON FUNCTION keyspace1.user_function( int ) FROM report_writer;
+    REVOKE DESCRIBE ON ALL ROLES FROM role_admin;
+
+Because of their function in normal driver operations, certain tables cannot have their `SELECT` permissions
+revoked. The following tables will be available to all authorized users regardless of their assigned role::
+
+* `system_schema.keyspaces`
+* `system_schema.columns`
+* `system_schema.tables`
+* `system.local`
+* `system.peers`
+
+.. _list-permissions-statement:
+
+LIST PERMISSIONS
+~~~~~~~~~~~~~~~~
+
+Listing granted permissions uses the ``LIST PERMISSIONS`` statement:
+
+.. productionlist::
+   list_permissions_statement: LIST `permissions` [ ON `resource` ] [ OF `role_name` [ NORECURSIVE ] ]
+
+For instance::
+
+    LIST ALL PERMISSIONS OF alice;
+
+Show all permissions granted to ``alice``, including those acquired transitively from any other roles::
+
+    LIST ALL PERMISSIONS ON keyspace1.table1 OF bob;
+
+Show all permissions on ``keyspace1.table1`` granted to ``bob``, including those acquired transitively from any other
+roles. This also includes any permissions higher up the resource hierarchy which can be applied to ``keyspace1.table1``.
+For example, should ``bob`` have ``ALTER`` permission on ``keyspace1``, that would be included in the results of this
+query. Adding the ``NORECURSIVE`` switch restricts the results to only those permissions which were directly granted to
+``bob`` or one of ``bob``'s roles::
+
+    LIST SELECT PERMISSIONS OF carlos;
+
+Show any permissions granted to ``carlos`` or any of ``carlos``'s roles, limited to ``SELECT`` permissions on any
+resource.
diff --git a/src/doc/4.0-rc1/_sources/cql/triggers.rst.txt b/src/doc/4.0-rc1/_sources/cql/triggers.rst.txt
new file mode 100644
index 0000000..db3f53e
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/triggers.rst.txt
@@ -0,0 +1,63 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _cql-triggers:
+
+Triggers
+--------
+
+Triggers are identified by a name defined by:
+
+.. productionlist::
+   trigger_name: `identifier`
+
+
+.. _create-trigger-statement:
+
+CREATE TRIGGER
+^^^^^^^^^^^^^^
+
+Creating a new trigger uses the ``CREATE TRIGGER`` statement:
+
+.. productionlist::
+   create_trigger_statement: CREATE TRIGGER [ IF NOT EXISTS ] `trigger_name`
+                           :     ON `table_name`
+                           :     USING `string`
+
+For instance::
+
+    CREATE TRIGGER myTrigger ON myTable USING 'org.apache.cassandra.triggers.InvertedIndex';
+
+The actual logic that makes up the trigger can be written in any Java (JVM) language and exists outside the database.
+You place the trigger code in a ``lib/triggers`` subdirectory of the Cassandra installation directory, it loads during
+cluster startup, and exists on every node that participates in a cluster. The trigger defined on a table fires before a
+requested DML statement occurs, which ensures the atomicity of the transaction.
+
+.. _drop-trigger-statement:
+
+DROP TRIGGER
+^^^^^^^^^^^^
+
+Dropping a trigger uses the ``DROP TRIGGER`` statement:
+
+.. productionlist::
+   drop_trigger_statement: DROP TRIGGER [ IF EXISTS ] `trigger_name` ON `table_name`
+
+For instance::
+
+    DROP TRIGGER myTrigger ON myTable;
diff --git a/src/doc/4.0-rc1/_sources/cql/types.rst.txt b/src/doc/4.0-rc1/_sources/cql/types.rst.txt
new file mode 100644
index 0000000..61240a2
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/cql/types.rst.txt
@@ -0,0 +1,603 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+.. _UUID: https://en.wikipedia.org/wiki/Universally_unique_identifier
+
+.. _data-types:
+
+Data Types
+----------
+
+CQL is a typed language and supports a rich set of data types, including :ref:`native types <native-types>`,
+:ref:`collection types <collections>`, :ref:`user-defined types <udts>`, :ref:`tuple types <tuples>` and :ref:`custom
+types <custom-types>`:
+
+.. productionlist::
+   cql_type: `native_type` | `collection_type` | `user_defined_type` | `tuple_type` | `custom_type`
+
+.. _native-types:
+
+Native Types
+^^^^^^^^^^^^
+
+The native types supported by CQL are:
+
+.. productionlist::
+   native_type: ASCII
+              : | BIGINT
+              : | BLOB
+              : | BOOLEAN
+              : | COUNTER
+              : | DATE
+              : | DECIMAL
+              : | DOUBLE
+              : | DURATION
+              : | FLOAT
+              : | INET
+              : | INT
+              : | SMALLINT
+              : | TEXT
+              : | TIME
+              : | TIMESTAMP
+              : | TIMEUUID
+              : | TINYINT
+              : | UUID
+              : | VARCHAR
+              : | VARINT
+
+The following table gives additional informations on the native data types, and on which kind of :ref:`constants
+<constants>` each type supports:
+
+=============== ===================== ==================================================================================
+ type            constants supported   description
+=============== ===================== ==================================================================================
+ ``ascii``       :token:`string`       ASCII character string
+ ``bigint``      :token:`integer`      64-bit signed long
+ ``blob``        :token:`blob`         Arbitrary bytes (no validation)
+ ``boolean``     :token:`boolean`      Either ``true`` or ``false``
+ ``counter``     :token:`integer`      Counter column (64-bit signed value). See :ref:`counters` for details
+ ``date``        :token:`integer`,     A date (with no corresponding time value). See :ref:`dates` below for details
+                 :token:`string`
+ ``decimal``     :token:`integer`,     Variable-precision decimal
+                 :token:`float`
+ ``double``      :token:`integer`      64-bit IEEE-754 floating point
+                 :token:`float`
+ ``duration``    :token:`duration`,    A duration with nanosecond precision. See :ref:`durations` below for details
+ ``float``       :token:`integer`,     32-bit IEEE-754 floating point
+                 :token:`float`
+ ``inet``        :token:`string`       An IP address, either IPv4 (4 bytes long) or IPv6 (16 bytes long). Note that
+                                       there is no ``inet`` constant, IP address should be input as strings
+ ``int``         :token:`integer`      32-bit signed int
+ ``smallint``    :token:`integer`      16-bit signed int
+ ``text``        :token:`string`       UTF8 encoded string
+ ``time``        :token:`integer`,     A time (with no corresponding date value) with nanosecond precision. See
+                 :token:`string`       :ref:`times` below for details
+ ``timestamp``   :token:`integer`,     A timestamp (date and time) with millisecond precision. See :ref:`timestamps`
+                 :token:`string`       below for details
+ ``timeuuid``    :token:`uuid`         Version 1 UUID_, generally used as a “conflict-free” timestamp. Also see
+                                       :ref:`timeuuid-functions`
+ ``tinyint``     :token:`integer`      8-bit signed int
+ ``uuid``        :token:`uuid`         A UUID_ (of any version)
+ ``varchar``     :token:`string`       UTF8 encoded string
+ ``varint``      :token:`integer`      Arbitrary-precision integer
+=============== ===================== ==================================================================================
+
+.. _counters:
+
+Counters
+~~~~~~~~
+
+The ``counter`` type is used to define *counter columns*. A counter column is a column whose value is a 64-bit signed
+integer and on which 2 operations are supported: incrementing and decrementing (see the :ref:`UPDATE statement
+<update-statement>` for syntax). Note that the value of a counter cannot be set: a counter does not exist until first
+incremented/decremented, and that first increment/decrement is made as if the prior value was 0.
+
+.. _counter-limitations:
+
+Counters have a number of important limitations:
+
+- They cannot be used for columns part of the ``PRIMARY KEY`` of a table.
+- A table that contains a counter can only contain counters. In other words, either all the columns of a table outside
+  the ``PRIMARY KEY`` have the ``counter`` type, or none of them have it.
+- Counters do not support :ref:`expiration <ttls>`.
+- The deletion of counters is supported, but is only guaranteed to work the first time you delete a counter. In other
+  words, you should not re-update a counter that you have deleted (if you do, proper behavior is not guaranteed).
+- Counter updates are, by nature, not `idemptotent <https://en.wikipedia.org/wiki/Idempotence>`__. An important
+  consequence is that if a counter update fails unexpectedly (timeout or loss of connection to the coordinator node),
+  the client has no way to know if the update has been applied or not. In particular, replaying the update may or may
+  not lead to an over count.
+
+.. _timestamps:
+
+Working with timestamps
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Values of the ``timestamp`` type are encoded as 64-bit signed integers representing a number of milliseconds since the
+standard base time known as `the epoch <https://en.wikipedia.org/wiki/Unix_time>`__: January 1 1970 at 00:00:00 GMT.
+
+Timestamps can be input in CQL either using their value as an :token:`integer`, or using a :token:`string` that
+represents an `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`__ date. For instance, all of the values below are
+valid ``timestamp`` values for  Mar 2, 2011, at 04:05:00 AM, GMT:
+
+- ``1299038700000``
+- ``'2011-02-03 04:05+0000'``
+- ``'2011-02-03 04:05:00+0000'``
+- ``'2011-02-03 04:05:00.000+0000'``
+- ``'2011-02-03T04:05+0000'``
+- ``'2011-02-03T04:05:00+0000'``
+- ``'2011-02-03T04:05:00.000+0000'``
+
+The ``+0000`` above is an RFC 822 4-digit time zone specification; ``+0000`` refers to GMT. US Pacific Standard Time is
+``-0800``. The time zone may be omitted if desired (``'2011-02-03 04:05:00'``), and if so, the date will be interpreted
+as being in the time zone under which the coordinating Cassandra node is configured. There are however difficulties
+inherent in relying on the time zone configuration being as expected, so it is recommended that the time zone always be
+specified for timestamps when feasible.
+
+The time of day may also be omitted (``'2011-02-03'`` or ``'2011-02-03+0000'``), in which case the time of day will
+default to 00:00:00 in the specified or default time zone. However, if only the date part is relevant, consider using
+the :ref:`date <dates>` type.
+
+Note: while Cassandra will parse and accept time literals with a greater number of digits, the value stored will be truncated to 
+millisecond precision.
+
+.. _dates:
+
+Working with dates
+^^^^^^^^^^^^^^^^^^
+
+Values of the ``date`` type are encoded as 32-bit unsigned integers representing a number of days with “the epoch” at
+the center of the range (2^31). Epoch is January 1st, 1970
+
+As for :ref:`timestamp <timestamps>`, a date can be input either as an :token:`integer` or using a date
+:token:`string`. In the later case, the format should be ``yyyy-mm-dd`` (so ``'2011-02-03'`` for instance).
+
+.. _times:
+
+Working with times
+^^^^^^^^^^^^^^^^^^
+
+Values of the ``time`` type are encoded as 64-bit signed integers representing the number of nanoseconds since midnight.
+
+As for :ref:`timestamp <timestamps>`, a time can be input either as an :token:`integer` or using a :token:`string`
+representing the time. In the later case, the format should be ``hh:mm:ss[.fffffffff]`` (where the sub-second precision
+is optional and if provided, can be less than the nanosecond). So for instance, the following are valid inputs for a
+time:
+
+-  ``'08:12:54'``
+-  ``'08:12:54.123'``
+-  ``'08:12:54.123456'``
+-  ``'08:12:54.123456789'``
+
+.. _durations:
+
+Working with durations
+^^^^^^^^^^^^^^^^^^^^^^
+
+Values of the ``duration`` type are encoded as 3 signed integer of variable lengths. The first integer represents the
+number of months, the second the number of days and the third the number of nanoseconds. This is due to the fact that
+the number of days in a month can change, and a day can have 23 or 25 hours depending on the daylight saving.
+Internally, the number of months and days are decoded as 32 bits integers whereas the number of nanoseconds is decoded
+as a 64 bits integer.
+
+A duration can be input as:
+
+    #. ``(quantity unit)+`` like ``12h30m`` where the unit can be:
+
+         * ``y``: years (12 months)
+         * ``mo``: months (1 month)
+         * ``w``: weeks (7 days)
+         * ``d``: days (1 day)
+         * ``h``: hours (3,600,000,000,000 nanoseconds)
+         * ``m``: minutes (60,000,000,000 nanoseconds)
+         * ``s``: seconds (1,000,000,000 nanoseconds)
+         * ``ms``: milliseconds (1,000,000 nanoseconds)
+         * ``us`` or ``µs`` : microseconds (1000 nanoseconds)
+         * ``ns``: nanoseconds (1 nanosecond)
+    #. ISO 8601 format:  ``P[n]Y[n]M[n]DT[n]H[n]M[n]S or P[n]W``
+    #. ISO 8601 alternative format: ``P[YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]``
+
+For example::
+
+    INSERT INTO RiderResults (rider, race, result) VALUES ('Christopher Froome', 'Tour de France', 89h4m48s);
+    INSERT INTO RiderResults (rider, race, result) VALUES ('BARDET Romain', 'Tour de France', PT89H8M53S);
+    INSERT INTO RiderResults (rider, race, result) VALUES ('QUINTANA Nairo', 'Tour de France', P0000-00-00T89:09:09);
+
+.. _duration-limitation:
+
+Duration columns cannot be used in a table's ``PRIMARY KEY``. This limitation is due to the fact that
+durations cannot be ordered. It is effectively not possible to know if ``1mo`` is greater than ``29d`` without a date
+context.
+
+A ``1d`` duration is not equals to a ``24h`` one as the duration type has been created to be able to support daylight
+saving.
+
+.. _collections:
+
+Collections
+^^^^^^^^^^^
+
+CQL supports 3 kind of collections: :ref:`maps`, :ref:`sets` and :ref:`lists`. The types of those collections is defined
+by:
+
+.. productionlist::
+   collection_type: MAP '<' `cql_type` ',' `cql_type` '>'
+                  : | SET '<' `cql_type` '>'
+                  : | LIST '<' `cql_type` '>'
+
+and their values can be inputd using collection literals:
+
+.. productionlist::
+   collection_literal: `map_literal` | `set_literal` | `list_literal`
+   map_literal: '{' [ `term` ':' `term` (',' `term` : `term`)* ] '}'
+   set_literal: '{' [ `term` (',' `term`)* ] '}'
+   list_literal: '[' [ `term` (',' `term`)* ] ']'
+
+Note however that neither :token:`bind_marker` nor ``NULL`` are supported inside collection literals.
+
+Noteworthy characteristics
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Collections are meant for storing/denormalizing relatively small amount of data. They work well for things like “the
+phone numbers of a given user”, “labels applied to an email”, etc. But when items are expected to grow unbounded (“all
+messages sent by a user”, “events registered by a sensor”...), then collections are not appropriate and a specific table
+(with clustering columns) should be used. Concretely, (non-frozen) collections have the following noteworthy
+characteristics and limitations:
+
+- Individual collections are not indexed internally. Which means that even to access a single element of a collection,
+  the while collection has to be read (and reading one is not paged internally).
+- While insertion operations on sets and maps never incur a read-before-write internally, some operations on lists do.
+  Further, some lists operations are not idempotent by nature (see the section on :ref:`lists <lists>` below for
+  details), making their retry in case of timeout problematic. It is thus advised to prefer sets over lists when
+  possible.
+
+Please note that while some of those limitations may or may not be removed/improved upon in the future, it is a
+anti-pattern to use a (single) collection to store large amounts of data.
+
+.. _maps:
+
+Maps
+~~~~
+
+A ``map`` is a (sorted) set of key-value pairs, where keys are unique and the map is sorted by its keys. You can define
+and insert a map with::
+
+    CREATE TABLE users (
+        id text PRIMARY KEY,
+        name text,
+        favs map<text, text> // A map of text keys, and text values
+    );
+
+    INSERT INTO users (id, name, favs)
+               VALUES ('jsmith', 'John Smith', { 'fruit' : 'Apple', 'band' : 'Beatles' });
+
+    // Replace the existing map entirely.
+    UPDATE users SET favs = { 'fruit' : 'Banana' } WHERE id = 'jsmith';
+
+Further, maps support:
+
+- Updating or inserting one or more elements::
+
+    UPDATE users SET favs['author'] = 'Ed Poe' WHERE id = 'jsmith';
+    UPDATE users SET favs = favs + { 'movie' : 'Cassablanca', 'band' : 'ZZ Top' } WHERE id = 'jsmith';
+
+- Removing one or more element (if an element doesn't exist, removing it is a no-op but no error is thrown)::
+
+    DELETE favs['author'] FROM users WHERE id = 'jsmith';
+    UPDATE users SET favs = favs - { 'movie', 'band'} WHERE id = 'jsmith';
+
+  Note that for removing multiple elements in a ``map``, you remove from it a ``set`` of keys.
+
+Lastly, TTLs are allowed for both ``INSERT`` and ``UPDATE``, but in both case the TTL set only apply to the newly
+inserted/updated elements. In other words::
+
+    UPDATE users USING TTL 10 SET favs['color'] = 'green' WHERE id = 'jsmith';
+
+will only apply the TTL to the ``{ 'color' : 'green' }`` record, the rest of the map remaining unaffected.
+
+.. _sets:
+
+Sets
+~~~~
+
+A ``set`` is a (sorted) collection of unique values. You can define and insert a map with::
+
+    CREATE TABLE images (
+        name text PRIMARY KEY,
+        owner text,
+        tags set<text> // A set of text values
+    );
+
+    INSERT INTO images (name, owner, tags)
+                VALUES ('cat.jpg', 'jsmith', { 'pet', 'cute' });
+
+    // Replace the existing set entirely
+    UPDATE images SET tags = { 'kitten', 'cat', 'lol' } WHERE name = 'cat.jpg';
+
+Further, sets support:
+
+- Adding one or multiple elements (as this is a set, inserting an already existing element is a no-op)::
+
+    UPDATE images SET tags = tags + { 'gray', 'cuddly' } WHERE name = 'cat.jpg';
+
+- Removing one or multiple elements (if an element doesn't exist, removing it is a no-op but no error is thrown)::
+
+    UPDATE images SET tags = tags - { 'cat' } WHERE name = 'cat.jpg';
+
+Lastly, as for :ref:`maps <maps>`, TTLs if used only apply to the newly inserted values.
+
+.. _lists:
+
+Lists
+~~~~~
+
+.. note:: As mentioned above and further discussed at the end of this section, lists have limitations and specific
+   performance considerations that you should take into account before using them. In general, if you can use a
+   :ref:`set <sets>` instead of list, always prefer a set.
+
+A ``list`` is a (sorted) collection of non-unique values where elements are ordered by there position in the list. You
+can define and insert a list with::
+
+    CREATE TABLE plays (
+        id text PRIMARY KEY,
+        game text,
+        players int,
+        scores list<int> // A list of integers
+    )
+
+    INSERT INTO plays (id, game, players, scores)
+               VALUES ('123-afde', 'quake', 3, [17, 4, 2]);
+
+    // Replace the existing list entirely
+    UPDATE plays SET scores = [ 3, 9, 4] WHERE id = '123-afde';
+
+Further, lists support:
+
+- Appending and prepending values to a list::
+
+    UPDATE plays SET players = 5, scores = scores + [ 14, 21 ] WHERE id = '123-afde';
+    UPDATE plays SET players = 6, scores = [ 3 ] + scores WHERE id = '123-afde';
+
+- Setting the value at a particular position in the list. This imply that the list has a pre-existing element for that
+  position or an error will be thrown that the list is too small::
+
+    UPDATE plays SET scores[1] = 7 WHERE id = '123-afde';
+
+- Removing an element by its position in the list. This imply that the list has a pre-existing element for that position
+  or an error will be thrown that the list is too small. Further, as the operation removes an element from the list, the
+  list size will be diminished by 1, shifting the position of all the elements following the one deleted::
+
+    DELETE scores[1] FROM plays WHERE id = '123-afde';
+
+- Deleting *all* the occurrences of particular values in the list (if a particular element doesn't occur at all in the
+  list, it is simply ignored and no error is thrown)::
+
+    UPDATE plays SET scores = scores - [ 12, 21 ] WHERE id = '123-afde';
+
+.. warning:: The append and prepend operations are not idempotent by nature. So in particular, if one of these operation
+   timeout, then retrying the operation is not safe and it may (or may not) lead to appending/prepending the value
+   twice.
+
+.. warning:: Setting and removing an element by position and removing occurences of particular values incur an internal
+   *read-before-write*. They will thus run more slowly and take more ressources than usual updates (with the exclusion
+   of conditional write that have their own cost).
+
+Lastly, as for :ref:`maps <maps>`, TTLs when used only apply to the newly inserted values.
+
+.. _tuples:
+
+Tuples
+^^^^^^
+
+A tuple is a fixed-length set of values (fields) where each can be of a different data type. Tuple types and tuple
+literals are defined by:
+
+.. productionlist::
+   tuple_type: TUPLE '<' `cql_type` ( ',' `cql_type` )* '>'
+   tuple_literal: '(' `term` ( ',' `term` )* ')'
+
+and can be used thusly::
+
+    CREATE TABLE contacts (
+        user text,
+        phones tuple<text, text>,
+    )
+
+    INSERT INTO contacts (user, phones) VALUES ('John Doe', ('home', '(555) 555-1234'));
+
+Unlike other "composed" types (collections and UDT), a tuple is always :ref:`frozen <frozen>`. It is not possible to
+update only some elements of a tuple (without updating the whole tuple). A tuple literal must have the same number of
+items as its declaring type (some of those values can be null but they must be explicitly declared).
+
+.. _udts:
+
+User-Defined Types
+^^^^^^^^^^^^^^^^^^
+
+A User Defined Type (UDT) is a set data fields where each field is named and typed. UDTs allow to store related
+information together within one colum. UDTs can be created, modified and removed using token
+:token:`create_type_statement`, :token:`alter_type_statement` and :token:`drop_type_statement` described below. But
+once created, a UDT is simply referred to by its name:
+
+.. productionlist::
+   user_defined_type: `udt_name`
+   udt_name: [ `keyspace_name` '.' ] `identifier`
+
+Creating a UDT
+~~~~~~~~~~~~~~
+
+Creating a new user-defined type is done using a ``CREATE TYPE`` statement defined by:
+
+.. productionlist::
+   create_type_statement: CREATE TYPE [ IF NOT EXISTS ] `udt_name`
+                        :     '(' `field_definition` ( ',' `field_definition` )* ')'
+   field_definition: `identifier` `cql_type`
+
+A UDT has a name (used to declared columns of that type) and is a set of named and typed fields. Fields name can be any
+type, including collections or other UDT. For instance::
+
+    CREATE TYPE phone (
+        country_code int,
+        number text,
+    )
+
+    CREATE TYPE address (
+        street text,
+        city text,
+        zip text,
+        phones map<text, phone>
+    )
+
+    CREATE TABLE user (
+        name text PRIMARY KEY,
+        addresses map<text, frozen<address>>
+    )
+
+Note that:
+
+- Attempting to create an already existing type will result in an error unless the ``IF NOT EXISTS`` option is used. If
+  it is used, the statement will be a no-op if the type already exists.
+- A type is intrinsically bound to the keyspace in which it is created, and can only be used in that keyspace. At
+  creation, if the type name is prefixed by a keyspace name, it is created in that keyspace. Otherwise, it is created in
+  the current keyspace.
+- As of Cassandra 3.7, UDT have to be frozen in most cases, hence the ``frozen<address>`` in the table definition
+  above. Please see the section on :ref:`frozen <frozen>` for more details.
+
+UDT literals
+~~~~~~~~~~~~
+
+Once a used-defined type has been created, value can be input using a UDT literal:
+
+.. productionlist::
+   udt_literal: '{' `identifier` ':' `term` ( ',' `identifier` ':' `term` )* '}'
+
+In other words, a UDT literal is like a :ref:`map <maps>` literal but its keys are the names of the fields of the type.
+For instance, one could insert into the table define in the previous section using::
+
+    INSERT INTO user (name, addresses)
+              VALUES ('z3 Pr3z1den7', {
+                  'home' : {
+                      street: '1600 Pennsylvania Ave NW',
+                      city: 'Washington',
+                      zip: '20500',
+                      phones: { 'cell' : { country_code: 1, number: '202 456-1111' },
+                                'landline' : { country_code: 1, number: '...' } }
+                  },
+                  'work' : {
+                      street: '1600 Pennsylvania Ave NW',
+                      city: 'Washington',
+                      zip: '20500',
+                      phones: { 'fax' : { country_code: 1, number: '...' } }
+                  }
+              })
+
+To be valid, a UDT literal should only include fields defined by the type it is a literal of, but it can omit some field
+(in which case those will be ``null``).
+
+Altering a UDT
+~~~~~~~~~~~~~~
+
+An existing user-defined type can be modified using an ``ALTER TYPE`` statement:
+
+.. productionlist::
+   alter_type_statement: ALTER TYPE `udt_name` `alter_type_modification`
+   alter_type_modification: ADD `field_definition`
+                          : | RENAME `identifier` TO `identifier` ( `identifier` TO `identifier` )*
+
+You can:
+
+- add a new field to the type (``ALTER TYPE address ADD country text``). That new field will be ``null`` for any values
+  of the type created before the addition.
+- rename the fields of the type (``ALTER TYPE address RENAME zip TO zipcode``).
+
+Dropping a UDT
+~~~~~~~~~~~~~~
+
+You can drop an existing user-defined type using a ``DROP TYPE`` statement:
+
+.. productionlist::
+   drop_type_statement: DROP TYPE [ IF EXISTS ] `udt_name`
+
+Dropping a type results in the immediate, irreversible removal of that type. However, attempting to drop a type that is
+still in use by another type, table or function will result in an error.
+
+If the type dropped does not exist, an error will be returned unless ``IF EXISTS`` is used, in which case the operation
+is a no-op.
+
+.. _frozen:
+
+Frozen Types
+^^^^^^^^^^^^
+
+The ``frozen`` keyword is used to change the way a collection or user-defined type column is serialized. For non-frozen
+collections or UDTs, each value is serialized independently from the other values. This allow update or delete
+operations on a sub-set of the collections or UDTs values. For frozen collections or UDTs all the value are serialized
+as one, disabling the ability to perform partial updates on the values.
+
+To freeze a column, use the keyword, followed by the type in angle brackets, for instance::
+
+    CREATE TABLE posts (
+        id int PRIMARY KEY,
+        title text,
+        content text,
+        tags frozen<set<text>>
+    );
+
+To insert a frozen value, it's just like a non-frozen column::
+
+    INSERT INTO posts (id, title, content, tags)
+            VALUES (1, 'Even Higher Availability with 5x Faster Streaming in Cassandra 4.0',
+                    'Streaming is a process...', {'cassandra', 'availability'});
+
+Updating a frozen column
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+It's not possible to update an individual item of a collection::
+
+    UPDATE posts SET tags = tags - {'availability'} WHERE id = 1;
+
+The above command would result in the following error::
+
+    InvalidRequest: Error from server: code=2200 [Invalid query] message="Invalid operation (tags = tags -
+    {'availability'}) for frozen collection column tags"
+
+When there's a need to update, the full value must be provided::
+
+    UPDATE posts SET tags = {'cassandra'} WHERE id = 1;
+
+Note the whole value is being replaced, not just the unwanted item. The same is true for appending elements in a
+collection.
+
+.. _custom-types:
+
+Custom Types
+^^^^^^^^^^^^
+
+.. note:: Custom types exists mostly for backward compatiliby purposes and their usage is discouraged. Their usage is
+   complex, not user friendly and the other provided types, particularly :ref:`user-defined types <udts>`, should almost
+   always be enough.
+
+A custom type is defined by:
+
+.. productionlist::
+   custom_type: `string`
+
+A custom type is a :token:`string` that contains the name of Java class that extends the server side ``AbstractType``
+class and that can be loaded by Cassandra (it should thus be in the ``CLASSPATH`` of every node running Cassandra). That
+class will define what values are valid for the type and how the time sorts when used for a clustering column. For any
+other purpose, a value of a custom type is the same than that of a ``blob``, and can in particular be input using the
+:token:`blob` literal syntax.
diff --git a/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_conceptual.rst.txt b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_conceptual.rst.txt
new file mode 100644
index 0000000..8749b79
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_conceptual.rst.txt
@@ -0,0 +1,63 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. conceptual_data_modeling
+
+Conceptual Data Modeling
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+First, let’s create a simple domain model that is easy to understand in
+the relational world, and then see how you might map it from a relational
+to a distributed hashtable model in Cassandra.
+
+Let's use an example that is complex enough
+to show the various data structures and design patterns, but not
+something that will bog you down with details. Also, a domain that’s
+familiar to everyone will allow you to concentrate on how to work with
+Cassandra, not on what the application domain is all about.
+
+For example, let's use a domain that is easily understood and that
+everyone can relate to: making hotel reservations.
+
+The conceptual domain includes hotels, guests that stay in the hotels, a
+collection of rooms for each hotel, the rates and availability of those
+rooms, and a record of reservations booked for guests. Hotels typically
+also maintain a collection of “points of interest,” which are parks,
+museums, shopping galleries, monuments, or other places near the hotel
+that guests might want to visit during their stay. Both hotels and
+points of interest need to maintain geolocation data so that they can be
+found on maps for mashups, and to calculate distances.
+
+The conceptual domain is depicted below using the entity–relationship
+model popularized by Peter Chen. This simple diagram represents the
+entities in the domain with rectangles, and attributes of those entities
+with ovals. Attributes that represent unique identifiers for items are
+underlined. Relationships between entities are represented as diamonds,
+and the connectors between the relationship and each entity show the
+multiplicity of the connection.
+
+.. image:: images/data_modeling_hotel_erd.png
+
+Obviously, in the real world, there would be many more considerations
+and much more complexity. For example, hotel rates are notoriously
+dynamic, and calculating them involves a wide array of factors. Here
+you’re defining something complex enough to be interesting and touch on
+the important points, but simple enough to maintain the focus on
+learning Cassandra.
+
+*Material adapted from Cassandra, The Definitive Guide. Published by
+O'Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.*
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_logical.rst.txt b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_logical.rst.txt
new file mode 100644
index 0000000..27fa4be
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_logical.rst.txt
@@ -0,0 +1,219 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Logical Data Modeling
+=====================
+
+Now that you have defined your queries, you’re ready to begin designing
+Cassandra tables. First, create a logical model containing a table
+for each query, capturing entities and relationships from the conceptual
+model.
+
+To name each table, you’ll identify the primary entity type for which you
+are querying and use that to start the entity name. If you are querying
+by attributes of other related entities, append those to the table
+name, separated with ``_by_``. For example, ``hotels_by_poi``.
+
+Next, you identify the primary key for the table, adding partition key
+columns based on the required query attributes, and clustering columns
+in order to guarantee uniqueness and support desired sort ordering.
+
+The design of the primary key is extremely important, as it will
+determine how much data will be stored in each partition and how that
+data is organized on disk, which in turn will affect how quickly
+Cassandra processes reads.
+
+Complete each table by adding any additional attributes identified by
+the query. If any of these additional attributes are the same for every
+instance of the partition key, mark the column as static.
+
+Now that was a pretty quick description of a fairly involved process, so
+it will be worthwhile to work through a detailed example. First,
+let’s introduce a notation that you can use to represent logical
+models.
+
+Several individuals within the Cassandra community have proposed
+notations for capturing data models in diagrammatic form. This document
+uses a notation popularized by Artem Chebotko which provides a simple,
+informative way to visualize the relationships between queries and
+tables in your designs. This figure shows the Chebotko notation for a
+logical data model.
+
+.. image:: images/data_modeling_chebotko_logical.png
+
+Each table is shown with its title and a list of columns. Primary key
+columns are identified via symbols such as **K** for partition key
+columns and **C**\ ↑ or **C**\ ↓ to represent clustering columns. Lines
+are shown entering tables or between tables to indicate the queries that
+each table is designed to support.
+
+Hotel Logical Data Model
+------------------------
+
+The figure below shows a Chebotko logical data model for the queries
+involving hotels, points of interest, rooms, and amenities. One thing you'll
+notice immediately is that the Cassandra design doesn’t include dedicated
+tables for rooms or amenities, as you had in the relational design. This
+is because the workflow didn’t identify any queries requiring this
+direct access.
+
+.. image:: images/data_modeling_hotel_logical.png
+
+Let’s explore the details of each of these tables.
+
+The first query Q1 is to find hotels near a point of interest, so you’ll
+call this table ``hotels_by_poi``. Searching by a named point of
+interest is a clue that the point of interest should be a part
+of the primary key. Let’s reference the point of interest by name,
+because according to the workflow that is how users will start their
+search.
+
+You’ll note that you certainly could have more than one hotel near a
+given point of interest, so you’ll need another component in the primary
+key in order to make sure you have a unique partition for each hotel. So
+you add the hotel key as a clustering column.
+
+An important consideration in designing your table’s primary key is
+making sure that it defines a unique data element. Otherwise you run the
+risk of accidentally overwriting data.
+
+Now for the second query (Q2), you’ll need a table to get information
+about a specific hotel. One approach would have been to put all of the
+attributes of a hotel in the ``hotels_by_poi`` table, but you added
+only those attributes that were required by the application workflow.
+
+From the workflow diagram, you know that the ``hotels_by_poi`` table is
+used to display a list of hotels with basic information on each hotel,
+and the application knows the unique identifiers of the hotels returned.
+When the user selects a hotel to view details, you can then use Q2, which
+is used to obtain details about the hotel. Because you already have the
+``hotel_id`` from Q1, you use that as a reference to the hotel you’re
+looking for. Therefore the second table is just called ``hotels``.
+
+Another option would have been to store a set of ``poi_names`` in the
+hotels table. This is an equally valid approach. You’ll learn through
+experience which approach is best for your application.
+
+Q3 is just a reverse of Q1—looking for points of interest near a hotel,
+rather than hotels near a point of interest. This time, however, you need
+to access the details of each point of interest, as represented by the
+``pois_by_hotel`` table. As previously, you add the point of
+interest name as a clustering key to guarantee uniqueness.
+
+At this point, let’s now consider how to support query Q4 to help the
+user find available rooms at a selected hotel for the nights they are
+interested in staying. Note that this query involves both a start date
+and an end date. Because you’re querying over a range instead of a single
+date, you know that you’ll need to use the date as a clustering key.
+Use the ``hotel_id`` as a primary key to group room data for each hotel
+on a single partition, which should help searches be super fast. Let’s
+call this the ``available_rooms_by_hotel_date`` table.
+
+To support searching over a range, use :ref:`clustering columns
+<clustering-columns>` to store
+attributes that you need to access in a range query. Remember that the
+order of the clustering columns is important.
+
+The design of the ``available_rooms_by_hotel_date`` table is an instance
+of the **wide partition** pattern. This
+pattern is sometimes called the **wide row** pattern when discussing
+databases that support similar models, but wide partition is a more
+accurate description from a Cassandra perspective. The essence of the
+pattern is to group multiple related rows in a partition in order to
+support fast access to multiple rows within the partition in a single
+query.
+
+In order to round out the shopping portion of the data model, add the
+``amenities_by_room`` table to support Q5. This will allow users to
+view the amenities of one of the rooms that is available for the desired
+stay dates.
+
+Reservation Logical Data Model
+------------------------------
+
+Now let's switch gears to look at the reservation queries. The figure
+shows a logical data model for reservations. You’ll notice that these
+tables represent a denormalized design; the same data appears in
+multiple tables, with differing keys.
+
+.. image:: images/data_modeling_reservation_logical.png
+
+In order to satisfy Q6, the ``reservations_by_guest`` table can be used
+to look up the reservation by guest name. You could envision query Q7
+being used on behalf of a guest on a self-serve website or a call center
+agent trying to assist the guest. Because the guest name might not be
+unique, you include the guest ID here as a clustering column as well.
+
+Q8 and Q9 in particular help to remind you to create queries
+that support various stakeholders of the application, not just customers
+but staff as well, and perhaps even the analytics team, suppliers, and so
+on.
+
+The hotel staff might wish to see a record of upcoming reservations by
+date in order to get insight into how the hotel is performing, such as
+what dates the hotel is sold out or undersold. Q8 supports the retrieval
+of reservations for a given hotel by date.
+
+Finally, you create a ``guests`` table. This provides a single
+location that used to store guest information. In this case, you specify a
+separate unique identifier for guest records, as it is not uncommon
+for guests to have the same name. In many organizations, a customer
+database such as the ``guests`` table would be part of a separate
+customer management application, which is why other guest
+access patterns were omitted from the example.
+
+
+Patterns and Anti-Patterns
+--------------------------
+
+As with other types of software design, there are some well-known
+patterns and anti-patterns for data modeling in Cassandra. You’ve already
+used one of the most common patterns in this hotel model—the wide
+partition pattern.
+
+The **time series** pattern is an extension of the wide partition
+pattern. In this pattern, a series of measurements at specific time
+intervals are stored in a wide partition, where the measurement time is
+used as part of the partition key. This pattern is frequently used in
+domains including business analysis, sensor data management, and
+scientific experiments.
+
+The time series pattern is also useful for data other than measurements.
+Consider the example of a banking application. You could store each
+customer’s balance in a row, but that might lead to a lot of read and
+write contention as various customers check their balance or make
+transactions. You’d probably be tempted to wrap a transaction around
+writes just to protect the balance from being updated in error. In
+contrast, a time series–style design would store each transaction as a
+timestamped row and leave the work of calculating the current balance to
+the application.
+
+One design trap that many new users fall into is attempting to use
+Cassandra as a queue. Each item in the queue is stored with a timestamp
+in a wide partition. Items are appended to the end of the queue and read
+from the front, being deleted after they are read. This is a design that
+seems attractive, especially given its apparent similarity to the time
+series pattern. The problem with this approach is that the deleted items
+are now :ref:`tombstones <asynch-deletes>` that Cassandra must scan past
+in order to read from the front of the queue. Over time, a growing number
+of tombstones begins to degrade read performance.
+
+The queue anti-pattern serves as a reminder that any design that relies
+on the deletion of data is potentially a poorly performing design.
+
+*Material adapted from Cassandra, The Definitive Guide. Published by
+O'Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.*
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_physical.rst.txt b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_physical.rst.txt
new file mode 100644
index 0000000..7584004
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_physical.rst.txt
@@ -0,0 +1,117 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Physical Data Modeling
+======================
+
+Once you have a logical data model defined, creating the physical model
+is a relatively simple process.
+
+You walk through each of the logical model tables, assigning types to
+each item. You can use any valid :ref:`CQL data type <data-types>`,
+including the basic types, collections, and user-defined types. You may
+identify additional user-defined types that can be created to simplify
+your design.
+
+After you’ve assigned data types, you analyze the model by performing
+size calculations and testing out how the model works. You may make some
+adjustments based on your findings. Once again let's cover the data
+modeling process in more detail by working through an example.
+
+Before getting started, let’s look at a few additions to the Chebotko
+notation for physical data models. To draw physical models, you need to
+be able to add the typing information for each column. This figure
+shows the addition of a type for each column in a sample table.
+
+.. image:: images/data_modeling_chebotko_physical.png
+
+The figure includes a designation of the keyspace containing each table
+and visual cues for columns represented using collections and
+user-defined types. Note the designation of static columns and
+secondary index columns. There is no restriction on assigning these as
+part of a logical model, but they are typically more of a physical data
+modeling concern.
+
+Hotel Physical Data Model
+-------------------------
+
+Now let’s get to work on the physical model. First, you need keyspaces
+to contain the tables. To keep the design relatively simple, create a
+``hotel`` keyspace to contain tables for hotel and availability
+data, and a ``reservation`` keyspace to contain tables for reservation
+and guest data. In a real system, you might divide the tables across even
+more keyspaces in order to separate concerns.
+
+For the ``hotels`` table, use Cassandra’s ``text`` type to
+represent the hotel’s ``id``. For the address, create an
+``address`` user defined type. Use the ``text`` type to represent the
+phone number, as there is considerable variance in the formatting of
+numbers between countries.
+
+While it would make sense to use the ``uuid`` type for attributes such
+as the ``hotel_id``, this document uses mostly ``text`` attributes as
+identifiers, to keep the samples simple and readable. For example, a
+common convention in the hospitality industry is to reference properties
+by short codes like "AZ123" or "NY229". This example uses these values
+for ``hotel_ids``, while acknowledging they are not necessarily globally
+unique.
+
+You’ll find that it’s often helpful to use unique IDs to uniquely
+reference elements, and to use these ``uuids`` as references in tables
+representing other entities. This helps to minimize coupling between
+different entity types. This may prove especially effective if you are
+using a microservice architectural style for your application, in which
+there are separate services responsible for each entity type.
+
+As you work to create physical representations of various tables in the
+logical hotel data model, you use the same approach. The resulting design
+is shown in this figure:
+
+.. image:: images/data_modeling_hotel_physical.png
+
+Note that the ``address`` type is also included in the design. It
+is designated with an asterisk to denote that it is a user-defined type,
+and has no primary key columns identified. This type is used in
+the ``hotels`` and ``hotels_by_poi`` tables.
+
+User-defined types are frequently used to help reduce duplication of
+non-primary key columns, as was done with the ``address``
+user-defined type. This can reduce complexity in the design.
+
+Remember that the scope of a UDT is the keyspace in which it is defined.
+To use ``address`` in the ``reservation`` keyspace defined below
+design, you’ll have to declare it again. This is just one of the many
+trade-offs you have to make in data model design.
+
+Reservation Physical Data Model
+-------------------------------
+
+Now, let’s examine reservation tables in the design.
+Remember that the logical model contained three denormalized tables to
+support queries for reservations by confirmation number, guest, and
+hotel and date. For the first iteration of your physical data model
+design, assume you're going to manage this denormalization
+manually. Note that this design could be revised to use Cassandra’s
+(experimental) materialized view feature.
+
+.. image:: images/data_modeling_reservation_physical.png
+
+Note that the ``address`` type is reproduced in this keyspace and
+``guest_id`` is modeled as a ``uuid`` type in all of the tables.
+
+*Material adapted from Cassandra, The Definitive Guide. Published by
+O'Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.*
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_queries.rst.txt b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_queries.rst.txt
new file mode 100644
index 0000000..d011994
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_queries.rst.txt
@@ -0,0 +1,85 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Defining Application Queries
+============================
+
+Let’s try the query-first approach to start designing the data model for
+a hotel application. The user interface design for the application is
+often a great artifact to use to begin identifying queries. Let’s assume
+that you’ve talked with the project stakeholders and your UX designers
+have produced user interface designs or wireframes for the key use
+cases. You’ll likely have a list of shopping queries like the following:
+
+-  Q1. Find hotels near a given point of interest.
+
+-  Q2. Find information about a given hotel, such as its name and
+   location.
+
+-  Q3. Find points of interest near a given hotel.
+
+-  Q4. Find an available room in a given date range.
+
+-  Q5. Find the rate and amenities for a room.
+
+It is often helpful to be able to refer
+to queries by a shorthand number rather that explaining them in full.
+The queries listed here are numbered Q1, Q2, and so on, which is how they
+are referenced in diagrams throughout the example.
+
+Now if the application is to be a success, you’ll certainly want
+customers to be able to book reservations at hotels. This includes
+steps such as selecting an available room and entering their guest
+information. So clearly you will also need some queries that address the
+reservation and guest entities from the conceptual data model. Even
+here, however, you’ll want to think not only from the customer
+perspective in terms of how the data is written, but also in terms of
+how the data will be queried by downstream use cases.
+
+You natural tendency as might be to focus first on
+designing the tables to store reservation and guest records, and only
+then start thinking about the queries that would access them. You may
+have felt a similar tension already when discussing the
+shopping queries before, thinking “but where did the hotel and point of
+interest data come from?” Don’t worry, you will see soon enough.
+Here are some queries that describe how users will access
+reservations:
+
+-  Q6. Lookup a reservation by confirmation number.
+
+-  Q7. Lookup a reservation by hotel, date, and guest name.
+
+-  Q8. Lookup all reservations by guest name.
+
+-  Q9. View guest details.
+
+All of the queries are shown in the context of the workflow of the
+application in the figure below. Each box on the diagram represents a
+step in the application workflow, with arrows indicating the flows
+between steps and the associated query. If you’ve modeled the application
+well, each step of the workflow accomplishes a task that “unlocks”
+subsequent steps. For example, the “View hotels near POI” task helps
+the application learn about several hotels, including their unique keys.
+The key for a selected hotel may be used as part of Q2, in order to
+obtain detailed description of the hotel. The act of booking a room
+creates a reservation record that may be accessed by the guest and
+hotel staff at a later time through various additional queries.
+
+.. image:: images/data_modeling_hotel_queries.png
+
+*Material adapted from Cassandra, The Definitive Guide. Published by
+O'Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.*
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_rdbms.rst.txt b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_rdbms.rst.txt
new file mode 100644
index 0000000..7d67d69
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_rdbms.rst.txt
@@ -0,0 +1,171 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+RDBMS Design
+============
+
+When you set out to build a new data-driven application that will use a
+relational database, you might start by modeling the domain as a set of
+properly normalized tables and use foreign keys to reference related
+data in other tables.
+
+The figure below shows how you might represent the data storage for your application
+using a relational database model. The relational model includes a
+couple of “join” tables in order to realize the many-to-many
+relationships from the conceptual model of hotels-to-points of interest,
+rooms-to-amenities, rooms-to-availability, and guests-to-rooms (via a
+reservation).
+
+.. image:: images/data_modeling_hotel_relational.png
+
+.. design_differences_between_rdbms_and_cassandra
+
+Design Differences Between RDBMS and Cassandra
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Let’s take a minute to highlight some of the key differences in doing
+ata modeling for Cassandra versus a relational database.
+
+No joins
+~~~~~~~~
+
+You cannot perform joins in Cassandra. If you have designed a data model
+and find that you need something like a join, you’ll have to either do
+the work on the client side, or create a denormalized second table that
+represents the join results for you. This latter option is preferred in
+Cassandra data modeling. Performing joins on the client should be a very
+rare case; you really want to duplicate (denormalize) the data instead.
+
+No referential integrity
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+Although Cassandra supports features such as lightweight transactions
+and batches, Cassandra itself has no concept of referential integrity
+across tables. In a relational database, you could specify foreign keys
+in a table to reference the primary key of a record in another table.
+But Cassandra does not enforce this. It is still a common design
+requirement to store IDs related to other entities in your tables, but
+operations such as cascading deletes are not available.
+
+Denormalization
+~~~~~~~~~~~~~~~
+
+In relational database design, you are often taught the importance of
+normalization. This is not an advantage when working with Cassandra
+because it performs best when the data model is denormalized. It is
+often the case that companies end up denormalizing data in relational
+databases as well. There are two common reasons for this. One is
+performance. Companies simply can’t get the performance they need when
+they have to do so many joins on years’ worth of data, so they
+denormalize along the lines of known queries. This ends up working, but
+goes against the grain of how relational databases are intended to be
+designed, and ultimately makes one question whether using a relational
+database is the best approach in these circumstances.
+
+A second reason that relational databases get denormalized on purpose is
+a business document structure that requires retention. That is, you have
+an enclosing table that refers to a lot of external tables whose data
+could change over time, but you need to preserve the enclosing document
+as a snapshot in history. The common example here is with invoices. You
+already have customer and product tables, and you’d think that you could
+just make an invoice that refers to those tables. But this should never
+be done in practice. Customer or price information could change, and
+then you would lose the integrity of the invoice document as it was on
+the invoice date, which could violate audits, reports, or laws, and
+cause other problems.
+
+In the relational world, denormalization violates Codd’s normal forms,
+and you try to avoid it. But in Cassandra, denormalization is, well,
+perfectly normal. It’s not required if your data model is simple. But
+don’t be afraid of it.
+
+Historically, denormalization in Cassandra has required designing and
+managing multiple tables using techniques described in this documentation.
+Beginning with the 3.0 release, Cassandra provides a feature known
+as :ref:`materialized views <materialized-views>`
+which allows you to create multiple denormalized
+views of data based on a base table design. Cassandra manages
+materialized views on the server, including the work of keeping the
+views in sync with the table.
+
+Query-first design
+~~~~~~~~~~~~~~~~~~
+
+Relational modeling, in simple terms, means that you start from the
+conceptual domain and then represent the nouns in the domain in tables.
+You then assign primary keys and foreign keys to model relationships.
+When you have a many-to-many relationship, you create the join tables
+that represent just those keys. The join tables don’t exist in the real
+world, and are a necessary side effect of the way relational models
+work. After you have all your tables laid out, you can start writing
+queries that pull together disparate data using the relationships
+defined by the keys. The queries in the relational world are very much
+secondary. It is assumed that you can always get the data you want as
+long as you have your tables modeled properly. Even if you have to use
+several complex subqueries or join statements, this is usually true.
+
+By contrast, in Cassandra you don’t start with the data model; you start
+with the query model. Instead of modeling the data first and then
+writing queries, with Cassandra you model the queries and let the data
+be organized around them. Think of the most common query paths your
+application will use, and then create the tables that you need to
+support them.
+
+Detractors have suggested that designing the queries first is overly
+constraining on application design, not to mention database modeling.
+But it is perfectly reasonable to expect that you should think hard
+about the queries in your application, just as you would, presumably,
+think hard about your relational domain. You may get it wrong, and then
+you’ll have problems in either world. Or your query needs might change
+over time, and then you’ll have to work to update your data set. But
+this is no different from defining the wrong tables, or needing
+additional tables, in an RDBMS.
+
+Designing for optimal storage
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In a relational database, it is frequently transparent to the user how
+tables are stored on disk, and it is rare to hear of recommendations
+about data modeling based on how the RDBMS might store tables on disk.
+However, that is an important consideration in Cassandra. Because
+Cassandra tables are each stored in separate files on disk, it’s
+important to keep related columns defined together in the same table.
+
+A key goal that you will see as you begin creating data models in
+Cassandra is to minimize the number of partitions that must be searched
+in order to satisfy a given query. Because the partition is a unit of
+storage that does not get divided across nodes, a query that searches a
+single partition will typically yield the best performance.
+
+Sorting is a design decision
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In an RDBMS, you can easily change the order in which records are
+returned to you by using ``ORDER BY`` in your query. The default sort
+order is not configurable; by default, records are returned in the order
+in which they are written. If you want to change the order, you just
+modify your query, and you can sort by any list of columns.
+
+In Cassandra, however, sorting is treated differently; it is a design
+decision. The sort order available on queries is fixed, and is
+determined entirely by the selection of clustering columns you supply in
+the ``CREATE TABLE`` command. The CQL ``SELECT`` statement does support
+``ORDER BY`` semantics, but only in the order specified by the
+clustering columns.
+
+*Material adapted from Cassandra, The Definitive Guide. Published by
+O'Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.*
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_refining.rst.txt b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_refining.rst.txt
new file mode 100644
index 0000000..13a276e
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_refining.rst.txt
@@ -0,0 +1,218 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. role:: raw-latex(raw)
+   :format: latex
+..
+
+Evaluating and Refining Data Models
+===================================
+
+Once you’ve created a physical model, there are some steps you’ll want
+to take to evaluate and refine table designs to help ensure optimal
+performance.
+
+Calculating Partition Size
+--------------------------
+
+The first thing that you want to look for is whether your tables will have
+partitions that will be overly large, or to put it another way, too
+wide. Partition size is measured by the number of cells (values) that
+are stored in the partition. Cassandra’s hard limit is 2 billion cells
+per partition, but you’ll likely run into performance issues before
+reaching that limit.
+
+In order to calculate the size of partitions, use the following
+formula:
+
+.. math:: N_v = N_r (N_c - N_{pk} - N_s) + N_s
+
+The number of values (or cells) in the partition (N\ :sub:`v`) is equal to
+the number of static columns (N\ :sub:`s`) plus the product of the number
+of rows (N\ :sub:`r`) and the number of of values per row. The number of
+values per row is defined as the number of columns (N\ :sub:`c`) minus the
+number of primary key columns (N\ :sub:`pk`) and static columns
+(N\ :sub:`s`).
+
+The number of columns tends to be relatively static, although it
+is possible to alter tables at runtime. For this reason, a
+primary driver of partition size is the number of rows in the partition.
+This is a key factor that you must consider in determining whether a
+partition has the potential to get too large. Two billion values sounds
+like a lot, but in a sensor system where tens or hundreds of values are
+measured every millisecond, the number of values starts to add up pretty
+fast.
+
+Let’s take a look at one of the tables to analyze the partition size.
+Because it has a wide partition design with one partition per hotel,
+look at the ``available_rooms_by_hotel_date`` table. The table has
+four columns total (N\ :sub:`c` = 4), including three primary key columns
+(N\ :sub:`pk` = 3) and no static columns (N\ :sub:`s` = 0). Plugging these
+values into the formula, the result is:
+
+.. math:: N_v = N_r (4 - 3 - 0) + 0 = 1N_r
+
+Therefore the number of values for this table is equal to the number of
+rows. You still need to determine a number of rows. To do this, make
+estimates based on the application design. The table is
+storing a record for each room, in each of hotel, for every night.
+Let's assume the system will be used to store two years of
+inventory at a time, and there are 5,000 hotels in the system, with an
+average of 100 rooms in each hotel.
+
+Since there is a partition for each hotel, the estimated number of rows
+per partition is as follows:
+
+.. math:: N_r = 100 rooms/hotel \times 730 days = 73,000 rows
+
+This relatively small number of rows per partition is not going to get
+you in too much trouble, but if you start storing more dates of inventory,
+or don’t manage the size of the inventory well using TTL, you could start
+having issues. You still might want to look at breaking up this large
+partition, which you'll see how to do shortly.
+
+When performing sizing calculations, it is tempting to assume the
+nominal or average case for variables such as the number of rows.
+Consider calculating the worst case as well, as these sorts of
+predictions have a way of coming true in successful systems.
+
+Calculating Size on Disk
+------------------------
+
+In addition to calculating the size of a partition, it is also an
+excellent idea to estimate the amount of disk space that will be
+required for each table you plan to store in the cluster. In order to
+determine the size, use the following formula to determine the size
+S\ :sub:`t` of a partition:
+
+.. math:: S_t = \displaystyle\sum_i sizeOf\big (c_{k_i}\big) + \displaystyle\sum_j sizeOf\big(c_{s_j}\big) + N_r\times \bigg(\displaystyle\sum_k sizeOf\big(c_{r_k}\big) + \displaystyle\sum_l sizeOf\big(c_{c_l}\big)\bigg) +
+
+.. math:: N_v\times sizeOf\big(t_{avg}\big)
+
+This is a bit more complex than the previous formula, but let's break it
+down a bit at a time. Let’s take a look at the notation first:
+
+-  In this formula, c\ :sub:`k` refers to partition key columns,
+   c\ :sub:`s` to static columns, c\ :sub:`r` to regular columns, and
+   c\ :sub:`c` to clustering columns.
+
+-  The term t\ :sub:`avg` refers to the average number of bytes of
+   metadata stored per cell, such as timestamps. It is typical to use an
+   estimate of 8 bytes for this value.
+
+-  You'll recognize the number of rows N\ :sub:`r` and number of values
+   N\ :sub:`v` from previous calculations.
+
+-  The **sizeOf()** function refers to the size in bytes of the CQL data
+   type of each referenced column.
+
+The first term asks you to sum the size of the partition key columns. For
+this example, the ``available_rooms_by_hotel_date`` table has a single
+partition key column, the ``hotel_id``, which is of type
+``text``. Assuming that hotel identifiers are simple 5-character codes,
+you have a 5-byte value, so the sum of the partition key column sizes is
+5 bytes.
+
+The second term asks you to sum the size of the static columns. This table
+has no static columns, so the size is 0 bytes.
+
+The third term is the most involved, and for good reason—it is
+calculating the size of the cells in the partition. Sum the size of
+the clustering columns and regular columns. The two clustering columns
+are the ``date``, which is 4 bytes, and the ``room_number``,
+which is a 2-byte short integer, giving a sum of 6 bytes.
+There is only a single regular column, the boolean ``is_available``,
+which is 1 byte in size. Summing the regular column size
+(1 byte) plus the clustering column size (6 bytes) gives a total of 7
+bytes. To finish up the term, multiply this value by the number of
+rows (73,000), giving a result of 511,000 bytes (0.51 MB).
+
+The fourth term is simply counting the metadata that that Cassandra
+stores for each cell. In the storage format used by Cassandra 3.0 and
+later, the amount of metadata for a given cell varies based on the type
+of data being stored, and whether or not custom timestamp or TTL values
+are specified for individual cells. For this table, reuse the number
+of values from the previous calculation (73,000) and multiply by 8,
+which gives 0.58 MB.
+
+Adding these terms together, you get a final estimate:
+
+.. math:: Partition size = 16 bytes + 0 bytes + 0.51 MB + 0.58 MB = 1.1 MB
+
+This formula is an approximation of the actual size of a partition on
+disk, but is accurate enough to be quite useful. Remembering that the
+partition must be able to fit on a single node, it looks like the table
+design will not put a lot of strain on disk storage.
+
+Cassandra’s storage engine was re-implemented for the 3.0 release,
+including a new format for SSTable files. The previous format stored a
+separate copy of the clustering columns as part of the record for each
+cell. The newer format eliminates this duplication, which reduces the
+size of stored data and simplifies the formula for computing that size.
+
+Keep in mind also that this estimate only counts a single replica of
+data. You will need to multiply the value obtained here by the number of
+partitions and the number of replicas specified by the keyspace’s
+replication strategy in order to determine the total required total
+capacity for each table. This will come in handy when you
+plan your cluster.
+
+Breaking Up Large Partitions
+----------------------------
+
+As discussed previously, the goal is to design tables that can provide
+the data you need with queries that touch a single partition, or failing
+that, the minimum possible number of partitions. However, as shown in
+the examples, it is quite possible to design wide
+partition-style tables that approach Cassandra’s built-in limits.
+Performing sizing analysis on tables may reveal partitions that are
+potentially too large, either in number of values, size on disk, or
+both.
+
+The technique for splitting a large partition is straightforward: add an
+additional column to the partition key. In most cases, moving one of the
+existing columns into the partition key will be sufficient. Another
+option is to introduce an additional column to the table to act as a
+sharding key, but this requires additional application logic.
+
+Continuing to examine the available rooms example, if you add the ``date``
+column to the partition key for the ``available_rooms_by_hotel_date``
+table, each partition would then represent the availability of rooms
+at a specific hotel on a specific date. This will certainly yield
+partitions that are significantly smaller, perhaps too small, as the
+data for consecutive days will likely be on separate nodes.
+
+Another technique known as **bucketing** is often used to break the data
+into moderate-size partitions. For example, you could bucketize the
+``available_rooms_by_hotel_date`` table by adding a ``month`` column to
+the partition key, perhaps represented as an integer. The comparision
+with the original design is shown in the figure below. While the
+``month`` column is partially duplicative of the ``date``, it provides
+a nice way of grouping related data in a partition that will not get
+too large.
+
+.. image:: images/data_modeling_hotel_bucketing.png
+
+If you really felt strongly about preserving a wide partition design, you
+could instead add the ``room_id`` to the partition key, so that each
+partition would represent the availability of the room across all
+dates. Because there was no query identified that involves searching
+availability of a specific room, the first or second design approach
+is most suitable to the application needs.
+
+*Material adapted from Cassandra, The Definitive Guide. Published by
+O'Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.*
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_schema.rst.txt b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_schema.rst.txt
new file mode 100644
index 0000000..1876ec3
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_schema.rst.txt
@@ -0,0 +1,144 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: cql
+
+Defining Database Schema
+========================
+
+Once you have finished evaluating and refining the physical model, you’re
+ready to implement the schema in CQL. Here is the schema for the
+``hotel`` keyspace, using CQL’s comment feature to document the query
+pattern supported by each table::
+
+    CREATE KEYSPACE hotel WITH replication =
+      {‘class’: ‘SimpleStrategy’, ‘replication_factor’ : 3};
+
+    CREATE TYPE hotel.address (
+      street text,
+      city text,
+      state_or_province text,
+      postal_code text,
+      country text );
+
+    CREATE TABLE hotel.hotels_by_poi (
+      poi_name text,
+      hotel_id text,
+      name text,
+      phone text,
+      address frozen<address>,
+      PRIMARY KEY ((poi_name), hotel_id) )
+      WITH comment = ‘Q1. Find hotels near given poi’
+      AND CLUSTERING ORDER BY (hotel_id ASC) ;
+
+    CREATE TABLE hotel.hotels (
+      id text PRIMARY KEY,
+      name text,
+      phone text,
+      address frozen<address>,
+      pois set )
+      WITH comment = ‘Q2. Find information about a hotel’;
+
+    CREATE TABLE hotel.pois_by_hotel (
+      poi_name text,
+      hotel_id text,
+      description text,
+      PRIMARY KEY ((hotel_id), poi_name) )
+      WITH comment = Q3. Find pois near a hotel’;
+
+    CREATE TABLE hotel.available_rooms_by_hotel_date (
+      hotel_id text,
+      date date,
+      room_number smallint,
+      is_available boolean,
+      PRIMARY KEY ((hotel_id), date, room_number) )
+      WITH comment = ‘Q4. Find available rooms by hotel date’;
+
+    CREATE TABLE hotel.amenities_by_room (
+      hotel_id text,
+      room_number smallint,
+      amenity_name text,
+      description text,
+      PRIMARY KEY ((hotel_id, room_number), amenity_name) )
+      WITH comment = ‘Q5. Find amenities for a room’;
+
+
+Notice that the elements of the partition key are surrounded
+with parentheses, even though the partition key consists
+of the single column ``poi_name``. This is a best practice that makes
+the selection of partition key more explicit to others reading your CQL.
+
+Similarly, here is the schema for the ``reservation`` keyspace::
+
+    CREATE KEYSPACE reservation WITH replication = {‘class’:
+      ‘SimpleStrategy’, ‘replication_factor’ : 3};
+
+    CREATE TYPE reservation.address (
+      street text,
+      city text,
+      state_or_province text,
+      postal_code text,
+      country text );
+
+    CREATE TABLE reservation.reservations_by_confirmation (
+      confirm_number text,
+      hotel_id text,
+      start_date date,
+      end_date date,
+      room_number smallint,
+      guest_id uuid,
+      PRIMARY KEY (confirm_number) )
+      WITH comment = ‘Q6. Find reservations by confirmation number’;
+
+    CREATE TABLE reservation.reservations_by_hotel_date (
+      hotel_id text,
+      start_date date,
+      end_date date,
+      room_number smallint,
+      confirm_number text,
+      guest_id uuid,
+      PRIMARY KEY ((hotel_id, start_date), room_number) )
+      WITH comment = ‘Q7. Find reservations by hotel and date’;
+
+    CREATE TABLE reservation.reservations_by_guest (
+      guest_last_name text,
+      hotel_id text,
+      start_date date,
+      end_date date,
+      room_number smallint,
+      confirm_number text,
+      guest_id uuid,
+      PRIMARY KEY ((guest_last_name), hotel_id) )
+      WITH comment = ‘Q8. Find reservations by guest name’;
+
+    CREATE TABLE reservation.guests (
+      guest_id uuid PRIMARY KEY,
+      first_name text,
+      last_name text,
+      title text,
+      emails set,
+      phone_numbers list,
+      addresses map<text,
+      frozen<address>,
+      confirm_number text )
+      WITH comment = ‘Q9. Find guest by ID’;
+
+You now have a complete Cassandra schema for storing data for a hotel
+application.
+
+*Material adapted from Cassandra, The Definitive Guide. Published by
+O'Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.*
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_tools.rst.txt b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_tools.rst.txt
new file mode 100644
index 0000000..46fad33
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/data_modeling/data_modeling_tools.rst.txt
@@ -0,0 +1,64 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Cassandra Data Modeling Tools
+=============================
+
+There are several tools available to help you design and
+manage your Cassandra schema and build queries.
+
+* `Hackolade <https://hackolade.com/nosqldb.html#cassandra>`_
+  is a data modeling tool that supports schema design for Cassandra and
+  many other NoSQL databases. Hackolade supports the unique concepts of
+  CQL such as partition keys and clustering columns, as well as data types
+  including collections and UDTs. It also provides the ability to create
+  Chebotko diagrams.
+
+* `Kashlev Data Modeler <http://kdm.dataview.org/>`_ is a Cassandra
+  data modeling tool that automates the data modeling methodology
+  described in this documentation, including identifying
+  access patterns, conceptual, logical, and physical data modeling, and
+  schema generation. It also includes model patterns that you can
+  optionally leverage as a starting point for your designs.
+
+* DataStax DevCenter is a tool for managing
+  schema, executing queries and viewing results. While the tool is no
+  longer actively supported, it is still popular with many developers and
+  is available as a `free download <https://academy.datastax.com/downloads>`_.
+  DevCenter features syntax highlighting for CQL commands, types, and name
+  literals. DevCenter provides command completion as you type out CQL
+  commands and interprets the commands you type, highlighting any errors
+  you make. The tool provides panes for managing multiple CQL scripts and
+  connections to multiple clusters. The connections are used to run CQL
+  commands against live clusters and view the results. The tool also has a
+  query trace feature that is useful for gaining insight into the
+  performance of your queries.
+
+* IDE Plugins - There are CQL plugins available for several Integrated
+  Development Environments (IDEs), such as IntelliJ IDEA and Apache
+  NetBeans. These plugins typically provide features such as schema
+  management and query execution.
+
+Some IDEs and tools that claim to support Cassandra do not actually support
+CQL natively, but instead access Cassandra using a JDBC/ODBC driver and
+interact with Cassandra as if it were a relational database with SQL
+support. Wnen selecting tools for working with Cassandra you’ll want to
+make sure they support CQL and reinforce Cassandra best practices for
+data modeling as presented in this documentation.
+
+*Material adapted from Cassandra, The Definitive Guide. Published by
+O'Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.*
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_sources/data_modeling/index.rst.txt b/src/doc/4.0-rc1/_sources/data_modeling/index.rst.txt
new file mode 100644
index 0000000..2f799dc
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/data_modeling/index.rst.txt
@@ -0,0 +1,36 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Data Modeling
+*************
+
+.. toctree::
+   :maxdepth: 2
+
+   intro
+   data_modeling_conceptual
+   data_modeling_rdbms
+   data_modeling_queries
+   data_modeling_logical
+   data_modeling_physical
+   data_modeling_refining
+   data_modeling_schema
+   data_modeling_tools
+
+
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/data_modeling/intro.rst.txt b/src/doc/4.0-rc1/_sources/data_modeling/intro.rst.txt
new file mode 100644
index 0000000..630a7d1
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/data_modeling/intro.rst.txt
@@ -0,0 +1,146 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Introduction
+============
+
+Apache Cassandra stores data in tables, with each table consisting of rows and columns. CQL (Cassandra Query Language) is used to query the data stored in tables. Apache Cassandra data model is based around and optimized for querying. Cassandra does not support relational data modeling intended for relational databases.
+
+What is Data Modeling?
+^^^^^^^^^^^^^^^^^^^^^^
+
+Data modeling is the process of identifying entities and their relationships. In relational databases, data is placed in normalized tables with foreign keys used to reference related data in other tables. Queries that the application will make are driven by the structure of the tables and related data are queried as table joins.
+
+In Cassandra, data modeling is query-driven. The data access patterns and application queries determine the structure and organization of data which then used to design the database tables.
+
+Data is modeled around specific queries. Queries are best designed to access a single table, which implies that all entities involved in a query must be in the same table to make data access (reads) very fast. Data is modeled to best suit a query or a set of queries. A table could have one or more entities as best suits a query. As entities do typically have relationships among them and queries could involve entities with relationships among them, a single entity may be included in multiple tables.
+
+Query-driven modeling
+^^^^^^^^^^^^^^^^^^^^^
+
+Unlike a relational database model in which queries make use of table joins to get data from multiple tables, joins are not supported in Cassandra so all required fields (columns) must be grouped together in a single table. Since each query is backed by a table, data is duplicated across multiple tables in a process known as denormalization. Data duplication and a high write throughput are used to achieve a high read performance.
+
+Goals
+^^^^^
+
+The choice of the primary key and partition key is important to distribute data evenly across the cluster. Keeping the number of partitions read for a query to a minimum is also important because different partitions could be located on different nodes and the coordinator would need to send a request to each node adding to the request overhead and latency. Even if the different partitions involved in a query are on the same node, fewer partitions make for a more efficient query.
+
+Partitions
+^^^^^^^^^^
+
+Apache Cassandra is a distributed database that stores data across a cluster of nodes. A partition key is used to partition data among the nodes. Cassandra partitions data over the storage nodes using a variant of consistent hashing for data distribution. Hashing is a technique used to map data with which given a key, a hash function generates a hash value (or simply a hash) that is stored in a hash table. A partition key is generated from the first field of a primary key.   Data partitioned into hash tables using partition keys provides for rapid lookup.  Fewer the partitions used for a query faster is the response time for the query. 
+
+As an example of partitioning, consider table ``t`` in which ``id`` is the only field in the primary key.
+
+::
+
+ CREATE TABLE t (
+    id int,
+    k int,
+    v text,
+    PRIMARY KEY (id)
+ );
+
+The partition key is generated from the primary key ``id`` for data distribution across the nodes in a cluster. 
+
+Consider a variation of table ``t`` that has two fields constituting the primary key to make a composite or compound primary key.  
+
+::
+
+ CREATE TABLE t (
+    id int,
+    c text,
+    k int,
+    v text,
+    PRIMARY KEY (id,c)
+ );
+
+For the table ``t`` with a composite primary key the first field ``id`` is used to generate the partition key and the second field ``c`` is the clustering key used for sorting within a partition.  Using clustering keys to sort data makes retrieval of adjacent data more efficient.  
+
+In general,  the first field or component of a primary key is hashed to generate the partition key and the remaining fields or components are the clustering keys that are used to sort data within a partition. Partitioning data  improves the efficiency of reads and writes. The other fields that are not primary key fields may be indexed separately to further improve query performance. 
+
+The partition key could be generated from multiple fields if they are grouped as the first component of a primary key.  As another variation of the table ``t``, consider a table with the first component of the primary key made of two fields grouped using parentheses.
+
+::
+ 
+ CREATE TABLE t (
+    id1 int,
+    id2 int,
+    c1 text,
+    c2 text
+    k int,
+    v text,
+    PRIMARY KEY ((id1,id2),c1,c2)
+ );
+
+For the preceding table ``t`` the first component of the primary key constituting fields ``id1`` and ``id2`` is used to generate the partition key and the rest of the fields ``c1`` and ``c2`` are the clustering keys used for sorting within a partition.  
+
+Comparing with Relational Data Model
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
+ 
+Relational databases store data in tables that have relations with other tables using foreign keys. A relational database’s approach to data modeling is table-centric. Queries must use table joins to get data from multiple tables that have a relation between them. Apache Cassandra does not have the concept of foreign keys or relational integrity. Apache Cassandra’s data model is based around designing efficient queries; queries that don’t involve multiple tables. Relational databases normalize data to avoid duplication. Apache Cassandra in contrast de-normalizes data by duplicating data in multiple tables for a query-centric data model. If a Cassandra data model cannot fully integrate the complexity of relationships between the different entities for a particular query, client-side joins in application code may be used.
+
+Examples of Data Modeling
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+As an example, a ``magazine`` data set consists of data for magazines with attributes such as magazine id, magazine name, publication frequency, publication date, and publisher.  A basic query (Q1) for magazine data is to list all the magazine names including their publication frequency. As not all data attributes are needed for Q1 the data model would only consist of ``id`` ( for partition key), magazine name and publication frequency as shown in Figure 1.
+
+.. figure:: images/Figure_1_data_model.jpg
+
+Figure 1. Data Model for Q1
+
+Another query (Q2)  is to list all the magazine names by publisher.  For Q2 the data model would consist of an additional attribute ``publisher`` for the partition key. The ``id`` would become the clustering key for sorting within a partition.   Data model for Q2 is illustrated in Figure 2.
+
+.. figure:: images/Figure_2_data_model.jpg
+
+Figure 2. Data Model for Q2
+
+Designing Schema
+^^^^^^^^^^^^^^^^ 
+
+After the conceptual data model has been created a schema may be  designed for a query. For Q1 the following schema may be used.
+
+::
+
+ CREATE TABLE magazine_name (id int PRIMARY KEY, name text, publicationFrequency text)
+
+For Q2 the schema definition would include a clustering key for sorting.
+
+::
+
+ CREATE TABLE magazine_publisher (publisher text,id int,name text, publicationFrequency text,  
+ PRIMARY KEY (publisher, id)) WITH CLUSTERING ORDER BY (id DESC)
+
+Data Model Analysis
+^^^^^^^^^^^^^^^^^^^
+
+The data model is a conceptual model that must be analyzed and optimized based on storage, capacity, redundancy and consistency.  A data model may need to be modified as a result of the analysis. Considerations or limitations that are used in data model analysis include:
+
+- Partition Size
+- Data Redundancy
+- Disk space
+- Lightweight Transactions (LWT)
+
+The two measures of partition size are the number of values in a partition and partition size on disk. Though requirements for these measures may vary based on the application a general guideline is to keep number of values per partition to below 100,000 and disk space per partition to below 100MB.
+
+Data redundancies as duplicate data in tables and multiple partition replicates are to be expected in the design of a data model , but nevertheless should be kept in consideration as a parameter to keep to the minimum. LWT transactions (compare-and-set, conditional update) could affect performance and queries using LWT should be kept to the minimum. 
+
+Using Materialized Views
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. warning::  Materialized views (MVs) are experimental in the latest (4.0) release.  
+
+Materialized views (MVs) could be used to implement multiple queries for a single table. A materialized view is a table built from data from another table, the base table, with new primary key and new properties. Changes to the base table data automatically add and update data in a MV.  Different queries may be implemented using a materialized view as an MV's primary key differs from the base table. Queries are optimized by the primary key definition.
diff --git a/src/doc/4.0-rc1/_sources/development/ci.rst.txt b/src/doc/4.0-rc1/_sources/development/ci.rst.txt
new file mode 100644
index 0000000..4349259
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/development/ci.rst.txt
@@ -0,0 +1,84 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Jenkins CI Environment
+**********************
+
+About CI testing and Apache Cassandra
+=====================================
+
+Cassandra can be automatically tested using various test suites, that are either implemented based on JUnit or the `dtest <https://github.com/riptano/cassandra-dtest>`_ scripts written in Python. As outlined in :doc:`testing`, each kind of test suite addresses a different way how to test Cassandra. But in the end, all of them will be executed together on our CI platform at `builds.apache.org <https://builds.apache.org>`_, running `Jenkins <http://jenkins-ci.org>`_.
+
+
+
+Setting up your own Jenkins server
+==================================
+
+Jenkins is an open source solution that can be installed on a large number of platforms. Setting up a custom Jenkins instance for Cassandra may be desirable for users who have hardware to spare, or organizations that want to run Cassandra tests for custom patches before contribution.
+
+Please refer to the Jenkins download and documentation pages for details on how to get Jenkins running, possibly also including slave build executor instances. The rest of the document will focus on how to setup Cassandra jobs in your Jenkins environment.
+
+Required plugins
+----------------
+
+The following plugins need to be installed additionally to the standard plugins (git, ant, ..).
+
+You can install any missing plugins through the install manager.
+
+Go to ``Manage Jenkins -> Manage Plugins -> Available`` and install the following plugins and respective dependencies:
+
+* Copy Artifact Plugin
+* description setter plugin
+* Javadoc Plugin
+* Job DSL
+* Post build task
+* Publish Over SSH
+* JMH Report
+* Slack Notification Plugin
+* Test stability history
+* Throttle Concurrent Builds Plug-in
+* Timestamper
+
+
+Configure Throttle Category
+---------------------------
+
+Builds that are not containerized (e.g. cqlshlib tests and in-jvm dtests) use local resources for Cassandra (ccm). To prevent these builds running concurrently the ``Cassandra`` throttle category needs to be created.
+
+This is done under ``Manage Jenkins -> System Configuration -> Throttle Concurrent Builds``. Enter "Cassandra" for the ``Category Name`` and "1" for ``Maximum Concurrent Builds Per Node``.
+
+Setup seed job
+--------------
+
+Config ``New Item``
+
+* Name it ``Cassandra-Job-DSL``
+* Select ``Freestyle project``
+
+Under ``Source Code Management`` select Git using the repository: ``https://github.com/apache/cassandra-builds``
+
+Under ``Build``, confirm ``Add build step`` -> ``Process Job DSLs`` and enter at ``Look on Filesystem``: ``jenkins-dsl/cassandra_job_dsl_seed.groovy``
+
+Generated jobs will be created based on the Groovy script's default settings. You may want to override settings by checking ``This project is parameterized`` and add ``String Parameter`` for on the variables that can be found in the top of the script. This will allow you to setup jobs for your own repository and branches (e.g. working branches).
+
+**When done, confirm "Save"**
+
+You should now find a new entry with the given name in your project list. However, building the project will still fail and abort with an error message `"Processing DSL script cassandra_job_dsl_seed.groovy ERROR: script not yet approved for use"`. Goto ``Manage Jenkins`` -> ``In-process Script Approval`` to fix this issue. Afterwards you should be able to run the script and have it generate numerous new jobs based on the found branches and configured templates.
+
+Jobs are triggered by either changes in Git or are scheduled to execute periodically, e.g. on daily basis. Jenkins will use any available executor with the label "cassandra", once the job is to be run. Please make sure to make any executors available by selecting ``Build Executor Status`` -> ``Configure`` -> Add "``cassandra``" as label and save.
+
+Executors need to have "JDK 1.8 (latest)" installed. This is done under ``Manage Jenkins -> Global Tool Configuration -> JDK Installations…``. Executors also need to have the virtualenv package installed on their system.
+
diff --git a/src/doc/4.0-rc1/_sources/development/code_style.rst.txt b/src/doc/4.0-rc1/_sources/development/code_style.rst.txt
new file mode 100644
index 0000000..85287ed
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/development/code_style.rst.txt
@@ -0,0 +1,93 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Code Style
+==========
+
+General Code Conventions
+------------------------
+
+ - The Cassandra project follows `Sun's Java coding conventions <http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html>`_ with an important exception: ``{`` and ``}`` are always placed on a new line
+
+Exception handling
+------------------
+
+ - Never ever write ``catch (...) {}`` or ``catch (...) { logger.error() }`` merely to satisfy Java's compile-time exception checking. Always propagate the exception up or throw ``RuntimeException`` (or, if it "can't happen," ``AssertionError``). This makes the exceptions visible to automated tests.
+ - Avoid propagating up checked exceptions that no caller handles. Rethrow as ``RuntimeException`` (or ``IOError``, if that is more applicable).
+ - Similarly, logger.warn() is often a cop-out: is this an error or not? If it is don't hide it behind a warn; if it isn't, no need for the warning.
+ - If you genuinely know an exception indicates an expected condition, it's okay to ignore it BUT this must be explicitly explained in a comment.
+
+Boilerplate
+-----------
+
+ - Do not implement equals or hashcode methods unless they are actually needed.
+ - Prefer public final fields to private fields with getters. (But prefer encapsulating behavior in "real" methods to either.)
+ - Prefer requiring initialization in the constructor to setters.
+ - Avoid redundant ``this`` references to member fields or methods.
+ - Do not extract interfaces (or abstract classes) unless you actually need multiple implementations of it.
+ - Always include braces for nested levels of conditionals and loops. Only avoid braces for single level.
+
+Multiline statements
+--------------------
+
+ - Try to keep lines under 120 characters, but use good judgement -- it's better to exceed 120 by a little, than split a line that has no natural splitting points.
+ - When splitting inside a method call, use one line per parameter and align them, like this:
+
+ ::
+
+   SSTableWriter writer = new SSTableWriter(cfs.getTempSSTablePath(),
+                                            columnFamilies.size(),
+                                            StorageService.getPartitioner());
+
+ - When splitting a ternary, use one line per clause, carry the operator, and align like this:
+
+ ::
+
+   var = bar == null
+       ? doFoo()
+       : doBar();
+
+Whitespace
+----------
+
+ - Please make sure to use 4 spaces instead of the tab character for all your indentation.
+ - Many lines in many files have a bunch of trailing whitespace... Please either clean these up in a separate patch, or leave them alone, so that reviewers now and anyone reading code history later doesn't have to pay attention to whitespace diffs.
+
+Imports
+-------
+
+Please observe the following order for your imports::
+
+   java
+   [blank line]
+   com.google.common
+   org.apache.commons
+   org.junit
+   org.slf4j
+   [blank line]
+   everything else alphabetically
+
+Format files for IDEs
+---------------------
+
+ - IntelliJ: `intellij-codestyle.jar <https://wiki.apache.org/cassandra/CodeStyle?action=AttachFile&do=view&target=intellij-codestyle.jar>`_
+ - IntelliJ 13: `gist for IntelliJ 13 <https://gist.github.com/jdsumsion/9ab750a05c2a567c6afc>`_ (this is a work in progress, still working on javadoc, ternary style, line continuations, etc)
+ - Eclipse (https://github.com/tjake/cassandra-style-eclipse)
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/development/dependencies.rst.txt b/src/doc/4.0-rc1/_sources/development/dependencies.rst.txt
new file mode 100644
index 0000000..6dd1cc4
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/development/dependencies.rst.txt
@@ -0,0 +1,53 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Dependency Management
+*********************
+
+Managing libraries for Cassandra is a bit less straight forward compared to other projects, as the build process is based on ant, maven and manually managed jars. Make sure to follow the steps below carefully and pay attention to any emerging issues in the :doc:`ci` and reported related issues on Jira/ML, in case of any project dependency changes.
+
+As Cassandra is an Apache product, all included libraries must follow Apache's `software license requirements <https://www.apache.org/legal/resolved.html>`_.
+
+Required steps to add or update libraries
+=========================================
+
+* Add or replace jar file in ``lib`` directory
+* Add or update ``lib/license`` files
+* Update dependencies in ``build.xml``
+
+  * Add to ``parent-pom`` with correct version
+  * Add to ``all-pom`` if simple Cassandra dependency (see below)
+
+
+POM file types
+==============
+
+* **parent-pom** - contains all dependencies with the respective version. All other poms will refer to the artifacts with specified versions listed here.
+* **build-deps-pom(-sources)** + **coverage-deps-pom** - used by ``ant build`` compile target. Listed dependenices will be resolved and copied to ``build/lib/{jar,sources}`` by executing the ``maven-ant-tasks-retrieve-build`` target. This should contain libraries that are required for build tools (grammar, docs, instrumentation), but are not shipped as part of the Cassandra distribution.
+* **test-deps-pom** - refered by ``maven-ant-tasks-retrieve-test`` to retrieve and save dependencies to ``build/test/lib``. Exclusively used during JUnit test execution.
+* **all-pom** - pom for `cassandra-all.jar <https://mvnrepository.com/artifact/org.apache.cassandra/cassandra-all>`_ that can be installed or deployed to public maven repos via ``ant publish``
+
+
+Troubleshooting and conflict resolution
+=======================================
+
+Here are some useful commands that may help you out resolving conflicts.
+
+* ``ant realclean`` - gets rid of the build directory, including build artifacts.
+* ``mvn dependency:tree -f build/apache-cassandra-*-SNAPSHOT.pom -Dverbose -Dincludes=org.slf4j`` - shows transitive dependency tree for artifacts, e.g. org.slf4j. In case the command above fails due to a missing parent pom file, try running ``ant mvn-install``.
+* ``rm ~/.m2/repository/org/apache/cassandra/apache-cassandra/`` - removes cached local Cassandra maven artifacts
+
+
diff --git a/src/doc/4.0-rc1/_sources/development/documentation.rst.txt b/src/doc/4.0-rc1/_sources/development/documentation.rst.txt
new file mode 100644
index 0000000..dad3bec
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/development/documentation.rst.txt
@@ -0,0 +1,104 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+
+Working on Documentation
+*************************
+
+How Cassandra is documented
+===========================
+
+The official Cassandra documentation lives in the project's git repository. We use a static site generator, `Sphinx <http://www.sphinx-doc.org/>`_, to create pages hosted at `cassandra.apache.org <https://cassandra.apache.org/doc/latest/>`_. You'll also find developer centric content about Cassandra internals in our retired `wiki <https://wiki.apache.org/cassandra>`_ (not covered by this guide).
+
+Using a static site generator often requires to use a markup language instead of visual editors (which some people would call good news). Sphinx, the tool-set we use to generate our documentation, uses `reStructuredText <http://www.sphinx-doc.org/en/stable/rest.html>`_ for that. Markup languages allow you to format text by making use of certain syntax elements. Your document structure will also have to follow specific conventions. Feel free to take a look at `existing documents <..>`_ to get a better idea how we use reStructuredText to write our documents.
+
+So how do you actually start making contributions?
+
+GitHub based work flow
+======================
+
+*Recommended for shorter documents and minor changes on existing content (e.g. fixing typos or updating descriptions)*
+
+Follow these steps to contribute using GitHub. It's assumed that you're logged in with an existing account.
+
+1. Fork the GitHub mirror of the `Cassandra repository <https://github.com/apache/cassandra>`_
+
+.. image:: images/docs_fork.png
+
+2. Create a new branch that you can use to make your edits. It's recommended to have a separate branch for each of your working projects. It will also make it easier to create a pull request later to when you decide you’re ready to contribute your work.
+
+.. image:: images/docs_create_branch.png
+
+3. Navigate to document sources ``doc/source`` to find the ``.rst`` file to edit. The URL of the document should correspond  to the directory structure. New files can be created using the "Create new file" button:
+
+.. image:: images/docs_create_file.png
+
+4. At this point you should be able to edit the file using the GitHub web editor. Start by naming your file and add some content. Have a look at other existing ``.rst`` files to get a better idea what format elements to use.
+
+.. image:: images/docs_editor.png
+
+Make sure to preview added content before committing any changes.
+
+.. image:: images/docs_preview.png
+
+5. Commit your work when you're done. Make sure to add a short description of all your edits since the last time you committed before.
+
+.. image:: images/docs_commit.png
+
+6. Finally if you decide that you're done working on your branch, it's time to create a pull request!
+
+.. image:: images/docs_pr.png
+
+Afterwards the GitHub Cassandra mirror will list your pull request and you're done. Congratulations! Please give us some time to look at your suggested changes before we get back to you.
+
+
+Jira based work flow
+====================
+
+*Recommended for major changes*
+
+Significant changes to the documentation are best managed through our Jira issue tracker. Please follow the same `contribution guides <https://cassandra.apache.org/doc/latest/development/patches.html>`_ as for regular code contributions. Creating high quality content takes a lot of effort. It’s therefor always a good idea to create a ticket before you start and explain what you’re planing to do. This will create the opportunity for other contributors and committers to comment on your ideas and work so far. Eventually your patch gets a formal review before it is committed.
+
+Working on documents locally using Sphinx
+=========================================
+
+*Recommended for advanced editing*
+
+Using the GitHub web interface should allow you to use most common layout elements including images. More advanced formatting options and navigation elements depend on Sphinx to render correctly. Therefor it’s a good idea to setup Sphinx locally for any serious editing. Please follow the instructions in the Cassandra source directory at ``doc/README.md``. Setup is very easy (at least on OSX and Linux).
+
+Notes for committers
+====================
+
+Please feel free to get involved and merge pull requests created on the GitHub mirror if you're a committer. As this is a read-only repository,  you won't be able to merge a PR directly on GitHub. You'll have to commit the changes against the Apache repository with a comment that will close the PR when the committ syncs with GitHub.
+
+You may use a git work flow like this::
+
+   git remote add github https://github.com/apache/cassandra.git
+   git fetch github pull/<PR-ID>/head:<PR-ID>
+   git checkout <PR-ID>
+
+Now either rebase or squash the commit, e.g. for squashing::
+
+   git reset --soft origin/trunk
+   git commit --author <PR Author>
+
+Make sure to add a proper commit message including a "Closes #<PR-ID>" text to automatically close the PR.
+
+Publishing
+----------
+
+Details for building and publishing of the site at cassandra.apache.org can be found `here <https://github.com/apache/cassandra-website/blob/trunk/README.md>`_.
+
diff --git a/src/doc/4.0-rc1/_sources/development/gettingstarted.rst.txt b/src/doc/4.0-rc1/_sources/development/gettingstarted.rst.txt
new file mode 100644
index 0000000..c2f5ef3
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/development/gettingstarted.rst.txt
@@ -0,0 +1,60 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+..  _gettingstarted:
+
+Getting Started
+*************************
+
+Initial Contributions
+========================
+
+Writing a new feature is just one way to contribute to the Cassandra project.  In fact, making sure that supporting tasks, such as QA, documentation and helping users, keep up with the development of new features is an ongoing challenge for the project (and most open source projects). So, before firing up your IDE to create that new feature, we'd suggest you consider some of the following activities as a way of introducing yourself to the project and getting to know how things work.
+ * Add to or update the documentation
+ * Answer questions on the user list
+ * Review and test a submitted patch
+ * Investigate and fix a reported bug
+ * Create unit tests and d-tests
+
+Updating documentation
+========================
+
+The Cassandra documentation is maintained in the Cassandra source repository along with the Cassandra code base. To submit changes to the documentation, follow the standard process for submitting a patch (:ref:`patches`).
+
+Answering questions on the user list
+====================================
+
+Subscribe to the user list, look out for some questions you know the answer to and reply with an answer. Simple as that!
+See the `community <http://cassandra.apache.org/community/>`_ page for details on how to subscribe to the mailing list.
+
+Reviewing and testing a submitted patch
+=======================================
+
+Reviewing patches is not the sole domain of committers, if others have reviewed a patch it can reduce the load on the committers allowing them to write more great features or review more patches. Follow the instructions in :ref:`_development_how_to_review` or create a build with the patch and test it with your own workload. Add a comment to the JIRA ticket to let others know what you have done and the results of your work. (For example, "I tested this performance enhacement on our application's standard production load test and found a 3% improvement.")
+
+Investigate and/or fix a reported bug
+=====================================
+
+Often, the hardest work in fixing a bug is reproducing it. Even if you don't have the knowledge to produce a fix, figuring out a way to reliable reproduce an issues can be a massive contribution to getting a bug fixed. Document your method of reproduction in a JIRA comment or, better yet, produce an automated test that reproduces the issue and attach it to the ticket. If you go as far as producing a fix, follow the process for submitting a patch (:ref:`patches`).
+
+Create unit tests and Dtests
+============================
+
+Test coverage in Cassandra is improving but, as with most code bases, it could benefit from more automated test coverage. Before starting work in an area, consider reviewing and enhancing the existing test coverage. This will both improve your knowledge of the code before you start on an enhancement and reduce the chances of your change in introducing new issues. See :ref:`testing` and :ref:`patches` for more detail.
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/development/how_to_commit.rst.txt b/src/doc/4.0-rc1/_sources/development/how_to_commit.rst.txt
new file mode 100644
index 0000000..528ac40
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/development/how_to_commit.rst.txt
@@ -0,0 +1,98 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+How-to Commit
+=============
+
+If you are a committer, feel free to pick any process that works for you - so long as you are planning to commit the work yourself.
+
+Here is how committing and merging will usually look for merging and pushing for tickets that follow the convention (if patch-based):
+
+Hypothetical CASSANDRA-12345 ticket is a cassandra-3.0 based bug fix that requires different code for cassandra-3.3, and trunk. Contributor Jackie supplied a patch for the root branch (12345-3.0.patch), and patches for the remaining branches (12345-3.3.patch, 12345-trunk.patch).
+
+On cassandra-3.0:
+   #. ``git am -3 12345-3.0.patch`` (if we have a problem b/c of CHANGES.txt not merging anymore, we fix  it ourselves, in place)
+   #. ``ant realclean && ant jar build-test`` (rebuild to make sure code compiles)
+
+On cassandra-3.3:
+   #. ``git merge cassandra-3.0 -s ours``
+   #. ``git apply -3 12345-3.3.patch`` (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)
+   #. ``ant realclean && ant jar build-test`` (rebuild to make sure code compiles)
+   #. ``git commit --amend``
+
+On trunk:
+   #. ``git merge cassandra-3.3 -s ours``
+   #. ``git apply -3 12345-trunk.patch`` (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)
+   #. ``ant realclean && ant jar build-test`` (rebuild to make sure code compiles)
+   #. ``git commit --amend``
+
+On any branch:
+   #. ``git push origin cassandra-3.0 cassandra-3.3 trunk --atomic``
+
+Same scenario, but a branch-based contribution:
+
+On cassandra-3.0:
+   #. ``git cherry-pick <sha-of-3.0-commit>`` (if we have a problem b/c of CHANGES.txt not merging anymore, we fix it ourselves, in place)
+   #. ``ant realclean && ant jar build-test`` (rebuild to make sure code compiles)
+
+On cassandra-3.3:
+   #. ``git merge cassandra-3.0 -s ours``
+   #. ``git format-patch -1 <sha-of-3.3-commit>``
+   #. ``git apply -3 <sha-of-3.3-commit>.patch`` (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)
+   #. ``ant realclean && ant jar build-test`` (rebuild to make sure code compiles)
+   #. ``git commit --amend``
+
+On trunk:
+   #. ``git merge cassandra-3.3 -s ours``
+   #. ``git format-patch -1 <sha-of-trunk-commit>``
+   #. ``git apply -3 <sha-of-trunk-commit>.patch`` (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)
+   #. ``ant realclean && ant jar build-test`` (rebuild to make sure code compiles)
+   #. ``git commit --amend``
+
+On any branch:
+   #. ``git push origin cassandra-3.0 cassandra-3.3 trunk --atomic``
+
+If the patch is for an older branch, and doesn't impact later branches (such as trunk), we still need to merge up.
+
+On cassandra-3.0:
+   #. ``git cherry-pick <sha-of-3.0-commit>`` (if we have a problem b/c of CHANGES.txt not merging anymore, we fix it ourselves, in place)
+   #. ``ant realclean && ant jar build-test`` (rebuild to make sure code compiles)
+
+On cassandra-3.3:
+   #. ``git merge cassandra-3.0 -s ours``
+   #. ``ant realclean && ant jar build-test`` (rebuild to make sure code compiles)
+
+On trunk:
+   #. ``git merge cassandra-3.3 -s ours``
+   #. ``ant realclean && ant jar build-test`` (rebuild to make sure code compiles)
+
+On any branch:
+   #. ``git push origin cassandra-3.0 cassandra-3.3 trunk --atomic``
+
+.. tip::
+
+   Notes on git flags:
+   ``-3`` flag to am and apply will instruct git to perform a 3-way merge for you. If a conflict is detected, you can either resolve it manually or invoke git mergetool - for both am and apply.
+
+   ``--atomic`` flag to git push does the obvious thing: pushes all or nothing. Without the flag, the command is equivalent to running git push once per each branch. This is nifty in case a race condition happens - you won’t push half the branches, blocking other committers’ progress while you are resolving the issue.
+
+.. tip::
+
+   The fastest way to get a patch from someone’s commit in a branch on GH - if you don’t have their repo in remotes -  is to append .patch to the commit url, e.g.
+   curl -O https://github.com/apache/cassandra/commit/7374e9b5ab08c1f1e612bf72293ea14c959b0c3c.patch
+
diff --git a/src/doc/4.0-rc1/_sources/development/how_to_review.rst.txt b/src/doc/4.0-rc1/_sources/development/how_to_review.rst.txt
new file mode 100644
index 0000000..4778b69
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/development/how_to_review.rst.txt
@@ -0,0 +1,73 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+..  _how_to_review:
+
+Review Checklist
+****************
+
+When reviewing tickets in Apache JIRA, the following items should be covered as part of the review process:
+
+**General**
+
+ * Does it conform to the :doc:`code_style` guidelines?
+ * Is there any redundant or duplicate code?
+ * Is the code as modular as possible?
+ * Can any singletons be avoided?
+ * Can any of the code be replaced with library functions?
+ * Are units of measurement used in the code consistent, both internally and with the rest of the ecosystem?
+
+**Error-Handling**
+
+ * Are all data inputs and outputs checked (for the correct type, length, format, and range) and encoded?
+ * Where third-party utilities are used, are returning errors being caught?
+ * Are invalid parameter values handled?
+ * Are any Throwable/Exceptions passed to the JVMStabilityInspector?
+ * Are errors well-documented? Does the error message tell the user how to proceed?
+ * Do exceptions propagate to the appropriate level in the code?
+
+**Documentation**
+
+ * Do comments exist and describe the intent of the code (the "why", not the "how")?
+ * Are javadocs added where appropriate?
+ * Is any unusual behavior or edge-case handling described?
+ * Are data structures and units of measurement explained?
+ * Is there any incomplete code? If so, should it be removed or flagged with a suitable marker like ‘TODO’?
+ * Does the code self-document via clear naming, abstractions, and flow control?
+ * Have NEWS.txt, the cql3 docs, and the native protocol spec been updated if needed?
+ * Is the ticket tagged with "client-impacting" and "doc-impacting", where appropriate?
+ * Has lib/licences been updated for third-party libs? Are they Apache License compatible?
+ * Is the Component on the JIRA ticket set appropriately?
+
+**Testing**
+
+ * Is the code testable? i.e. don’t add too many or hide dependencies, unable to initialize objects, test frameworks can use methods etc.
+ * Do tests exist and are they comprehensive?
+ * Do unit tests actually test that the code is performing the intended functionality?
+ * Could any test code use common functionality (e.g. ccm, dtest, or CqlTester methods) or abstract it there for reuse?
+ * If the code may be affected by multi-node clusters, are there dtests?
+ * If the code may take a long time to test properly, are there CVH tests?
+ * Is the test passing on CI for all affected branches (up to trunk, if applicable)? Are there any regressions?
+ * If patch affects read/write path, did we test for performance regressions w/multiple workloads?
+ * If adding a new feature, were tests added and performed confirming it meets the expected SLA/use-case requirements for the feature?
+
+**Logging**
+
+ * Are logging statements logged at the correct level?
+ * Are there logs in the critical path that could affect performance?
+ * Is there any log that could be added to communicate status or troubleshoot potential problems in this feature?
+ * Can any unnecessary logging statement be removed?
+
diff --git a/src/doc/4.0-rc1/_sources/development/ide.rst.txt b/src/doc/4.0-rc1/_sources/development/ide.rst.txt
new file mode 100644
index 0000000..97c73ae
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/development/ide.rst.txt
@@ -0,0 +1,185 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Building and IDE Integration
+****************************
+
+Building From Source
+====================
+
+Getting started with Cassandra and IntelliJ IDEA or Eclipse is simple, once you manage to build Cassandra from source using `Java 8 <http://www.oracle.com/technetwork/java/javase/downloads/index.html>`_, `Git <https://git-scm.com/>`_ and `Ant <http://ant.apache.org/>`_.
+
+The source code for Cassandra is shared through the central Apache Git repository and organized by different branches. You can access the code for the current development branch through git as follows::
+
+   git clone https://gitbox.apache.org/repos/asf/cassandra.git cassandra-trunk
+
+Other branches will point to different versions of Cassandra. Switching to a different branch requires checking out the branch by its name::
+
+   git checkout cassandra-3.0
+
+You can get a list of available branches with ``git branch``.
+
+Finally build Cassandra using ant::
+
+   ant
+
+This may take a significant amount of time depending on whether artifacts have to be downloaded and the number of classes that need to be compiled.
+
+.. hint::
+
+   You can setup multiple working trees for different Cassandra versions from the same repository using `git-worktree <https://git-scm.com/docs/git-worktree>`_.
+
+|
+
+Setting up Cassandra in IntelliJ IDEA
+=====================================
+
+`IntelliJ IDEA <https://www.jetbrains.com/idea/>`_ by JetBrains is one of the most popular IDEs for Cassandra and Java development in general. The Community Edition is provided as a free download with all features needed to get started developing Cassandra.
+
+Setup Cassandra as a Project (C* 2.1 and newer)
+-----------------------------------------------
+
+Since 2.1.5, there is a new ant target: ``generate-idea-files``. Please see our `wiki <https://wiki.apache.org/cassandra/RunningCassandraInIDEA>`_ for instructions for older Cassandra versions.
+
+Please clone and build Cassandra as described above and execute the following steps:
+
+1. Once Cassandra is built, generate the IDEA files using ant:
+
+::
+
+   ant generate-idea-files
+
+2. Start IDEA
+
+3. Open the IDEA project from the checked out Cassandra directory using the menu item Open in IDEA's File menu
+
+The project generated by the ant task ``generate-idea-files`` contains nearly everything you need to debug Cassandra and execute unit tests.
+
+ * Run/debug defaults for JUnit
+ * Run/debug configuration for Cassandra daemon
+ * License header for Java source files
+ * Cassandra code style
+ * Inspections
+
+|
+
+Opening Cassandra in Apache NetBeans
+=======================================
+
+`Apache NetBeans <https://netbeans.apache.org/>`_ is the elder of the open sourced java IDEs, and can be used for Cassandra development. There is no project setup or generation required to open Cassandra in NetBeans.
+
+Open Cassandra as a Project (C* 4.0 and newer)
+-----------------------------------------------
+
+Please clone and build Cassandra as described above and execute the following steps:
+
+1. Start Apache NetBeans
+
+2. Open the NetBeans project from the `ide/` folder of the checked out Cassandra directory using the menu item "Open Project…" in NetBeans' File menu
+
+The project opened supports building, running, debugging, and profiling Cassandra from within the IDE. These actions delegate to the ant `build.xml` script.
+
+ * Build/Run/Debug Project is available via the Run/Debug menus, or the project context menu.
+ * Profile Project is available via the Profile menu. In the opened Profiler tab, click the green "Profile" button.
+ * Cassandra's code style is honored in `ide/nbproject/project.properties`
+
+The `JAVA8_HOME` system variable must be set in the environment that NetBeans starts in for the Run/Debug/Profile ant targets to execute.
+
+|
+
+Setting up Cassandra in Eclipse
+===============================
+
+Eclipse is a popular open source IDE that can be used for Cassandra development. Various Eclipse environments are available from the `download page <https://www.eclipse.org/downloads/eclipse-packages/>`_. The following guide was created with "Eclipse IDE for Java Developers".
+
+These instructions were tested on Ubuntu 16.04 with Eclipse Neon (4.6) using Cassandra 2.1, 2.2 and 3.x.
+
+Project Settings
+----------------
+
+**It is important that you generate the Eclipse files with Ant before trying to set up the Eclipse project.**
+
+ * Clone and build Cassandra as described above.
+ * Run ``ant generate-eclipse-files`` to create the Eclipse settings.
+ * Start Eclipse.
+ * Select ``File->Import->Existing Projects into Workspace->Select git directory``.
+ * Make sure "cassandra-trunk" is recognized and selected as a project (assuming you checked the code out into the folder cassandra-trunk as described above).
+ * Confirm "Finish" to have your project imported.
+
+You should now be able to find the project as part of the "Package Explorer" or "Project Explorer" without having Eclipse complain about any errors after building the project automatically.
+
+Unit Tests
+----------
+
+Unit tests can be run from Eclipse by simply right-clicking the class file or method and selecting ``Run As->JUnit Test``. Tests can be debugged this way as well by defining breakpoints (double-click line number) and selecting ``Debug As->JUnit Test``.
+
+Alternatively all unit tests can be run from the command line as described in :doc:`testing`
+
+Debugging Cassandra Using Eclipse
+---------------------------------
+
+There are two ways how to start and debug a local Cassandra instance with Eclipse. You can either start Cassandra just as you normally would by using the ``./bin/cassandra`` script and connect to the JVM through `remotely <https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/introclientissues005.html>`_ from Eclipse or start Cassandra from Eclipse right away.
+
+Starting Cassandra From Command Line
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ * Set environment variable to define remote debugging options for the JVM:
+   ``export JVM_EXTRA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1414"``
+ * Start Cassandra by executing the ``./bin/cassandra``
+
+Afterwards you should be able to connect to the running Cassandra process through the following steps:
+
+From the menu, select ``Run->Debug Configurations..``
+
+.. image:: images/eclipse_debug0.png
+
+Create new remote application
+
+.. image:: images/eclipse_debug1.png
+
+Configure connection settings by specifying a name and port 1414
+
+.. image:: images/eclipse_debug2.png
+
+Afterwards confirm "Debug" to connect to the JVM and start debugging Cassandra!
+
+Starting Cassandra From Eclipse
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Cassandra can also be started directly from Eclipse if you don't want to use the command line.
+
+From the menu, select ``Run->Run Configurations..``
+
+.. image:: images/eclipse_debug3.png
+
+Create new application
+
+.. image:: images/eclipse_debug4.png
+
+Specify name, project and main class ``org.apache.cassandra.service.CassandraDaemon``
+
+.. image:: images/eclipse_debug5.png
+
+Configure additional JVM specific parameters that will start Cassandra with some of the settings created by the regular startup script. Change heap related values as needed.
+
+::
+
+   -Xms1024M -Xmx1024M -Xmn220M -Xss256k -ea -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCondCardMark -javaagent:./lib/jamm-0.3.0.jar -Djava.net.preferIPv4Stack=true
+
+.. image:: images/eclipse_debug6.png
+
+Now just confirm "Debug" and you should see the output of Cassandra starting up in the Eclipse console and should be able to set breakpoints and start debugging!
+
diff --git a/src/doc/4.0-rc1/_sources/development/index.rst.txt b/src/doc/4.0-rc1/_sources/development/index.rst.txt
new file mode 100644
index 0000000..e4f4402
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/development/index.rst.txt
@@ -0,0 +1,34 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Contributing to Cassandra
+*************************
+
+.. toctree::
+   :maxdepth: 2
+
+   gettingstarted
+   ide
+   testing
+   patches
+   code_style
+   license_compliance
+   how_to_review
+   how_to_commit
+   documentation
+   ci
+   dependencies
+   release_process
diff --git a/src/doc/4.0-rc1/_sources/development/license_compliance.rst.txt b/src/doc/4.0-rc1/_sources/development/license_compliance.rst.txt
new file mode 100644
index 0000000..e2eba2a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/development/license_compliance.rst.txt
@@ -0,0 +1,37 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+..  _license_compliance:
+
+License Compliance
+******************
+
+
+The target of this document is to provide an overview and guidance how the Apache Cassandra project's source code and
+artifacts maintain compliance with the `ASF Licensing policy <http://www.apache.org/legal/release-policy.html#licensing>`.
+
+The repository contains a LICENSE file, and a NOTICE file.
+
+The Apache Cassandra project enforces and verifies ASF License header conformance on all source files using the Apache RAT tool.
+
+With a few exceptions, source files consisting of works submitted directly to the ASF by the copyright owner or owner's
+agent must contain the appropriate ASF license header. Files without any degree of creativity don't require a license header.
+
+Currently, RAT checks all .bat, .btm, .cql, .css, .g, .hmtl, .iml, .java, .jflex, .jks, .md, .mod, .name, .pom, .py, .sh, .spec, .textile, .yml, .yaml, .xml files for a LICENSE header.
+
+If there is an incompliance, the build will fail with the following warning:
+
+    Some files have missing or incorrect license information. Check RAT report in build/rat.txt for more details!
diff --git a/src/doc/4.0-rc1/_sources/development/patches.rst.txt b/src/doc/4.0-rc1/_sources/development/patches.rst.txt
new file mode 100644
index 0000000..92c0553
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/development/patches.rst.txt
@@ -0,0 +1,141 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+.. _patches:
+
+Contributing Code Changes
+*************************
+
+Choosing What to Work on
+========================
+
+Submitted patches can include bug fixes, changes to the Java code base, improvements for tooling (both Java or Python), documentation, testing or any other changes that requires changing the code base. Although the process of contributing code is always the same, the amount of work and time it takes to get a patch accepted also depends on the kind of issue you're addressing.
+
+As a general rule of thumb:
+ * Major new features and significant changes to the code based will likely not going to be accepted without deeper discussion within the `developer community <http://cassandra.apache.org/community/>`_
+ * Bug fixes take higher priority compared to features
+ * The extend to which tests are required depend on how likely your changes will effect the stability of Cassandra in production. Tooling changes requires fewer tests than storage engine changes.
+ * Less complex patches will be faster to review: consider breaking up an issue into individual tasks and contributions that can be reviewed separately
+
+.. hint::
+
+   Not sure what to work? Just pick an issue marked as `Low Hanging Fruit <https://issues.apache.org/jira/issues/?jql=project%20%3D%20CASSANDRA%20AND%20Complexity%20%3D%20%22Low%20Hanging%20Fruit%22%20and%20status%20!%3D%20resolved>`_ Complexity in JIRA, which we use to flag issues that could turn out to be good starter tasks for beginners.
+
+Before You Start Coding
+=======================
+
+Although contributions are highly appreciated, we do not guarantee that each contribution will become a part of Cassandra. Therefore it's generally a good idea to first get some feedback on the things you plan to work on, especially about any new features or major changes to the code base. You can reach out to other developers on the mailing list or :ref:`Slack <slack>`.
+
+You should also
+ * Avoid redundant work by searching for already reported issues in `JIRA <https://issues.apache.org/jira/browse/CASSANDRA>`_
+ * Create a new issue early in the process describing what you're working on - not just after finishing your patch
+ * Link related JIRA issues with your own ticket to provide a better context
+ * Update your ticket from time to time by giving feedback on your progress and link a GitHub WIP branch with your current code
+ * Ping people who you actively like to ask for advice on JIRA by `mentioning users <https://confluence.atlassian.com/conf54/confluence-user-s-guide/sharing-content/using-mentions>`_
+
+There are also some fixed rules that you need to be aware:
+ * Patches will only be applied to branches by following the release model
+ * Code must be testable
+ * Code must follow the :doc:`code_style` convention
+ * Changes must not break compatibility between different Cassandra versions
+ * Contributions must be covered by the Apache License
+
+Choosing the Right Branches to Work on
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+There are currently multiple Cassandra versions maintained in individual branches:
+
+======= ======
+Version Policy
+======= ======
+4.0     Code freeze (see below)
+3.11    Critical bug fixes only
+3.0     Critical bug fixes only
+2.2     Critical bug fixes only
+2.1     Critical bug fixes only
+======= ======
+
+Corresponding branches in git are easy to recognize as they are named ``cassandra-<release>`` (e.g. ``cassandra-3.0``). The ``trunk`` branch is an exception, as it contains the most recent commits from all other branches and is used for creating new branches for future tick-tock releases.
+
+4.0 Code Freeze
+"""""""""""""""
+
+Patches for new features are currently not accepted for 4.0 or any earlier versions. Starting with the code freeze in September, all efforts should focus on stabilizing the 4.0 branch before the first official release. During that time, only the following patches will be considered for acceptance:
+
+ * Bug fixes
+ * Measurable performance improvements
+ * Changes not distributed as part of the release such as:
+ * Testing related improvements and fixes
+ * Build and infrastructure related changes
+ * Documentation
+
+Bug Fixes
+"""""""""
+
+Creating patches for bug fixes is a bit more complicated as this will depend on how many different versions of Cassandra are affected. In each case, the order for merging such changes will be ``cassandra-2.1`` -> ``cassandra-2.2`` -> ``cassandra-3.0`` -> ``cassandra-3.x`` -> ``trunk``. But don't worry, merging from 2.1 would be the worst case for bugs that affect all currently supported versions, which isn't very common. As a contributor, you're also not expected to provide a single patch for each version. What you need to do however is:
+
+ * Be clear about which versions you could verify to be affected by the bug
+ * For 2.x: ask if a bug qualifies to be fixed in this release line, as this may be handled on case by case bases
+ * If possible, create a patch against the lowest version in the branches listed above (e.g. if you found the bug in 3.9 you should try to fix it already in 3.0)
+ * Test if the patch can be merged cleanly across branches in the direction listed above
+ * Be clear which branches may need attention by the committer or even create custom patches for those if you can
+
+Creating a Patch
+================
+
+So you've finished coding and the great moment arrives: it's time to submit your patch!
+
+ 1. Create a branch for your changes if you haven't done already. Many contributors name their branches based on ticket number and Cassandra version, e.g. ``git checkout -b 12345-3.0``
+ 2. Verify that you follow Cassandra's :doc:`code_style`
+ 3. Make sure all tests (including yours) pass using ant as described in :doc:`testing`. If you suspect a test failure is unrelated to your change, it may be useful to check the test's status by searching the issue tracker or looking at `CI <https://builds.apache.org/>`_ results for the relevant upstream version.  Note that the full test suites take many hours to complete, so it is common to only run specific relevant tests locally before uploading a patch.  Once a patch has been uploaded, the reviewer or committer can help setup CI jobs to run the full test suites.
+ 4. Consider going through the :doc:`how_to_review` for your code. This will help you to understand how others will consider your change for inclusion.
+ 5. Don’t make the committer squash commits for you in the root branch either. Multiple commits are fine - and often preferable - during review stage, especially for incremental review, but once +1d, do either:
+
+   a. Attach a patch to JIRA with a single squashed commit in it (per branch), or
+   b. Squash the commits in-place in your branches into one
+
+ 6. Include a CHANGES.txt entry (put it at the top of the list), and format the commit message appropriately in your patch as below. Please note that only user-impacting items `should <https://lists.apache.org/thread.html/rde1128131a621e43b0a9c88778398c053a234da0f4c654b82dcbbe0e%40%3Cdev.cassandra.apache.org%3E>`_ be listed in CHANGES.txt. If you fix a test that does not affect users and does not require changes in runtime code, then no CHANGES.txt entry is necessary.
+ 
+    ::
+
+      <One sentence description, usually Jira title and CHANGES.txt summary>
+      <Optional lengthier description>
+      patch by <Authors>; reviewed by <Reviewers> for CASSANDRA-#####
+ 
+ 7. When you're happy with the result, create a patch:
+
+   ::
+
+      git add <any new or modified file>
+      git commit -m '<message>'
+      git format-patch HEAD~1
+      mv <patch-file> <ticket-branchname.txt> (e.g. 12345-trunk.txt, 12345-3.0.txt)
+
+   Alternatively, many contributors prefer to make their branch available on GitHub. In this case, fork the Cassandra repository on GitHub and push your branch:
+
+   ::
+
+      git push --set-upstream origin 12345-3.0
+
+ 8. To make life easier for your reviewer/committer, you may want to make sure your patch applies cleanly to later branches and create additional patches/branches for later Cassandra versions to which your original patch does not apply cleanly. That said, this is not critical, and you will receive feedback on your patch regardless.
+ 9. Attach the newly generated patch to the ticket/add a link to your branch and click "Submit Patch" at the top of the ticket. This will move the ticket into "Patch Available" status, indicating that your submission is ready for review.
+ 10. Wait for other developers or committers to review it and hopefully +1 the ticket (see :doc:`how_to_review`). If your change does not receive a +1, do not be discouraged. If possible, the reviewer will give suggestions to improve your patch or explain why it is not suitable.
+ 11. If the reviewer has given feedback to improve the patch, make the necessary changes and move the ticket into "Patch Available" once again.
+
+Once the review process is complete, you will receive a +1. Wait for a committer to commit it. Do not delete your branches immediately after they’ve been committed - keep them on GitHub for a while. Alternatively, attach a patch to JIRA for historical record. It’s not that uncommon for a committer to mess up a merge. In case of that happening, access to the original code is required, or else you’ll have to redo some of the work.
+
+
diff --git a/src/doc/4.0-rc1/_sources/development/release_process.rst.txt b/src/doc/4.0-rc1/_sources/development/release_process.rst.txt
new file mode 100644
index 0000000..a2bcf48
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/development/release_process.rst.txt
@@ -0,0 +1,248 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+..  release_process:
+
+Release Process
+***************
+
+.. contents:: :depth: 3
+
+| 
+|
+
+
+
+The steps for Release Managers to create, vote and publish releases for Apache Cassandra.
+
+While a committer can perform the initial steps of creating and calling a vote on a proposed release, only a PMC member can complete the process of publishing and announcing the release.
+
+
+Prerequisites
+=============
+
+Background docs
+ * `ASF Release Policy <http://www.apache.org/legal/release-policy.html>`_
+ * `ASF Release Distribution Policy <http://www.apache.org/dev/release-distribution>`_
+ * `ASF Release Best Practices <http://www.eu.apache.org/dev/release-publishing.html>`_
+
+
+A debian based linux OS is required to run the release steps from. Debian-based distros provide the required RPM, dpkg and repository management tools.
+
+
+Create and publish your GPG key
+-------------------------------
+
+To create a GPG key, follow the `guidelines <http://www.apache.org/dev/openpgp.html>`_.
+The key must be 4096 bit RSA.
+Include your public key in::
+
+  https://dist.apache.org/repos/dist/release/cassandra/KEYS
+
+
+Publish your GPG key in a PGP key server, such as `MIT Keyserver <http://pgp.mit.edu/>`_.
+
+Bintray account with access to Apache organisation
+--------------------------------------------------
+
+Publishing a successfully voted upon release requires bintray access to the Apache organisation. Please verify that you have a bintray account and the Apache organisation is listed `here <https://bintray.com/profile/edit/organizations>`_.
+
+
+Create Release Artifacts
+========================
+
+Any committer can perform the following steps to create and call a vote on a proposed release.
+
+Check that there are no open urgent jira tickets currently being worked on. Also check with the PMC that there's security vulnerabilities currently being worked on in private.'
+Current project habit is to check the timing for a new release on the dev mailing lists.
+
+Perform the Release
+-------------------
+
+Run the following commands to generate and upload release artifacts, to the ASF nexus staging repository and dev distribution location::
+
+
+    cd ~/git
+    git clone https://github.com/apache/cassandra-builds.git
+    git clone https://github.com/apache/cassandra.git
+
+    # Edit the variables at the top of the `prepare_release.sh` file
+    edit cassandra-builds/cassandra-release/prepare_release.sh
+
+    # Ensure your 4096 RSA key is the default secret key
+    edit ~/.gnupg/gpg.conf # update the `default-key` line
+    edit ~/.rpmmacros # update the `%gpg_name <key_id>` line
+
+    # Ensure DEBFULLNAME and DEBEMAIL is defined and exported, in the debian scripts configuration
+    edit ~/.devscripts
+
+    # The prepare_release.sh is run from the actual cassandra git checkout,
+    # on the branch/commit that we wish to tag for the tentative release along with version number to tag.
+    cd cassandra
+    git switch cassandra-<version-branch>
+
+    # The following cuts the release artifacts (including deb and rpm packages) and deploy to staging environments
+    ../cassandra-builds/cassandra-release/prepare_release.sh -v <version>
+
+Follow the prompts.
+
+If building the deb or rpm packages fail, those steps can be repeated individually using the `-d` and `-r` flags, respectively.
+
+Call for a Vote
+===============
+
+Fill out the following email template and send to the dev mailing list::
+
+    I propose the following artifacts for release as <version>.
+
+    sha1: <git-sha>
+
+    Git: https://gitbox.apache.org/repos/asf?p=cassandra.git;a=shortlog;h=refs/tags/<version>-tentative
+
+    Artifacts: https://repository.apache.org/content/repositories/orgapachecassandra-<nexus-id>/org/apache/cassandra/apache-cassandra/<version>/
+
+    Staging repository: https://repository.apache.org/content/repositories/orgapachecassandra-<nexus-id>/
+
+    The distribution packages are available here: https://dist.apache.org/repos/dist/dev/cassandra/${version}/
+
+    The vote will be open for 72 hours (longer if needed).
+
+    [1]: (CHANGES.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=<version>-tentative
+    [2]: (NEWS.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=<version>-tentative
+
+
+
+Post-vote operations
+====================
+
+Any PMC member can perform the following steps to formalize and publish a successfully voted release.
+
+Publish Artifacts
+-----------------
+
+Run the following commands to publish the voted release artifacts::
+
+    cd ~/git
+    # edit the variables at the top of the `finish_release.sh` file
+    edit cassandra-builds/cassandra-release/finish_release.sh
+
+    # After cloning cassandra-builds repo, `finish_release.sh` is run from the actual cassandra git checkout,
+    # on the tentative release tag that we wish to tag for the final release version number tag.
+    cd ~/git/cassandra/
+    git checkout <version>-tentative
+    ../cassandra-builds/cassandra-release/finish_release.sh -v <version>
+
+If successful, take note of the email text output which can be used in the next section "Send Release Announcement".
+The output will also list the next steps that are required.
+
+
+Promote Nexus Repository
+------------------------
+
+* Login to `Nexus repository <https://repository.apache.org>`_ again.
+* Click on "Staging" and then on the repository with id "cassandra-staging".
+* Find your closed staging repository, right click on it and choose "Promote".
+* Select the "Releases" repository and click "Promote".
+* Next click on "Repositories", select the "Releases" repository and validate that your artifacts exist as you expect them.
+
+Publish the Bintray Uploaded Distribution Packages
+---------------------------------------
+
+Log into bintray and publish the uploaded artifacts.
+
+Update and Publish Website
+--------------------------
+
+See `docs <https://svn.apache.org/repos/asf/cassandra/site/src/README>`_ for building and publishing the website.
+
+Also update the CQL doc if appropriate.
+
+Release version in JIRA
+-----------------------
+
+Release the JIRA version.
+
+* In JIRA go to the version that you want to release and release it.
+* Create a new version, if it has not been done before.
+
+Update to Next Development Version
+----------------------------------
+
+Update the codebase to point to the next development version::
+
+    cd ~/git/cassandra/
+    git checkout cassandra-<version-branch>
+    edit build.xml          # update `<property name="base.version" value="…"/> `
+    edit debian/changelog   # add entry for new version
+    edit CHANGES.txt        # add entry for new version, move up any entries that were added after the release was cut and staged
+    git commit -m "Increment version to <next-version>" build.xml debian/changelog CHANGES.txt
+
+    # …and forward merge and push per normal procedure
+
+
+Wait for Artifacts to Sync
+--------------------------
+
+Wait for the artifacts to sync at https://downloads.apache.org/cassandra/
+
+Send Release Announcement
+-------------------------
+
+Fill out the following email template and send to both user and dev mailing lists::
+
+    The Cassandra team is pleased to announce the release of Apache Cassandra version <version>.
+
+    Apache Cassandra is a fully distributed database. It is the right choice
+    when you need scalability and high availability without compromising
+    performance.
+
+     http://cassandra.apache.org/
+
+    Downloads of source and binary distributions are listed in our download
+    section:
+
+     http://cassandra.apache.org/download/
+
+    This version is <the first|a bug fix> release[1] on the <version-base> series. As always,
+    please pay attention to the release notes[2] and let us know[3] if you
+    were to encounter any problem.
+
+    Enjoy!
+
+    [1]: (CHANGES.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=<version>
+    [2]: (NEWS.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=<version>
+    [3]: https://issues.apache.org/jira/browse/CASSANDRA
+
+Update Slack Cassandra topic
+---------------------------
+
+Update topic in ``cassandra`` :ref:`Slack room <slack>`
+    /topic cassandra.apache.org | Latest releases: 3.11.4, 3.0.18, 2.2.14, 2.1.21 | ask, don't ask to ask
+
+Tweet from @Cassandra
+---------------------
+
+Tweet the new release, from the @Cassandra account
+
+Delete Old Releases
+-------------------
+
+As described in `When to Archive <http://www.apache.org/dev/release.html#when-to-archive>`_.
+
+An example of removing old releases::
+
+    svn rm https://dist.apache.org/repos/dist/release/cassandra/<previous_version>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_sources/development/testing.rst.txt b/src/doc/4.0-rc1/_sources/development/testing.rst.txt
new file mode 100644
index 0000000..76f2813
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/development/testing.rst.txt
@@ -0,0 +1,98 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+..  _testing:
+
+Testing
+*******
+
+Creating tests is one of the most important and also most difficult parts of developing Cassandra. There are different ways to test your code depending on what you're working on.
+
+
+Unit Testing
+============
+
+The most simple way to test code in Cassandra is probably by writing a unit test. Cassandra uses JUnit as a testing framework and test cases can be found in the ``test/unit`` directory. Ideally you’d be able to create a unit test for your implementation that would exclusively cover the class you created (the unit under test). Unfortunately this is not always possible and Cassandra doesn’t have a very mock friendly code base. Often you’ll find yourself in a situation where you have to make use of an embedded Cassandra instance that you’ll be able to interact with in your test. If you want to make use of CQL in your test, you can simply extend CQLTester and use some of the convenient helper methods such as in the following example.
+
+.. code-block:: java
+
+  @Test
+  public void testBatchAndList() throws Throwable
+  {
+     createTable("CREATE TABLE %s (k int PRIMARY KEY, l list<int>)");
+     execute("BEGIN BATCH " +
+             "UPDATE %1$s SET l = l +[ 1 ] WHERE k = 0; " +
+             "UPDATE %1$s SET l = l + [ 2 ] WHERE k = 0; " +
+             "UPDATE %1$s SET l = l + [ 3 ] WHERE k = 0; " +
+             "APPLY BATCH");
+
+     assertRows(execute("SELECT l FROM %s WHERE k = 0"),
+                row(list(1, 2, 3)));
+  }
+
+Unit tests can be run from the command line using the ``ant test`` command, ``ant test -Dtest.name=<simple_classname>`` to execute a test suite or ``ant testsome -Dtest.name=<FQCN> -Dtest.methods=<testmethod1>[,testmethod2]`` for individual tests.  For example, to run all test methods in the ``org.apache.cassandra.cql3.SimpleQueryTest`` class, you would run::
+
+    ant test -Dtest.name=SimpleQueryTest
+
+To run only the ``testTableWithOneClustering()`` test method from that class, you would run::
+
+    ant testsome -Dtest.name=org.apache.cassandra.cql3.SimpleQueryTest -Dtest.methods=testTableWithOneClustering
+
+If you see an error like this::
+
+    Throws: cassandra-trunk/build.xml:1134: taskdef A class needed by class org.krummas.junit.JStackJUnitTask cannot be found:
+    org/apache/tools/ant/taskdefs/optional/junit/JUnitTask  using the classloader
+    AntClassLoader[/.../cassandra-trunk/lib/jstackjunit-0.0.1.jar]
+
+You will need to install the ant-optional package since it contains the ``JUnitTask`` class.
+
+Long running tests
+------------------
+
+Test that consume a significant amount of time during execution can be found in the ``test/long`` directory and executed as a regular JUnit test or standalone program. Except for the execution time, there’s nothing really special about them. However, ant will execute tests under ``test/long`` only when using the ``ant long-test`` target.
+
+DTests
+======
+
+One way of doing integration or system testing at larger scale is by using `dtest <https://github.com/apache/cassandra-dtest>`_, which stands for “Cassandra Distributed Tests”. The idea is to automatically setup Cassandra clusters using various configurations and simulate certain use cases you want to test. This is done using Python scripts and ``ccmlib`` from the `ccm <https://github.com/pcmanus/ccm>`_ project. Dtests will setup clusters using this library just as you do running ad-hoc ``ccm`` commands on your local machine. Afterwards dtests will use the `Python driver <http://datastax.github.io/python-driver/installation.html>`_ to interact with the nodes, manipulate the file system, analyze logs or mess with individual nodes.
+
+Using dtests helps us to prevent regression bugs by continually executing tests on the `CI server <https://builds.apache.org/>`_ against new patches. Committers will be able to set up build branches there and your reviewer may use the CI environment to run tests for your patch.
+
+The best way to learn how to write dtests is probably by reading the introduction "`How to Write a Dtest <http://www.datastax.com/dev/blog/how-to-write-a-dtest>`_" and by looking at existing, recently updated tests in the project. New tests must follow certain `style conventions <https://github.com/apache/cassandra-dtest/blob/trunk/CONTRIBUTING.md>`_ that are being checked before accepting contributions. In contrast to Cassandra, dtest issues and pull-requests are managed on github, therefor you should make sure to link any created dtests in your Cassandra ticket and also refer to the ticket number in your dtest PR.
+
+Creating a good dtest can be tough, but it should not prevent you from submitting patches! Please ask in the corresponding JIRA ticket how to write a good dtest for the patch. In most cases a reviewer or committer will able to support you, and in some cases they may offer to write a dtest for you.
+
+Performance Testing
+===================
+
+Performance tests for Cassandra are a special breed of tests that are not part of the usual patch contribution process. In fact you can contribute tons of patches to Cassandra without ever running performance tests. They are important however when working on performance improvements, as such improvements must be measurable.
+
+Cassandra Stress Tool
+---------------------
+
+See :ref:`cassandra_stress`
+
+cstar_perf
+----------
+
+Another tool available on github is `cstar_perf <https://github.com/datastax/cstar_perf>`_ that can be used for intensive performance testing in large clusters or locally. Please refer to the project page on how to set it up and how to use it.
+
+CircleCI
+--------
+Cassandra ships with a default `CircleCI <https://circleci.com>`_ configuration, to enable running tests on your branches, you need to go the CircleCI website, click "Login" and log in with your github account. Then you need to give CircleCI permission to watch your repositories. Once you have done that, you can optionally configure CircleCI to run tests in parallel - click "Projects", then your github account and then click the settings for the project. If you leave the parallelism at 1 for Cassandra, only ``ant eclipse-warnings`` and ``ant test`` will be run. If you up the parallelism to 4, it also runs ``ant long-test``, ``ant test-compression`` and ``ant stress-test``
+
+
diff --git a/src/doc/4.0-rc1/_sources/faq/index.rst.txt b/src/doc/4.0-rc1/_sources/faq/index.rst.txt
new file mode 100644
index 0000000..acb7538
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/faq/index.rst.txt
@@ -0,0 +1,299 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Frequently Asked Questions
+==========================
+
+- :ref:`why-cant-list-all`
+- :ref:`what-ports`
+- :ref:`what-happens-on-joins`
+- :ref:`asynch-deletes`
+- :ref:`one-entry-ring`
+- :ref:`can-large-blob`
+- :ref:`nodetool-connection-refused`
+- :ref:`to-batch-or-not-to-batch`
+- :ref:`selinux`
+- :ref:`how-to-unsubscribe`
+- :ref:`cassandra-eats-all-my-memory`
+- :ref:`what-are-seeds`
+- :ref:`are-seeds-SPOF`
+- :ref:`why-message-dropped`
+- :ref:`oom-map-failed`
+- :ref:`what-on-same-timestamp-update`
+- :ref:`why-bootstrapping-stream-error`
+
+.. _why-cant-list-all:
+
+Why can't I set ``listen_address`` to listen on 0.0.0.0 (all my addresses)?
+---------------------------------------------------------------------------
+
+Cassandra is a gossip-based distributed system and ``listen_address`` is the address a node tells other nodes to reach
+it at. Telling other nodes "contact me on any of my addresses" is a bad idea; if different nodes in the cluster pick
+different addresses for you, Bad Things happen.
+
+If you don't want to manually specify an IP to ``listen_address`` for each node in your cluster (understandable!), leave
+it blank and Cassandra will use ``InetAddress.getLocalHost()`` to pick an address. Then it's up to you or your ops team
+to make things resolve correctly (``/etc/hosts/``, dns, etc).
+
+One exception to this process is JMX, which by default binds to 0.0.0.0 (Java bug 6425769).
+
+See :jira:`256` and :jira:`43` for more gory details.
+
+.. _what-ports:
+
+What ports does Cassandra use?
+------------------------------
+
+By default, Cassandra uses 7000 for cluster communication (7001 if SSL is enabled),  9042 for native protocol clients,
+and 7199 for JMX. The internode communication and native protocol ports
+are configurable in the :ref:`cassandra-yaml`. The JMX port is configurable in ``cassandra-env.sh`` (through JVM
+options). All ports are TCP.
+
+.. _what-happens-on-joins:
+
+What happens to existing data in my cluster when I add new nodes?
+-----------------------------------------------------------------
+
+When a new nodes joins a cluster, it will automatically contact the other nodes in the cluster and copy the right data
+to itself. See :ref:`topology-changes`.
+
+.. _asynch-deletes:
+
+I delete data from Cassandra, but disk usage stays the same. What gives?
+------------------------------------------------------------------------
+
+Data you write to Cassandra gets persisted to SSTables. Since SSTables are immutable, the data can't actually be removed
+when you perform a delete, instead, a marker (also called a "tombstone") is written to indicate the value's new status.
+Never fear though, on the first compaction that occurs between the data and the tombstone, the data will be expunged
+completely and the corresponding disk space recovered. See :ref:`compaction` for more detail.
+
+.. _one-entry-ring:
+
+Why does nodetool ring only show one entry, even though my nodes logged that they see each other joining the ring?
+------------------------------------------------------------------------------------------------------------------
+
+This happens when you have the same token assigned to each node. Don't do that.
+
+Most often this bites people who deploy by installing Cassandra on a VM (especially when using the Debian package, which
+auto-starts Cassandra after installation, thus generating and saving a token), then cloning that VM to other nodes.
+
+The easiest fix is to wipe the data and commitlog directories, thus making sure that each node will generate a random
+token on the next restart.
+
+.. _change-replication-factor:
+
+Can I change the replication factor (a a keyspace) on a live cluster?
+---------------------------------------------------------------------
+
+Yes, but it will require running a full repair (or cleanup) to change the replica count of existing data:
+
+- :ref:`Alter <alter-keyspace-statement>` the replication factor for desired keyspace (using cqlsh for instance).
+- If you're reducing the replication factor, run ``nodetool cleanup`` on the cluster to remove surplus replicated data.
+  Cleanup runs on a per-node basis.
+- If you're increasing the replication factor, run ``nodetool repair -full`` to ensure data is replicated according to the new
+  configuration. Repair runs on a per-replica set basis. This is an intensive process that may result in adverse cluster
+  performance. It's highly recommended to do rolling repairs, as an attempt to repair the entire cluster at once will
+  most likely swamp it. Note that you will need to run a full repair (``-full``) to make sure that already repaired
+  sstables are not skipped.
+
+.. _can-large-blob:
+
+Can I Store (large) BLOBs in Cassandra?
+---------------------------------------
+
+Cassandra isn't optimized for large file or BLOB storage and a single ``blob`` value is always read and send to the
+client entirely. As such, storing small blobs (less than single digit MB) should not be a problem, but it is advised to
+manually split large blobs into smaller chunks.
+
+Please note in particular that by default, any value greater than 16MB will be rejected by Cassandra due the
+``max_mutation_size_in_kb`` configuration of the :ref:`cassandra-yaml` file (which default to half of
+``commitlog_segment_size_in_mb``, which itself default to 32MB).
+
+.. _nodetool-connection-refused:
+
+Nodetool says "Connection refused to host: 127.0.1.1" for any remote host. What gives?
+--------------------------------------------------------------------------------------
+
+Nodetool relies on JMX, which in turn relies on RMI, which in turn sets up its own listeners and connectors as needed on
+each end of the exchange. Normally all of this happens behind the scenes transparently, but incorrect name resolution
+for either the host connecting, or the one being connected to, can result in crossed wires and confusing exceptions.
+
+If you are not using DNS, then make sure that your ``/etc/hosts`` files are accurate on both ends. If that fails, try
+setting the ``-Djava.rmi.server.hostname=<public name>`` JVM option near the bottom of ``cassandra-env.sh`` to an
+interface that you can reach from the remote machine.
+
+.. _to-batch-or-not-to-batch:
+
+Will batching my operations speed up my bulk load?
+--------------------------------------------------
+
+No. Using batches to load data will generally just add "spikes" of latency. Use asynchronous INSERTs instead, or use
+true :ref:`bulk-loading`.
+
+An exception is batching updates to a single partition, which can be a Good Thing (as long as the size of a single batch
+stay reasonable). But never ever blindly batch everything!
+
+.. _selinux:
+
+On RHEL nodes are unable to join the ring
+-----------------------------------------
+
+Check if `SELinux <https://en.wikipedia.org/wiki/Security-Enhanced_Linux>`__ is on; if it is, turn it off.
+
+.. _how-to-unsubscribe:
+
+How do I unsubscribe from the email list?
+-----------------------------------------
+
+Send an email to ``user-unsubscribe@cassandra.apache.org``.
+
+.. _cassandra-eats-all-my-memory:
+
+Why does top report that Cassandra is using a lot more memory than the Java heap max?
+-------------------------------------------------------------------------------------
+
+Cassandra uses `Memory Mapped Files <https://en.wikipedia.org/wiki/Memory-mapped_file>`__ (mmap) internally. That is, we
+use the operating system's virtual memory system to map a number of on-disk files into the Cassandra process' address
+space. This will "use" virtual memory; i.e. address space, and will be reported by tools like top accordingly, but on 64
+bit systems virtual address space is effectively unlimited so you should not worry about that.
+
+What matters from the perspective of "memory use" in the sense as it is normally meant, is the amount of data allocated
+on brk() or mmap'd /dev/zero, which represent real memory used. The key issue is that for a mmap'd file, there is never
+a need to retain the data resident in physical memory. Thus, whatever you do keep resident in physical memory is
+essentially just there as a cache, in the same way as normal I/O will cause the kernel page cache to retain data that
+you read/write.
+
+The difference between normal I/O and mmap() is that in the mmap() case the memory is actually mapped to the process,
+thus affecting the virtual size as reported by top. The main argument for using mmap() instead of standard I/O is the
+fact that reading entails just touching memory - in the case of the memory being resident, you just read it - you don't
+even take a page fault (so no overhead in entering the kernel and doing a semi-context switch). This is covered in more
+detail `here <http://www.varnish-cache.org/trac/wiki/ArchitectNotes>`__.
+
+.. _what-are-seeds:
+
+What are seeds?
+---------------
+
+Seeds are used during startup to discover the cluster.
+
+If you configure your nodes to refer some node as seed, nodes in your ring tend to send Gossip message to seeds more
+often (also see the :ref:`section on gossip <gossip>`) than to non-seeds. In other words, seeds are worked as hubs of
+Gossip network. With seeds, each node can detect status changes of other nodes quickly.
+
+Seeds are also referred by new nodes on bootstrap to learn other nodes in ring. When you add a new node to ring, you
+need to specify at least one live seed to contact. Once a node join the ring, it learns about the other nodes, so it
+doesn't need seed on subsequent boot.
+
+You can make a seed a node at any time. There is nothing special about seed nodes. If you list the node in seed list it
+is a seed
+
+Seeds do not auto bootstrap (i.e. if a node has itself in its seed list it will not automatically transfer data to itself)
+If you want a node to do that, bootstrap it first and then add it to seeds later. If you have no data (new install) you
+do not have to worry about bootstrap at all.
+
+Recommended usage of seeds:
+
+- pick two (or more) nodes per data center as seed nodes.
+- sync the seed list to all your nodes
+
+.. _are-seeds-SPOF:
+
+Does single seed mean single point of failure?
+----------------------------------------------
+
+The ring can operate or boot without a seed; however, you will not be able to add new nodes to the cluster. It is
+recommended to configure multiple seeds in production system.
+
+.. _cant-call-jmx-method:
+
+Why can't I call jmx method X on jconsole?
+------------------------------------------
+
+Some of JMX operations use array argument and as jconsole doesn't support array argument, those operations can't be
+called with jconsole (the buttons are inactive for them). You need to write a JMX client to call such operations or need
+array-capable JMX monitoring tool.
+
+.. _why-message-dropped:
+
+Why do I see "... messages dropped ..." in the logs?
+----------------------------------------------------
+
+This is a symptom of load shedding -- Cassandra defending itself against more requests than it can handle.
+
+Internode messages which are received by a node, but do not get not to be processed within their proper timeout (see
+``read_request_timeout``, ``write_request_timeout``, ... in the :ref:`cassandra-yaml`), are dropped rather than
+processed (since the as the coordinator node will no longer be waiting for a response).
+
+For writes, this means that the mutation was not applied to all replicas it was sent to. The inconsistency will be
+repaired by read repair, hints or a manual repair. The write operation may also have timeouted as a result.
+
+For reads, this means a read request may not have completed.
+
+Load shedding is part of the Cassandra architecture, if this is a persistent issue it is generally a sign of an
+overloaded node or cluster.
+
+.. _oom-map-failed:
+
+Cassandra dies with ``java.lang.OutOfMemoryError: Map failed``
+--------------------------------------------------------------
+
+If Cassandra is dying **specifically** with the "Map failed" message, it means the OS is denying java the ability to
+lock more memory. In linux, this typically means memlock is limited. Check ``/proc/<pid of cassandra>/limits`` to verify
+this and raise it (eg, via ulimit in bash). You may also need to increase ``vm.max_map_count.`` Note that the debian
+package handles this for you automatically.
+
+
+.. _what-on-same-timestamp-update:
+
+What happens if two updates are made with the same timestamp?
+-------------------------------------------------------------
+
+Updates must be commutative, since they may arrive in different orders on different replicas. As long as Cassandra has a
+deterministic way to pick the winner (in a timestamp tie), the one selected is as valid as any other, and the specifics
+should be treated as an implementation detail. That said, in the case of a timestamp tie, Cassandra follows two rules:
+first, deletes take precedence over inserts/updates. Second, if there are two updates, the one with the lexically larger
+value is selected.
+
+.. _why-bootstrapping-stream-error:
+
+Why bootstrapping a new node fails with a "Stream failed" error?
+----------------------------------------------------------------
+
+Two main possibilities:
+
+#. the GC may be creating long pauses disrupting the streaming process
+#. compactions happening in the background hold streaming long enough that the TCP connection fails
+
+In the first case, regular GC tuning advices apply. In the second case, you need to set TCP keepalive to a lower value
+(default is very high on Linux). Try to just run the following::
+
+    $ sudo /sbin/sysctl -w net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_intvl=60 net.ipv4.tcp_keepalive_probes=5
+
+To make those settings permanent, add them to your ``/etc/sysctl.conf`` file.
+
+Note: `GCE <https://cloud.google.com/compute/>`__'s firewall will always interrupt TCP connections that are inactive for
+more than 10 min. Running the above command is highly recommended in that environment.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/getting_started/configuring.rst.txt b/src/doc/4.0-rc1/_sources/getting_started/configuring.rst.txt
new file mode 100644
index 0000000..adb86fa
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/getting_started/configuring.rst.txt
@@ -0,0 +1,80 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Configuring Cassandra
+---------------------
+
+The :term:`Cassandra` configuration files location varies, depending on the type of installation:
+
+- tarball: ``conf`` directory within the tarball install location
+- package: ``/etc/cassandra`` directory
+
+Cassandra's default configuration file, ``cassandra.yaml``, is sufficient to explore a simple single-node :term:`cluster`.
+However, anything beyond running a single-node cluster locally requires additional configuration to various Cassandra configuration files.
+Some examples that require non-default configuration are deploying a multi-node cluster or using clients that are not running on a cluster node.
+
+- ``cassandra.yaml``: the main configuration file for Cassandra
+- ``cassandra-env.sh``:  environment variables can be set
+- ``cassandra-rackdc.properties`` OR ``cassandra-topology.properties``: set rack and datacenter information for a cluster
+- ``logback.xml``: logging configuration including logging levels
+- ``jvm-*``: a number of JVM configuration files for both the server and clients
+- ``commitlog_archiving.properties``: set archiving parameters for the :term:`commitlog`
+
+Two sample configuration files can also be found in ``./conf``:
+
+- ``metrics-reporter-config-sample.yaml``: configuring what the metrics-report will collect
+- ``cqlshrc.sample``: how the CQL shell, cqlsh, can be configured
+
+Main runtime properties
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Configuring Cassandra is done by setting yaml properties in the ``cassandra.yaml`` file. At a minimum you
+should consider setting the following properties:
+
+- ``cluster_name``: Set the name of your cluster.
+- ``seeds``: A comma separated list of the IP addresses of your cluster :term:`seed nodes`.
+- ``storage_port``: Check that you don't have the default port of 7000 blocked by a firewall.
+- ``listen_address``: The :term:`listen address` is the IP address of a node that allows it to communicate with other nodes in the cluster. Set to `localhost` by default. Alternatively, you can set ``listen_interface`` to tell Cassandra which interface to use, and consecutively which address to use. Set one property, not both.
+- ``native_transport_port``: Check that you don't have the default port of 9042 blocked by a firewall, so that clients like cqlsh can communicate with Cassandra on this port.
+
+Changing the location of directories
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The following yaml properties control the location of directories:
+
+- ``data_file_directories``: One or more directories where data files, like :term:`SSTables` are located.
+- ``commitlog_directory``: The directory where commitlog files are located.
+- ``saved_caches_directory``: The directory where saved caches are located.
+- ``hints_directory``: The directory where :term:`hints` are located.
+
+For performance reasons, if you have multiple disks, consider putting commitlog and data files on different disks.
+
+Environment variables
+^^^^^^^^^^^^^^^^^^^^^
+
+JVM-level settings such as heap size can be set in ``cassandra-env.sh``.  You can add any additional JVM command line
+argument to the ``JVM_OPTS`` environment variable; when Cassandra starts, these arguments will be passed to the JVM.
+
+Logging
+^^^^^^^
+
+The default logger is `logback`. By default it will log:
+
+- **INFO** level in ``system.log`` 
+- **DEBUG** level in ``debug.log``
+
+When running in the foreground, it will also log at INFO level to the console. You can change logging properties by editing ``logback.xml`` or by running the `nodetool setlogginglevel` command.
+
diff --git a/src/doc/4.0-rc1/_sources/getting_started/drivers.rst.txt b/src/doc/4.0-rc1/_sources/getting_started/drivers.rst.txt
new file mode 100644
index 0000000..9a2c156
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/getting_started/drivers.rst.txt
@@ -0,0 +1,123 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. _client-drivers:
+
+Client drivers
+--------------
+
+Here are known Cassandra client drivers organized by language. Before choosing a driver, you should verify the Cassandra
+version and functionality supported by a specific driver.
+
+Java
+^^^^
+
+- `Achilles <http://achilles.archinnov.info/>`__
+- `Astyanax <https://github.com/Netflix/astyanax/wiki/Getting-Started>`__
+- `Casser <https://github.com/noorq/casser>`__
+- `Datastax Java driver <https://github.com/datastax/java-driver>`__
+- `Kundera <https://github.com/impetus-opensource/Kundera>`__
+- `PlayORM <https://github.com/deanhiller/playorm>`__
+
+Python
+^^^^^^
+
+- `Datastax Python driver <https://github.com/datastax/python-driver>`__
+
+Ruby
+^^^^
+
+- `Datastax Ruby driver <https://github.com/datastax/ruby-driver>`__
+
+C# / .NET
+^^^^^^^^^
+
+- `Cassandra Sharp <https://github.com/pchalamet/cassandra-sharp>`__
+- `Datastax C# driver <https://github.com/datastax/csharp-driver>`__
+- `Fluent Cassandra <https://github.com/managedfusion/fluentcassandra>`__
+
+Nodejs
+^^^^^^
+
+- `Datastax Nodejs driver <https://github.com/datastax/nodejs-driver>`__
+- `Node-Cassandra-CQL <https://github.com/jorgebay/node-cassandra-cql>`__
+
+PHP
+^^^
+
+- `CQL \| PHP <http://code.google.com/a/apache-extras.org/p/cassandra-pdo>`__
+- `Datastax PHP driver <https://github.com/datastax/php-driver/>`__
+- `PHP-Cassandra <https://github.com/aparkhomenko/php-cassandra>`__
+- `PHP Library for Cassandra <http://evseevnn.github.io/php-cassandra-binary/>`__
+
+C++
+^^^
+
+- `Datastax C++ driver <https://github.com/datastax/cpp-driver>`__
+- `libQTCassandra <http://sourceforge.net/projects/libqtcassandra>`__
+
+Scala
+^^^^^
+
+- `Datastax Spark connector <https://github.com/datastax/spark-cassandra-connector>`__
+- `Phantom <https://github.com/newzly/phantom>`__
+- `Quill <https://github.com/getquill/quill>`__
+
+Clojure
+^^^^^^^
+
+- `Alia <https://github.com/mpenet/alia>`__
+- `Cassaforte <https://github.com/clojurewerkz/cassaforte>`__
+- `Hayt <https://github.com/mpenet/hayt>`__
+
+Erlang
+^^^^^^
+
+- `CQerl <https://github.com/matehat/cqerl>`__
+- `Erlcass <https://github.com/silviucpp/erlcass>`__
+
+Go
+^^
+
+- `CQLc <http://relops.com/cqlc/>`__
+- `Gocassa <https://github.com/hailocab/gocassa>`__
+- `GoCQL <https://github.com/gocql/gocql>`__
+
+Haskell
+^^^^^^^
+
+- `Cassy <https://github.com/ozataman/cassy>`__
+
+Rust
+^^^^
+
+- `Rust CQL <https://github.com/neich/rust-cql>`__
+
+Perl
+^^^^
+
+- `Cassandra::Client and DBD::Cassandra <https://github.com/tvdw/perl-dbd-cassandra>`__
+
+Elixir
+^^^^^^
+
+- `Xandra <https://github.com/lexhide/xandra>`__
+- `CQEx <https://github.com/matehat/cqex>`__
+
+Dart
+^^^^
+
+- `dart_cassandra_cql <https://github.com/achilleasa/dart_cassandra_cql>`__
diff --git a/src/doc/4.0-rc1/_sources/getting_started/index.rst.txt b/src/doc/4.0-rc1/_sources/getting_started/index.rst.txt
new file mode 100644
index 0000000..a699aee
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/getting_started/index.rst.txt
@@ -0,0 +1,34 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Getting Started
+===============
+
+This section covers how to get started using Apache Cassandra and should be the first thing to read if you are new to
+Cassandra.
+
+.. toctree::
+   :maxdepth: 2
+
+   installing
+   configuring
+   querying
+   drivers
+   production
+
+
diff --git a/src/doc/4.0-rc1/_sources/getting_started/installing.rst.txt b/src/doc/4.0-rc1/_sources/getting_started/installing.rst.txt
new file mode 100644
index 0000000..568549f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/getting_started/installing.rst.txt
@@ -0,0 +1,324 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Installing Cassandra
+--------------------
+
+These are the instructions for deploying the supported releases of Apache Cassandra on Linux servers.
+
+Cassandra runs on a wide array of Linux distributions including (but not limited to):
+
+- Ubuntu, most notably LTS releases 16.04 to 18.04
+- CentOS & RedHat Enterprise Linux (RHEL) including 6.6 to 7.7
+- Amazon Linux AMIs including 2016.09 through to Linux 2
+- Debian versions 8 & 9
+- SUSE Enterprise Linux 12
+
+This is not an exhaustive list of operating system platforms, nor is it prescriptive. However users will be
+well-advised to conduct exhaustive tests of their own particularly for less-popular distributions of Linux.
+Deploying on older versions is not recommended unless you have previous experience with the older distribution
+in a production environment.
+
+Prerequisites
+^^^^^^^^^^^^^
+
+- Install the latest version of Java 8, either the `Oracle Java Standard Edition 8
+  <http://www.oracle.com/technetwork/java/javase/downloads/index.html>`__ or `OpenJDK 8 <http://openjdk.java.net/>`__. To
+  verify that you have the correct version of java installed, type ``java -version``.
+- **NOTE**: *Experimental* support for Java 11 was added in Cassandra 4.0 (`CASSANDRA-9608 <https://issues.apache.org/jira/browse/CASSANDRA-9608>`__).
+  Running Cassandra on Java 11 is *experimental*. Do so at your own risk. For more information, see
+  `NEWS.txt <https://github.com/apache/cassandra/blob/trunk/NEWS.txt>`__.
+- For using cqlsh, the latest version of `Python 3.6+ <https://www.python.org/downloads/>`__ or Python 2.7 (support deprecated). To verify that you have
+  the correct version of Python installed, type ``python --version``.
+
+Choosing an installation method
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+For most users, installing the binary tarball is the simplest choice. The tarball unpacks all its contents
+into a single location with binaries and configuration files located in their own subdirectories. The most
+obvious attribute of the tarball installation is it does not require ``root`` permissions and can be
+installed on any Linux distribution.
+
+Packaged installations require ``root`` permissions. Install the RPM build on CentOS and RHEL-based
+distributions if you want to install Cassandra using YUM. Install the Debian build on Ubuntu and other
+Debian-based distributions if you want to install Cassandra using APT. Note that both the YUM and APT
+methods required ``root`` permissions and will install the binaries and configuration files as the
+``cassandra`` OS user.
+
+Installing the binary tarball
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+1. Verify the version of Java installed. For example:
+
+::
+
+   $ java -version
+   openjdk version "1.8.0_222"
+   OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~16.04.1-b10)
+   OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
+
+2. Download the binary tarball from one of the mirrors on the `Apache Cassandra Download <http://cassandra.apache.org/download/>`__
+   site. For example, to download 4.0:
+
+::
+
+   $ curl -OL http://apache.mirror.digitalpacific.com.au/cassandra/4.0-beta1/apache-cassandra-4.0-beta1-bin.tar.gz
+
+NOTE: The mirrors only host the latest versions of each major supported release. To download an earlier
+version of Cassandra, visit the `Apache Archives <http://archive.apache.org/dist/cassandra/>`__.
+
+3. OPTIONAL: Verify the integrity of the downloaded tarball using one of the methods `here <https://www.apache.org/dyn/closer.cgi#verify>`__.
+   For example, to verify the hash of the downloaded file using GPG:
+
+::
+
+   $ gpg --print-md SHA256 apache-cassandra-4.0-beta1-bin.tar.gz
+   apache-cassandra-4.0-beta1-bin.tar.gz: 28757DDE 589F7041 0F9A6A95 C39EE7E6
+                                      CDE63440 E2B06B91 AE6B2006 14FA364D
+
+Compare the signature with the SHA256 file from the Downloads site:
+
+::
+
+   $ curl -L https://downloads.apache.org/cassandra/4.0-beta1/apache-cassandra-4.0-beta1-bin.tar.gz.sha256
+   28757dde589f70410f9a6a95c39ee7e6cde63440e2b06b91ae6b200614fa364d
+
+4. Unpack the tarball:
+
+::
+
+   $ tar xzvf apache-cassandra-4.0-beta1-bin.tar.gz
+
+The files will be extracted to the ``apache-cassandra-4.0-beta1/`` directory. This is the tarball installation
+location.
+
+5. Located in the tarball installation location are the directories for the scripts, binaries, utilities, configuration, data and log files:
+
+::
+
+   <tarball_installation>/
+       bin/
+       conf/
+       data/
+       doc/
+       interface/
+       javadoc/
+       lib/
+       logs/
+       pylib/
+       tools/
+       
+For information on how to configure your installation, see
+`Configuring Cassandra <http://cassandra.apache.org/doc/latest/getting_started/configuring.html>`__.
+
+6. Start Cassandra:
+
+::
+
+   $ cd apache-cassandra-4.0-beta1/
+   $ bin/cassandra
+
+NOTE: This will run Cassandra as the authenticated Linux user.
+
+You can monitor the progress of the startup with:
+
+::
+
+   $ tail -f logs/system.log
+
+Cassandra is ready when you see an entry like this in the ``system.log``:
+
+::
+
+   INFO  [main] 2019-12-17 03:03:37,526 Server.java:156 - Starting listening for CQL clients on localhost/127.0.0.1:9042 (unencrypted)...
+
+7. Check the status of Cassandra:
+
+::
+
+   $ bin/nodetool status
+
+The status column in the output should report UN which stands for "Up/Normal".
+
+Alternatively, connect to the database with:
+
+::
+
+   $ bin/cqlsh
+
+Installing the Debian packages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+1. Verify the version of Java installed. For example:
+
+::
+
+   $ java -version
+   openjdk version "1.8.0_222"
+   OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~16.04.1-b10)
+   OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
+
+2. Add the Apache repository of Cassandra to the file ``cassandra.sources.list``. The latest major version
+   is 4.0 and the corresponding distribution name is ``40x`` (with an "x" as the suffix).
+   For older releases use ``311x`` for C* 3.11 series, ``30x`` for 3.0, ``22x`` for 2.2 and ``21x`` for 2.1.
+   For example, to add the repository for version 4.0 (``40x``):
+
+::
+
+   $ echo "deb http://downloads.apache.org/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
+   deb http://downloads.apache.org/cassandra/debian 40x main
+
+3. Add the Apache Cassandra repository keys to the list of trusted keys on the server:
+
+::
+
+   $ curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
+     % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
+                                    Dload  Upload   Total   Spent    Left  Speed
+   100  266k  100  266k    0     0   320k      0 --:--:-- --:--:-- --:--:--  320k
+   OK
+
+4. Update the package index from sources:
+
+::
+
+   $ sudo apt-get update
+
+5. Install Cassandra with APT:
+
+::
+
+   $ sudo apt-get install cassandra
+
+
+NOTE: A new Linux user ``cassandra`` will get created as part of the installation. The Cassandra service
+will also be run as this user.
+
+6. The Cassandra service gets started automatically after installation. Monitor the progress of
+   the startup with:
+
+::
+
+   $ tail -f /var/log/cassandra/system.log
+
+Cassandra is ready when you see an entry like this in the ``system.log``:
+
+::
+
+   INFO  [main] 2019-12-17 03:03:37,526 Server.java:156 - Starting listening for CQL clients on localhost/127.0.0.1:9042 (unencrypted)...
+
+NOTE: For information on how to configure your installation, see
+`Configuring Cassandra <http://cassandra.apache.org/doc/latest/getting_started/configuring.html>`__.
+
+7. Check the status of Cassandra:
+
+::
+
+   $ nodetool status
+
+The status column in the output should report ``UN`` which stands for "Up/Normal".
+
+Alternatively, connect to the database with:
+
+::
+
+   $ cqlsh
+   
+Installing the RPM packages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+1. Verify the version of Java installed. For example:
+
+::
+
+   $ java -version
+   openjdk version "1.8.0_222"
+   OpenJDK Runtime Environment (build 1.8.0_232-b09)
+   OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
+
+2. Add the Apache repository of Cassandra to the file ``/etc/yum.repos.d/cassandra.repo`` (as the ``root``
+   user). The latest major version is 4.0 and the corresponding distribution name is ``40x`` (with an "x" as the suffix).
+   For older releases use ``311x`` for C* 3.11 series, ``30x`` for 3.0, ``22x`` for 2.2 and ``21x`` for 2.1.
+   For example, to add the repository for version 4.0 (``40x``):
+
+::
+
+   [cassandra]
+   name=Apache Cassandra
+   baseurl=https://downloads.apache.org/cassandra/redhat/40x/
+   gpgcheck=1
+   repo_gpgcheck=1
+   gpgkey=https://downloads.apache.org/cassandra/KEYS
+
+3. Update the package index from sources:
+
+::
+
+   $ sudo yum update
+
+4. Install Cassandra with YUM:
+
+::
+
+   $ sudo yum install cassandra
+
+
+NOTE: A new Linux user ``cassandra`` will get created as part of the installation. The Cassandra service
+will also be run as this user.
+
+5. Start the Cassandra service:
+
+::
+
+   $ sudo service cassandra start
+
+6. Monitor the progress of the startup with:
+
+::
+
+   $ tail -f /var/log/cassandra/system.log
+
+Cassandra is ready when you see an entry like this in the ``system.log``:
+
+::
+
+   INFO  [main] 2019-12-17 03:03:37,526 Server.java:156 - Starting listening for CQL clients on localhost/127.0.0.1:9042 (unencrypted)...
+
+NOTE: For information on how to configure your installation, see
+`Configuring Cassandra <http://cassandra.apache.org/doc/latest/getting_started/configuring.html>`__.
+
+7. Check the status of Cassandra:
+
+::
+
+   $ nodetool status
+
+The status column in the output should report ``UN`` which stands for "Up/Normal".
+
+Alternatively, connect to the database with:
+
+::
+
+   $ cqlsh
+
+Further installation info
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+For help with installation issues, see the `Troubleshooting <http://cassandra.apache.org/doc/latest/troubleshooting/index.html>`__ section.
+
+
diff --git a/src/doc/4.0-rc1/_sources/getting_started/production.rst.txt b/src/doc/4.0-rc1/_sources/getting_started/production.rst.txt
new file mode 100644
index 0000000..fe0c4a5
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/getting_started/production.rst.txt
@@ -0,0 +1,156 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Production Recommendations
+----------------------------
+
+The ``cassandra.yaml`` and ``jvm.options`` files have a number of notes and recommendations for production usage.  This page
+expands on some of the notes in these files with additional information.
+
+Tokens
+^^^^^^^
+
+Using more than 1 token (referred to as vnodes) allows for more flexible expansion and more streaming peers when
+bootstrapping new nodes into the cluster.  This can limit the negative impact of streaming (I/O and CPU overhead)
+as well as allow for incremental cluster expansion.
+
+As a tradeoff, more tokens will lead to sharing data with more peers, which can result in decreased availability.  To learn more about this we
+recommend reading `this paper <https://github.com/jolynch/python_performance_toolkit/raw/master/notebooks/cassandra_availability/whitepaper/cassandra-availability-virtual.pdf>`_.
+
+The number of tokens can be changed using the following setting:
+
+``num_tokens: 16``
+
+
+Here are the most common token counts with a brief explanation of when and why you would use each one.
+
++-------------+---------------------------------------------------------------------------------------------------+
+| Token Count | Description                                                                                       |
++=============+===================================================================================================+
+| 1           | Maximum availablility, maximum cluster size, fewest peers,                                        |
+|             | but inflexible expansion.  Must always                                                            |
+|             | double size of cluster to expand and remain balanced.                                             |
++-------------+---------------------------------------------------------------------------------------------------+
+| 4           | A healthy mix of elasticity and availability.  Recommended for clusters which will eventually     |
+|             | reach over 30 nodes.  Requires adding approximately 20% more nodes to remain balanced.            |
+|             | Shrinking a cluster may result in cluster imbalance.                                              |
++-------------+---------------------------------------------------------------------------------------------------+
+| 16          | Best for heavily elastic clusters which expand and shrink regularly, but may have issues          |
+|             | availability with larger clusters.  Not recommended for clusters over 50 nodes.                   |
++-------------+---------------------------------------------------------------------------------------------------+
+
+
+In addition to setting the token count, it's extremely important that ``allocate_tokens_for_local_replication_factor`` be
+set as well, to ensure even token allocation.
+
+.. _read-ahead:
+
+Read Ahead
+^^^^^^^^^^^
+
+Read ahead is an operating system feature that attempts to keep as much data loaded in the page cache as possible.  The
+goal is to decrease latency by using additional throughput on reads where the latency penalty is high due to seek times
+on spinning disks.  By leveraging read ahead, the OS can pull additional data into memory without the cost of additional
+seeks.  This works well when available RAM is greater than the size of the hot dataset, but can be problematic when the
+hot dataset is much larger than available RAM.  The benefit of read ahead decreases as the size of your hot dataset gets
+bigger in proportion to available memory.
+
+With small partitions (usually tables with no partition key, but not limited to this case) and solid state drives, read
+ahead can increase disk usage without any of the latency benefits, and in some cases can result in up to
+a 5x latency and throughput performance penalty.  Read heavy, key/value tables with small (under 1KB) rows are especially
+prone to this problem.
+
+We recommend the following read ahead settings:
+
++----------------+-------------------------+
+| Hardware       | Initial Recommendation  |
++================+=========================+
+|Spinning Disks  | 64KB                    |
++----------------+-------------------------+
+|SSD             | 4KB                     |
++----------------+-------------------------+
+
+Read ahead can be adjusted on Linux systems by using the `blockdev` tool.
+
+For example, we can set read ahead of ``/dev/sda1` to 4KB by doing the following::
+
+    blockdev --setra 8 /dev/sda1
+
+**Note**: blockdev accepts the number of 512 byte sectors to read ahead.  The argument of 8 above is equivilent to 4KB.
+
+Since each system is different, use the above recommendations as a starting point and tuning based on your SLA and
+throughput requirements.  To understand how read ahead impacts disk resource usage we recommend carefully reading through the
+:ref:`troubleshooting <use-os-tools>` portion of the documentation.
+
+
+Compression
+^^^^^^^^^^^^
+
+Compressed data is stored by compressing fixed size byte buffers and writing the data to disk.  The buffer size is
+determined by the  ``chunk_length_in_kb`` element in the compression map of the schema settings.
+
+The default setting is 16KB starting with Cassandra 4.0.
+
+Since the entire compressed buffer must be read off disk, using too high of a compression chunk length can lead to
+significant overhead when reading small records.  Combined with the default read ahead setting this can result in massive
+read amplification for certain workloads.
+
+LZ4Compressor is the default and recommended compression algorithm.
+
+There is additional information on this topic on `The Last Pickle Blog <https://thelastpickle.com/blog/2018/08/08/compression_performance.html>`_.
+
+Compaction
+^^^^^^^^^^^^
+
+There are different :ref:`compaction <compaction>` strategies available for different workloads.
+We recommend reading up on the different strategies to understand which is the best for your environment.  Different tables
+may (and frequently do) use different compaction strategies on the same cluster.
+
+Encryption
+^^^^^^^^^^^
+
+It is significantly easier to set up peer to peer encryption and client server encryption when setting up your production
+cluster as opposed to setting it up once the cluster is already serving production traffic.  If you are planning on using network encryption
+eventually (in any form), we recommend setting it up now.  Changing these configurations down the line is not impossible,
+but mistakes can result in downtime or data loss.
+
+Ensure Keyspaces are Created with NetworkTopologyStrategy
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Production clusters should never use SimpleStrategy.  Production keyspaces should use the NetworkTopologyStrategy (NTS).
+
+For example::
+
+    create KEYSPACE mykeyspace WITH replication =
+    {'class': 'NetworkTopologyStrategy', 'datacenter1': 3};
+
+NetworkTopologyStrategy allows Cassandra to take advantage of multiple racks and data centers.
+
+Configure Racks and Snitch
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+**Correctly configuring or changing racks after a cluster has been provisioned is an unsupported process**.  Migrating from
+a single rack to multiple racks is also unsupported and can result in data loss.
+
+Using ``GossipingPropertyFileSnitch`` is the most flexible solution for on premise or mixed cloud environments.  ``Ec2Snitch``
+is reliable for AWS EC2 only environments.
+
+
+
+
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/getting_started/querying.rst.txt b/src/doc/4.0-rc1/_sources/getting_started/querying.rst.txt
new file mode 100644
index 0000000..55b162b
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/getting_started/querying.rst.txt
@@ -0,0 +1,52 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Inserting and querying
+----------------------
+
+The API to Cassandra is :ref:`CQL <cql>`, the Cassandra Query Language. To use CQL, you will need to connect to the
+cluster, which can be done:
+
+- either using cqlsh,
+- or through a client driver for Cassandra.
+
+CQLSH
+^^^^^
+
+cqlsh is a command line shell for interacting with Cassandra through CQL. It is shipped with every Cassandra package,
+and can be found in the bin/ directory alongside the cassandra executable. It connects to the single node specified on
+the command line. For example::
+
+    $ bin/cqlsh localhost
+    Connected to Test Cluster at localhost:9042.
+    [cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
+    Use HELP for help.
+    cqlsh> SELECT cluster_name, listen_address FROM system.local;
+
+     cluster_name | listen_address
+    --------------+----------------
+     Test Cluster |      127.0.0.1
+
+    (1 rows)
+    cqlsh>
+
+See the :ref:`cqlsh section <cqlsh>` for full documentation.
+
+Client drivers
+^^^^^^^^^^^^^^
+
+A lot of client drivers are provided by the Community and a list of known drivers is provided in :ref:`the next section
+<client-drivers>`. You should refer to the documentation of each drivers for more information on how to use them.
diff --git a/src/doc/4.0-rc1/_sources/glossary.rst.txt b/src/doc/4.0-rc1/_sources/glossary.rst.txt
new file mode 100644
index 0000000..7f1d92f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/glossary.rst.txt
@@ -0,0 +1,35 @@
+.. glossary::
+
+Glossary
+========
+	Cassandra
+	   Apache Cassandra is a distributed, high-available, eventually consistent NoSQL open-source database.
+	
+	cluster
+	   Two or more database instances that exchange messages using the gossip protocol.
+
+	commitlog
+	   A file to which the database appends changed data for recovery in the event of a hardware failure.
+
+	datacenter
+	   A group of related nodes that are configured together within a cluster for replication and workload segregation purposes. 
+  	   Not necessarily a separate location or physical data center. Datacenter names are case-sensitive and cannot be changed.
+
+	gossip
+	   A peer-to-peer communication protocol for exchanging location and state information between nodes.
+	
+	hint
+	   One of the three ways, in addition to read-repair and full/incremental anti-entropy repair, that Cassandra implements the eventual consistency guarantee that all updates are eventually received by all replicas.
+
+	listen address
+	   Address or interface to bind to and tell other Cassandra nodes to connect to
+
+	seed node
+	   A seed node is used to bootstrap the gossip process for new nodes joining a cluster. To learn the topology of the ring, a joining node contacts one of the nodes in the -seeds list in cassandra. yaml. The first time you bring up a node in a new cluster, only one node is the seed node.
+
+	snitch
+	   The mapping from the IP addresses of nodes to physical and virtual locations, such as racks and data centers. There are several types of snitches. 
+	   The type of snitch affects the request routing mechanism.
+
+	SSTable
+	   An SSTable provides a persistent,ordered immutable map from keys to values, where both keys and values are arbitrary byte strings.
diff --git a/src/doc/4.0-rc1/_sources/index.rst.txt b/src/doc/4.0-rc1/_sources/index.rst.txt
new file mode 100644
index 0000000..302f8e7
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/index.rst.txt
@@ -0,0 +1,43 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Welcome to Apache Cassandra's documentation!
+============================================
+
+This is the official documentation for `Apache Cassandra <http://cassandra.apache.org>`__ |version|.  If you would like
+to contribute to this documentation, you are welcome to do so by submitting your contribution like any other patch
+following `these instructions <https://wiki.apache.org/cassandra/HowToContribute>`__.
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   getting_started/index
+   new/index
+   architecture/index
+   cql/index
+   data_modeling/index
+   configuration/index
+   operating/index
+   tools/index
+   troubleshooting/index
+   development/index
+   faq/index
+   plugins/index
+
+   bugs
+   contactus
diff --git a/src/doc/4.0-rc1/_sources/new/auditlogging.rst.txt b/src/doc/4.0-rc1/_sources/new/auditlogging.rst.txt
new file mode 100644
index 0000000..9938fdb
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/new/auditlogging.rst.txt
@@ -0,0 +1,461 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Audit Logging
+-------------
+
+Audit Logging is a new feature in Apache Cassandra 4.0 (`CASSANDRA-12151
+<https://issues.apache.org/jira/browse/CASSANDRA-12151>`_). All database activity is logged to a directory in the local filesystem and the audit log files are rolled periodically. All database operations are monitored and recorded.  Audit logs are stored in local directory files instead of the database itself as it provides several benefits, some of which are:
+
+- No additional database capacity is needed to store audit logs
+- No query tool is required while storing the audit logs in the database would require a query tool
+- Latency of database operations is not affected; no performance impact
+- It is easier to implement file based logging than database based logging
+
+What does Audit Logging Log?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Audit logging logs:
+
+1. All authentication which includes successful and failed login attempts
+2. All database command requests to CQL. Both failed and successful CQL is logged
+
+More specifically an audit log entry could be one of two types:
+
+a) CQL Audit Log Entry Type or
+b) Common Audit Log Entry Type
+
+Each of these types comprises of several database operations. The CQL Audit Log Entry Type could be one of the following; the category of the CQL audit log entry type is listed in parentheses.
+
+1. SELECT(QUERY),
+2. UPDATE(DML),
+3. DELETE(DML),
+4. TRUNCATE(DDL),
+5. CREATE_KEYSPACE(DDL),
+6. ALTER_KEYSPACE(DDL),
+7. DROP_KEYSPACE(DDL),
+8. CREATE_TABLE(DDL),
+9. DROP_TABLE(DDL),
+10. PREPARE_STATEMENT(PREPARE),
+11. DROP_TRIGGER(DDL),
+12. LIST_USERS(DCL),
+13. CREATE_INDEX(DDL),
+14. DROP_INDEX(DDL),
+15. GRANT(DCL),
+16. REVOKE(DCL),
+17. CREATE_TYPE(DDL),
+18. DROP_AGGREGATE(DDL),
+19. ALTER_VIEW(DDL),
+20. CREATE_VIEW(DDL),
+21. DROP_ROLE(DCL),
+22. CREATE_FUNCTION(DDL),
+23. ALTER_TABLE(DDL),
+24. BATCH(DML),
+25. CREATE_AGGREGATE(DDL),
+26. DROP_VIEW(DDL),
+27. DROP_TYPE(DDL),
+28. DROP_FUNCTION(DDL),
+29. ALTER_ROLE(DCL),
+30. CREATE_TRIGGER(DDL),
+31. LIST_ROLES(DCL),
+32. LIST_PERMISSIONS(DCL),
+33. ALTER_TYPE(DDL),
+34. CREATE_ROLE(DCL),
+35. USE_KEYSPACE (OTHER).
+
+The Common Audit Log Entry Type could be one of the following; the category of the Common audit log entry type is listed in parentheses.
+
+1. REQUEST_FAILURE(ERROR),
+2. LOGIN_ERROR(AUTH),
+3. UNAUTHORIZED_ATTEMPT(AUTH),
+4. LOGIN_SUCCESS (AUTH).
+
+What Audit Logging does not Log?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Audit logging does not log:
+
+1. Configuration changes made in ``cassandra.yaml``
+2. Nodetool Commands
+
+Audit Logging is Flexible and Configurable
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Audit logging is flexible and configurable in ``cassandra.yaml`` as follows:
+
+- Keyspaces and tables to be monitored and audited may be specified.
+- Users to be included/excluded may be specified. By default all users are audit logged.
+- Categories of operations to audit or exclude may be specified.
+- The frequency at which to roll the log files may be specified. Default frequency is hourly.
+
+Configuring Audit Logging
+^^^^^^^^^^^^^^^^^^^^^^^^^
+Audit Logging is configured on each node separately. Audit Logging is configured in ``cassandra.yaml`` in the ``audit_logging_options`` setting.
+The settings may be same/different on each node.
+
+Enabling Audit Logging
+**********************
+Audit logging is enabled by setting the ``enabled``  option to ``true`` in the ``audit_logging_options`` setting.
+
+::
+
+ audit_logging_options:
+    enabled: true
+
+Setting the Logger
+******************
+The audit logger is set with the ``logger`` option.
+
+::
+
+ logger:
+ - class_name: BinAuditLogger
+
+Two types of audit loggers are supported: ``FileAuditLogger`` and ``BinAuditLogger``.
+``BinAuditLogger`` is the default setting.  The ``BinAuditLogger`` is an efficient way to log events to file in a binary format.
+
+``FileAuditLogger`` is synchronous, file-based audit logger; just uses the standard logging mechanism. ``FileAuditLogger`` logs events to ``audit/audit.log`` file using ``slf4j`` logger.
+
+The ``NoOpAuditLogger`` is a No-Op implementation of the audit logger to be used as a default audit logger when audit logging is disabled.
+
+It is possible to configure your custom logger implementation by injecting a map of property keys and their respective values. Default `IAuditLogger`
+implementations shipped with Cassandra do not react on these properties but your custom logger might. They would be present as
+a parameter of logger constructor (as `Map<String, String>`). In ``cassandra.yaml`` file, you may configure it like this:
+
+::
+
+ logger:
+ - class_name: MyCustomAuditLogger
+   parameters:
+   - key1: value1
+     key2: value2
+
+When it comes to configuring these parameters, you can use respective ``enableAuditLog`` method in ``StorageServiceMBean``.
+There are two methods of same name with different signatures. The first one does not accept a map where your parameters would be. This method
+is used primarily e.g. from JConsole or similar tooling. JConsole can not accept a map to be sent over JMX so in order to be able to enable it
+from there, even without any parameters, use this method. ``BinAuditLogger`` does not need any parameters to run with so invoking this method is fine.
+The second one does accept a map with your custom parameters so you can pass them programmatically. ``enableauditlog`` command of ``nodetool`` uses
+the first ``enableAuditLog`` method mentioned. Hence, currently, there is not a way how to pass parameters to your custom audit logger from ``nodetool``.
+
+Setting the Audit Logs Directory
+********************************
+The audit logs directory is set with the ``audit_logs_dir`` option. A new directory is not created automatically and an existing directory must be set. Audit Logs directory can be configured using ``cassandra.logdir.audit`` system property or default is set to ``cassandra.logdir + /audit/``. A user created directory may be set. As an example, create a directory for the audit logs and set its permissions.
+
+::
+
+ sudo mkdir –p  /cassandra/audit/logs/hourly
+ sudo chmod -R 777 /cassandra/audit/logs/hourly
+
+Set the directory for the audit logs directory using the ``audit_logs_dir`` option.
+
+::
+
+ audit_logs_dir: "/cassandra/audit/logs/hourly"
+
+
+Setting Keyspaces to Audit
+**************************
+Set  the keyspaces to include with the ``included_keyspaces`` option and the keyspaces to exclude with the ``excluded_keyspaces`` option.  By default all keyspaces are included. By default, ``system``, ``system_schema`` and ``system_virtual_schema`` are excluded.
+
+::
+
+ # included_keyspaces:
+ # excluded_keyspaces: system, system_schema, system_virtual_schema
+
+Setting Categories to Audit
+***************************
+
+The categories of database operations to be included are specified with the ``included_categories``  option as a comma separated list.  By default all supported categories are included. The categories of database operations to be excluded are specified with ``excluded_categories``  option as a comma separated list.  By default no category is excluded.
+
+::
+
+ # included_categories:
+ # excluded_categories:
+
+The supported categories for audit log are:
+
+1. QUERY
+2. DML
+3. DDL
+4. DCL
+5. OTHER
+6. AUTH
+7. ERROR
+8. PREPARE
+
+Setting Users to Audit
+**********************
+
+Users to audit log are set with the ``included_users`` and  ``excluded_users``  options.  The ``included_users`` option specifies a comma separated list of users to include explicitly and by default all users are included. The ``excluded_users`` option specifies a comma separated list of  users to exclude explicitly and by default no user is excluded.
+
+::
+
+    # included_users:
+    # excluded_users:
+
+Setting the Roll Frequency
+***************************
+The ``roll_cycle`` option sets the frequency at which the audit log file is rolled. Supported values are ``MINUTELY``, ``HOURLY``, and ``DAILY``. Default value is ``HOURLY``, which implies that after every hour a new audit log file is created.
+
+::
+
+ roll_cycle: HOURLY
+
+An audit log file could get rolled for other reasons as well such as a log file reaches the configured size threshold.
+
+Setting Archiving Options
+*************************
+
+The archiving options are for archiving the rolled audit logs. The ``archive`` command to use is set with the ``archive_command`` option and the ``max_archive_retries`` sets the maximum # of tries of failed archive commands.
+
+::
+
+  # archive_command:
+  # max_archive_retries: 10
+
+Default archive command is ``"/path/to/script.sh %path"`` where ``%path`` is replaced with the file being rolled:
+
+Other Settings
+***************
+
+The other audit logs settings are as follows.
+
+::
+
+ # block: true
+ # max_queue_weight: 268435456 # 256 MiB
+ # max_log_size: 17179869184 # 16 GiB
+
+The ``block`` option specifies whether the audit logging should block if the logging falls behind or should drop log records.
+
+The ``max_queue_weight`` option sets the maximum weight of in memory queue for records waiting to be written to the file before blocking or dropping.
+
+The  ``max_log_size`` option sets the maximum size of the rolled files to retain on disk before deleting the oldest.
+
+Using Nodetool to Enable Audit Logging
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The ``nodetool  enableauditlog``  command may be used to enable audit logs and it overrides the settings in ``cassandra.yaml``.  The ``nodetool enableauditlog`` command syntax is as follows.
+
+::
+
+        nodetool [(-h <host> | --host <host>)] [(-p <port> | --port <port>)]
+                [(-pp | --print-port)] [(-pw <password> | --password <password>)]
+                [(-pwf <passwordFilePath> | --password-file <passwordFilePath>)]
+                [(-u <username> | --username <username>)] enableauditlog
+                [--excluded-categories <excluded_categories>]
+                [--excluded-keyspaces <excluded_keyspaces>]
+                [--excluded-users <excluded_users>]
+                [--included-categories <included_categories>]
+                [--included-keyspaces <included_keyspaces>]
+                [--included-users <included_users>] [--logger <logger>]
+
+OPTIONS
+        --excluded-categories <excluded_categories>
+            Comma separated list of Audit Log Categories to be excluded for
+            audit log. If not set the value from cassandra.yaml will be used
+
+        --excluded-keyspaces <excluded_keyspaces>
+            Comma separated list of keyspaces to be excluded for audit log. If
+            not set the value from cassandra.yaml will be used
+
+        --excluded-users <excluded_users>
+            Comma separated list of users to be excluded for audit log. If not
+            set the value from cassandra.yaml will be used
+
+        -h <host>, --host <host>
+            Node hostname or ip address
+
+        --included-categories <included_categories>
+            Comma separated list of Audit Log Categories to be included for
+            audit log. If not set the value from cassandra.yaml will be used
+
+        --included-keyspaces <included_keyspaces>
+            Comma separated list of keyspaces to be included for audit log. If
+            not set the value from cassandra.yaml will be used
+
+        --included-users <included_users>
+            Comma separated list of users to be included for audit log. If not
+            set the value from cassandra.yaml will be used
+
+        --logger <logger>
+            Logger name to be used for AuditLogging. Default BinAuditLogger. If
+            not set the value from cassandra.yaml will be used
+
+        -p <port>, --port <port>
+            Remote jmx agent port number
+
+        -pp, --print-port
+            Operate in 4.0 mode with hosts disambiguated by port number
+
+        -pw <password>, --password <password>
+            Remote jmx agent password
+
+        -pwf <passwordFilePath>, --password-file <passwordFilePath>
+            Path to the JMX password file
+
+        -u <username>, --username <username>
+            Remote jmx agent username
+
+
+The ``nodetool disableauditlog`` command disables audit log. The command syntax is as follows.
+
+::
+
+        nodetool [(-h <host> | --host <host>)] [(-p <port> | --port <port>)]
+                [(-pp | --print-port)] [(-pw <password> | --password <password>)]
+                [(-pwf <passwordFilePath> | --password-file <passwordFilePath>)]
+                [(-u <username> | --username <username>)] disableauditlog
+
+OPTIONS
+        -h <host>, --host <host>
+            Node hostname or ip address
+
+        -p <port>, --port <port>
+            Remote jmx agent port number
+
+        -pp, --print-port
+            Operate in 4.0 mode with hosts disambiguated by port number
+
+        -pw <password>, --password <password>
+            Remote jmx agent password
+
+        -pwf <passwordFilePath>, --password-file <passwordFilePath>
+            Path to the JMX password file
+
+        -u <username>, --username <username>
+            Remote jmx agent username
+
+Viewing the Audit Logs
+^^^^^^^^^^^^^^^^^^^^^^
+An audit log event comprises of a keyspace that is being audited, the operation that is being logged, the scope and the user. An audit log entry comprises of the following attributes concatenated with a "|".
+
+::
+
+ type (AuditLogEntryType): Type of request
+ source (InetAddressAndPort): Source IP Address from which request originated
+ user (String): User name
+ timestamp (long ): Timestamp of the request
+ batch (UUID): Batch of request
+ keyspace (String): Keyspace on which request is made
+ scope (String): Scope of request such as Table/Function/Aggregate name
+ operation (String): Database operation such as CQL command
+ options (QueryOptions): CQL Query options
+ state (QueryState): State related to a given query
+
+Some of these attributes may not be applicable to a given request and not all of these options must be set.
+
+An Audit Logging Demo
+^^^^^^^^^^^^^^^^^^^^^^
+To demonstrate audit logging enable and configure audit logs with following settings.
+
+::
+
+ audit_logging_options:
+    enabled: true
+    logger:
+    - class_name: BinAuditLogger
+    audit_logs_dir: "/cassandra/audit/logs/hourly"
+    # included_keyspaces:
+    # excluded_keyspaces: system, system_schema, system_virtual_schema
+    # included_categories:
+    # excluded_categories:
+    # included_users:
+    # excluded_users:
+    roll_cycle: HOURLY
+    # block: true
+    # max_queue_weight: 268435456 # 256 MiB
+    # max_log_size: 17179869184 # 16 GiB
+    ## archive command is "/path/to/script.sh %path" where %path is replaced with the file being rolled:
+    # archive_command:
+    # max_archive_retries: 10
+
+Create the audit log directory ``/cassandra/audit/logs/hourly`` and set its permissions as discussed earlier. Run some CQL commands such as create a keyspace, create a table and query a table. Any supported CQL commands may be run as discussed in section **What does Audit Logging Log?**.  Change directory (with ``cd`` command) to the audit logs directory.
+
+::
+
+ cd /cassandra/audit/logs/hourly
+
+List the files/directories and some ``.cq4`` files should get listed. These are the audit logs files.
+
+::
+
+ [ec2-user@ip-10-0-2-238 hourly]$ ls -l
+ total 28
+ -rw-rw-r--. 1 ec2-user ec2-user 83886080 Aug  2 03:01 20190802-02.cq4
+ -rw-rw-r--. 1 ec2-user ec2-user 83886080 Aug  2 03:01 20190802-03.cq4
+ -rw-rw-r--. 1 ec2-user ec2-user    65536 Aug  2 03:01 metadata.cq4t
+
+The ``auditlogviewer`` tool is used to dump audit logs. Run the ``auditlogviewer`` tool. Audit log files directory path is a required argument. The output should be similar to the following output.
+
+::
+
+ [ec2-user@ip-10-0-2-238 hourly]$ auditlogviewer /cassandra/audit/logs/hourly
+ WARN  03:12:11,124 Using Pauser.sleepy() as not enough processors, have 2, needs 8+
+ Type: AuditLog
+ LogMessage:
+ user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564711427328|type :USE_KEYSPACE|category:OTHER|ks:auditlogkeyspace|operation:USE AuditLogKeyspace;
+ Type: AuditLog
+ LogMessage:
+ user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564711427329|type :USE_KEYSPACE|category:OTHER|ks:auditlogkeyspace|operation:USE "auditlogkeyspace"
+ Type: AuditLog
+ LogMessage:
+ user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564711446279|type :SELECT|category:QUERY|ks:auditlogkeyspace|scope:t|operation:SELECT * FROM t;
+ Type: AuditLog
+ LogMessage:
+ user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564713878834|type :DROP_TABLE|category:DDL|ks:auditlogkeyspace|scope:t|operation:DROP TABLE IF EXISTS
+ AuditLogKeyspace.t;
+ Type: AuditLog
+ LogMessage:
+ user:anonymous|host:10.0.2.238:7000|source:/3.91.56.164|port:42382|timestamp:1564714618360|ty
+ pe:REQUEST_FAILURE|category:ERROR|operation:CREATE KEYSPACE AuditLogKeyspace
+ WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};; Cannot add
+ existing keyspace "auditlogkeyspace"
+ Type: AuditLog
+ LogMessage:
+ user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564714690968|type :DROP_KEYSPACE|category:DDL|ks:auditlogkeyspace|operation:DROP KEYSPACE AuditLogKeyspace;
+ Type: AuditLog
+ LogMessage:
+ user:anonymous|host:10.0.2.238:7000|source:/3.91.56.164|port:42406|timestamp:1564714708329|ty pe:CREATE_KEYSPACE|category:DDL|ks:auditlogkeyspace|operation:CREATE KEYSPACE
+ AuditLogKeyspace
+ WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};
+ Type: AuditLog
+ LogMessage:
+ user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564714870678|type :USE_KEYSPACE|category:OTHER|ks:auditlogkeyspace|operation:USE auditlogkeyspace;
+ [ec2-user@ip-10-0-2-238 hourly]$
+
+
+The ``auditlogviewer`` tool usage syntax is as follows.
+
+::
+
+ ./auditlogviewer
+ Audit log files directory path is a required argument.
+ usage: auditlogviewer <path1> [<path2>...<pathN>] [options]
+ --
+ View the audit log contents in human readable format
+ --
+ Options are:
+ -f,--follow       Upon reaching the end of the log continue indefinitely
+                   waiting for more records
+ -h,--help         display this help message
+ -r,--roll_cycle   How often to roll the log file was rolled. May be
+                   necessary for Chronicle to correctly parse file names. (MINUTELY, HOURLY,
+                   DAILY). Default HOURLY.
+
+Diagnostic events for user audit logging
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Any native transport enabled client is able to subscribe to diagnostic events that are raised around authentication and CQL operations. These events can then be consumed and used by external tools to implement a Cassandra user auditing solution.
+
diff --git a/src/doc/4.0-rc1/_sources/new/fqllogging.rst.txt b/src/doc/4.0-rc1/_sources/new/fqllogging.rst.txt
new file mode 100644
index 0000000..daead9c
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/new/fqllogging.rst.txt
@@ -0,0 +1,614 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Full Query Logging (FQL)
+========================
+
+Apache Cassandra 4.0 adds a new highly performant feature that supports live query logging (`CASSANDRA-13983 <https://issues.apache.org/jira/browse/CASSANDRA-13983>`_). 
+FQL is safe for production use, with configurable limits to heap memory and disk space to prevent out-of-memory errors.
+This feature is useful for live traffic capture, as well as traffic replay. The tool provided can be used for both debugging query traffic and migration.
+New ``nodetool`` options are also added to enable, disable or reset FQL, as well as a new tool to read and replay the binary logs.
+The full query logging (FQL) capability uses `Chronicle-Queue <http://github.com/OpenHFT/Chronicle-Queue>`_ to rotate a log of queries. 
+Full query logs will be referred to as *logs* for the remainder of the page.
+
+Some of the features of FQL are:
+
+- The impact on query latency is reduced by asynchronous single-thread log entry writes to disk.
+- Heap memory usage is bounded by a weighted queue, with configurable maximum weight sitting in front of logging thread.
+- If the weighted queue is full, producers can be blocked or samples can be dropped.
+- Disk utilization is bounded by a configurable size, deleting old log segments once the limit is reached.
+- A flexible schema binary format, `Chronicle-Wire <http://github.com/OpenHFT/Chronicle-Wire>`_, for on-disk serialization that can skip unrecognized fields, add new ones, and omit old ones.
+- Can be enabled, disabled, or reset (to delete on-disk data) using the JMX tool, ``nodetool``.
+- Can configure the settings in either the `cassandra.yaml` file or by using ``nodetool``.
+- Introduces new ``fqltool`` that currently can ``Dump`` the binary logs to a readable format. Other options are ``Replay`` and ``Compare``.
+
+FQL logs all successful Cassandra Query Language (CQL) requests, both events that modify the data and those that query. 
+While audit logs also include CQL requests, FQL logs only the CQL request. This difference means that FQL can be used to replay or compare logs, which audit logging cannot. FQL is useful for debugging, performance benchmarking, testing and auditing CQL queries, while audit logs are useful for compliance.
+
+In performance testing, FQL appears to have little or no overhead in ``WRITE`` only workloads, and a minor overhead in ``MIXED`` workload.
+
+Query information logged
+------------------------
+
+The query log contains:
+
+- all queries invoked 
+- approximate time they were invoked 
+- any parameters necessary to bind wildcard values 
+- all query options 
+
+The logger writes single or batched CQL queries after they finish, so only successfully completed queries are logged. Failed or timed-out queries are not logged. Different data is logged, depending on the type of query. 
+
+A single CQL query log entry contains:
+
+- query - CQL query text
+- queryOptions - Options associated with the query invocation
+- queryState - Timestamp state associated with the query invocation
+- queryTimeMillis - Approximate time in milliseconds since the epoch since the query was invoked
+
+A batch CQL query log entry contains:
+
+- queries - CQL text of the queries
+- queryOptions - Options associated with the query invocation
+- queryState - Timestamp state associated with the query invocation
+- batchTimeMillis - Approximate time in milliseconds since the epoch since the batch was invoked
+- type - The type of the batch
+- values - Values to bind to as parameters for the queries
+
+Because FQL is backed by `Binlog`, the performance and footprint are predictable, with minimal impact on log record producers. 
+Performance safety prevents the producers from overloading the log, using a weighted queue to drop records if the logging falls behind.
+Single-thread asynchronous writing produces the logs. Chronicle-Queue provides an easy method of  rolling the logs.
+
+Logging information logged
+--------------------------
+
+FQL also tracks information about the stored log files:
+
+- Stored log files that are added and their storage impact. Deletes them if over storage limit.
+- The log files in Chronicle-Queue that have already rolled
+- The number of bytes in the log files that have already rolled
+
+Logging sequence
+----------------
+
+The logger follows a well-defined sequence of events:
+
+1. The consumer thread that writes log records is started. This action can occur only once.
+2. The consumer thread offers a record to the log. If the in-memory queue is full, the record will be dropped and offer returns a `false` value.
+3. If accepted, the record is entered into the log. If the in-memory queue is full, the putting thread will be blocked until there is space or it is interrupted.
+4. The buffers are cleaned up at thread exit. Finalization will check again, to ensure there are no stragglers in the queue.
+5. The consumer thread is stopped. It can be called multiple times.
+
+Using FQL
+---------
+
+To use FQL, two actions must be completed. FQL must be configured using either the `cassandra.yaml` file or ``nodetool``, and logging must be enabled using ``nodetool enablefullquerylog``. 
+Both actions are completed on a per-node basis.
+With either method, at a minimum, the path to the log directory must be specified.
+Full query logs are generated on each enabled node, so logs on each node will have that node's queries.
+
+Configuring FQL in cassandra.yaml
+---------------------------------
+
+The `cassandra.yaml` file can be used to configure FQL before enabling the feature with ``nodetool``. 
+
+The file includes the following options that can be uncommented for use:
+
+:: 
+
+ # default options for full query logging - these can be overridden from command line
+ # when executing nodetool enablefullquerylog
+ #full_query_logging_options:
+    # log_dir:
+    # roll_cycle: HOURLY
+    # block: true
+    # max_queue_weight: 268435456 # 256 MiB
+    # max_log_size: 17179869184 # 16 GiB
+    ## archive command is "/path/to/script.sh %path" where %path is replaced with the file being rolled:
+    # archive_command:
+    # max_archive_retries: 10
+
+log_dir
+^^^^^^^
+
+To write logs, an existing directory must be set in ``log_dir``. 
+
+The directory must have appropriate permissions set to allow reading, writing, and executing. 
+Logging will recursively delete the directory contents as needed. 
+Do not place links in this directory to other sections of the filesystem. 
+For example, ``log_dir: /tmp/cassandrafullquerylog``.
+
+roll_cycle
+^^^^^^^^^^
+
+The ``roll_cycle`` defines the frequency with which the log segments are rolled. 
+Supported values are ``HOURLY`` (default), ``MINUTELY``, and ``DAILY``.
+For example: ``roll_cycle: DAILY``
+
+block
+^^^^^
+
+The ``block`` option specifies whether FQL should block writing or drop log records if FQL falls behind. Supported boolean values are ``true`` (default) or ``false``.
+For example: ``block: false`` to drop records
+
+max_queue_weight
+^^^^^^^^^^^^^^^^
+
+The ``max_queue_weight`` option sets the maximum weight of in-memory queue for records waiting to be written to the file before blocking or dropping.  The option must be set to a positive value. The default value is 268435456, or 256 MiB.
+For example, to change the default: ``max_queue_weight: 134217728 # 128 MiB``
+
+max_log_size
+^^^^^^^^^^^^
+
+The ``max_log_size`` option sets the maximum size of the rolled files to retain on disk before deleting the oldest file.  The option must be set to a positive value. The default is 17179869184, or 16 GiB.
+For example, to change the default: ``max_log_size: 34359738368 # 32 GiB``
+
+archive_command
+^^^^^^^^^^^^^^^
+
+The ``archive_command`` option sets the user-defined archive script to execute on rolled log files. 
+When not defined, files are deleted, with a default of ``""`` which then maps to `org.apache.cassandra.utils.binlog.DeletingArchiver`.
+For example: ``archive_command: /usr/local/bin/archiveit.sh %path # %path is the file being rolled``
+
+max_archive_retries
+^^^^^^^^^^^^^^^^^^^
+
+The ``max_archive_retries`` option sets the max number of retries of failed archive commands. The default is 10.
+For example: ``max_archive_retries: 10``
+
+FQL can also be configured using ``nodetool`` when enabling the feature, and will override any values set in the `cassandra.yaml` file, as discussed in the next section.
+
+Querying the state of FQL
+---------------------
+
+In order to know what state FQL is in, you may use nodetool command ``getfullquerylog``. It will print out whether FQL is enabled
+and with what configuration options; if you reset or stop FQL, the configuration displayed will be taken from
+configuration in ``cassandra.yaml``.
+
+::
+
+ $ nodetool getfullquerylog
+ enabled             true
+ log_dir             /path/to/fql/log/dir
+ archive_command     /usr/local/bin/archiveit.sh %path
+ roll_cycle          HOURLY
+ block               true
+ max_log_size        17179869184
+ max_queue_weight    268435456
+ max_archive_retries 10
+
+Enabling FQL
+------------
+
+FQL is enabled on a per-node basis using the ``nodetool enablefullquerylog`` command. At a minimum, the path to the logging directory must be defined, if ``log_dir`` is not set in the `cassandra.yaml` file. 
+
+The syntax of the ``nodetool enablefullquerylog`` command has all the same options that can be set in the ``cassandra.yaml`` file.
+In addition, ``nodetool`` has options to set which host and port to run the command on, and username and password if the command requires authentication. 
+
+::
+
+  nodetool [(-h <host> | --host <host>)] [(-p <port> | --port <port>)]
+ [(-pp | --print-port)] [(-pw <password> | --password <password>)]
+ [(-pwf <passwordFilePath> | --password-file <passwordFilePath>)]
+ [(-u <username> | --username <username>)] enablefullquerylog
+ [--archive-command <archive_command>] [--blocking]
+ [--max-archive-retries <archive_retries>]
+ [--max-log-size <max_log_size>] [--max-queue-weight <max_queue_weight>]
+ [--path <path>] [--roll-cycle <roll_cycle>]
+
+ OPTIONS
+   --archive-command <archive_command>
+  Command that will handle archiving rolled full query log files.
+  Format is "/path/to/script.sh %path" where %path will be replaced
+  with the file to archive
+
+   --blocking
+  If the queue is full whether to block producers or drop samples.
+
+   -h <host>, --host <host>
+  Node hostname or ip address
+
+   --max-archive-retries <archive_retries>
+  Max number of archive retries.
+
+   --max-log-size <max_log_size>
+  How many bytes of log data to store before dropping segments. Might
+  not be respected if a log file hasn't rolled so it can be deleted.
+
+   --max-queue-weight <max_queue_weight>
+  Maximum number of bytes of query data to queue to disk before
+  blocking or dropping samples.
+
+   -p <port>, --port <port>
+  Remote jmx agent port number
+
+   --path <path>
+  Path to store the full query log at. Will have it's contents
+  recursively deleted.
+
+   -pp, --print-port
+  Operate in 4.0 mode with hosts disambiguated by port number
+
+   -pw <password>, --password <password>
+  Remote jmx agent password
+
+   -pwf <passwordFilePath>, --password-file <passwordFilePath>
+  Path to the JMX password file
+
+   --roll-cycle <roll_cycle>
+  How often to roll the log file (MINUTELY, HOURLY, DAILY).
+
+   -u <username>, --username <username>
+  Remote jmx agent username
+
+To enable FQL, run the following command on each node in the cluster on which you want to enable logging:
+
+::
+
+ nodetool enablefullquerylog --path /tmp/cassandrafullquerylog
+
+Disabling or resetting FQL
+-------------
+
+Use the ``nodetool disablefullquerylog`` to disable logging. 
+Use ``nodetool resetfullquerylog`` to stop FQL and clear the log files in the configured directory.
+**IMPORTANT:** Using ``nodetool resetfullquerylog`` will delete the log files! Do not use this command unless you need to delete all log files.
+
+fqltool
+-------
+
+The ``fqltool`` command is used to view (dump), replay, or compare logs.
+``fqltool dump`` converts the binary log files into human-readable format; only the log directory must be supplied as a command-line option.
+
+``fqltool replay`` (`CASSANDRA-14618 <https://issues.apache.org/jira/browse/CASSANDRA-14618>`_) enables replay of logs. 
+The command can run from a different machine or cluster for testing, debugging, or performance benchmarking. 
+The command can also be used to recreate a dropped database object (keyspace, table), usually in a different cluster.
+The ``fqltool replay`` command does not replay DDL statements automatically; explicitly enable it with the ``--replay-ddl-statements`` flag.
+Use ``fqltool replay`` to record and compare different runs of production traffic against different versions/configurations of Cassandra or different clusters.
+Another use is to gather logs from several machines and replay them in “order” by the timestamps recorded.
+
+The syntax of ``fqltool replay`` is:
+
+::
+
+  fqltool replay [--keyspace <keyspace>] [--replay-ddl-statements]
+  [--results <results>] [--store-queries <store_queries>] 
+  --target <target>... [--] <path1> [<path2>...<pathN>]
+
+ OPTIONS
+   --keyspace <keyspace>
+  Only replay queries against this keyspace and queries without
+  keyspace set.
+
+   --replay-ddl-statements
+   If specified, replays DDL statements as well, they are excluded from
+   replaying by default.
+
+   --results <results>
+  Where to store the results of the queries, this should be a
+  directory. Leave this option out to avoid storing results.
+
+   --store-queries <store_queries>
+  Path to store the queries executed. Stores queries in the same order
+  as the result sets are in the result files. Requires --results
+
+   --target <target>
+  Hosts to replay the logs to, can be repeated to replay to more
+  hosts.
+
+   --
+  This option can be used to separate command-line options from the
+  list of argument, (useful when arguments might be mistaken for
+  command-line options
+
+   <path1> [<path2>...<pathN>]
+  Paths containing the FQ logs to replay.
+
+``fqltool compare`` (`CASSANDRA-14619 <https://issues.apache.org/jira/browse/CASSANDRA-14619>`_) compares result files generated by ``fqltool replay``.
+The command uses recorded runs from ``fqltool replay`` and compareslog, outputting any differences (potentially all queries).
+It also stores each row as a separate chronicle document to avoid reading the entire result from in-memory when comparing.
+
+The syntax of ``fqltool compare`` is:
+
+::
+
+$ fqltool help compare
+ NAME
+   fqltool compare - Compare result files generated by fqltool replay
+
+ SYNOPSIS
+   fqltool compare --queries <queries> [--] <path1> [<path2>...<pathN>]
+
+ OPTIONS
+   --queries <queries>
+  Directory to read the queries from. It is produced by the fqltool
+  replay --store-queries option.
+
+   --
+  This option can be used to separate command-line options from the
+  list of argument, (useful when arguments might be mistaken for
+  command-line options
+
+   <path1> [<path2>...<pathN>]
+  Directories containing result files to compare.
+
+The comparison sets the following marks:
+
+- Mark the beginning of a query set:
+
+::
+
+  -------------------
+  version: int16
+  type: column_definitions
+  column_count: int32;
+  column_definition: text, text
+  column_definition: text, text
+  ....
+  --------------------
+
+
+- Mark a failed query set:
+
+::
+
+  ---------------------
+  version: int16
+  type: query_failed
+  message: text
+  ---------------------
+
+- Mark a row set:
+
+::
+
+  --------------------
+  version: int16
+  type: row
+  row_column_count: int32
+  column: bytes
+  ---------------------
+
+- Mark the end of a result set:
+
+::
+
+  -------------------
+  version: int16
+  type: end_resultset
+  -------------------
+
+Example
+-------
+
+1. To demonstrate FQL, first configure and enable FQL on a node in your cluster:
+
+::
+ 
+ nodetool enablefullquerylog --path /tmp/cassandrafullquerylog
+
+
+2. Now create a demo keyspace and table and insert some data using ``cqlsh``:
+
+::
+
+ cqlsh> CREATE KEYSPACE querylogkeyspace
+   ... WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};
+ cqlsh> USE querylogkeyspace;
+ cqlsh:querylogkeyspace> CREATE TABLE t (
+ ...id int,
+ ...k int,
+ ...v text,
+ ...PRIMARY KEY (id)
+ ... );
+ cqlsh:querylogkeyspace> INSERT INTO t (id, k, v) VALUES (0, 0, 'val0');
+ cqlsh:querylogkeyspace> INSERT INTO t (id, k, v) VALUES (0, 1, 'val1');
+
+3. Then check that the data is inserted:
+
+:: 
+
+ cqlsh:querylogkeyspace> SELECT * FROM t;
+
+ id | k | v
+ ----+---+------
+  0 | 1 | val1
+
+ (1 rows)
+
+4. Use the ``fqltool dump`` command to view the logs.
+
+::
+
+$ fqltool dump /tmp/cassandrafullquerylog
+
+This command will return a readable version of the log. Here is a partial sample of the log for the commands in this demo:
+
+::
+
+      WARN  [main] 2019-08-02 03:07:53,635 Slf4jExceptionHandler.java:42 - Using Pauser.sleepy() as not enough processors, have 2, needs 8+
+      Type: single-query
+      Query start time: 1564708322030
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:1564708322
+      Query: SELECT * FROM system.peers
+      Values:
+
+      Type: single-query
+      Query start time: 1564708322054
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:1564708322
+      Query: SELECT * FROM system.local WHERE key='local'
+      Values:
+
+      Type: single-query
+      Query start time: 1564708322109
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:1564708322
+      Query: SELECT * FROM system_schema.keyspaces
+      Values:
+
+      Type: single-query
+      Query start time: 1564708322116
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:1564708322
+      Query: SELECT * FROM system_schema.tables
+      Values:
+
+      Type: single-query
+      Query start time: 1564708322139
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:1564708322
+      Query: SELECT * FROM system_schema.columns
+      Values:
+
+      Type: single-query
+      Query start time: 1564708322142
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:1564708322
+      Query: SELECT * FROM system_schema.functions
+      Values:
+
+      Type: single-query
+      Query start time: 1564708322141
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:1564708322
+      Query: SELECT * FROM system_schema.aggregates
+      Values:
+
+      Type: single-query
+      Query start time: 1564708322143
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:1564708322
+      Query: SELECT * FROM system_schema.types
+      Values:
+
+      Type: single-query
+      Query start time: 1564708322144
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:1564708322
+      Query: SELECT * FROM system_schema.indexes
+      Values:
+
+      Type: single-query
+      Query start time: 1564708322145
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:1564708322
+      Query: SELECT * FROM system_schema.views
+      Values:
+
+      Type: single-query
+      Query start time: 1564708345408
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:-2147483648
+      Query: CREATE KEYSPACE querylogkeyspace
+      WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};
+      Values:
+
+      Type: single-query
+      Query start time: 1564708360873
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:-2147483648
+      Query: USE querylogkeyspace;
+      Values:
+
+      Type: single-query
+      Query start time: 1564708360874
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:-2147483648
+      Query: USE "querylogkeyspace"
+      Values:
+
+      Type: single-query
+      Query start time: 1564708378837
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:-2147483648
+      Query: CREATE TABLE t (
+          id int,
+          k int,
+          v text,
+          PRIMARY KEY (id)
+      );
+      Values:
+
+      Type: single-query
+      Query start time: 1564708379247
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:1564708379
+      Query: SELECT * FROM system_schema.tables WHERE keyspace_name = 'querylogkeyspace' AND table_name = 't'
+      Values:
+
+      Type: single-query
+      Query start time: 1564708397144
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:1564708397
+      Query: INSERT INTO t (id, k, v) VALUES (0, 0, 'val0');
+      Values:
+
+      Type: single-query
+      Query start time: 1564708434782
+      Protocol version: 4
+      Generated timestamp:-9223372036854775808
+      Generated nowInSeconds:1564708434
+      Query: SELECT * FROM t;
+      Values:
+
+5. This example will demonstrate ``fqltool replay`` in a single cluster. However, the most common method of using ``replay`` is between clusters. 
+To demonstrate in the same cluster, first drop the keyspace.
+
+::
+
+ cqlsh:querylogkeyspace> DROP KEYSPACE querylogkeyspace;
+
+6. Now run ``fqltool replay`` specifying the directories in which to store the results of the queries and 
+the list of queries run, respectively, in `--results` and `--store-queries`, and specifiying that the DDL statements to create the keyspace and tables will be executed:
+
+::
+
+ $ fqltool replay \
+ --keyspace querylogkeyspace --replay-ddl-statements --results /cassandra/fql/logs/results/replay \
+ --store-queries /cassandra/fql/logs/queries/replay \
+ --target 3.91.56.164 \
+ /tmp/cassandrafullquerylog
+
+The ``--results`` and ``--store-queries`` directories are optional, but if ``--store-queries`` is set, then ``--results`` must also be set.
+The ``--target`` specifies the node on which to replay to logs.
+If ``--replay-ddl-statements`` is not specified, the keyspace and any tables must be created prior to the ``replay``.
+
+7. Check that the keyspace was replayed and exists again using the ``DESCRIBE KEYSPACES`` command:
+
+::
+
+ cqlsh:querylogkeyspace> DESC KEYSPACES;
+
+ system_schema  system  system_distributed  system_virtual_schema
+ system_auth    querylogkeyspace  system_traces  system_views
diff --git a/src/doc/4.0-rc1/_sources/new/index.rst.txt b/src/doc/4.0-rc1/_sources/new/index.rst.txt
new file mode 100644
index 0000000..5ef867b
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/new/index.rst.txt
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+New Features in Apache Cassandra 4.0
+====================================
+
+This section covers the new features in Apache Cassandra 4.0.  
+
+.. toctree::
+   :maxdepth: 2
+
+   java11
+   virtualtables
+   auditlogging
+   fqllogging
+   messaging
+   streaming
+   transientreplication
+   
diff --git a/src/doc/4.0-rc1/_sources/new/java11.rst.txt b/src/doc/4.0-rc1/_sources/new/java11.rst.txt
new file mode 100644
index 0000000..df906d4
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/new/java11.rst.txt
@@ -0,0 +1,274 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Support for Java 11
+-------------------
+
+In the new Java release cadence a new Java version is made available every six months. The more frequent release cycle 
+is favored as it brings new Java features to the developers as and when they are developed without the wait that the 
+earlier 3 year release model incurred.  Not every Java version is a Long Term Support (LTS) version. After Java 8 the 
+next LTS version is Java 11. Java 9, 10, 12 and 13 are all non-LTS versions. 
+
+One of the objectives of the Apache Cassandra 4.0 version is to support the recent LTS Java versions 8 and 11 (`CASSANDRA-9608
+<https://issues.apache.org/jira/browse/CASSANDRA-9608>`_). Java 8 and 
+Java 11 may be used to build and run Apache Cassandra 4.0. 
+
+**Note**: Support for JDK 11 in Apache Cassandra 4.0 is an experimental feature, and not recommended for production use.
+
+Support Matrix
+^^^^^^^^^^^^^^
+
+The support matrix for the Java versions for compiling and running Apache Cassandra 4.0 is detailed in Table 1. The 
+build version is along the vertical axis and the run version is along the horizontal axis.
+
+Table 1 : Support Matrix for Java 
+
++---------------+--------------+-----------------+
+|               | Java 8 (Run) | Java 11 (Run)   | 
++---------------+--------------+-----------------+
+| Java 8 (Build)|Supported     |Supported        |           
++---------------+--------------+-----------------+
+| Java 11(Build)| Not Supported|Supported        |         
++---------------+--------------+-----------------+  
+
+Essentially Apache 4.0 source code built with Java 11 cannot be run with Java 8. Next, we shall discuss using each of Java 8 and 11 to build and run Apache Cassandra 4.0.
+
+Using Java 8 to Build
+^^^^^^^^^^^^^^^^^^^^^
+
+To start with, install Java 8. As an example, for installing Java 8 on RedHat Linux the command is as follows:
+
+::
+
+$ sudo yum install java-1.8.0-openjdk-devel
+    
+Set ``JAVA_HOME`` and ``JRE_HOME`` environment variables in the shell bash script. First, open the bash script:
+
+::
+
+$ sudo vi ~/.bashrc
+
+Set the environment variables including the ``PATH``.
+
+::
+
+  $ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
+  $ export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk/jre
+  $ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
+
+Download and install Apache Cassandra 4.0 source code from the Git along with the dependencies.
+
+::
+
+ $ git clone https://github.com/apache/cassandra.git
+
+If Cassandra is already running stop Cassandra with the following command.
+
+::
+
+ [ec2-user@ip-172-30-3-146 bin]$ ./nodetool stopdaemon
+
+Build the source code from the ``cassandra`` directory, which has the ``build.xml`` build script. The Apache Ant uses the Java version set in the ``JAVA_HOME`` environment variable.
+
+::
+
+ $ cd ~/cassandra
+ $ ant
+
+Apache Cassandra 4.0 gets built with Java 8.  Set the environment variable for ``CASSANDRA_HOME`` in the bash script. Also add the ``CASSANDRA_HOME/bin`` to the ``PATH`` variable.
+
+::
+
+ $ export CASSANDRA_HOME=~/cassandra
+ $ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CASSANDRA_HOME/bin
+
+To run Apache Cassandra 4.0 with either of Java 8 or Java 11 run the Cassandra application in the ``CASSANDRA_HOME/bin`` directory, which is in the ``PATH`` env variable.
+
+::
+
+ $ cassandra
+
+The Java version used to run Cassandra gets output as Cassandra is getting started. As an example if Java 11 is used, the run output should include similar to the following output snippet:
+
+::
+
+ INFO  [main] 2019-07-31 21:18:16,862 CassandraDaemon.java:480 - Hostname: ip-172-30-3- 
+ 146.ec2.internal:7000:7001
+ INFO  [main] 2019-07-31 21:18:16,862 CassandraDaemon.java:487 - JVM vendor/version: OpenJDK 
+ 64-Bit Server VM/11.0.3
+ INFO  [main] 2019-07-31 21:18:16,863 CassandraDaemon.java:488 - Heap size: 
+ 1004.000MiB/1004.000MiB
+
+The following output indicates a single node Cassandra 4.0 cluster has started.
+
+::
+
+ INFO  [main] 2019-07-31 21:18:19,687 InboundConnectionInitiator.java:130 - Listening on 
+ address: (127.0.0.1:7000), nic: lo, encryption: enabled (openssl)
+ ...
+ ...
+ INFO  [main] 2019-07-31 21:18:19,850 StorageService.java:512 - Unable to gossip with any 
+ peers but continuing anyway since node is in its own seed list
+ INFO  [main] 2019-07-31 21:18:19,864 StorageService.java:695 - Loading persisted ring state
+ INFO  [main] 2019-07-31 21:18:19,865 StorageService.java:814 - Starting up server gossip
+ INFO  [main] 2019-07-31 21:18:20,088 BufferPool.java:216 - Global buffer pool is enabled,  
+ when pool is exhausted (max is 251.000MiB) it will allocate on heap
+ INFO  [main] 2019-07-31 21:18:20,110 StorageService.java:875 - This node will not auto 
+ bootstrap because it is configured to be a seed node.
+ ...
+ ...
+ INFO  [main] 2019-07-31 21:18:20,809 StorageService.java:1507 - JOINING: Finish joining ring
+ INFO  [main] 2019-07-31 21:18:20,921 StorageService.java:2508 - Node 127.0.0.1:7000 state 
+ jump to NORMAL
+
+Using Java 11 to Build
+^^^^^^^^^^^^^^^^^^^^^^
+If Java 11 is used to build Apache Cassandra 4.0, first Java 11 must be installed and the environment variables set. As an example, to download and install Java 11 on RedHat Linux run the following command.
+
+::
+
+ $ yum install java-11-openjdk-devel
+
+Set the environment variables in the bash script for Java 11. The first command is to open the bash script.
+
+::
+
+ $ sudo vi ~/.bashrc 
+ $ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
+ $ export JRE_HOME=/usr/lib/jvm/java-11-openjdk/jre
+ $ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
+
+To build source code with Java 11 one of the following two options must be used.
+
+ 1. Include Apache Ant command-line option ``-Duse.jdk=11`` as follows: 
+     ::
+
+      $ ant -Duse.jdk=11
+
+ 2. Set environment variable ``CASSANDRA_USE_JDK11`` to ``true``: 
+     ::
+
+      $ export CASSANDRA_USE_JDK11=true
+
+As an example, set the environment variable ``CASSANDRA_USE_JDK11`` to ``true``.
+
+::
+
+ [ec2-user@ip-172-30-3-146 cassandra]$ export CASSANDRA_USE_JDK11=true
+ [ec2-user@ip-172-30-3-146 cassandra]$ ant
+ Buildfile: /home/ec2-user/cassandra/build.xml
+
+Or, set the command-line option.
+
+::
+
+ [ec2-user@ip-172-30-3-146 cassandra]$ ant -Duse.jdk11=true
+
+The build output should include the following.
+
+::
+
+ _build_java:
+     [echo] Compiling for Java 11
+ ...
+ ...
+ build:
+
+ _main-jar:
+          [copy] Copying 1 file to /home/ec2-user/cassandra/build/classes/main/META-INF
+      [jar] Building jar: /home/ec2-user/cassandra/build/apache-cassandra-4.0-SNAPSHOT.jar
+ ...
+ ...
+ _build-test:
+    [javac] Compiling 739 source files to /home/ec2-user/cassandra/build/test/classes
+     [copy] Copying 25 files to /home/ec2-user/cassandra/build/test/classes
+ ...
+ ...
+ jar:
+    [mkdir] Created dir: /home/ec2-user/cassandra/build/classes/stress/META-INF
+    [mkdir] Created dir: /home/ec2-user/cassandra/build/tools/lib
+      [jar] Building jar: /home/ec2-user/cassandra/build/tools/lib/stress.jar
+    [mkdir] Created dir: /home/ec2-user/cassandra/build/classes/fqltool/META-INF
+      [jar] Building jar: /home/ec2-user/cassandra/build/tools/lib/fqltool.jar
+
+ BUILD SUCCESSFUL
+ Total time: 1 minute 3 seconds
+ [ec2-user@ip-172-30-3-146 cassandra]$ 
+
+Common Issues
+^^^^^^^^^^^^^^
+One of the two options mentioned must be used to compile with JDK 11 or the build fails and the following error message is output.
+
+::
+
+ [ec2-user@ip-172-30-3-146 cassandra]$ ant
+ Buildfile: /home/ec2-user/cassandra/build.xml
+ validate-build-conf:
+
+ BUILD FAILED
+ /home/ec2-user/cassandra/build.xml:293: -Duse.jdk11=true or $CASSANDRA_USE_JDK11=true must 
+ be set when building from java 11
+ Total time: 1 second
+ [ec2-user@ip-172-30-3-146 cassandra]$ 
+
+The Java 11 built Apache Cassandra 4.0 source code may be run with Java 11 only. If a Java 11 built code is run with Java 8 the following error message gets output.
+
+::
+
+ [root@localhost ~]# ssh -i cassandra.pem ec2-user@ec2-3-85-85-75.compute-1.amazonaws.com
+ Last login: Wed Jul 31 20:47:26 2019 from 75.155.255.51
+ [ec2-user@ip-172-30-3-146 ~]$ echo $JAVA_HOME
+ /usr/lib/jvm/java-1.8.0-openjdk
+ [ec2-user@ip-172-30-3-146 ~]$ cassandra 
+ ...
+ ...
+ Error: A JNI error has occurred, please check your installation and try again
+ Exception in thread "main" java.lang.UnsupportedClassVersionError: 
+ org/apache/cassandra/service/CassandraDaemon has been compiled by a more recent version of 
+ the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes 
+ class file versions up to 52.0
+   at java.lang.ClassLoader.defineClass1(Native Method)
+   at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
+   at ...
+ ...
+
+The ``CASSANDRA_USE_JDK11`` variable or the command-line option ``-Duse.jdk11`` cannot be used to build with Java 8. To demonstrate set ``JAVA_HOME`` to version 8.
+
+::
+
+ [root@localhost ~]# ssh -i cassandra.pem ec2-user@ec2-3-85-85-75.compute-1.amazonaws.com
+ Last login: Wed Jul 31 21:41:50 2019 from 75.155.255.51
+ [ec2-user@ip-172-30-3-146 ~]$ echo $JAVA_HOME
+ /usr/lib/jvm/java-1.8.0-openjdk
+
+Set the ``CASSANDRA_USE_JDK11=true`` or command-line option ``-Duse.jdk11=true``. Subsequently, run Apache Ant to start the build. The build fails with error message listed.
+
+::
+
+ [ec2-user@ip-172-30-3-146 ~]$ cd 
+ cassandra
+ [ec2-user@ip-172-30-3-146 cassandra]$ export CASSANDRA_USE_JDK11=true
+ [ec2-user@ip-172-30-3-146 cassandra]$ ant 
+ Buildfile: /home/ec2-user/cassandra/build.xml
+
+ validate-build-conf:
+
+ BUILD FAILED
+ /home/ec2-user/cassandra/build.xml:285: -Duse.jdk11=true or $CASSANDRA_USE_JDK11=true cannot 
+ be set when building from java 8
+
+ Total time: 0 seconds
+   
diff --git a/src/doc/4.0-rc1/_sources/new/messaging.rst.txt b/src/doc/4.0-rc1/_sources/new/messaging.rst.txt
new file mode 100644
index 0000000..755c9d1
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/new/messaging.rst.txt
@@ -0,0 +1,257 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Improved Internode Messaging
+------------------------------
+
+
+Apache Cassandra 4.0 has added several new improvements to internode messaging.
+
+Optimized Internode Messaging Protocol
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The internode messaging protocol has been optimized (`CASSANDRA-14485
+<https://issues.apache.org/jira/browse/CASSANDRA-14485>`_). Previously the ``IPAddressAndPort`` of the sender was included with each message that was sent even though the ``IPAddressAndPort`` had already been sent once when the initial connection/session was established. In Cassandra 4.0 ``IPAddressAndPort`` has been removed from every separate message sent  and only sent when connection/session is initiated.
+
+Another improvement is that at several instances (listed) a fixed 4-byte integer value has been replaced with ``vint`` as a ``vint`` is almost always less than 1 byte:
+
+-          The ``paramSize`` (the number of parameters in the header)
+-          Each individual parameter value
+-          The ``payloadSize``
+
+
+NIO Messaging
+^^^^^^^^^^^^^^^
+In Cassandra 4.0 peer-to-peer (internode) messaging has been switched to non-blocking I/O (NIO) via Netty (`CASSANDRA-8457
+<https://issues.apache.org/jira/browse/CASSANDRA-8457>`_).
+
+As serialization format,  each message contains a header with several fixed fields, an optional key-value parameters section, and then the message payload itself. Note: the IP address in the header may be either IPv4 (4 bytes) or IPv6 (16 bytes).
+
+  The diagram below shows the IPv4 address for brevity.
+
+::
+
+             1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6
+   0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2
+  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  |                       PROTOCOL MAGIC                          |
+  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  |                         Message ID                            |
+  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  |                         Timestamp                             |
+  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  |  Addr len |           IP Address (IPv4)                       /
+  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  /           |                 Verb                              /
+  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  /           |            Parameters size                        /
+  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  /           |             Parameter data                        /
+  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  /                                                               |
+  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  |                        Payload size                           |
+  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  |                                                               /
+  /                           Payload                             /
+  /                                                               |
+  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+An individual parameter has a String key and a byte array value. The key is serialized with its length, encoded as two bytes, followed by the UTF-8 byte encoding of the string. The body is serialized with its length, encoded as four bytes, followed by the bytes of the value.
+
+Resource limits on Queued Messages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+System stability is improved by enforcing strict resource limits (`CASSANDRA-15066
+<https://issues.apache.org/jira/browse/CASSANDRA-15066>`_) on the number of outbound messages that are queued, measured by the ``serializedSize`` of the message. There are three separate limits imposed simultaneously to ensure that progress is always made without any reasonable combination of failures impacting a node’s stability.
+
+1. Global, per-endpoint and per-connection limits are imposed on messages queued for delivery to other nodes and waiting to be processed on arrival from other nodes in the cluster.  These limits are applied to the on-wire size of the message being sent or received.
+2. The basic per-link limit is consumed in isolation before any endpoint or global limit is imposed. Each node-pair has three links: urgent, small and large.  So any given node may have a maximum of ``N*3 * (internode_application_send_queue_capacity_in_bytes + internode_application_receive_queue_capacity_in_bytes)`` messages queued without any coordination between them although in practice, with token-aware routing, only RF*tokens nodes should need to communicate with significant bandwidth.
+3. The per-endpoint limit is imposed on all messages exceeding the per-link limit, simultaneously with the global limit, on all links to or from a single node in the cluster. The global limit is imposed on all messages exceeding the per-link limit, simultaneously with the per-endpoint limit, on all links to or from any node in the cluster. The following configuration settings have been added to ``cassandra.yaml`` for resource limits on queued messages.
+
+::
+
+ internode_application_send_queue_capacity_in_bytes: 4194304 #4MiB
+ internode_application_send_queue_reserve_endpoint_capacity_in_bytes: 134217728  #128MiB
+ internode_application_send_queue_reserve_global_capacity_in_bytes: 536870912    #512MiB
+ internode_application_receive_queue_capacity_in_bytes: 4194304                  #4MiB
+ internode_application_receive_queue_reserve_endpoint_capacity_in_bytes: 134217728 #128MiB
+ internode_application_receive_queue_reserve_global_capacity_in_bytes: 536870912   #512MiB
+
+Virtual Tables for Messaging Metrics
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Metrics is improved by keeping metrics using virtual tables for inter-node inbound and outbound messaging (`CASSANDRA-15066
+<https://issues.apache.org/jira/browse/CASSANDRA-15066>`_). For inbound messaging a  virtual table (``internode_inbound``) has been added to keep metrics for:
+
+- Bytes and count of messages that could not be serialized or flushed due to an error
+- Bytes and count of messages scheduled
+- Bytes and count of messages successfully processed
+- Bytes and count of messages successfully received
+- Nanos and count of messages throttled
+- Bytes and count of messages expired
+- Corrupt frames recovered and unrecovered
+
+A separate virtual table (``internode_outbound``) has been added for outbound inter-node messaging. The outbound virtual table keeps metrics for:
+
+-          Bytes and count of messages  pending
+-          Bytes and count of messages  sent
+-          Bytes and count of messages  expired
+-          Bytes and count of messages that could not be sent due to an error
+-          Bytes and count of messages overloaded
+-          Active Connection Count
+-          Connection Attempts
+-          Successful Connection Attempts
+
+Hint Messaging
+^^^^^^^^^^^^^^
+
+A specialized version of hint message that takes an already encoded in a ``ByteBuffer`` hint and sends it verbatim has been added. It is an optimization for when dispatching a hint file of the current messaging version to a node of the same messaging version, which is the most common case. It saves on extra ``ByteBuffer`` allocations one redundant hint deserialization-serialization cycle.
+
+Internode Application Timeout
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A configuration setting has been added to ``cassandra.yaml`` for the maximum continuous period a connection may be unwritable in application space.
+
+::
+
+# internode_application_timeout_in_ms = 30000
+
+Some other new features include logging of message size to trace message for tracing a query.
+
+Paxos prepare and propose stage for local requests optimized
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+In pre-4.0 Paxos prepare and propose messages always go through entire ``MessagingService`` stack in Cassandra even if request is to be served locally, we can enhance and make local requests severed w/o involving ``MessagingService``. Similar things are done elsewhere in Cassandra which skips ``MessagingService`` stage for local requests.
+
+This is what it looks like in pre 4.0 if we have tracing on and run a light-weight transaction:
+
+::
+
+ Sending PAXOS_PREPARE message to /A.B.C.D [MessagingService-Outgoing-/A.B.C.D] | 2017-09-11
+ 21:55:18.971000 | A.B.C.D | 15045
+ … REQUEST_RESPONSE message received from /A.B.C.D [MessagingService-Incoming-/A.B.C.D] |
+ 2017-09-11 21:55:18.976000 | A.B.C.D | 20270
+ … Processing response from /A.B.C.D [SharedPool-Worker-4] | 2017-09-11 21:55:18.976000 |
+ A.B.C.D | 20372
+
+Same thing applies for Propose stage as well.
+
+In version 4.0 Paxos prepare and propose stage for local requests are optimized (`CASSANDRA-13862
+<https://issues.apache.org/jira/browse/CASSANDRA-13862>`_).
+
+Quality Assurance
+^^^^^^^^^^^^^^^^^
+
+Several other quality assurance improvements have been made in version 4.0 (`CASSANDRA-15066
+<https://issues.apache.org/jira/browse/CASSANDRA-15066>`_).
+
+Framing
+*******
+Version 4.0 introduces framing to all internode messages, i.e. the grouping of messages into a single logical payload with headers and trailers; these frames are guaranteed to either contain at most one message, that is split into its own unique sequence of frames (for large messages), or that a frame contains only complete messages.
+
+Corruption prevention
+*********************
+Previously, intra-datacenter internode messages would be unprotected from corruption by default, as only LZ4 provided any integrity checks. All messages to post 4.0 nodes are written to explicit frames, which may be:
+
+- LZ4 encoded
+- CRC protected
+
+The Unprotected option is still available.
+
+Resilience
+**********
+For resilience, all frames are written with a separate CRC protected header, of 8 and 6 bytes respectively. If corruption occurs in this header, the connection must be reset, as before. If corruption occurs anywhere outside of the header, the corrupt frame will be skipped, leaving the connection intact and avoiding the loss of any messages unnecessarily.
+
+Previously, any issue at any point in the stream would result in the connection being reset, with the loss of any in-flight messages.
+
+Efficiency
+**********
+The overall memory usage, and number of byte shuffles, on both inbound and outbound messages is reduced.
+
+Outbound the Netty LZ4 encoder maintains a chunk size buffer (64KiB), that is filled before any compressed frame can be produced. Our frame encoders avoid this redundant copy, as well as freeing 192KiB per endpoint.
+
+Inbound, frame decoders guarantee only to copy the number of bytes necessary to parse a frame, and to never store more bytes than necessary. This improvement applies twice to LZ4 connections, improving both the message decode and the LZ4 frame decode.
+
+Inbound Path
+************
+Version 4.0 introduces several improvements to the inbound path.
+
+An appropriate message handler is used based on whether large or small messages are expected on a particular connection as set in a flag. ``NonblockingBufferHandler``, running on event loop, is used for small messages, and ``BlockingBufferHandler``, running off event loop, for large messages. The single implementation of ``InboundMessageHandler`` handles messages of any size effectively by deriving size of the incoming message from the byte stream. In addition to deriving size of the message from the stream, incoming message expiration time is proactively read, before attempting to deserialize the entire message. If it’s expired at the time when a message is encountered the message is just skipped in the byte stream altogether.
+And if a message fails to be deserialized while still on the receiving side - say, because of table id or column being unknown - bytes are skipped, without dropping the entire connection and losing all the buffered messages. An immediately reply back is sent to the coordinator node with the failure reason, rather than waiting for the coordinator callback to expire. This logic is extended to a corrupted frame; a corrupted frame is safely skipped over without dropping the connection.
+
+Inbound path imposes strict limits on memory utilization. Specifically, the memory occupied by all parsed, but unprocessed messages is bound - on per-connection, per-endpoint, and global basis. Once a connection exceeds its local unprocessed capacity and cannot borrow any permits from per-endpoint and global reserve, it simply stops processing further messages, providing natural backpressure - until sufficient capacity is regained.
+
+Outbound Connections
+********************
+
+Opening a connection
+++++++++++++++++++++
+A consistent approach is adopted for all kinds of failure to connect, including: refused by endpoint, incompatible versions, or unexpected exceptions;
+
+- Retry forever, until either success or no messages waiting to deliver.
+- Wait incrementally longer periods before reconnecting, up to a maximum of 1s.
+- While failing to connect, no reserve queue limits are acquired.
+
+Closing a connection
+++++++++++++++++++++
+- Correctly drains outbound messages that are waiting to be delivered (unless disconnected and fail to reconnect).
+- Messages written to a closing connection are either delivered or rejected, with a new connection being opened if the old is irrevocably closed.
+- Unused connections are pruned eventually.
+
+Reconnecting
+++++++++++++
+
+We sometimes need to reconnect a perfectly valid connection, e.g. if the preferred IP address changes. We ensure that the underlying connection has no in-progress operations before closing it and reconnecting.
+
+Message Failure
+++++++++++++++++
+Propagates to callbacks instantly, better preventing overload by reclaiming committed memory.
+
+Expiry
+~~~~~~~~
+- No longer experiences head-of-line blocking (e.g. undroppable message preventing all droppable messages from being expired).
+- While overloaded, expiry is attempted eagerly on enqueuing threads.
+- While disconnected we schedule regular pruning, to handle the case where messages are no longer being sent, but we have a large backlog to expire.
+
+Overload
+~~~~~~~~~
+- Tracked by bytes queued, as opposed to number of messages.
+
+Serialization Errors
+~~~~~~~~~~~~~~~~~~~~~
+- Do not result in the connection being invalidated; the message is simply completed with failure, and then erased from the frame.
+- Includes detected mismatch between calculated serialization size to actual.
+
+Failures to flush to network, perhaps because the connection has been reset are not currently notified to callback handlers, as the necessary information has been discarded, though it would be possible to do so in future if we decide it is worth our while.
+
+QoS
++++++
+"Gossip" connection has been replaced with a general purpose "Urgent" connection, for any small messages impacting system stability.
+
+Metrics
++++++++
+We track, and expose via Virtual Table and JMX, the number of messages and bytes that: we could not serialize or flush due to an error, we dropped due to overload or timeout, are pending, and have successfully sent.
+
+Added a Message size limit
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Cassandra pre-4.0 doesn't protect the server from allocating huge buffers for the inter-node Message objects. Adding a message size limit would be good to deal with issues such as a malfunctioning cluster participant. Version 4.0 introduced max message size config param, akin to max mutation size - set to endpoint reserve capacity by default.
+
+Recover from unknown table when deserializing internode messages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+As discussed in (`CASSANDRA-9289
+<https://issues.apache.org/jira/browse/CASSANDRA-9289>`_) it would be nice to gracefully recover from seeing an unknown table in a message from another node. Pre-4.0, we close the connection and reconnect, which can cause other concurrent queries to fail.
+Version 4.0  fixes the issue by wrapping message in-stream with
+``TrackedDataInputPlus``, catching
+``UnknownCFException``, and skipping the remaining bytes in this message. TCP won't be closed and it will remain connected for other messages.
diff --git a/src/doc/4.0-rc1/_sources/new/streaming.rst.txt b/src/doc/4.0-rc1/_sources/new/streaming.rst.txt
new file mode 100644
index 0000000..849b43d
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/new/streaming.rst.txt
@@ -0,0 +1,167 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Improved Streaming  
+---------------------  
+
+Apache Cassandra 4.0 has made several improvements to streaming.  Streaming is the process used by nodes of a cluster to exchange data in the form of SSTables.  Streaming of SSTables is performed for several operations, such as:
+
+-          SSTable Repair
+-          Host Replacement
+-          Range movements
+-          Bootstrapping
+-          Rebuild
+-          Cluster expansion
+
+Streaming based on Netty
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Streaming in Cassandra 4.0 is based on Non-blocking Input/Output (NIO) with Netty (`CASSANDRA-12229
+<https://issues.apache.org/jira/browse/CASSANDRA-12229>`_). It replaces the single-threaded (or sequential), synchronous, blocking model of streaming messages and transfer of files. Netty supports non-blocking, asynchronous, multi-threaded streaming with which multiple connections are opened simultaneously.  Non-blocking implies that threads are not blocked as they don’t wait for a response for a sent request. A response could be returned in a different thread. With asynchronous, connections and threads are decoupled and do not have a 1:1 relation. Several more connections than threads may be opened.    
+
+Zero Copy Streaming
+^^^^^^^^^^^^^^^^^^^^ 
+
+Pre-4.0, during streaming Cassandra reifies the SSTables into objects. This creates unnecessary garbage and slows down the whole streaming process as some SSTables can be transferred as a whole file rather than individual partitions. Cassandra 4.0 has added support for streaming entire SSTables when possible (`CASSANDRA-14556
+<https://issues.apache.org/jira/browse/CASSANDRA-14556>`_) for faster Streaming using ZeroCopy APIs. If enabled, Cassandra will use ZeroCopy for eligible SSTables significantly speeding up transfers and increasing throughput.  A zero-copy path avoids bringing data into user-space on both sending and receiving side. Any streaming related operations will notice corresponding improvement. Zero copy streaming is hardware bound; only limited by the hardware limitations (Network and Disk IO ).
+
+High Availability
+*****************
+In benchmark tests Zero Copy Streaming is 5x faster than partitions based streaming. Faster streaming provides the benefit of improved availability. A cluster’s recovery mainly depends on the streaming speed, Cassandra clusters with failed nodes will be able to recover much more quickly (5x faster). If a node fails, SSTables need to be streamed to a replacement node. During the replacement operation, the new Cassandra node streams SSTables from the neighboring nodes that hold copies of the data belonging to this new node’s token range. Depending on the amount of data stored, this process can require substantial network bandwidth, taking some time to complete. The longer these range movement operations take, the more the cluster availability is lost. Failure of multiple nodes would reduce high availability greatly. The faster the new node completes streaming its data, the faster it can serve traffic, increasing the availability of the cluster.
+
+Enabling Zero Copy Streaming
+***************************** 
+Zero copy streaming is enabled by setting the following setting in ``cassandra.yaml``.
+
+::
+
+ stream_entire_sstables: true
+
+It is enabled by default. 
+
+This feature is automatically disabled if internode encryption is enabled.
+
+SSTables Eligible for Zero Copy Streaming
+*****************************************
+Zero copy streaming is used if all partitions within the SSTable need to be transmitted. This is common when using ``LeveledCompactionStrategy`` or when partitioning SSTables by token range has been enabled. All partition keys in the SSTables are iterated over to determine the eligibility for Zero Copy streaming.
+
+Benefits of Zero Copy Streaming
+******************************* 
+When enabled, it permits Cassandra to zero-copy stream entire eligible SSTables between nodes, including every component. This speeds up the network transfer significantly subject to throttling specified by ``stream_throughput_outbound_megabits_per_sec``. 
+ 
+Enabling zero copy streaming also reduces the GC pressure on the sending and receiving nodes.
+
+.. note:: While this feature tries to keep the disks balanced, it cannot guarantee it. 
+   For instance, it is expected that some of the SSTables do not fit entirely in their disk boundaries, when bootstraping a new node having multiple data directoris.
+
+Configuring for Zero Copy Streaming
+*********************************** 
+Throttling would reduce the streaming speed. The ``stream_throughput_outbound_megabits_per_sec`` throttles all outbound streaming file transfers on a node to the given total throughput in Mbps. When unset, the default is 200 Mbps or 25 MB/s.
+
+::
+
+ stream_throughput_outbound_megabits_per_sec: 200
+
+To run any Zero Copy streaming benchmark the ``stream_throughput_outbound_megabits_per_sec`` must be set to a really high value otherwise, throttling will be significant and the benchmark results will not be meaningful.
+ 
+The ``inter_dc_stream_throughput_outbound_megabits_per_sec`` throttles all streaming file transfer between the datacenters, this setting allows users to throttle inter dc stream throughput in addition to throttling all network stream traffic as configured with ``stream_throughput_outbound_megabits_per_sec``. When unset, the default is 200 Mbps or 25 MB/s.
+
+::
+
+ inter_dc_stream_throughput_outbound_megabits_per_sec: 200
+
+SSTable Components Streamed with Zero Copy Streaming
+***************************************************** 
+Zero Copy Streaming streams entire SSTables.  SSTables are made up of multiple components in separate files. SSTable components streamed are listed in Table 1.
+
+Table 1. SSTable Components
+
++------------------+---------------------------------------------------+
+|SSTable Component | Description                                       | 
++------------------+---------------------------------------------------+
+| Data.db          |The base data for an SSTable: the remaining        |
+|                  |components can be regenerated based on the data    |
+|                  |component.                                         |                                 
++------------------+---------------------------------------------------+
+| Index.db         |Index of the row keys with pointers to their       |
+|                  |positions in the data file.                        |                                                                          
++------------------+---------------------------------------------------+
+| Filter.db        |Serialized bloom filter for the row keys in the    |
+|                  |SSTable.                                           |                                                                          
++------------------+---------------------------------------------------+
+|CompressionInfo.db|File to hold information about uncompressed        |
+|                  |data length, chunk offsets etc.                    |                                                     
++------------------+---------------------------------------------------+
+| Statistics.db    |Statistical metadata about the content of the      |
+|                  |SSTable.                                           |                                                                          
++------------------+---------------------------------------------------+
+| Digest.crc32     |Holds CRC32 checksum of the data file              | 
+|                  |size_bytes.                                        |                                                                         
++------------------+---------------------------------------------------+
+| CRC.db           |Holds the CRC32 for chunks in an uncompressed file.|                                                                         
++------------------+---------------------------------------------------+
+| Summary.db       |Holds SSTable Index Summary                        |
+|                  |(sampling of Index component)                      |                                                                          
++------------------+---------------------------------------------------+
+| TOC.txt          |Table of contents, stores the list of all          |
+|                  |components for the SSTable.                        |                                                                         
++------------------+---------------------------------------------------+
+ 
+Custom component, used by e.g. custom compaction strategy may also be included.
+
+Repair Streaming Preview
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Repair with ``nodetool repair`` involves streaming of repaired SSTables and a repair preview has been added to provide an estimate of the amount of repair streaming that would need to be performed. Repair preview (`CASSANDRA-13257
+<https://issues.apache.org/jira/browse/CASSANDRA-13257>`_) is invoke with ``nodetool repair --preview`` using option:
+
+::
+
+-prv, --preview
+
+It determines ranges and amount of data to be streamed, but doesn't actually perform repair.
+
+Parallelizing of Streaming of Keyspaces
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
+The streaming of the different keyspaces for bootstrap and rebuild has been parallelized in Cassandra 4.0 (`CASSANDRA-4663
+<https://issues.apache.org/jira/browse/CASSANDRA-4663>`_).
+
+Unique nodes for Streaming in Multi-DC deployment
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Range Streamer picks unique nodes to stream data from when number of replicas in each DC is three or more (`CASSANDRA-4650
+<https://issues.apache.org/jira/browse/CASSANDRA-4650>`_). What the optimization does is to even out the streaming load across the cluster. Without the optimization, some node can be picked up to stream more data than others. This patch allows to select dedicated node to stream only one range.
+
+This will increase the performance of bootstrapping a node and will also put less pressure on nodes serving the data. This does not affect if N < 3 in each DC as then it streams data from only 2 nodes.
+
+Stream Operation Types 
+^^^^^^^^^^^^^ 
+
+It is important to know the type or purpose of a certain stream. Version 4.0 (`CASSANDRA-13064
+<https://issues.apache.org/jira/browse/CASSANDRA-13064>`_) adds an ``enum`` to distinguish between the different types  of streams.  Stream types are available both in a stream request and a stream task. The different stream types are:
+
+- Restore replica count
+- Unbootstrap
+- Relocation
+- Bootstrap
+- Rebuild
+- Bulk Load
+- Repair
+
+Disallow Decommission when number of Replicas will drop below configured RF
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+`CASSANDRA-12510
+<https://issues.apache.org/jira/browse/CASSANDRA-12510>`_ guards against decommission that will drop # of replicas below configured replication factor (RF), and adds the ``--force`` option that allows decommission to continue if intentional; force decommission of this node even when it reduces the number of replicas to below configured RF.
diff --git a/src/doc/4.0-rc1/_sources/new/transientreplication.rst.txt b/src/doc/4.0-rc1/_sources/new/transientreplication.rst.txt
new file mode 100644
index 0000000..aa39a11
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/new/transientreplication.rst.txt
@@ -0,0 +1,155 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Transient Replication
+---------------------
+
+**Note**:
+
+Transient Replication (`CASSANDRA-14404
+<https://issues.apache.org/jira/browse/CASSANDRA-14404>`_) is an experimental feature designed for expert Apache Cassandra users who are able to validate every aspect of the database for their application and deployment.
+That means being able to check that operations like reads, writes, decommission, remove, rebuild, repair, and replace all work with your queries, data, configuration, operational practices, and availability requirements.
+Apache Cassandra 4.0 has the initial implementation of transient replication. Future releases of Cassandra will make this feature suitable for a wider audience.
+It is anticipated that a future version will support monotonic reads with transient replication as well as LWT, logged batches, and counters. Being experimental, Transient replication is **not** recommended for production use.
+
+Objective
+^^^^^^^^^
+
+The objective of transient replication is to decouple storage requirements from data redundancy (or consensus group size) using incremental repair, in order to reduce storage overhead.
+Certain nodes act as full replicas (storing all the data for a given token range), and some nodes act as transient replicas, storing only unrepaired data for the same token ranges.
+
+The optimization that is made possible with transient replication is called "Cheap quorums", which implies that data redundancy is increased without corresponding increase in storage usage.
+
+Transient replication is useful when sufficient full replicas are available to receive and store all the data.
+Transient replication allows you to configure a subset of replicas to only replicate data that hasn't been incrementally repaired.
+As an optimization, we can avoid writing data to a transient replica if we have successfully written data to the full replicas.
+
+After incremental repair, transient data stored on transient replicas can be discarded.
+
+Enabling Transient Replication
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Transient replication is not enabled by default.  Transient replication must be enabled on each node in a cluster separately by setting the following configuration property in ``cassandra.yaml``.
+
+::
+
+ enable_transient_replication: true
+
+Transient replication may be configured with both ``SimpleStrategy`` and ``NetworkTopologyStrategy``. Transient replication is configured by setting replication factor as ``<total_replicas>/<transient_replicas>``.
+
+As an example, create a keyspace with replication factor (RF) 3.
+
+::
+
+ CREATE KEYSPACE CassandraKeyspaceSimple WITH replication = {'class': 'SimpleStrategy',
+ 'replication_factor' : 3/1};
+
+
+As another example, ``some_keysopace keyspace`` will have 3 replicas in DC1, 1 of which is transient, and 5 replicas in DC2, 2 of which are transient:
+
+::
+
+ CREATE KEYSPACE some_keysopace WITH replication = {'class': 'NetworkTopologyStrategy',
+ 'DC1' : '3/1'', 'DC2' : '5/2'};
+
+Transiently replicated keyspaces only support tables with ``read_repair`` set to ``NONE``.
+
+Important Restrictions:
+
+- RF cannot be altered while some endpoints are not in a normal state (no range movements).
+- You can't add full replicas if there are any transient replicas. You must first remove all transient replicas, then change the # of full replicas, then add back the transient replicas.
+- You can only safely increase number of transients one at a time with incremental repair run in between each time.
+
+
+Additionally, transient replication cannot be used for:
+
+- Monotonic Reads
+- Lightweight Transactions (LWTs)
+- Logged Batches
+- Counters
+- Keyspaces using materialized views
+- Secondary indexes (2i)
+
+Cheap Quorums
+^^^^^^^^^^^^^
+
+Cheap quorums are a set of optimizations on the write path to avoid writing to transient replicas unless sufficient full replicas are not available to satisfy the requested consistency level.
+Hints are never written for transient replicas.  Optimizations on the read path prefer reading from transient replicas.
+When writing at quorum to a table configured to use transient replication the quorum will always prefer available full
+replicas over transient replicas so that transient replicas don't have to process writes. Tail latency is reduced by
+rapid write protection (similar to rapid read protection) when full replicas are slow or unavailable by sending writes
+to transient replicas. Transient replicas can serve reads faster as they don't have to do anything beyond bloom filter
+checks if they have no data. With vnodes and large cluster sizes they will not have a large quantity of data
+even for failure of one or more full replicas where transient replicas start to serve a steady amount of write traffic
+for some of their transiently replicated ranges.
+
+Speculative Write Option
+^^^^^^^^^^^^^^^^^^^^^^^^
+The ``CREATE TABLE`` adds an option ``speculative_write_threshold`` for  use with transient replicas. The option is of type ``simple`` with default value as ``99PERCENTILE``. When replicas are slow or unresponsive  ``speculative_write_threshold`` specifies the threshold at which a cheap quorum write will be upgraded to include transient replicas.
+
+
+Pending Ranges and Transient Replicas
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Pending ranges refers to the movement of token ranges between transient replicas. When a transient range is moved, there
+will be a period of time where both transient replicas would need to receive any write intended for the logical
+transient replica so that after the movement takes effect a read quorum is able to return a response. Nodes are *not*
+temporarily transient replicas during expansion. They stream data like a full replica for the transient range before they
+can serve reads. A pending state is incurred similar to how there is a pending state for full replicas. Transient replicas
+also always receive writes when they are pending. Pending transient ranges are sent a bit more data and reading from
+them is avoided.
+
+
+Read Repair and Transient Replicas
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Read repair never attempts to repair a transient replica. Reads will always include at least one full replica.
+They should also prefer transient replicas where possible. Range scans ensure the entire scanned range performs
+replica selection that satisfies the requirement that every range scanned includes one full replica. During incremental
+& validation repair handling, at transient replicas anti-compaction does not output any data for transient ranges as the
+data will be dropped after repair, and  transient replicas never have data streamed to them.
+
+
+Transitioning between Full Replicas and Transient Replicas
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The additional state transitions that transient replication introduces requires streaming and ``nodetool cleanup`` to
+behave differently.  When data is streamed it is ensured that it is streamed from a full replica and not a transient replica.
+
+Transitioning from not replicated to transiently replicated means that a node must stay pending until the next incremental
+repair completes at which point the data for that range is known to be available at full replicas.
+
+Transitioning from transiently replicated to fully replicated requires streaming from a full replica and is identical
+to how data is streamed when transitioning from not replicated to replicated. The transition is managed so the transient
+replica is not read from as a full replica until streaming completes. It can be used immediately for a write quorum.
+
+Transitioning from fully replicated to transiently replicated requires cleanup to remove repaired data from the transiently
+replicated range to reclaim space. It can be used immediately for a write quorum.
+
+Transitioning from transiently replicated to not replicated requires cleanup to be run to remove the formerly transiently replicated data.
+
+When transient replication is in use ring changes are supported including   add/remove node, change RF, add/remove DC.
+
+
+Transient Replication supports EACH_QUORUM
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+(`CASSANDRA-14727
+<https://issues.apache.org/jira/browse/CASSANDRA-14727>`_) adds support for Transient Replication support for ``EACH_QUORUM``. Per (`CASSANDRA-14768
+<https://issues.apache.org/jira/browse/CASSANDRA-14768>`_), we ensure we write to at least a ``QUORUM`` of nodes in every DC,
+regardless of how many responses we need to wait for and our requested consistency level. This is to minimally surprise
+users with transient replication; with normal writes, we soft-ensure that we reach ``QUORUM`` in all DCs we are able to,
+by writing to every node; even if we don't wait for ACK, we have in both cases sent sufficient messages.
diff --git a/src/doc/4.0-rc1/_sources/new/virtualtables.rst.txt b/src/doc/4.0-rc1/_sources/new/virtualtables.rst.txt
new file mode 100644
index 0000000..1c8766c
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/new/virtualtables.rst.txt
@@ -0,0 +1,341 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Virtual Tables
+--------------
+
+Apache Cassandra 4.0 implements virtual tables (`CASSANDRA-7622
+<https://issues.apache.org/jira/browse/CASSANDRA-7622>`_).
+
+Definition
+^^^^^^^^^^
+
+A virtual table is a table that is backed by an API instead of data explicitly managed and stored as SSTables. Apache Cassandra 4.0 implements a virtual keyspace interface for virtual tables. Virtual tables are specific to each node. 
+
+Objective
+^^^^^^^^^
+
+A virtual table could have several uses including:
+
+- Expose metrics through CQL
+- Expose YAML configuration information
+
+How  are Virtual Tables different from regular tables?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Virtual tables and virtual keyspaces are quite different from regular tables and keyspaces respectively such as:
+
+- Virtual tables are read-only, but it is likely to change
+- Virtual tables are not replicated
+- Virtual tables are local only and non distributed
+- Virtual tables have no associated SSTables
+- Consistency level of the queries sent virtual tables are ignored
+- Virtual tables are managed by Cassandra and a user cannot run  DDL to create new virtual tables or DML to modify existing virtual       tables
+- Virtual tables are created in special keyspaces and not just any keyspace
+- All existing virtual tables use ``LocalPartitioner``. Since a virtual table is not replicated the partitioner sorts in order of     partition   keys instead of by their hash.
+- Making advanced queries with ``ALLOW FILTERING`` and aggregation functions may be used with virtual tables even though in normal  tables we   don't recommend it
+
+Virtual Keyspaces
+^^^^^^^^^^^^^^^^^
+
+Apache Cassandra 4.0 has added two new keyspaces for virtual tables: ``system_virtual_schema`` and ``system_views``. Run the following command to list the keyspaces:
+
+::
+
+ cqlsh> DESC KEYSPACES;
+ system_schema  system       system_distributed  system_virtual_schema
+ system_auth      system_traces       system_views
+
+The ``system_virtual_schema keyspace`` contains schema information on virtual tables. The ``system_views`` keyspace contains the actual virtual tables.
+
+Virtual Table Limitations
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Virtual tables and virtual keyspaces have some limitations initially though some of these could change such as:
+
+- Cannot alter or drop virtual keyspaces or tables
+- Cannot truncate virtual tables
+- Expiring columns are not supported by virtual tables
+- Conditional updates are not supported by virtual tables
+- Cannot create tables in virtual keyspaces
+- Cannot perform any operations against virtual keyspace
+- Secondary indexes are not supported on virtual tables
+- Cannot create functions in virtual keyspaces
+- Cannot create types in virtual keyspaces
+- Materialized views are not supported on virtual tables
+- Virtual tables don't support ``DELETE`` statements
+- Cannot ``CREATE TRIGGER`` against a virtual table
+- Conditional ``BATCH`` statements cannot include mutations for virtual tables
+- Cannot include a virtual table statement in a logged batch
+- Mutations for virtual and regular tables cannot exist in the same batch
+- Cannot create aggregates in virtual keyspaces; but may run aggregate functions on select
+
+Listing and Describing Virtual Tables
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Virtual tables in a virtual keyspace may be listed with ``DESC TABLES``.  The ``system_views`` virtual keyspace tables include the following:
+
+::
+
+ cqlsh> USE system_views;
+ cqlsh:system_views> DESC TABLES;
+ coordinator_scans   clients             tombstones_scanned  internode_inbound
+ disk_usage          sstable_tasks       live_scanned        caches
+ local_writes        max_partition_size  local_reads
+ coordinator_writes  internode_outbound  thread_pools
+ local_scans         coordinator_reads   settings
+
+Some of the salient virtual tables in ``system_views`` virtual keyspace are described in Table 1.
+
+Table 1 : Virtual Tables in system_views
+
++------------------+---------------------------------------------------+
+|Virtual Table     | Description                                       |
++------------------+---------------------------------------------------+
+| clients          |Lists information about all connected clients.     |
++------------------+---------------------------------------------------+
+| disk_usage       |Disk usage including disk_space, keyspace_name,    |
+|                  |and table_name by system keyspaces.                |
++------------------+---------------------------------------------------+
+| local_writes     |A table metric for local writes                    |
+|                  |including count, keyspace_name,                    |
+|                  |max, median, per_second, and                       |
+|                  |table_name.                                        |
++------------------+---------------------------------------------------+
+| caches           |Displays the general cache information including   |
+|                  |cache name, capacity_bytes, entry_count, hit_count,|
+|                  |hit_ratio double, recent_hit_rate_per_second,      |
+|                  |recent_request_rate_per_second, request_count, and |
+|                  |size_bytes.                                        |
++------------------+---------------------------------------------------+
+| local_reads      |A table metric for  local reads information.       |
++------------------+---------------------------------------------------+
+| sstable_tasks    |Lists currently running tasks such as compactions  |
+|                  |and upgrades on SSTables.                          |
++------------------+---------------------------------------------------+
+|internode_inbound |Lists information about the inbound                |
+|                  |internode messaging.                               |
++------------------+---------------------------------------------------+
+| thread_pools     |Lists metrics for each thread pool.                |
++------------------+---------------------------------------------------+
+| settings         |Displays configuration settings in cassandra.yaml. |
++------------------+---------------------------------------------------+
+|max_partition_size|A table metric for maximum partition size.         |
++------------------+---------------------------------------------------+
+|internode_outbound|Information about the outbound internode messaging.|
+|                  |                                                   |
++------------------+---------------------------------------------------+
+
+We shall discuss some of the virtual tables in more detail next.
+
+Clients Virtual Table
+*********************
+
+The ``clients`` virtual table lists all active connections (connected clients) including their ip address, port, connection stage, driver name, driver version, hostname, protocol version, request count, ssl enabled, ssl protocol and user name:
+
+::
+
+ cqlsh:system_views> select * from system_views.clients;
+  address   | port  | connection_stage | driver_name | driver_version | hostname  | protocol_version | request_count | ssl_cipher_suite | ssl_enabled | ssl_protocol | username
+ -----------+-------+------------------+-------------+----------------+-----------+------------------+---------------+------------------+-------------+--------------+-----------
+  127.0.0.1 | 50628 |            ready |        null |           null | localhost |                4 |            55 |             null |       False |         null | anonymous
+  127.0.0.1 | 50630 |            ready |        null |           null | localhost |                4 |            70 |             null |       False |         null | anonymous
+
+ (2 rows)
+
+Some examples of how ``clients`` can be used are:
+
+- To find applications using old incompatible versions of   drivers before upgrading and with ``nodetool enableoldprotocolversions`` and  ``nodetool disableoldprotocolversions`` during upgrades.
+- To identify clients sending too many requests.
+- To find if SSL is enabled during the migration to and from   ssl.
+
+
+The virtual tables may be described with ``DESCRIBE`` statement. The DDL listed however cannot be run to create a virtual table. As an example describe the ``system_views.clients`` virtual table:
+
+::
+
+  cqlsh:system_views> DESC TABLE system_views.clients;
+ CREATE TABLE system_views.clients (
+    address inet,
+    connection_stage text,
+    driver_name text,
+    driver_version text,
+    hostname text,
+    port int,
+    protocol_version int,
+    request_count bigint,
+    ssl_cipher_suite text,
+    ssl_enabled boolean,
+    ssl_protocol text,
+    username text,
+    PRIMARY KEY (address, port)) WITH CLUSTERING ORDER BY (port ASC)
+    AND compaction = {'class': 'None'}
+    AND compression = {};
+
+Caches Virtual Table
+********************
+The ``caches`` virtual table lists information about the  caches. The four caches presently created are chunks, counters, keys and rows. A query on the ``caches`` virtual table returns the following details:
+
+::
+
+ cqlsh:system_views> SELECT * FROM system_views.caches;
+ name     | capacity_bytes | entry_count | hit_count | hit_ratio | recent_hit_rate_per_second | recent_request_rate_per_second | request_count | size_bytes
+ ---------+----------------+-------------+-----------+-----------+----------------------------+--------------------------------+---------------+------------
+   chunks |      229638144 |          29 |       166 |      0.83 |                          5 |                              6 |           200 |     475136
+ counters |       26214400 |           0 |         0 |       NaN |                          0 |                              0 |             0 |          0
+     keys |       52428800 |          14 |       124 |  0.873239 |                          4 |                              4 |           142 |       1248
+     rows |              0 |           0 |         0 |       NaN |                          0 |                              0 |             0 |          0
+
+ (4 rows)
+
+Settings Virtual Table
+**********************
+The ``settings`` table  is rather useful and lists all the current configuration settings from the ``cassandra.yaml``.  The encryption options are overridden to hide the sensitive truststore information or passwords.  The configuration settings however cannot be set using DML  on the virtual table presently:
+::
+
+ cqlsh:system_views> SELECT * FROM system_views.settings;
+
+ name                                 | value
+ -------------------------------------+--------------------
+   allocate_tokens_for_keyspace       | null
+   audit_logging_options_enabled      | false
+   auto_snapshot                      | true
+   automatic_sstable_upgrade          | false
+   cluster_name                       | Test Cluster
+   enable_transient_replication       | false
+   hinted_handoff_enabled             | true
+   hints_directory                    | /home/ec2-user/cassandra/data/hints
+   incremental_backups                | false
+   initial_token                      | null
+                            ...
+                            ...
+                            ...
+   rpc_address                        | localhost
+   ssl_storage_port                   | 7001
+   start_native_transport             | true
+   storage_port                       | 7000
+   stream_entire_sstables             | true
+   (224 rows)
+
+
+The ``settings`` table can be really useful if yaml file has been changed since startup and don't know running configuration, or to find if they have been modified via jmx/nodetool or virtual tables.
+
+
+Thread Pools Virtual Table
+**************************
+
+The ``thread_pools`` table lists information about all thread pools. Thread pool information includes active tasks, active tasks limit, blocked tasks, blocked tasks all time,  completed tasks, and pending tasks. A query on the ``thread_pools`` returns following details:
+
+::
+
+ cqlsh:system_views> select * from system_views.thread_pools;
+
+ name                         | active_tasks | active_tasks_limit | blocked_tasks | blocked_tasks_all_time | completed_tasks | pending_tasks
+ ------------------------------+--------------+--------------------+---------------+------------------------+-----------------+---------------
+             AntiEntropyStage |            0 |                  1 |             0 |                      0 |               0 |             0
+         CacheCleanupExecutor |            0 |                  1 |             0 |                      0 |               0 |             0
+           CompactionExecutor |            0 |                  2 |             0 |                      0 |             881 |             0
+         CounterMutationStage |            0 |                 32 |             0 |                      0 |               0 |             0
+                  GossipStage |            0 |                  1 |             0 |                      0 |               0 |             0
+              HintsDispatcher |            0 |                  2 |             0 |                      0 |               0 |             0
+        InternalResponseStage |            0 |                  2 |             0 |                      0 |               0 |             0
+          MemtableFlushWriter |            0 |                  2 |             0 |                      0 |               1 |             0
+            MemtablePostFlush |            0 |                  1 |             0 |                      0 |               2 |             0
+        MemtableReclaimMemory |            0 |                  1 |             0 |                      0 |               1 |             0
+               MigrationStage |            0 |                  1 |             0 |                      0 |               0 |             0
+                    MiscStage |            0 |                  1 |             0 |                      0 |               0 |             0
+                MutationStage |            0 |                 32 |             0 |                      0 |               0 |             0
+    Native-Transport-Requests |            1 |                128 |             0 |                      0 |             130 |             0
+       PendingRangeCalculator |            0 |                  1 |             0 |                      0 |               1 |             0
+ PerDiskMemtableFlushWriter_0 |            0 |                  2 |             0 |                      0 |               1 |             0
+                    ReadStage |            0 |                 32 |             0 |                      0 |              13 |             0
+                  Repair-Task |            0 |         2147483647 |             0 |                      0 |               0 |             0
+         RequestResponseStage |            0 |                  2 |             0 |                      0 |               0 |             0
+                      Sampler |            0 |                  1 |             0 |                      0 |               0 |             0
+     SecondaryIndexManagement |            0 |                  1 |             0 |                      0 |               0 |             0
+           ValidationExecutor |            0 |         2147483647 |             0 |                      0 |               0 |             0
+            ViewBuildExecutor |            0 |                  1 |             0 |                      0 |               0 |             0
+            ViewMutationStage |            0 |                 32 |             0 |                      0 |               0 |             0
+
+(24 rows)
+
+Internode Inbound Messaging Virtual Table
+*****************************************
+
+The ``internode_inbound``  virtual table is for the internode inbound messaging. Initially no internode inbound messaging may get listed. In addition to the address, port, datacenter and rack information includes  corrupt frames recovered, corrupt frames unrecovered, error bytes, error count, expired bytes, expired count, processed bytes, processed count, received bytes, received count, scheduled bytes, scheduled count, throttled count, throttled nanos, using bytes, using reserve bytes. A query on the ``internode_inbound`` returns following details:
+
+::
+
+ cqlsh:system_views> SELECT * FROM system_views.internode_inbound;
+ address | port | dc | rack | corrupt_frames_recovered | corrupt_frames_unrecovered |
+ error_bytes | error_count | expired_bytes | expired_count | processed_bytes |
+ processed_count | received_bytes | received_count | scheduled_bytes | scheduled_count | throttled_count | throttled_nanos | using_bytes | using_reserve_bytes
+ ---------+------+----+------+--------------------------+----------------------------+-
+ ----------
+ (0 rows)
+
+SSTables Tasks Virtual Table
+****************************
+
+The ``sstable_tasks`` could be used to get information about running tasks. It lists following columns:
+
+::
+
+  cqlsh:system_views> SELECT * FROM sstable_tasks;
+  keyspace_name | table_name | task_id                              | kind       | progress | total    | unit
+  ---------------+------------+--------------------------------------+------------+----------+----------+-------
+         basic |      wide2 | c3909740-cdf7-11e9-a8ed-0f03de2d9ae1 | compaction | 60418761 | 70882110 | bytes
+         basic |      wide2 | c7556770-cdf7-11e9-a8ed-0f03de2d9ae1 | compaction |  2995623 | 40314679 | bytes
+
+
+As another example, to find how much time is remaining for SSTable tasks, use the following query:
+
+::
+
+  SELECT total - progress AS remaining
+  FROM system_views.sstable_tasks;
+
+Other Virtual Tables
+********************
+
+Some examples of using other virtual tables are as follows.
+
+Find tables with most disk usage:
+
+::
+
+  cqlsh> SELECT * FROM disk_usage WHERE mebibytes > 1 ALLOW FILTERING;
+
+  keyspace_name | table_name | mebibytes
+  ---------------+------------+-----------
+     keyspace1 |  standard1 |       288
+    tlp_stress |   keyvalue |      3211
+
+Find queries on table/s with greatest read latency:
+
+::
+
+  cqlsh> SELECT * FROM  local_read_latency WHERE per_second > 1 ALLOW FILTERING;
+
+  keyspace_name | table_name | p50th_ms | p99th_ms | count    | max_ms  | per_second
+  ---------------+------------+----------+----------+----------+---------+------------
+    tlp_stress |   keyvalue |    0.043 |    0.152 | 49785158 | 186.563 |  11418.356
+
+
+The system_virtual_schema keyspace
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The ``system_virtual_schema`` keyspace has three tables: ``keyspaces``,  ``columns`` and  ``tables`` for the virtual keyspace definitions, virtual table definitions, and virtual column definitions  respectively. It is used by Cassandra internally and a user would not need to access it directly.
diff --git a/src/doc/4.0-rc1/_sources/operating/audit_logging.rst.txt b/src/doc/4.0-rc1/_sources/operating/audit_logging.rst.txt
new file mode 100644
index 0000000..068209e
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/audit_logging.rst.txt
@@ -0,0 +1,236 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+
+
+Audit Logging
+------------------
+
+Audit logging in Cassandra logs every incoming CQL command request, Authentication (successful as well as unsuccessful login)
+to C* node. Currently, there are two implementations provided, the custom logger can be implemented and injected with the
+class name as a parameter in cassandra.yaml.
+
+- ``BinAuditLogger`` An efficient way to log events to file in a binary format.
+- ``FileAuditLogger`` Logs events to  ``audit/audit.log`` file using slf4j logger.
+
+*Recommendation* ``BinAuditLogger`` is a community recommended logger considering the performance
+
+What does it capture
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Audit logging captures following events
+
+- Successful as well as unsuccessful login attempts.
+
+- All database commands executed via Native protocol (CQL) attempted or successfully executed.
+
+Limitations
+^^^^^^^^^^^
+
+Executing prepared statements will log the query as provided by the client in the prepare call, along with the execution time stamp and all other attributes (see below). Actual values bound for prepared statement execution will not show up in the audit log.
+
+What does it log
+^^^^^^^^^^^^^^^^^^^
+Each audit log implementation has access to the following attributes, and for the default text based logger these fields are concatenated with `|` s to yield the final message.
+
+ - ``user``: User name(if available)
+ - ``host``: Host IP, where the command is being executed
+ - ``source ip address``: Source IP address from where the request initiated
+ - ``source port``: Source port number from where the request initiated
+ - ``timestamp``: unix time stamp
+ - ``type``: Type of the request (SELECT, INSERT, etc.,)
+ - ``category`` - Category of the request (DDL, DML, etc.,)
+ - ``keyspace`` - Keyspace(If applicable) on which request is targeted to be executed
+ - ``scope`` - Table/Aggregate name/ function name/ trigger name etc., as applicable
+ - ``operation`` - CQL command being executed
+
+How to configure
+^^^^^^^^^^^^^^^^^^
+Auditlog can be configured using cassandra.yaml. If you want to try Auditlog on one node, it can also be enabled and configured using ``nodetool``.
+
+cassandra.yaml configurations for AuditLog
+"""""""""""""""""""""""""""""""""""""""""""""
+	- ``enabled``: This option enables/ disables audit log
+	- ``logger``: Class name of the logger/ custom logger.
+	- ``audit_logs_dir``: Auditlogs directory location, if not set, default to `cassandra.logdir.audit` or `cassandra.logdir` + /audit/
+	- ``included_keyspaces``: Comma separated list of keyspaces to be included in audit log, default - includes all keyspaces
+	- ``excluded_keyspaces``: Comma separated list of keyspaces to be excluded from audit log, default - excludes no keyspace except `system`,  `system_schema` and `system_virtual_schema`
+	- ``included_categories``: Comma separated list of Audit Log Categories to be included in audit log, default - includes all categories
+	- ``excluded_categories``: Comma separated list of Audit Log Categories to be excluded from audit log, default - excludes no category
+	- ``included_users``: Comma separated list of users to be included in audit log, default - includes all users
+	- ``excluded_users``: Comma separated list of users to be excluded from audit log, default - excludes no user
+
+
+List of available categories are: QUERY, DML, DDL, DCL, OTHER, AUTH, ERROR, PREPARE
+
+NodeTool command to enable AuditLog
+"""""""""""""""""""""""""""""""""""""
+``enableauditlog``: Enables AuditLog with yaml defaults. yaml configurations can be overridden using options via nodetool command.
+
+::
+
+    nodetool enableauditlog
+
+Options
+**********
+
+
+``--excluded-categories``
+    Comma separated list of Audit Log Categories to be excluded for
+    audit log. If not set the value from cassandra.yaml will be used
+
+``--excluded-keyspaces``
+    Comma separated list of keyspaces to be excluded for audit log. If
+    not set the value from cassandra.yaml will be used.
+    Please remeber that `system`, `system_schema` and `system_virtual_schema` are excluded by default,
+    if you are overwriting this option via nodetool,
+    remember to add these keyspaces back if you dont want them in audit logs
+
+``--excluded-users``
+    Comma separated list of users to be excluded for audit log. If not
+    set the value from cassandra.yaml will be used
+
+``--included-categories``
+    Comma separated list of Audit Log Categories to be included for
+    audit log. If not set the value from cassandra.yaml will be used
+
+``--included-keyspaces``
+    Comma separated list of keyspaces to be included for audit log. If
+    not set the value from cassandra.yaml will be used
+
+``--included-users``
+    Comma separated list of users to be included for audit log. If not
+    set the value from cassandra.yaml will be used
+
+``--logger``
+    Logger name to be used for AuditLogging. Default BinAuditLogger. If
+    not set the value from cassandra.yaml will be used
+
+
+NodeTool command to disable AuditLog
+"""""""""""""""""""""""""""""""""""""""
+
+``disableauditlog``: Disables AuditLog.
+
+::
+
+    nodetool disableuditlog
+
+
+
+
+
+
+
+NodeTool command to reload AuditLog filters
+"""""""""""""""""""""""""""""""""""""""""""""
+
+``enableauditlog``: NodeTool enableauditlog command can be used to reload auditlog filters when called with default or previous ``loggername`` and updated filters
+
+E.g.,
+
+::
+
+    nodetool enableauditlog --loggername <Default/ existing loggerName> --included-keyspaces <New Filter values>
+
+
+
+View the contents of AuditLog Files
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+``auditlogviewer`` is the new tool introduced to help view the contents of binlog file in human readable text format.
+
+::
+
+	auditlogviewer <path1> [<path2>...<pathN>] [options]
+
+Options
+""""""""
+
+``-f,--follow`` 
+	Upon reacahing the end of the log continue indefinitely
+				waiting for more records
+``-r,--roll_cycle``
+   How often to roll the log file was rolled. May be
+				necessary for Chronicle to correctly parse file names. (MINUTELY, HOURLY,
+				DAILY). Default HOURLY.
+
+``-h,--help``
+         display this help message
+
+For example, to dump the contents of audit log files on the console
+
+::
+
+	auditlogviewer /logs/cassandra/audit
+
+Sample output
+"""""""""""""
+
+::
+
+    LogMessage: user:anonymous|host:localhost/X.X.X.X|source:/X.X.X.X|port:60878|timestamp:1521158923615|type:USE_KS|category:DDL|ks:dev1|operation:USE "dev1"
+
+
+
+Configuring BinAuditLogger
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+To use ``BinAuditLogger`` as a logger in AuditLogging, set the logger to ``BinAuditLogger`` in cassandra.yaml under ``audit_logging_options`` section. ``BinAuditLogger`` can be futher configued using its advanced options in cassandra.yaml.
+
+
+Adcanced Options for BinAuditLogger
+""""""""""""""""""""""""""""""""""""""
+
+``block``
+	Indicates if the AuditLog should block if the it falls behind or should drop audit log records. Default is set to ``true`` so that AuditLog records wont be lost
+
+``max_queue_weight``
+	Maximum weight of in memory queue for records waiting to be written to the audit log file before blocking or dropping the log records. Default is set to ``256 * 1024 * 1024``
+
+``max_log_size``
+	Maximum size of the rolled files to retain on disk before deleting the oldest file. Default is set to ``16L * 1024L * 1024L * 1024L``
+
+``roll_cycle``
+	How often to roll Audit log segments so they can potentially be reclaimed. Available options are: MINUTELY, HOURLY, DAILY, LARGE_DAILY, XLARGE_DAILY, HUGE_DAILY.For more options, refer: net.openhft.chronicle.queue.RollCycles. Default is set to ``"HOURLY"``
+
+Configuring FileAuditLogger
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+To use ``FileAuditLogger`` as a logger in AuditLogging, apart from setting the class name in cassandra.yaml, following configuration is needed to have the audit log events to flow through separate log file instead of system.log
+
+
+.. code-block:: xml
+
+    	<!-- Audit Logging (FileAuditLogger) rolling file appender to audit.log -->
+    	<appender name="AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
+    	  <file>${cassandra.logdir}/audit/audit.log</file>
+    	  <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+    	    <!-- rollover daily -->
+    	    <fileNamePattern>${cassandra.logdir}/audit/audit.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
+    	    <!-- each file should be at most 50MB, keep 30 days worth of history, but at most 5GB -->
+    	    <maxFileSize>50MB</maxFileSize>
+    	    <maxHistory>30</maxHistory>
+    	    <totalSizeCap>5GB</totalSizeCap>
+    	  </rollingPolicy>
+    	  <encoder>
+    	    <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+    	  </encoder>
+    	</appender>
+
+      	<!-- Audit Logging additivity to redirect audt logging events to audit/audit.log -->
+      	<logger name="org.apache.cassandra.audit" additivity="false" level="INFO">
+        	<appender-ref ref="AUDIT"/>
+      	</logger>
diff --git a/src/doc/4.0-rc1/_sources/operating/backups.rst.txt b/src/doc/4.0-rc1/_sources/operating/backups.rst.txt
new file mode 100644
index 0000000..01cb6c5
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/backups.rst.txt
@@ -0,0 +1,660 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+.. highlight:: none
+
+Backups  
+------- 
+
+Apache Cassandra stores data in immutable SSTable files. Backups in Apache Cassandra database are backup copies of the database data that is stored as SSTable files. Backups are used for several purposes including the following:
+
+- To store a data copy for durability
+- To be able to restore a table if table data is lost due to node/partition/network failure
+- To be able to transfer the SSTable files to a different machine;  for portability
+
+Types of Backups
+^^^^^^^^^^^^^^^^
+Apache Cassandra supports two kinds of backup strategies.
+
+- Snapshots
+- Incremental Backups
+
+A *snapshot* is a copy of a table’s SSTable files at a given time, created via hard links.  The DDL to create the table is stored as well.  Snapshots may be created by a user or created automatically.
+The setting (``snapshot_before_compaction``) in ``cassandra.yaml`` determines if snapshots are created before each compaction.
+By default ``snapshot_before_compaction`` is set to false.
+Snapshots may be created automatically before keyspace truncation or dropping of a table by setting ``auto_snapshot`` to true (default) in ``cassandra.yaml``.
+Truncates could be delayed due to the auto snapshots and another setting in ``cassandra.yaml`` determines how long the coordinator should wait for truncates to complete.
+By default Cassandra waits 60 seconds for auto snapshots to complete.
+
+An *incremental backup* is a copy of a table’s SSTable files created by a hard link when memtables are flushed to disk as SSTables.
+Typically incremental backups are paired with snapshots to reduce the backup time as well as reduce disk space.
+Incremental backups are not enabled by default and must be enabled explicitly in ``cassandra.yaml`` (with ``incremental_backups`` setting) or with the Nodetool.
+Once enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a ``backups/`` subdirectory of the keyspace data. Incremental backups of system tables are also created.
+
+Data Directory Structure
+^^^^^^^^^^^^^^^^^^^^^^^^
+The directory structure of Cassandra data consists of different directories for keyspaces, and tables with the data files within the table directories.  Directories  backups and snapshots to store backups and snapshots respectively for a particular table are also stored within the table directory. The directory structure for Cassandra is illustrated in Figure 1. 
+
+.. figure:: Figure_1_backups.jpg
+
+Figure 1. Directory Structure for Cassandra Data
+
+
+Setting Up Example Tables for Backups and Snapshots
+****************************************************
+In this section we shall create some example data that could be used to demonstrate incremental backups and snapshots. We have used a three node Cassandra cluster.
+First, the keyspaces are created. Subsequently tables are created within a keyspace and table data is added. We have used two keyspaces ``CQLKeyspace`` and ``CatalogKeyspace`` with two tables within each.
+Create ``CQLKeyspace``:
+
+::
+
+ cqlsh> CREATE KEYSPACE CQLKeyspace
+   ... WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
+
+Create table ``t`` in the ``CQLKeyspace`` keyspace.
+
+::
+
+ cqlsh> USE CQLKeyspace;
+ cqlsh:cqlkeyspace> CREATE TABLE t (
+               ...     id int,
+               ...     k int,
+               ...     v text,
+               ...     PRIMARY KEY (id)
+               ... );
+
+
+Add data to table ``t``:
+
+::
+
+ cqlsh:cqlkeyspace>
+ cqlsh:cqlkeyspace> INSERT INTO t (id, k, v) VALUES (0, 0, 'val0');
+ cqlsh:cqlkeyspace> INSERT INTO t (id, k, v) VALUES (1, 1, 'val1');
+
+
+A table query lists the data:
+
+::
+
+ cqlsh:cqlkeyspace> SELECT * FROM t;
+
+ id | k | v
+ ----+---+------
+  1 | 1 | val1
+  0 | 0 | val0
+
+  (2 rows)
+
+Create another table ``t2``:
+
+::
+
+ cqlsh:cqlkeyspace> CREATE TABLE t2 (
+               ...     id int,
+               ...     k int,
+               ...     v text,
+               ...     PRIMARY KEY (id)
+               ... );
+
+Add data to table ``t2``:
+
+::
+
+ cqlsh:cqlkeyspace> INSERT INTO t2 (id, k, v) VALUES (0, 0, 'val0');
+ cqlsh:cqlkeyspace> INSERT INTO t2 (id, k, v) VALUES (1, 1, 'val1');
+ cqlsh:cqlkeyspace> INSERT INTO t2 (id, k, v) VALUES (2, 2, 'val2');
+
+
+A table query lists table data:
+
+::
+
+ cqlsh:cqlkeyspace> SELECT * FROM t2;
+
+ id | k | v
+ ----+---+------
+  1 | 1 | val1
+  0 | 0 | val0
+  2 | 2 | val2
+
+  (3 rows)
+
+Create a second keyspace ``CatalogKeyspace``:
+
+::
+
+ cqlsh:cqlkeyspace> CREATE KEYSPACE CatalogKeyspace
+               ... WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
+
+Create a table called ``journal`` in ``CatalogKeyspace``:
+
+::
+
+ cqlsh:cqlkeyspace> USE CatalogKeyspace;
+ cqlsh:catalogkeyspace> CREATE TABLE journal (
+                   ...     id int,
+                   ...     name text,
+                   ...     publisher text,
+                   ...     PRIMARY KEY (id)
+                   ... );
+
+
+Add data to table ``journal``:
+
+::
+
+ cqlsh:catalogkeyspace> INSERT INTO journal (id, name, publisher) VALUES (0, 'Apache
+ Cassandra Magazine', 'Apache Cassandra');
+ cqlsh:catalogkeyspace> INSERT INTO journal (id, name, publisher) VALUES (1, 'Couchbase
+ Magazine', 'Couchbase');
+
+Query table ``journal`` to list its data:
+
+::
+
+ cqlsh:catalogkeyspace> SELECT * FROM journal;
+
+ id | name                      | publisher
+ ----+---------------------------+------------------
+  1 |        Couchbase Magazine |        Couchbase
+  0 | Apache Cassandra Magazine | Apache Cassandra
+
+  (2 rows)
+
+Add another table called ``magazine``:
+
+::
+
+ cqlsh:catalogkeyspace> CREATE TABLE magazine (
+                   ...     id int,
+                   ...     name text,
+                   ...     publisher text,
+                   ...     PRIMARY KEY (id)
+                   ... );
+
+Add table data to ``magazine``:
+
+::
+
+ cqlsh:catalogkeyspace> INSERT INTO magazine (id, name, publisher) VALUES (0, 'Apache
+ Cassandra Magazine', 'Apache Cassandra');
+ cqlsh:catalogkeyspace> INSERT INTO magazine (id, name, publisher) VALUES (1, 'Couchbase
+ Magazine', 'Couchbase');
+
+List table ``magazine``’s data:
+
+::
+
+ cqlsh:catalogkeyspace> SELECT * from magazine;
+
+ id | name                      | publisher
+ ----+---------------------------+------------------
+  1 |        Couchbase Magazine |        Couchbase
+  0 | Apache Cassandra Magazine | Apache Cassandra
+
+  (2 rows)
+
+Snapshots
+^^^^^^^^^
+In this section including sub-sections we shall demonstrate creating snapshots.  The command used to create a snapshot is ``nodetool snapshot`` and its usage is as follows:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool help snapshot
+ NAME
+        nodetool snapshot - Take a snapshot of specified keyspaces or a snapshot
+        of the specified table
+
+ SYNOPSIS
+        nodetool [(-h <host> | --host <host>)] [(-p <port> | --port <port>)]
+                [(-pp | --print-port)] [(-pw <password> | --password <password>)]
+                [(-pwf <passwordFilePath> | --password-file <passwordFilePath>)]
+                [(-u <username> | --username <username>)] snapshot
+                [(-cf <table> | --column-family <table> | --table <table>)]
+                [(-kt <ktlist> | --kt-list <ktlist> | -kc <ktlist> | --kc.list <ktlist>)]
+                [(-sf | --skip-flush)] [(-t <tag> | --tag <tag>)] [--] [<keyspaces...>]
+
+ OPTIONS
+        -cf <table>, --column-family <table>, --table <table>
+            The table name (you must specify one and only one keyspace for using
+            this option)
+
+        -h <host>, --host <host>
+            Node hostname or ip address
+
+        -kt <ktlist>, --kt-list <ktlist>, -kc <ktlist>, --kc.list <ktlist>
+            The list of Keyspace.table to take snapshot.(you must not specify
+            only keyspace)
+
+        -p <port>, --port <port>
+            Remote jmx agent port number
+
+        -pp, --print-port
+            Operate in 4.0 mode with hosts disambiguated by port number
+
+        -pw <password>, --password <password>
+            Remote jmx agent password
+
+        -pwf <passwordFilePath>, --password-file <passwordFilePath>
+            Path to the JMX password file
+
+        -sf, --skip-flush
+            Do not flush memtables before snapshotting (snapshot will not
+            contain unflushed data)
+
+        -t <tag>, --tag <tag>
+            The name of the snapshot
+
+        -u <username>, --username <username>
+            Remote jmx agent username
+
+        --
+            This option can be used to separate command-line options from the
+            list of argument, (useful when arguments might be mistaken for
+            command-line options
+
+        [<keyspaces...>]
+            List of keyspaces. By default, all keyspaces
+
+Configuring for Snapshots
+*************************** 
+To demonstrate creating snapshots with Nodetool on the commandline  we have set 
+``auto_snapshots`` setting to ``false`` in ``cassandra.yaml``:
+
+::
+
+ auto_snapshot: false
+
+Also set ``snapshot_before_compaction``  to ``false`` to disable creating snapshots automatically before compaction:
+
+::
+
+ snapshot_before_compaction: false
+
+Creating Snapshots
+******************* 
+To demonstrate creating snapshots start with no snapshots. Search for snapshots and none get listed:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ find -name snapshots
+
+We shall be using the example keyspaces and tables to create snapshots.
+
+Taking Snapshots of all Tables in a Keyspace
++++++++++++++++++++++++++++++++++++++++++++++ 
+
+To take snapshots of all tables in a keyspace and also optionally tag the snapshot the syntax becomes:
+
+::
+
+ nodetool snapshot --tag <tag>  --<keyspace>
+
+As an example create a snapshot called ``catalog-ks`` for all the tables in the ``catalogkeyspace`` keyspace:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool snapshot --tag catalog-ks -- catalogkeyspace
+ Requested creating snapshot(s) for [catalogkeyspace] with snapshot name [catalog-ks] and 
+ options {skipFlush=false}
+ Snapshot directory: catalog-ks
+
+Search for snapshots and  ``snapshots`` directories for the tables ``journal`` and ``magazine``, which are in the ``catalogkeyspace`` keyspace should get listed:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ find -name snapshots
+ ./cassandra/data/data/catalogkeyspace/journal-296a2d30c22a11e9b1350d927649052c/snapshots
+ ./cassandra/data/data/catalogkeyspace/magazine-446eae30c22a11e9b1350d927649052c/snapshots
+
+Snapshots of all tables in   multiple keyspaces may be created similarly, as an example:
+
+::
+
+ nodetool snapshot --tag catalog-cql-ks --catalogkeyspace,cqlkeyspace
+
+Taking Snapshots of Single Table in a Keyspace
+++++++++++++++++++++++++++++++++++++++++++++++
+To take a snapshot of a single table the ``nodetool snapshot`` command syntax becomes as follows:
+
+::
+
+ nodetool snapshot --tag <tag> --table <table>  --<keyspace>
+
+As an example create a snapshot for table ``magazine`` in keyspace ``catalokeyspace``:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool snapshot --tag magazine --table magazine  -- 
+ catalogkeyspace
+ Requested creating snapshot(s) for [catalogkeyspace] with snapshot name [magazine] and 
+ options {skipFlush=false}
+ Snapshot directory: magazine
+
+Taking Snapshot of Multiple  Tables from same Keyspace
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
+To take snapshots of multiple tables in a keyspace the list of *Keyspace.table* must be specified with option ``--kt-list``. As an example create snapshots for tables ``t`` and ``t2`` in the ``cqlkeyspace`` keyspace:
+
+::
+
+ nodetool snapshot --kt-list cqlkeyspace.t,cqlkeyspace.t2 --tag multi-table 
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool snapshot --kt-list cqlkeyspace.t,cqlkeyspace.t2 --tag 
+ multi-table
+ Requested creating snapshot(s) for [cqlkeyspace.t,cqlkeyspace.t2] with snapshot name [multi- 
+ table] and options {skipFlush=false}
+ Snapshot directory: multi-table
+
+Multiple snapshots of the same set of tables may be created and tagged with a different name. As an example, create another snapshot for the same set of tables ``t`` and ``t2`` in the ``cqlkeyspace`` keyspace and tag the snapshots differently:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool snapshot --kt-list cqlkeyspace.t,cqlkeyspace.t2 --tag 
+ multi-table-2
+ Requested creating snapshot(s) for [cqlkeyspace.t,cqlkeyspace.t2] with snapshot name [multi- 
+ table-2] and options {skipFlush=false}
+ Snapshot directory: multi-table-2
+
+Taking Snapshot of Multiple  Tables from Different Keyspaces
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+To take snapshots of multiple tables that are in different keyspaces the command syntax is the same as when multiple tables are in the same keyspace. Each *keyspace.table* must be specified separately in the ``--kt-list`` option. As an example, create a snapshot for table ``t`` in the ``cqlkeyspace`` and table ``journal`` in the catalogkeyspace and tag the snapshot ``multi-ks``.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool snapshot --kt-list 
+ catalogkeyspace.journal,cqlkeyspace.t --tag multi-ks
+ Requested creating snapshot(s) for [catalogkeyspace.journal,cqlkeyspace.t] with snapshot 
+ name [multi-ks] and options {skipFlush=false}
+ Snapshot directory: multi-ks
+ 
+Listing Snapshots
+*************************** 
+To list snapshots use the ``nodetool listsnapshots`` command. All the snapshots that we created in the preceding examples get listed:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool listsnapshots
+ Snapshot Details: 
+ Snapshot name Keyspace name   Column family name True size Size on disk
+ multi-table   cqlkeyspace     t2                 4.86 KiB  5.67 KiB    
+ multi-table   cqlkeyspace     t                  4.89 KiB  5.7 KiB     
+ multi-ks      cqlkeyspace     t                  4.89 KiB  5.7 KiB     
+ multi-ks      catalogkeyspace journal            4.9 KiB   5.73 KiB    
+ magazine      catalogkeyspace magazine           4.9 KiB   5.73 KiB    
+ multi-table-2 cqlkeyspace     t2                 4.86 KiB  5.67 KiB    
+ multi-table-2 cqlkeyspace     t                  4.89 KiB  5.7 KiB     
+ catalog-ks    catalogkeyspace journal            4.9 KiB   5.73 KiB    
+ catalog-ks    catalogkeyspace magazine           4.9 KiB   5.73 KiB    
+
+ Total TrueDiskSpaceUsed: 44.02 KiB
+
+Finding Snapshots Directories
+****************************** 
+The ``snapshots`` directories may be listed with ``find –name snapshots`` command:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ find -name snapshots
+ ./cassandra/data/data/cqlkeyspace/t-d132e240c21711e9bbee19821dcea330/snapshots
+ ./cassandra/data/data/cqlkeyspace/t2-d993a390c22911e9b1350d927649052c/snapshots
+ ./cassandra/data/data/catalogkeyspace/journal-296a2d30c22a11e9b1350d927649052c/snapshots
+ ./cassandra/data/data/catalogkeyspace/magazine-446eae30c22a11e9b1350d927649052c/snapshots
+ [ec2-user@ip-10-0-2-238 ~]$
+
+To list the snapshots for a particular table first change directory ( with ``cd``) to the ``snapshots`` directory for the table. As an example, list the snapshots for the ``catalogkeyspace/journal`` table. Two snapshots get listed:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ cd ./cassandra/data/data/catalogkeyspace/journal- 
+ 296a2d30c22a11e9b1350d927649052c/snapshots
+ [ec2-user@ip-10-0-2-238 snapshots]$ ls -l
+ total 0
+ drwxrwxr-x. 2 ec2-user ec2-user 265 Aug 19 02:44 catalog-ks
+ drwxrwxr-x. 2 ec2-user ec2-user 265 Aug 19 02:52 multi-ks
+
+A ``snapshots`` directory lists the SSTable files in the snapshot. ``Schema.cql`` file is also created in each snapshot for the schema definition DDL that may be run in CQL to create the table when restoring from a snapshot:
+
+::
+
+ [ec2-user@ip-10-0-2-238 snapshots]$ cd catalog-ks
+ [ec2-user@ip-10-0-2-238 catalog-ks]$ ls -l
+ total 44
+ -rw-rw-r--. 1 ec2-user ec2-user   31 Aug 19 02:44 manifest.jsonZ
+
+ -rw-rw-r--. 4 ec2-user ec2-user   47 Aug 19 02:38 na-1-big-CompressionInfo.db
+ -rw-rw-r--. 4 ec2-user ec2-user   97 Aug 19 02:38 na-1-big-Data.db
+ -rw-rw-r--. 4 ec2-user ec2-user   10 Aug 19 02:38 na-1-big-Digest.crc32
+ -rw-rw-r--. 4 ec2-user ec2-user   16 Aug 19 02:38 na-1-big-Filter.db
+ -rw-rw-r--. 4 ec2-user ec2-user   16 Aug 19 02:38 na-1-big-Index.db
+ -rw-rw-r--. 4 ec2-user ec2-user 4687 Aug 19 02:38 na-1-big-Statistics.db
+ -rw-rw-r--. 4 ec2-user ec2-user   56 Aug 19 02:38 na-1-big-Summary.db
+ -rw-rw-r--. 4 ec2-user ec2-user   92 Aug 19 02:38 na-1-big-TOC.txt
+ -rw-rw-r--. 1 ec2-user ec2-user  814 Aug 19 02:44 schema.cql
+
+Clearing Snapshots
+******************
+Snapshots may be cleared or deleted with the ``nodetool clearsnapshot`` command.  Either a specific snapshot name must be specified or the ``–all`` option must be specified.
+As an example delete a snapshot called ``magazine`` from keyspace ``cqlkeyspace``:
+
+::
+
+ nodetool clearsnapshot -t magazine – cqlkeyspace
+ Delete all snapshots from cqlkeyspace with the –all option.
+ nodetool clearsnapshot –all -- cqlkeyspace
+
+
+
+Incremental Backups
+^^^^^^^^^^^^^^^^^^^
+In the following sub-sections we shall discuss configuring and creating incremental backups.
+
+Configuring for Incremental Backups
+***********************************
+
+To create incremental backups set ``incremental_backups`` to ``true`` in ``cassandra.yaml``.
+
+::
+
+ incremental_backups: true
+
+This is the only setting needed to create incremental backups.  By default ``incremental_backups`` setting is  set to ``false`` because a new set of SSTable files is created for each data flush and if several CQL statements are to be run the ``backups`` directory could  fill up quickly and use up storage that is needed to store table data.
+Incremental backups may also be enabled on the command line with the Nodetool command ``nodetool enablebackup``. Incremental backups may be disabled with ``nodetool disablebackup`` command. Status of incremental backups, whether they are enabled may be found with ``nodetool statusbackup``.
+
+
+
+Creating Incremental Backups
+******************************
+After each table is created flush the table data with ``nodetool flush`` command. Incremental backups get created.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool flush cqlkeyspace t
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool flush cqlkeyspace t2
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool flush catalogkeyspace journal magazine
+
+Finding Incremental Backups
+***************************
+
+Incremental backups are created within the Cassandra’s ``data`` directory within a table directory. Backups may be found with following command.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ find -name backups
+
+ ./cassandra/data/data/cqlkeyspace/t-d132e240c21711e9bbee19821dcea330/backups
+ ./cassandra/data/data/cqlkeyspace/t2-d993a390c22911e9b1350d927649052c/backups
+ ./cassandra/data/data/catalogkeyspace/journal-296a2d30c22a11e9b1350d927649052c/backups
+ ./cassandra/data/data/catalogkeyspace/magazine-446eae30c22a11e9b1350d927649052c/backups
+
+Creating an Incremental Backup
+******************************
+This section discusses how incremental backups are created in more detail starting with when a new keyspace is created and a table is added.  Create a keyspace called ``CQLKeyspace`` (arbitrary name).
+
+::
+
+ cqlsh> CREATE KEYSPACE CQLKeyspace
+   ... WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3}
+
+Create a table called ``t`` within the ``CQLKeyspace`` keyspace:
+
+::
+
+ cqlsh> USE CQLKeyspace;
+ cqlsh:cqlkeyspace> CREATE TABLE t (
+               ...     id int,
+               ...     k int,
+               ...     v text,
+               ...     PRIMARY KEY (id)
+               ... );
+
+Flush the keyspace and table:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool flush cqlkeyspace t
+
+Search for backups and a ``backups`` directory should get listed even though we have added no table data yet.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ find -name backups
+
+ ./cassandra/data/data/cqlkeyspace/t-d132e240c21711e9bbee19821dcea330/backups
+
+Change directory to the ``backups`` directory and list files and no files get listed as no table data has been added yet:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ cd ./cassandra/data/data/cqlkeyspace/t-
+ d132e240c21711e9bbee19821dcea330/backups
+ [ec2-user@ip-10-0-2-238 backups]$ ls -l
+ total 0
+
+Next, add a row of data to table ``t`` that we created:
+
+::
+
+ cqlsh:cqlkeyspace> INSERT INTO t (id, k, v) VALUES (0, 0, 'val0');
+
+Run the ``nodetool flush`` command to flush table data:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool flush cqlkeyspace t
+
+List the files and directories in the ``backups`` directory and SSTable files for an incremental backup get listed:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ cd ./cassandra/data/data/cqlkeyspace/t-
+ d132e240c21711e9bbee19821dcea330/backups
+ [ec2-user@ip-10-0-2-238 backups]$ ls -l
+ total 36
+ -rw-rw-r--. 2 ec2-user ec2-user   47 Aug 19 00:32 na-1-big-CompressionInfo.db
+ -rw-rw-r--. 2 ec2-user ec2-user   43 Aug 19 00:32 na-1-big-Data.db
+ -rw-rw-r--. 2 ec2-user ec2-user   10 Aug 19 00:32 na-1-big-Digest.crc32
+ -rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 00:32 na-1-big-Filter.db
+ -rw-rw-r--. 2 ec2-user ec2-user    8 Aug 19 00:32 na-1-big-Index.db
+ -rw-rw-r--. 2 ec2-user ec2-user 4673 Aug 19 00:32 na-1-big-Statistics.db
+ -rw-rw-r--. 2 ec2-user ec2-user   56 Aug 19 00:32 na-1-big-Summary.db
+ -rw-rw-r--. 2 ec2-user ec2-user   92 Aug 19 00:32 na-1-big-TOC.txt
+
+Add another row of data:
+
+::
+
+ cqlsh:cqlkeyspace> INSERT INTO t (id, k, v) VALUES (1, 1, 'val1');
+
+Again, run the ``nodetool flush`` command:
+
+::
+
+ [ec2-user@ip-10-0-2-238 backups]$  nodetool flush cqlkeyspace t
+
+A new incremental backup gets created for the new  data added. List the files in the ``backups`` directory for table ``t`` and two sets of SSTable files get listed, one for each incremental backup. The SSTable files are timestamped, which distinguishes the first incremental backup from the second:
+
+::
+
+ [ec2-user@ip-10-0-2-238 backups]$ ls -l
+ total 72
+ -rw-rw-r--. 2 ec2-user ec2-user   47 Aug 19 00:32 na-1-big-CompressionInfo.db
+ -rw-rw-r--. 2 ec2-user ec2-user   43 Aug 19 00:32 na-1-big-Data.db
+ -rw-rw-r--. 2 ec2-user ec2-user   10 Aug 19 00:32 na-1-big-Digest.crc32
+ -rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 00:32 na-1-big-Filter.db
+ -rw-rw-r--. 2 ec2-user ec2-user    8 Aug 19 00:32 na-1-big-Index.db
+ -rw-rw-r--. 2 ec2-user ec2-user 4673 Aug 19 00:32 na-1-big-Statistics.db
+ -rw-rw-r--. 2 ec2-user ec2-user   56 Aug 19 00:32 na-1-big-Summary.db
+ -rw-rw-r--. 2 ec2-user ec2-user   92 Aug 19 00:32 na-1-big-TOC.txt
+ -rw-rw-r--. 2 ec2-user ec2-user   47 Aug 19 00:35 na-2-big-CompressionInfo.db
+ -rw-rw-r--. 2 ec2-user ec2-user   41 Aug 19 00:35 na-2-big-Data.db
+ -rw-rw-r--. 2 ec2-user ec2-user   10 Aug 19 00:35 na-2-big-Digest.crc32
+ -rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 00:35 na-2-big-Filter.db
+ -rw-rw-r--. 2 ec2-user ec2-user    8 Aug 19 00:35 na-2-big-Index.db
+ -rw-rw-r--. 2 ec2-user ec2-user 4673 Aug 19 00:35 na-2-big-Statistics.db
+ -rw-rw-r--. 2 ec2-user ec2-user   56 Aug 19 00:35 na-2-big-Summary.db
+ -rw-rw-r--. 2 ec2-user ec2-user   92 Aug 19 00:35 na-2-big-TOC.txt
+ [ec2-user@ip-10-0-2-238 backups]$
+
+The ``backups`` directory for table ``cqlkeyspace/t`` is created within the ``data`` directory for the table:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ cd ./cassandra/data/data/cqlkeyspace/t-
+ d132e240c21711e9bbee19821dcea330
+ [ec2-user@ip-10-0-2-238 t-d132e240c21711e9bbee19821dcea330]$ ls -l
+ total 36
+ drwxrwxr-x. 2 ec2-user ec2-user  226 Aug 19 02:30 backups
+ -rw-rw-r--. 2 ec2-user ec2-user   47 Aug 19 02:30 na-1-big-CompressionInfo.db
+ -rw-rw-r--. 2 ec2-user ec2-user   79 Aug 19 02:30 na-1-big-Data.db
+ -rw-rw-r--. 2 ec2-user ec2-user   10 Aug 19 02:30 na-1-big-Digest.crc32
+ -rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 02:30 na-1-big-Filter.db
+ -rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 02:30 na-1-big-Index.db
+ -rw-rw-r--. 2 ec2-user ec2-user 4696 Aug 19 02:30 na-1-big-Statistics.db
+ -rw-rw-r--. 2 ec2-user ec2-user   56 Aug 19 02:30 na-1-big-Summary.db
+ -rw-rw-r--. 2 ec2-user ec2-user   92 Aug 19 02:30 na-1-big-TOC.txt
+
+The incremental backups for the other keyspaces/tables get created similarly. As an example the ``backups`` directory for table ``catalogkeyspace/magazine`` is created within the data directory:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ cd ./cassandra/data/data/catalogkeyspace/magazine-
+ 446eae30c22a11e9b1350d927649052c
+ [ec2-user@ip-10-0-2-238 magazine-446eae30c22a11e9b1350d927649052c]$ ls -l
+ total 36
+ drwxrwxr-x. 2 ec2-user ec2-user  226 Aug 19 02:38 backups
+ -rw-rw-r--. 2 ec2-user ec2-user   47 Aug 19 02:38 na-1-big-CompressionInfo.db
+ -rw-rw-r--. 2 ec2-user ec2-user   97 Aug 19 02:38 na-1-big-Data.db
+ -rw-rw-r--. 2 ec2-user ec2-user   10 Aug 19 02:38 na-1-big-Digest.crc32
+ -rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 02:38 na-1-big-Filter.db
+ -rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 02:38 na-1-big-Index.db
+ -rw-rw-r--. 2 ec2-user ec2-user 4687 Aug 19 02:38 na-1-big-Statistics.db
+ -rw-rw-r--. 2 ec2-user ec2-user   56 Aug 19 02:38 na-1-big-Summary.db
+ -rw-rw-r--. 2 ec2-user ec2-user   92 Aug 19 02:38 na-1-big-TOC.txt
+
+
+
+
+
+Restoring from  Incremental Backups and Snapshots
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The two main tools/commands for restoring a table after it has been dropped are:
+
+- sstableloader
+- nodetool import
+
+A snapshot contains essentially the same set of SSTable files as an incremental backup does with a few additional files. A snapshot includes a ``schema.cql`` file for the schema DDL to create a table in CQL. A table backup does not include DDL which must be obtained from a snapshot when restoring from an incremental backup. 
+
+  
diff --git a/src/doc/4.0-rc1/_sources/operating/bloom_filters.rst.txt b/src/doc/4.0-rc1/_sources/operating/bloom_filters.rst.txt
new file mode 100644
index 0000000..0b37c18
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/bloom_filters.rst.txt
@@ -0,0 +1,65 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Bloom Filters
+-------------
+
+In the read path, Cassandra merges data on disk (in SSTables) with data in RAM (in memtables). To avoid checking every
+SSTable data file for the partition being requested, Cassandra employs a data structure known as a bloom filter.
+
+Bloom filters are a probabilistic data structure that allows Cassandra to determine one of two possible states: - The
+data definitely does not exist in the given file, or - The data probably exists in the given file.
+
+While bloom filters can not guarantee that the data exists in a given SSTable, bloom filters can be made more accurate
+by allowing them to consume more RAM. Operators have the opportunity to tune this behavior per table by adjusting the
+the ``bloom_filter_fp_chance`` to a float between 0 and 1.
+
+The default value for ``bloom_filter_fp_chance`` is 0.1 for tables using LeveledCompactionStrategy and 0.01 for all
+other cases.
+
+Bloom filters are stored in RAM, but are stored offheap, so operators should not consider bloom filters when selecting
+the maximum heap size.  As accuracy improves (as the ``bloom_filter_fp_chance`` gets closer to 0), memory usage
+increases non-linearly - the bloom filter for ``bloom_filter_fp_chance = 0.01`` will require about three times as much
+memory as the same table with ``bloom_filter_fp_chance = 0.1``.
+
+Typical values for ``bloom_filter_fp_chance`` are usually between 0.01 (1%) to 0.1 (10%) false-positive chance, where
+Cassandra may scan an SSTable for a row, only to find that it does not exist on the disk. The parameter should be tuned
+by use case:
+
+- Users with more RAM and slower disks may benefit from setting the ``bloom_filter_fp_chance`` to a numerically lower
+  number (such as 0.01) to avoid excess IO operations
+- Users with less RAM, more dense nodes, or very fast disks may tolerate a higher ``bloom_filter_fp_chance`` in order to
+  save RAM at the expense of excess IO operations
+- In workloads that rarely read, or that only perform reads by scanning the entire data set (such as analytics
+  workloads), setting the ``bloom_filter_fp_chance`` to a much higher number is acceptable.
+
+Changing
+^^^^^^^^
+
+The bloom filter false positive chance is visible in the ``DESCRIBE TABLE`` output as the field
+``bloom_filter_fp_chance``. Operators can change the value with an ``ALTER TABLE`` statement:
+::
+
+    ALTER TABLE keyspace.table WITH bloom_filter_fp_chance=0.01
+
+Operators should be aware, however, that this change is not immediate: the bloom filter is calculated when the file is
+written, and persisted on disk as the Filter component of the SSTable. Upon issuing an ``ALTER TABLE`` statement, new
+files on disk will be written with the new ``bloom_filter_fp_chance``, but existing sstables will not be modified until
+they are compacted - if an operator needs a change to ``bloom_filter_fp_chance`` to take effect, they can trigger an
+SSTable rewrite using ``nodetool scrub`` or ``nodetool upgradesstables -a``, both of which will rebuild the sstables on
+disk, regenerating the bloom filters in the progress.
diff --git a/src/doc/4.0-rc1/_sources/operating/bulk_loading.rst.txt b/src/doc/4.0-rc1/_sources/operating/bulk_loading.rst.txt
new file mode 100644
index 0000000..850260a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/bulk_loading.rst.txt
@@ -0,0 +1,660 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+.. highlight:: none
+
+.. _bulk-loading:
+
+Bulk Loading
+==============
+
+Bulk loading of data in Apache Cassandra is supported by different tools. The data to be bulk loaded must be in the form of SSTables. Cassandra does not support loading data in any other format such as CSV, JSON, and XML directly. Bulk loading could be used to:
+
+- Restore incremental backups and snapshots. Backups and snapshots are already in the form of SSTables.
+- Load existing SSTables into another cluster, which could have a different number of nodes or replication strategy.
+- Load external data into a cluster
+
+**Note*: CSV Data can be loaded via the cqlsh COPY command but we do not recommend this for bulk loading, which typically requires many GB or TB of data.
+
+Tools for Bulk Loading
+^^^^^^^^^^^^^^^^^^^^^^
+
+Cassandra provides two commands or tools for bulk loading data. These are:
+
+- Cassandra Bulk loader, also called ``sstableloader``
+- The ``nodetool import`` command
+
+The ``sstableloader`` and ``nodetool import`` are accessible if the Cassandra installation ``bin`` directory is in the ``PATH`` environment variable.  Or these may be accessed directly from the ``bin`` directory. We shall discuss each of these next. We shall use the example or sample keyspaces and tables created in the Backups section.
+
+Using sstableloader
+^^^^^^^^^^^^^^^^^^^
+
+The ``sstableloader`` is the main tool for bulk uploading data. The ``sstableloader`` streams SSTable data files to a running cluster. The ``sstableloader`` loads data conforming to the replication strategy and replication factor. The table to upload data to does need not to be empty.
+
+The only requirements to run ``sstableloader`` are:
+
+1. One or more comma separated initial hosts to connect to and get ring information.
+2. A directory path for the SSTables to load.
+
+Its usage is as follows.
+
+::
+
+ sstableloader [options] <dir_path>
+
+Sstableloader bulk loads the SSTables found in the directory ``<dir_path>`` to the configured cluster. The   ``<dir_path>`` is used as the target *keyspace/table* name. As an example, to load an SSTable named
+``Standard1-g-1-Data.db`` into ``Keyspace1/Standard1``, you will need to have the
+files ``Standard1-g-1-Data.db`` and ``Standard1-g-1-Index.db`` in a directory ``/path/to/Keyspace1/Standard1/``.
+
+Sstableloader Option to accept Target keyspace name
+****************************************************
+Often as part of a backup strategy some Cassandra DBAs store an entire data directory. When corruption in data is found then they would like to restore data in the same cluster (for large clusters 200 nodes) but with different keyspace name.
+
+Currently ``sstableloader`` derives keyspace name from the folder structure. As  an option to specify target keyspace name as part of ``sstableloader``, version 4.0 adds support for the ``--target-keyspace``  option (`CASSANDRA-13884
+<https://issues.apache.org/jira/browse/CASSANDRA-13884>`_).
+
+The supported options are as follows from which only ``-d,--nodes <initial hosts>``  is required.
+
+::
+
+ -alg,--ssl-alg <ALGORITHM>                                   Client SSL: algorithm
+
+ -ap,--auth-provider <auth provider>                          Custom
+                                                              AuthProvider class name for
+                                                              cassandra authentication
+ -ciphers,--ssl-ciphers <CIPHER-SUITES>                       Client SSL:
+                                                              comma-separated list of
+                                                              encryption suites to use
+ -cph,--connections-per-host <connectionsPerHost>             Number of
+                                                              concurrent connections-per-host.
+ -d,--nodes <initial hosts>                                   Required.
+                                                              Try to connect to these hosts (comma separated) initially for ring information
+
+ -f,--conf-path <path to config file>                         cassandra.yaml file path for streaming throughput and client/server SSL.
+
+ -h,--help                                                    Display this help message
+
+ -i,--ignore <NODES>                                          Don't stream to this (comma separated) list of nodes
+
+ -idct,--inter-dc-throttle <inter-dc-throttle>                Inter-datacenter throttle speed in Mbits (default unlimited)
+
+ -k,--target-keyspace <target keyspace name>                  Target
+                                                              keyspace name
+ -ks,--keystore <KEYSTORE>                                    Client SSL:
+                                                              full path to keystore
+ -kspw,--keystore-password <KEYSTORE-PASSWORD>                Client SSL:
+                                                              password of the keystore
+ --no-progress                                                Don't
+                                                              display progress
+ -p,--port <native transport port>                            Port used
+                                                              for native connection (default 9042)
+ -prtcl,--ssl-protocol <PROTOCOL>                             Client SSL:
+                                                              connections protocol to use (default: TLS)
+ -pw,--password <password>                                    Password for
+                                                              cassandra authentication
+ -sp,--storage-port <storage port>                            Port used
+                                                              for internode communication (default 7000)
+ -spd,--server-port-discovery <allow server port discovery>   Use ports
+                                                              published by server to decide how to connect. With SSL requires StartTLS
+                                                              to be used.
+ -ssp,--ssl-storage-port <ssl storage port>                   Port used
+                                                              for TLS internode communication (default 7001)
+ -st,--store-type <STORE-TYPE>                                Client SSL:
+                                                              type of store
+ -t,--throttle <throttle>                                     Throttle
+                                                              speed in Mbits (default unlimited)
+ -ts,--truststore <TRUSTSTORE>                                Client SSL:
+                                                              full path to truststore
+ -tspw,--truststore-password <TRUSTSTORE-PASSWORD>            Client SSL:
+                                                              Password of the truststore
+ -u,--username <username>                                     Username for
+                                                              cassandra authentication
+ -v,--verbose                                                 verbose
+                                                              output
+
+The ``cassandra.yaml`` file could be provided  on the command-line with ``-f`` option to set up streaming throughput, client and server encryption options. Only ``stream_throughput_outbound_megabits_per_sec``, ``server_encryption_options`` and ``client_encryption_options`` are read from yaml. You can override options read from ``cassandra.yaml`` with corresponding command line options.
+
+A sstableloader Demo
+********************
+We shall demonstrate using ``sstableloader`` by uploading incremental backup data for table ``catalogkeyspace.magazine``.  We shall also use a snapshot of the same table to bulk upload in a different run of  ``sstableloader``.  The backups and snapshots for the ``catalogkeyspace.magazine`` table are listed as follows.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ cd ./cassandra/data/data/catalogkeyspace/magazine-
+ 446eae30c22a11e9b1350d927649052c
+ [ec2-user@ip-10-0-2-238 magazine-446eae30c22a11e9b1350d927649052c]$ ls -l
+ total 0
+ drwxrwxr-x. 2 ec2-user ec2-user 226 Aug 19 02:38 backups
+ drwxrwxr-x. 4 ec2-user ec2-user  40 Aug 19 02:45 snapshots
+
+The directory path structure of SSTables to be uploaded using ``sstableloader`` is used as the  target keyspace/table.
+
+We could have directly uploaded from the ``backups`` and ``snapshots`` directories respectively if the directory structure were in the format used by ``sstableloader``. But the directory path of backups and snapshots for SSTables  is ``/catalogkeyspace/magazine-446eae30c22a11e9b1350d927649052c/backups`` and ``/catalogkeyspace/magazine-446eae30c22a11e9b1350d927649052c/snapshots`` respectively, which cannot be used to upload SSTables to ``catalogkeyspace.magazine`` table. The directory path structure must be ``/catalogkeyspace/magazine/`` to use ``sstableloader``. We need to create a new directory structure to upload SSTables with ``sstableloader`` which is typical when using ``sstableloader``. Create a directory structure ``/catalogkeyspace/magazine`` and set its permissions.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ sudo mkdir -p /catalogkeyspace/magazine
+ [ec2-user@ip-10-0-2-238 ~]$ sudo chmod -R 777 /catalogkeyspace/magazine
+
+Bulk Loading from an Incremental Backup
++++++++++++++++++++++++++++++++++++++++
+An incremental backup does not include the DDL for a table. The table must already exist. If the table was dropped it may be created using the ``schema.cql`` generated with every snapshot of a table. As we shall be using ``sstableloader`` to load SSTables to the ``magazine`` table, the table must exist prior to running ``sstableloader``. The table does not need to be empty but we have used an empty table as indicated by a CQL query:
+
+::
+
+ cqlsh:catalogkeyspace> SELECT * FROM magazine;
+
+ id | name | publisher
+ ----+------+-----------
+
+ (0 rows)
+
+After the table to upload has been created copy the SSTable files from the ``backups`` directory to the ``/catalogkeyspace/magazine/`` directory that we created.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ sudo cp ./cassandra/data/data/catalogkeyspace/magazine-
+ 446eae30c22a11e9b1350d927649052c/backups/* /catalogkeyspace/magazine/
+
+Run the ``sstableloader`` to upload SSTables from the ``/catalogkeyspace/magazine/`` directory.
+
+::
+
+ sstableloader --nodes 10.0.2.238  /catalogkeyspace/magazine/
+
+The output from the ``sstableloader`` command should be similar to the listed:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ sstableloader --nodes 10.0.2.238  /catalogkeyspace/magazine/
+ Opening SSTables and calculating sections to stream
+ Streaming relevant part of /catalogkeyspace/magazine/na-1-big-Data.db
+ /catalogkeyspace/magazine/na-2-big-Data.db  to [35.173.233.153:7000, 10.0.2.238:7000,
+ 54.158.45.75:7000]
+ progress: [35.173.233.153:7000]0:1/2 88 % total: 88% 0.018KiB/s (avg: 0.018KiB/s)
+ progress: [35.173.233.153:7000]0:2/2 176% total: 176% 33.807KiB/s (avg: 0.036KiB/s)
+ progress: [35.173.233.153:7000]0:2/2 176% total: 176% 0.000KiB/s (avg: 0.029KiB/s)
+ progress: [35.173.233.153:7000]0:2/2 176% [10.0.2.238:7000]0:1/2 39 % total: 81% 0.115KiB/s
+ (avg: 0.024KiB/s)
+ progress: [35.173.233.153:7000]0:2/2 176% [10.0.2.238:7000]0:2/2 78 % total: 108%
+ 97.683KiB/s (avg: 0.033KiB/s)
+ progress: [35.173.233.153:7000]0:2/2 176% [10.0.2.238:7000]0:2/2 78 %
+ [54.158.45.75:7000]0:1/2 39 % total: 80% 0.233KiB/s (avg: 0.040KiB/s)
+ progress: [35.173.233.153:7000]0:2/2 176% [10.0.2.238:7000]0:2/2 78 %
+ [54.158.45.75:7000]0:2/2 78 % total: 96% 88.522KiB/s (avg: 0.049KiB/s)
+ progress: [35.173.233.153:7000]0:2/2 176% [10.0.2.238:7000]0:2/2 78 %
+ [54.158.45.75:7000]0:2/2 78 % total: 96% 0.000KiB/s (avg: 0.045KiB/s)
+ progress: [35.173.233.153:7000]0:2/2 176% [10.0.2.238:7000]0:2/2 78 %
+ [54.158.45.75:7000]0:2/2 78 % total: 96% 0.000KiB/s (avg: 0.044KiB/s)
+
+After the ``sstableloader`` has run query the ``magazine`` table and the loaded table should get listed when a query is run.
+
+::
+
+ cqlsh:catalogkeyspace> SELECT * FROM magazine;
+
+ id | name                      | publisher
+ ----+---------------------------+------------------
+  1 |        Couchbase Magazine |        Couchbase
+  0 | Apache Cassandra Magazine | Apache Cassandra
+
+ (2 rows)
+ cqlsh:catalogkeyspace>
+
+Bulk Loading from a Snapshot
++++++++++++++++++++++++++++++
+In this section we shall demonstrate restoring a snapshot of the ``magazine`` table to the ``magazine`` table.  As we used the same table to restore data from a backup the directory structure required by ``sstableloader`` should already exist.  If the directory structure needed to load SSTables to ``catalogkeyspace.magazine`` does not exist create the directories and set their permissions.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ sudo mkdir -p /catalogkeyspace/magazine
+ [ec2-user@ip-10-0-2-238 ~]$ sudo chmod -R 777 /catalogkeyspace/magazine
+
+As we shall be copying the snapshot  files to the directory remove any files that may be in the directory.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ sudo rm /catalogkeyspace/magazine/*
+ [ec2-user@ip-10-0-2-238 ~]$ cd /catalogkeyspace/magazine/
+ [ec2-user@ip-10-0-2-238 magazine]$ ls -l
+ total 0
+
+
+Copy the snapshot files to the ``/catalogkeyspace/magazine`` directory.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ sudo cp ./cassandra/data/data/catalogkeyspace/magazine-
+ 446eae30c22a11e9b1350d927649052c/snapshots/magazine/* /catalogkeyspace/magazine
+
+List the files in the ``/catalogkeyspace/magazine`` directory and a ``schema.cql`` should also get listed.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ cd /catalogkeyspace/magazine
+ [ec2-user@ip-10-0-2-238 magazine]$ ls -l
+ total 44
+ -rw-r--r--. 1 root root   31 Aug 19 04:13 manifest.json
+ -rw-r--r--. 1 root root   47 Aug 19 04:13 na-1-big-CompressionInfo.db
+ -rw-r--r--. 1 root root   97 Aug 19 04:13 na-1-big-Data.db
+ -rw-r--r--. 1 root root   10 Aug 19 04:13 na-1-big-Digest.crc32
+ -rw-r--r--. 1 root root   16 Aug 19 04:13 na-1-big-Filter.db
+ -rw-r--r--. 1 root root   16 Aug 19 04:13 na-1-big-Index.db
+ -rw-r--r--. 1 root root 4687 Aug 19 04:13 na-1-big-Statistics.db
+ -rw-r--r--. 1 root root   56 Aug 19 04:13 na-1-big-Summary.db
+ -rw-r--r--. 1 root root   92 Aug 19 04:13 na-1-big-TOC.txt
+ -rw-r--r--. 1 root root  815 Aug 19 04:13 schema.cql
+
+Alternatively create symlinks to the snapshot folder instead of copying the data, something like:
+
+::
+
+  mkdir keyspace_name
+  ln -s _path_to_snapshot_folder keyspace_name/table_name
+
+If the ``magazine`` table was dropped run the DDL in the ``schema.cql`` to create the table.  Run the ``sstableloader`` with the following command.
+
+::
+
+ sstableloader --nodes 10.0.2.238  /catalogkeyspace/magazine/
+
+As the output from the command indicates SSTables get streamed to the cluster.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ sstableloader --nodes 10.0.2.238  /catalogkeyspace/magazine/
+
+ Established connection to initial hosts
+ Opening SSTables and calculating sections to stream
+ Streaming relevant part of /catalogkeyspace/magazine/na-1-big-Data.db  to
+ [35.173.233.153:7000, 10.0.2.238:7000, 54.158.45.75:7000]
+ progress: [35.173.233.153:7000]0:1/1 176% total: 176% 0.017KiB/s (avg: 0.017KiB/s)
+ progress: [35.173.233.153:7000]0:1/1 176% total: 176% 0.000KiB/s (avg: 0.014KiB/s)
+ progress: [35.173.233.153:7000]0:1/1 176% [10.0.2.238:7000]0:1/1 78 % total: 108% 0.115KiB/s
+ (avg: 0.017KiB/s)
+ progress: [35.173.233.153:7000]0:1/1 176% [10.0.2.238:7000]0:1/1 78 %
+ [54.158.45.75:7000]0:1/1 78 % total: 96% 0.232KiB/s (avg: 0.024KiB/s)
+ progress: [35.173.233.153:7000]0:1/1 176% [10.0.2.238:7000]0:1/1 78 %
+ [54.158.45.75:7000]0:1/1 78 % total: 96% 0.000KiB/s (avg: 0.022KiB/s)
+ progress: [35.173.233.153:7000]0:1/1 176% [10.0.2.238:7000]0:1/1 78 %
+ [54.158.45.75:7000]0:1/1 78 % total: 96% 0.000KiB/s (avg: 0.021KiB/s)
+
+Some other requirements of ``sstableloader`` that should be kept into consideration are:
+
+- The SSTables to be loaded must be compatible with  the Cassandra version being loaded into.
+- Repairing tables that have been loaded into a different cluster does not repair the source tables.
+- Sstableloader makes use of port 7000 for internode communication.
+- Before restoring incremental backups run ``nodetool flush`` to backup any data in memtables
+
+Using nodetool import
+^^^^^^^^^^^^^^^^^^^^^
+In this section we shall import SSTables into a table using the ``nodetool import`` command. The ``nodetool refresh`` command is deprecated, and it is recommended to use ``nodetool import`` instead. The ``nodetool refresh`` does not have an option to load new SSTables from a separate directory which the ``nodetool import`` does.
+
+The command usage is as follows.
+
+::
+
+         nodetool [(-h <host> | --host <host>)] [(-p <port> | --port <port>)]
+                [(-pp | --print-port)] [(-pw <password> | --password <password>)]
+                [(-pwf <passwordFilePath> | --password-file <passwordFilePath>)]
+                [(-u <username> | --username <username>)] import
+                [(-c | --no-invalidate-caches)] [(-e | --extended-verify)]
+                [(-l | --keep-level)] [(-q | --quick)] [(-r | --keep-repaired)]
+                [(-t | --no-tokens)] [(-v | --no-verify)] [--] <keyspace> <table>
+                <directory> ...
+
+The arguments ``keyspace``, ``table`` name and ``directory`` to import SSTables from are required.
+
+The supported options are as follows.
+
+::
+
+        -c, --no-invalidate-caches
+            Don't invalidate the row cache when importing
+
+        -e, --extended-verify
+            Run an extended verify, verifying all values in the new SSTables
+
+        -h <host>, --host <host>
+            Node hostname or ip address
+
+        -l, --keep-level
+            Keep the level on the new SSTables
+
+        -p <port>, --port <port>
+            Remote jmx agent port number
+
+        -pp, --print-port
+            Operate in 4.0 mode with hosts disambiguated by port number
+
+        -pw <password>, --password <password>
+            Remote jmx agent password
+
+        -pwf <passwordFilePath>, --password-file <passwordFilePath>
+            Path to the JMX password file
+
+        -q, --quick
+            Do a quick import without verifying SSTables, clearing row cache or
+            checking in which data directory to put the file
+
+        -r, --keep-repaired
+            Keep any repaired information from the SSTables
+
+        -t, --no-tokens
+            Don't verify that all tokens in the new SSTable are owned by the
+            current node
+
+        -u <username>, --username <username>
+            Remote jmx agent username
+
+        -v, --no-verify
+            Don't verify new SSTables
+
+        --
+            This option can be used to separate command-line options from the
+            list of argument, (useful when arguments might be mistaken for
+            command-line options
+
+As the keyspace and table are specified on the command line  ``nodetool import`` does not have the same requirement that ``sstableloader`` does, which is to have the SSTables in a specific directory path. When importing snapshots or incremental backups with ``nodetool import`` the SSTables don’t need to be copied to another directory.
+
+Importing Data from an Incremental Backup
+*****************************************
+
+In this section we shall demonstrate using ``nodetool import`` to import SSTables from an incremental backup.  We shall use the example table ``cqlkeyspace.t``. Drop table ``t`` as we are demonstrating to   restore the table.
+
+::
+
+ cqlsh:cqlkeyspace> DROP table t;
+
+An incremental backup for a table does not include the schema definition for the table. If the schema definition is not kept as a separate backup,  the ``schema.cql`` from a backup of the table may be used to create the table as follows.
+
+::
+
+ cqlsh:cqlkeyspace> CREATE TABLE IF NOT EXISTS cqlkeyspace.t (
+               ...         id int PRIMARY KEY,
+               ...         k int,
+               ...         v text)
+               ...         WITH ID = d132e240-c217-11e9-bbee-19821dcea330
+               ...         AND bloom_filter_fp_chance = 0.01
+               ...         AND crc_check_chance = 1.0
+               ...         AND default_time_to_live = 0
+               ...         AND gc_grace_seconds = 864000
+               ...         AND min_index_interval = 128
+               ...         AND max_index_interval = 2048
+               ...         AND memtable_flush_period_in_ms = 0
+               ...         AND speculative_retry = '99p'
+               ...         AND additional_write_policy = '99p'
+               ...         AND comment = ''
+               ...         AND caching = { 'keys': 'ALL', 'rows_per_partition': 'NONE' }
+               ...         AND compaction = { 'max_threshold': '32', 'min_threshold': '4',
+ 'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy' }
+               ...         AND compression = { 'chunk_length_in_kb': '16', 'class':
+ 'org.apache.cassandra.io.compress.LZ4Compressor' }
+               ...         AND cdc = false
+               ...         AND extensions = {  };
+
+Initially the table could be empty, but does not have to be.
+
+::
+
+ cqlsh:cqlkeyspace> SELECT * FROM t;
+
+ id | k | v
+ ----+---+---
+
+ (0 rows)
+
+Run the ``nodetool import`` command by providing the keyspace, table and the backups directory. We don’t need to copy the table backups to another directory to run  ``nodetool import`` as we had to when using ``sstableloader``.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool import -- cqlkeyspace t
+ ./cassandra/data/data/cqlkeyspace/t-d132e240c21711e9bbee19821dcea330/backups
+ [ec2-user@ip-10-0-2-238 ~]$
+
+The SSTables get imported into the table. Run a query in cqlsh to list the data imported.
+
+::
+
+ cqlsh:cqlkeyspace> SELECT * FROM t;
+
+ id | k | v
+ ----+---+------
+  1 | 1 | val1
+  0 | 0 | val0
+
+
+Importing Data from a Snapshot
+********************************
+Importing SSTables from a snapshot with the ``nodetool import`` command is similar to importing SSTables from an incremental backup. To demonstrate we shall import a snapshot for table ``catalogkeyspace.journal``.  Drop the table as we are demonstrating to restore the table from a snapshot.
+
+::
+
+ cqlsh:cqlkeyspace> use CATALOGKEYSPACE;
+ cqlsh:catalogkeyspace> DROP TABLE journal;
+
+We shall use the ``catalog-ks`` snapshot for the ``journal`` table. List the files in the snapshot. The snapshot includes a ``schema.cql``, which is the schema definition for the ``journal`` table.
+
+::
+
+ [ec2-user@ip-10-0-2-238 catalog-ks]$ ls -l
+ total 44
+ -rw-rw-r--. 1 ec2-user ec2-user   31 Aug 19 02:44 manifest.json
+ -rw-rw-r--. 3 ec2-user ec2-user   47 Aug 19 02:38 na-1-big-CompressionInfo.db
+ -rw-rw-r--. 3 ec2-user ec2-user   97 Aug 19 02:38 na-1-big-Data.db
+ -rw-rw-r--. 3 ec2-user ec2-user   10 Aug 19 02:38 na-1-big-Digest.crc32
+ -rw-rw-r--. 3 ec2-user ec2-user   16 Aug 19 02:38 na-1-big-Filter.db
+ -rw-rw-r--. 3 ec2-user ec2-user   16 Aug 19 02:38 na-1-big-Index.db
+ -rw-rw-r--. 3 ec2-user ec2-user 4687 Aug 19 02:38 na-1-big-Statistics.db
+ -rw-rw-r--. 3 ec2-user ec2-user   56 Aug 19 02:38 na-1-big-Summary.db
+ -rw-rw-r--. 3 ec2-user ec2-user   92 Aug 19 02:38 na-1-big-TOC.txt
+ -rw-rw-r--. 1 ec2-user ec2-user  814 Aug 19 02:44 schema.cql
+
+Copy the DDL from the ``schema.cql`` and run in cqlsh to create the ``catalogkeyspace.journal`` table.
+
+::
+
+ cqlsh:catalogkeyspace> CREATE TABLE IF NOT EXISTS catalogkeyspace.journal (
+                   ...         id int PRIMARY KEY,
+                   ...         name text,
+                   ...         publisher text)
+                   ...         WITH ID = 296a2d30-c22a-11e9-b135-0d927649052c
+                   ...         AND bloom_filter_fp_chance = 0.01
+                   ...         AND crc_check_chance = 1.0
+                   ...         AND default_time_to_live = 0
+                   ...         AND gc_grace_seconds = 864000
+                   ...         AND min_index_interval = 128
+                   ...         AND max_index_interval = 2048
+                   ...         AND memtable_flush_period_in_ms = 0
+                   ...         AND speculative_retry = '99p'
+                   ...         AND additional_write_policy = '99p'
+                   ...         AND comment = ''
+                   ...         AND caching = { 'keys': 'ALL', 'rows_per_partition': 'NONE' }
+                   ...         AND compaction = { 'min_threshold': '4', 'max_threshold':
+ '32', 'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy' }
+                   ...         AND compression = { 'chunk_length_in_kb': '16', 'class':
+ 'org.apache.cassandra.io.compress.LZ4Compressor' }
+                   ...         AND cdc = false
+                   ...         AND extensions = {  };
+
+
+Run the ``nodetool import`` command to import the SSTables for the snapshot.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool import -- catalogkeyspace journal
+ ./cassandra/data/data/catalogkeyspace/journal-
+ 296a2d30c22a11e9b1350d927649052c/snapshots/catalog-ks/
+ [ec2-user@ip-10-0-2-238 ~]$
+
+Subsequently run a CQL query on the ``journal`` table and the data imported gets listed.
+
+::
+
+ cqlsh:catalogkeyspace>
+ cqlsh:catalogkeyspace> SELECT * FROM journal;
+
+ id | name                      | publisher
+ ----+---------------------------+------------------
+  1 |        Couchbase Magazine |        Couchbase
+  0 | Apache Cassandra Magazine | Apache Cassandra
+
+ (2 rows)
+ cqlsh:catalogkeyspace>
+
+
+Bulk Loading External Data
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Bulk loading external data directly is not supported by any of the tools we have discussed which include ``sstableloader`` and ``nodetool import``.  The ``sstableloader`` and ``nodetool import`` require data to be in the form of SSTables.  Apache Cassandra supports a Java API for generating SSTables from input data. Subsequently the ``sstableloader`` or ``nodetool import`` could be used to bulk load the SSTables. Next, we shall discuss the ``org.apache.cassandra.io.sstable.CQLSSTableWriter`` Java class for generating SSTables.
+
+Generating SSTables with CQLSSTableWriter Java API
+***************************************************
+To generate SSTables using the ``CQLSSTableWriter`` class the following need to be supplied at the least.
+
+- An output directory to generate the SSTable in
+- The schema for the SSTable
+- A prepared insert statement
+- A partitioner
+
+The output directory must already have been created. Create a directory (``/sstables`` as an example) and set its permissions.
+
+::
+
+ sudo mkdir /sstables
+ sudo chmod  777 -R /sstables
+
+Next, we shall discuss To use ``CQLSSTableWriter`` could be used in a Java application. Create a Java constant for the output directory.
+
+::
+
+ public static final String OUTPUT_DIR = "./sstables";
+
+``CQLSSTableWriter`` Java API has the provision to create a user defined type. Create a new type to store ``int`` data:
+
+::
+
+ String type = "CREATE TYPE CQLKeyspace.intType (a int, b int)";
+ // Define a String variable for the SSTable schema.
+ String schema = "CREATE TABLE CQLKeyspace.t ("
+                  + "  id int PRIMARY KEY,"
+                  + "  k int,"
+                  + "  v1 text,"
+                  + "  v2 intType,"
+                  + ")";
+
+Define a ``String`` variable for the prepared insert statement to use:
+
+::
+
+ String insertStmt = "INSERT INTO CQLKeyspace.t (id, k, v1, v2) VALUES (?, ?, ?, ?)";
+
+The partitioner to use does not need to be set as the default partitioner ``Murmur3Partitioner`` is used.
+
+All these variables or settings are used by the builder class ``CQLSSTableWriter.Builder`` to create a ``CQLSSTableWriter`` object.
+
+Create a File object for the output directory.
+
+::
+
+ File outputDir = new File(OUTPUT_DIR + File.separator + "CQLKeyspace" + File.separator + "t");
+
+Next, obtain a ``CQLSSTableWriter.Builder`` object using ``static`` method ``CQLSSTableWriter.builder()``. Set the output
+directory ``File`` object, user defined type, SSTable schema, buffer size,  prepared insert statement, and optionally any of the other builder options, and invoke the ``build()`` method to create a ``CQLSSTableWriter`` object:
+
+::
+
+ CQLSSTableWriter writer = CQLSSTableWriter.builder()
+                                              .inDirectory(outputDir)
+                                              .withType(type)
+                                              .forTable(schema)
+                                              .withBufferSizeInMB(256)
+                                              .using(insertStmt).build();
+
+Next, set the SSTable data. If any user define types are used obtain a ``UserType`` object for these:
+
+::
+
+ UserType userType = writer.getUDType("intType");
+
+Add data rows for the resulting SSTable.
+
+::
+
+ writer.addRow(0, 0, "val0", userType.newValue().setInt("a", 0).setInt("b", 0));
+    writer.addRow(1, 1, "val1", userType.newValue().setInt("a", 1).setInt("b", 1));
+    writer.addRow(2, 2, "val2", userType.newValue().setInt("a", 2).setInt("b", 2));
+
+Close the writer, finalizing the SSTable.
+
+::
+
+    writer.close();
+
+All the public methods the ``CQLSSTableWriter`` class provides including some other methods that are not discussed in the preceding example are as follows.
+
+=====================================================================   ============
+Method                                                                  Description
+=====================================================================   ============
+addRow(java.util.List<java.lang.Object> values)                         Adds a new row to the writer. Returns a CQLSSTableWriter object. Each provided value type should correspond to the types of the CQL column the value is for. The correspondence between java type and CQL type is the same one than the one documented at www.datastax.com/drivers/java/2.0/apidocs/com/datastax/driver/core/DataType.Name.html#asJavaC lass().
+addRow(java.util.Map<java.lang.String,java.lang.Object> values)         Adds a new row to the writer. Returns a CQLSSTableWriter object. This is equivalent to the other addRow methods, but takes a map whose keys are the names of the columns to add instead of taking a list of the values in the order of the insert statement used during construction of this SSTable writer. The column names in the map keys must be in lowercase unless the declared column name is a case-sensitive quoted identifier in which case the map key must use the exact case of the column. The values parameter is a map of column name to column values representing the new row to add. If a column is not included in the map, it's value will be null. If the map contains keys that do not correspond to one of the columns of the insert statement used when creating this SSTable writer, the corresponding value is ignored.
+addRow(java.lang.Object... values)                                      Adds a new row to the writer. Returns a CQLSSTableWriter object.
+CQLSSTableWriter.builder()                                              Returns a new builder for a CQLSSTableWriter.
+close()                                                                 Closes the writer.
+rawAddRow(java.nio.ByteBuffer... values)                                Adds a new row to the writer given already serialized binary values.  Returns a CQLSSTableWriter object. The row values must correspond  to the bind variables of the insertion statement used when creating by this SSTable writer.
+rawAddRow(java.util.List<java.nio.ByteBuffer> values)                   Adds a new row to the writer given already serialized binary values.  Returns a CQLSSTableWriter object. The row values must correspond  to the bind variables of the insertion statement used when creating by this SSTable writer. |
+rawAddRow(java.util.Map<java.lang.String, java.nio.ByteBuffer> values)  Adds a new row to the writer given already serialized binary values.  Returns a CQLSSTableWriter object. The row values must correspond  to the bind variables of the insertion statement used when creating by this SSTable  writer. |
+getUDType(String dataType)                                              Returns the User Defined type used in this SSTable Writer that can be used to create UDTValue instances.
+=====================================================================   ============
+
+
+All the public  methods the  ``CQLSSTableWriter.Builder`` class provides including some other methods that are not discussed in the preceding example are as follows.
+
+============================================   ============
+Method                                         Description
+============================================   ============
+inDirectory(String directory)                  The directory where to write the SSTables.  This is a mandatory option.  The directory to use should already exist and be writable.
+inDirectory(File directory)                    The directory where to write the SSTables.  This is a mandatory option.  The directory to use should already exist and be writable.
+forTable(String schema)                        The schema (CREATE TABLE statement) for the table for which SSTable is to be created.  The
+                                               provided CREATE TABLE statement must use a fully-qualified table name, one that includes the
+                                               keyspace name. This is a mandatory option.
+
+withPartitioner(IPartitioner partitioner)      The partitioner to use. By default,  Murmur3Partitioner will be used. If this is not the
+                                               partitioner used by the cluster for which the SSTables are created, the correct partitioner
+                                               needs to be provided.
+
+using(String insert)                           The INSERT or UPDATE statement defining the order of the values to add for a given CQL row.
+                                               The provided INSERT statement must use a fully-qualified table name, one that includes the
+                                               keyspace name. Moreover, said statement must use bind variables since these variables will
+                                               be bound to values by the resulting SSTable writer. This is a mandatory option.
+
+withBufferSizeInMB(int size)                   The size of the buffer to use. This defines how much data will be buffered before being
+                                               written as a new SSTable. This corresponds roughly to the data size that will have the
+                                               created SSTable. The default is 128MB, which should be reasonable for a 1GB heap. If
+                                               OutOfMemory exception gets generated while using the SSTable writer, should lower this
+                                               value.
+
+sorted()                                       Creates a CQLSSTableWriter that expects sorted inputs. If this option is used, the resulting
+                                               SSTable writer will expect rows to be added in SSTable sorted order (and an exception will
+                                               be thrown if that is not the case during row insertion). The SSTable sorted order means that
+                                               rows are added such that their partition keys respect the partitioner order. This option
+                                               should only be used if the rows can be provided in order, which is rarely the case. If the
+                                               rows can be provided in order however, using this sorted might be more efficient. If this
+                                               option is used, some option like withBufferSizeInMB will be ignored.
+
+build()                                        Builds a CQLSSTableWriter object.
+
+============================================   ============
+
diff --git a/src/doc/4.0-rc1/_sources/operating/cdc.rst.txt b/src/doc/4.0-rc1/_sources/operating/cdc.rst.txt
new file mode 100644
index 0000000..a7177b5
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/cdc.rst.txt
@@ -0,0 +1,96 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Change Data Capture
+-------------------
+
+Overview
+^^^^^^^^
+
+Change data capture (CDC) provides a mechanism to flag specific tables for archival as well as rejecting writes to those
+tables once a configurable size-on-disk for the CDC log is reached. An operator can enable CDC on a table by setting the
+table property ``cdc=true`` (either when :ref:`creating the table <create-table-statement>` or
+:ref:`altering it <alter-table-statement>`). Upon CommitLogSegment creation, a hard-link to the segment is created in the
+directory specified in ``cassandra.yaml``. On segment fsync to disk, if CDC data is present anywhere in the segment a
+<segment_name>_cdc.idx file is also created with the integer offset of how much data in the original segment is persisted
+to disk. Upon final segment flush, a second line with the human-readable word "COMPLETED" will be added to the _cdc.idx
+file indicating that Cassandra has completed all processing on the file.
+
+We we use an index file rather than just encouraging clients to parse the log realtime off a memory mapped handle as data
+can be reflected in a kernel buffer that is not yet persisted to disk. Parsing only up to the listed offset in the _cdc.idx
+file will ensure that you only parse CDC data for data that is durable.
+
+A threshold of total disk space allowed is specified in the yaml at which time newly allocated CommitLogSegments will
+not allow CDC data until a consumer parses and removes files from the specified cdc_raw directory.
+
+Configuration
+^^^^^^^^^^^^^
+
+Enabling or disabling CDC on a table
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+CDC is enable or disable through the `cdc` table property, for instance::
+
+    CREATE TABLE foo (a int, b text, PRIMARY KEY(a)) WITH cdc=true;
+
+    ALTER TABLE foo WITH cdc=true;
+
+    ALTER TABLE foo WITH cdc=false;
+
+cassandra.yaml parameters
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following `cassandra.yaml` are available for CDC:
+
+``cdc_enabled`` (default: false)
+   Enable or disable CDC operations node-wide.
+``cdc_raw_directory`` (default: ``$CASSANDRA_HOME/data/cdc_raw``)
+   Destination for CommitLogSegments to be moved after all corresponding memtables are flushed.
+``cdc_free_space_in_mb``: (default: min of 4096 and 1/8th volume space)
+   Calculated as sum of all active CommitLogSegments that permit CDC + all flushed CDC segments in
+   ``cdc_raw_directory``.
+``cdc_free_space_check_interval_ms`` (default: 250)
+   When at capacity, we limit the frequency with which we re-calculate the space taken up by ``cdc_raw_directory`` to
+   prevent burning CPU cycles unnecessarily. Default is to check 4 times per second.
+
+.. _reading-commitlogsegments:
+
+Reading CommitLogSegments
+^^^^^^^^^^^^^^^^^^^^^^^^^
+Use a `CommitLogReader.java
+<https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java>`__.
+Usage is `fairly straightforward
+<https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java#L132-L140>`__
+with a `variety of signatures
+<https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java#L71-L103>`__
+available for use. In order to handle mutations read from disk, implement `CommitLogReadHandler
+<https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReadHandler.java>`__.
+
+Warnings
+^^^^^^^^
+
+**Do not enable CDC without some kind of consumption process in-place.**
+
+If CDC is enabled on a node and then on a table, the ``cdc_free_space_in_mb`` will fill up and then writes to
+CDC-enabled tables will be rejected unless some consumption process is in place.
+
+Further Reading
+^^^^^^^^^^^^^^^
+
+- `JIRA ticket <https://issues.apache.org/jira/browse/CASSANDRA-8844>`__
+- `JIRA ticket <https://issues.apache.org/jira/browse/CASSANDRA-12148>`__
diff --git a/src/doc/4.0-rc1/_sources/operating/compaction/index.rst.txt b/src/doc/4.0-rc1/_sources/operating/compaction/index.rst.txt
new file mode 100644
index 0000000..ea505dd
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/compaction/index.rst.txt
@@ -0,0 +1,301 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+.. _compaction:
+
+Compaction
+----------
+
+Strategies
+^^^^^^^^^^
+
+Picking the right compaction strategy for your workload will ensure the best performance for both querying and for compaction itself.
+
+:ref:`Size Tiered Compaction Strategy <stcs>`
+    The default compaction strategy.  Useful as a fallback when other strategies don't fit the workload.  Most useful for
+    non pure time series workloads with spinning disks, or when the I/O from :ref:`LCS <lcs>` is too high.
+
+
+:ref:`Leveled Compaction Strategy <lcs>`
+    Leveled Compaction Strategy (LCS) is optimized for read heavy workloads, or workloads with lots of updates and deletes.  It is not a good choice for immutable time series data.
+
+
+:ref:`Time Window Compaction Strategy <twcs>`
+    Time Window Compaction Strategy is designed for TTL'ed, mostly immutable time series data.
+
+
+
+Types of compaction
+^^^^^^^^^^^^^^^^^^^
+
+The concept of compaction is used for different kinds of operations in Cassandra, the common thing about these
+operations is that it takes one or more sstables and output new sstables. The types of compactions are;
+
+Minor compaction
+    triggered automatically in Cassandra.
+Major compaction
+    a user executes a compaction over all sstables on the node.
+User defined compaction
+    a user triggers a compaction on a given set of sstables.
+Scrub
+    try to fix any broken sstables. This can actually remove valid data if that data is corrupted, if that happens you
+    will need to run a full repair on the node.
+Upgradesstables
+    upgrade sstables to the latest version. Run this after upgrading to a new major version.
+Cleanup
+    remove any ranges this node does not own anymore, typically triggered on neighbouring nodes after a node has been
+    bootstrapped since that node will take ownership of some ranges from those nodes.
+Secondary index rebuild
+    rebuild the secondary indexes on the node.
+Anticompaction
+    after repair the ranges that were actually repaired are split out of the sstables that existed when repair started.
+Sub range compaction
+    It is possible to only compact a given sub range - this could be useful if you know a token that has been
+    misbehaving - either gathering many updates or many deletes. (``nodetool compact -st x -et y``) will pick
+    all sstables containing the range between x and y and issue a compaction for those sstables. For STCS this will
+    most likely include all sstables but with LCS it can issue the compaction for a subset of the sstables. With LCS
+    the resulting sstable will end up in L0.
+
+When is a minor compaction triggered?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+#  When an sstable is added to the node through flushing/streaming etc.
+#  When autocompaction is enabled after being disabled (``nodetool enableautocompaction``)
+#  When compaction adds new sstables.
+#  A check for new minor compactions every 5 minutes.
+
+Merging sstables
+^^^^^^^^^^^^^^^^
+
+Compaction is about merging sstables, since partitions in sstables are sorted based on the hash of the partition key it
+is possible to efficiently merge separate sstables. Content of each partition is also sorted so each partition can be
+merged efficiently.
+
+Tombstones and Garbage Collection (GC) Grace
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Why Tombstones
+~~~~~~~~~~~~~~
+
+When a delete request is received by Cassandra it does not actually remove the data from the underlying store. Instead
+it writes a special piece of data known as a tombstone. The Tombstone represents the delete and causes all values which
+occurred before the tombstone to not appear in queries to the database. This approach is used instead of removing values
+because of the distributed nature of Cassandra.
+
+Deletes without tombstones
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Imagine a three node cluster which has the value [A] replicated to every node.::
+
+    [A], [A], [A]
+
+If one of the nodes fails and and our delete operation only removes existing values we can end up with a cluster that
+looks like::
+
+    [], [], [A]
+
+Then a repair operation would replace the value of [A] back onto the two
+nodes which are missing the value.::
+
+    [A], [A], [A]
+
+This would cause our data to be resurrected even though it had been
+deleted.
+
+Deletes with Tombstones
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Starting again with a three node cluster which has the value [A] replicated to every node.::
+
+    [A], [A], [A]
+
+If instead of removing data we add a tombstone record, our single node failure situation will look like this.::
+
+    [A, Tombstone[A]], [A, Tombstone[A]], [A]
+
+Now when we issue a repair the Tombstone will be copied to the replica, rather than the deleted data being
+resurrected.::
+
+    [A, Tombstone[A]], [A, Tombstone[A]], [A, Tombstone[A]]
+
+Our repair operation will correctly put the state of the system to what we expect with the record [A] marked as deleted
+on all nodes. This does mean we will end up accruing Tombstones which will permanently accumulate disk space. To avoid
+keeping tombstones forever we have a parameter known as ``gc_grace_seconds`` for every table in Cassandra.
+
+The gc_grace_seconds parameter and Tombstone Removal
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The table level ``gc_grace_seconds`` parameter controls how long Cassandra will retain tombstones through compaction
+events before finally removing them. This duration should directly reflect the amount of time a user expects to allow
+before recovering a failed node. After ``gc_grace_seconds`` has expired the tombstone may be removed (meaning there will
+no longer be any record that a certain piece of data was deleted), but as a tombstone can live in one sstable and the
+data it covers in another, a compaction must also include both sstable for a tombstone to be removed. More precisely, to
+be able to drop an actual tombstone the following needs to be true;
+
+- The tombstone must be older than ``gc_grace_seconds``
+- If partition X contains the tombstone, the sstable containing the partition plus all sstables containing data older
+  than the tombstone containing X must be included in the same compaction. We don't need to care if the partition is in
+  an sstable if we can guarantee that all data in that sstable is newer than the tombstone. If the tombstone is older
+  than the data it cannot shadow that data.
+- If the option ``only_purge_repaired_tombstones`` is enabled, tombstones are only removed if the data has also been
+  repaired.
+
+If a node remains down or disconnected for longer than ``gc_grace_seconds`` it's deleted data will be repaired back to
+the other nodes and re-appear in the cluster. This is basically the same as in the "Deletes without Tombstones" section.
+Note that tombstones will not be removed until a compaction event even if ``gc_grace_seconds`` has elapsed.
+
+The default value for ``gc_grace_seconds`` is 864000 which is equivalent to 10 days. This can be set when creating or
+altering a table using ``WITH gc_grace_seconds``.
+
+TTL
+^^^
+
+Data in Cassandra can have an additional property called time to live - this is used to automatically drop data that has
+expired once the time is reached. Once the TTL has expired the data is converted to a tombstone which stays around for
+at least ``gc_grace_seconds``. Note that if you mix data with TTL and data without TTL (or just different length of the
+TTL) Cassandra will have a hard time dropping the tombstones created since the partition might span many sstables and
+not all are compacted at once.
+
+Fully expired sstables
+^^^^^^^^^^^^^^^^^^^^^^
+
+If an sstable contains only tombstones and it is guaranteed that that sstable is not shadowing data in any other sstable
+compaction can drop that sstable. If you see sstables with only tombstones (note that TTL:ed data is considered
+tombstones once the time to live has expired) but it is not being dropped by compaction, it is likely that other
+sstables contain older data. There is a tool called ``sstableexpiredblockers`` that will list which sstables are
+droppable and which are blocking them from being dropped. This is especially useful for time series compaction with
+``TimeWindowCompactionStrategy`` (and the deprecated ``DateTieredCompactionStrategy``). With ``TimeWindowCompactionStrategy``
+it is possible to remove the guarantee (not check for shadowing data) by enabling ``unsafe_aggressive_sstable_expiration``.
+
+Repaired/unrepaired data
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+With incremental repairs Cassandra must keep track of what data is repaired and what data is unrepaired. With
+anticompaction repaired data is split out into repaired and unrepaired sstables. To avoid mixing up the data again
+separate compaction strategy instances are run on the two sets of data, each instance only knowing about either the
+repaired or the unrepaired sstables. This means that if you only run incremental repair once and then never again, you
+might have very old data in the repaired sstables that block compaction from dropping tombstones in the unrepaired
+(probably newer) sstables.
+
+Data directories
+^^^^^^^^^^^^^^^^
+
+Since tombstones and data can live in different sstables it is important to realize that losing an sstable might lead to
+data becoming live again - the most common way of losing sstables is to have a hard drive break down. To avoid making
+data live tombstones and actual data are always in the same data directory. This way, if a disk is lost, all versions of
+a partition are lost and no data can get undeleted. To achieve this a compaction strategy instance per data directory is
+run in addition to the compaction strategy instances containing repaired/unrepaired data, this means that if you have 4
+data directories there will be 8 compaction strategy instances running. This has a few more benefits than just avoiding
+data getting undeleted:
+
+- It is possible to run more compactions in parallel - leveled compaction will have several totally separate levelings
+  and each one can run compactions independently from the others.
+- Users can backup and restore a single data directory.
+- Note though that currently all data directories are considered equal, so if you have a tiny disk and a big disk
+  backing two data directories, the big one will be limited the by the small one. One work around to this is to create
+  more data directories backed by the big disk.
+
+Single sstable tombstone compaction
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+When an sstable is written a histogram with the tombstone expiry times is created and this is used to try to find
+sstables with very many tombstones and run single sstable compaction on that sstable in hope of being able to drop
+tombstones in that sstable. Before starting this it is also checked how likely it is that any tombstones will actually
+will be able to be dropped how much this sstable overlaps with other sstables. To avoid most of these checks the
+compaction option ``unchecked_tombstone_compaction`` can be enabled.
+
+.. _compaction-options:
+
+Common options
+^^^^^^^^^^^^^^
+
+There is a number of common options for all the compaction strategies;
+
+``enabled`` (default: true)
+    Whether minor compactions should run. Note that you can have 'enabled': true as a compaction option and then do
+    'nodetool enableautocompaction' to start running compactions.
+``tombstone_threshold`` (default: 0.2)
+    How much of the sstable should be tombstones for us to consider doing a single sstable compaction of that sstable.
+``tombstone_compaction_interval`` (default: 86400s (1 day))
+    Since it might not be possible to drop any tombstones when doing a single sstable compaction we need to make sure
+    that one sstable is not constantly getting recompacted - this option states how often we should try for a given
+    sstable. 
+``log_all`` (default: false)
+    New detailed compaction logging, see :ref:`below <detailed-compaction-logging>`.
+``unchecked_tombstone_compaction`` (default: false)
+    The single sstable compaction has quite strict checks for whether it should be started, this option disables those
+    checks and for some usecases this might be needed.  Note that this does not change anything for the actual
+    compaction, tombstones are only dropped if it is safe to do so - it might just rewrite an sstable without being able
+    to drop any tombstones.
+``only_purge_repaired_tombstone`` (default: false)
+    Option to enable the extra safety of making sure that tombstones are only dropped if the data has been repaired.
+``min_threshold`` (default: 4)
+    Lower limit of number of sstables before a compaction is triggered. Not used for ``LeveledCompactionStrategy``.
+``max_threshold`` (default: 32)
+    Upper limit of number of sstables before a compaction is triggered. Not used for ``LeveledCompactionStrategy``.
+
+Further, see the section on each strategy for specific additional options.
+
+Compaction nodetool commands
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The :ref:`nodetool <nodetool>` utility provides a number of commands related to compaction:
+
+``enableautocompaction``
+    Enable compaction.
+``disableautocompaction``
+    Disable compaction.
+``setcompactionthroughput``
+    How fast compaction should run at most - defaults to 16MB/s, but note that it is likely not possible to reach this
+    throughput.
+``compactionstats``
+    Statistics about current and pending compactions.
+``compactionhistory``
+    List details about the last compactions.
+``setcompactionthreshold``
+    Set the min/max sstable count for when to trigger compaction, defaults to 4/32.
+
+Switching the compaction strategy and options using JMX
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+It is possible to switch compaction strategies and its options on just a single node using JMX, this is a great way to
+experiment with settings without affecting the whole cluster. The mbean is::
+
+    org.apache.cassandra.db:type=ColumnFamilies,keyspace=<keyspace_name>,columnfamily=<table_name>
+
+and the attribute to change is ``CompactionParameters`` or ``CompactionParametersJson`` if you use jconsole or jmc. The
+syntax for the json version is the same as you would use in an :ref:`ALTER TABLE <alter-table-statement>` statement -
+for example::
+
+    { 'class': 'LeveledCompactionStrategy', 'sstable_size_in_mb': 123, 'fanout_size': 10}
+
+The setting is kept until someone executes an :ref:`ALTER TABLE <alter-table-statement>` that touches the compaction
+settings or restarts the node.
+
+.. _detailed-compaction-logging:
+
+More detailed compaction logging
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Enable with the compaction option ``log_all`` and a more detailed compaction log file will be produced in your log
+directory.
+
+
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/operating/compaction/lcs.rst.txt b/src/doc/4.0-rc1/_sources/operating/compaction/lcs.rst.txt
new file mode 100644
index 0000000..48c282e
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/compaction/lcs.rst.txt
@@ -0,0 +1,90 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+
+
+.. _LCS:
+
+Leveled Compaction Strategy
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The idea of ``LeveledCompactionStrategy`` (LCS) is that all sstables are put into different levels where we guarantee
+that no overlapping sstables are in the same level. By overlapping we mean that the first/last token of a single sstable
+are never overlapping with other sstables. This means that for a SELECT we will only have to look for the partition key
+in a single sstable per level. Each level is 10x the size of the previous one and each sstable is 160MB by default. L0
+is where sstables are streamed/flushed - no overlap guarantees are given here.
+
+When picking compaction candidates we have to make sure that the compaction does not create overlap in the target level.
+This is done by always including all overlapping sstables in the next level. For example if we select an sstable in L3,
+we need to guarantee that we pick all overlapping sstables in L4 and make sure that no currently ongoing compactions
+will create overlap if we start that compaction. We can start many parallel compactions in a level if we guarantee that
+we wont create overlap. For L0 -> L1 compactions we almost always need to include all L1 sstables since most L0 sstables
+cover the full range. We also can't compact all L0 sstables with all L1 sstables in a single compaction since that can
+use too much memory.
+
+When deciding which level to compact LCS checks the higher levels first (with LCS, a "higher" level is one with a higher
+number, L0 being the lowest one) and if the level is behind a compaction will be started in that level.
+
+Major compaction
+~~~~~~~~~~~~~~~~
+
+It is possible to do a major compaction with LCS - it will currently start by filling out L1 and then once L1 is full,
+it continues with L2 etc. This is sub optimal and will change to create all the sstables in a high level instead,
+CASSANDRA-11817.
+
+Bootstrapping
+~~~~~~~~~~~~~
+
+During bootstrap sstables are streamed from other nodes. The level of the remote sstable is kept to avoid many
+compactions after the bootstrap is done. During bootstrap the new node also takes writes while it is streaming the data
+from a remote node - these writes are flushed to L0 like all other writes and to avoid those sstables blocking the
+remote sstables from going to the correct level, we only do STCS in L0 until the bootstrap is done.
+
+STCS in L0
+~~~~~~~~~~
+
+If LCS gets very many L0 sstables reads are going to hit all (or most) of the L0 sstables since they are likely to be
+overlapping. To more quickly remedy this LCS does STCS compactions in L0 if there are more than 32 sstables there. This
+should improve read performance more quickly compared to letting LCS do its L0 -> L1 compactions. If you keep getting
+too many sstables in L0 it is likely that LCS is not the best fit for your workload and STCS could work out better.
+
+Starved sstables
+~~~~~~~~~~~~~~~~
+
+If a node ends up with a leveling where there are a few very high level sstables that are not getting compacted they
+might make it impossible for lower levels to drop tombstones etc. For example, if there are sstables in L6 but there is
+only enough data to actually get a L4 on the node the left over sstables in L6 will get starved and not compacted.  This
+can happen if a user changes sstable\_size\_in\_mb from 5MB to 160MB for example. To avoid this LCS tries to include
+those starved high level sstables in other compactions if there has been 25 compaction rounds where the highest level
+has not been involved.
+
+.. _lcs-options:
+
+LCS options
+~~~~~~~~~~~
+
+``sstable_size_in_mb`` (default: 160MB)
+    The target compressed (if using compression) sstable size - the sstables can end up being larger if there are very
+    large partitions on the node.
+
+``fanout_size`` (default: 10)
+    The target size of levels increases by this fanout_size multiplier. You can reduce the space amplification by tuning
+    this option.
+
+LCS also support the ``cassandra.disable_stcs_in_l0`` startup option (``-Dcassandra.disable_stcs_in_l0=true``) to avoid
+doing STCS in L0.
+
+
diff --git a/src/doc/4.0-rc1/_sources/operating/compaction/stcs.rst.txt b/src/doc/4.0-rc1/_sources/operating/compaction/stcs.rst.txt
new file mode 100644
index 0000000..c749a59
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/compaction/stcs.rst.txt
@@ -0,0 +1,58 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+
+.. _STCS:
+
+Size Tiered Compaction Strategy
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The basic idea of ``SizeTieredCompactionStrategy`` (STCS) is to merge sstables of approximately the same size. All
+sstables are put in different buckets depending on their size. An sstable is added to the bucket if size of the sstable
+is within ``bucket_low`` and ``bucket_high`` of the current average size of the sstables already in the bucket. This
+will create several buckets and the most interesting of those buckets will be compacted. The most interesting one is
+decided by figuring out which bucket's sstables takes the most reads.
+
+Major compaction
+~~~~~~~~~~~~~~~~
+
+When running a major compaction with STCS you will end up with two sstables per data directory (one for repaired data
+and one for unrepaired data). There is also an option (-s) to do a major compaction that splits the output into several
+sstables. The sizes of the sstables are approximately 50%, 25%, 12.5%... of the total size.
+
+.. _stcs-options:
+
+STCS options
+~~~~~~~~~~~~
+
+``min_sstable_size`` (default: 50MB)
+    Sstables smaller than this are put in the same bucket.
+``bucket_low`` (default: 0.5)
+    How much smaller than the average size of a bucket a sstable should be before not being included in the bucket. That
+    is, if ``bucket_low * avg_bucket_size < sstable_size`` (and the ``bucket_high`` condition holds, see below), then
+    the sstable is added to the bucket.
+``bucket_high`` (default: 1.5)
+    How much bigger than the average size of a bucket a sstable should be before not being included in the bucket. That
+    is, if ``sstable_size < bucket_high * avg_bucket_size`` (and the ``bucket_low`` condition holds, see above), then
+    the sstable is added to the bucket.
+
+Defragmentation
+~~~~~~~~~~~~~~~
+
+Defragmentation is done when many sstables are touched during a read.  The result of the read is put in to the memtable
+so that the next read will not have to touch as many sstables. This can cause writes on a read-only-cluster.
+
+
diff --git a/src/doc/4.0-rc1/_sources/operating/compaction/twcs.rst.txt b/src/doc/4.0-rc1/_sources/operating/compaction/twcs.rst.txt
new file mode 100644
index 0000000..3641a5a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/compaction/twcs.rst.txt
@@ -0,0 +1,76 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+
+.. _TWCS:
+
+Time Window CompactionStrategy
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+``TimeWindowCompactionStrategy`` (TWCS) is designed specifically for workloads where it's beneficial to have data on
+disk grouped by the timestamp of the data, a common goal when the workload is time-series in nature or when all data is
+written with a TTL. In an expiring/TTL workload, the contents of an entire SSTable likely expire at approximately the
+same time, allowing them to be dropped completely, and space reclaimed much more reliably than when using
+``SizeTieredCompactionStrategy`` or ``LeveledCompactionStrategy``. The basic concept is that
+``TimeWindowCompactionStrategy`` will create 1 sstable per file for a given window, where a window is simply calculated
+as the combination of two primary options:
+
+``compaction_window_unit`` (default: DAYS)
+    A Java TimeUnit (MINUTES, HOURS, or DAYS).
+``compaction_window_size`` (default: 1)
+    The number of units that make up a window.
+``unsafe_aggressive_sstable_expiration`` (default: false)
+    Expired sstables will be dropped without checking its data is shadowing other sstables. This is a potentially
+    risky option that can lead to data loss or deleted data re-appearing, going beyond what
+    `unchecked_tombstone_compaction` does for single  sstable compaction. Due to the risk the jvm must also be
+    started with `-Dcassandra.unsafe_aggressive_sstable_expiration=true`.
+
+Taken together, the operator can specify windows of virtually any size, and `TimeWindowCompactionStrategy` will work to
+create a single sstable for writes within that window. For efficiency during writing, the newest window will be
+compacted using `SizeTieredCompactionStrategy`.
+
+Ideally, operators should select a ``compaction_window_unit`` and ``compaction_window_size`` pair that produces
+approximately 20-30 windows - if writing with a 90 day TTL, for example, a 3 Day window would be a reasonable choice
+(``'compaction_window_unit':'DAYS','compaction_window_size':3``).
+
+TimeWindowCompactionStrategy Operational Concerns
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The primary motivation for TWCS is to separate data on disk by timestamp and to allow fully expired SSTables to drop
+more efficiently. One potential way this optimal behavior can be subverted is if data is written to SSTables out of
+order, with new data and old data in the same SSTable. Out of order data can appear in two ways:
+
+- If the user mixes old data and new data in the traditional write path, the data will be comingled in the memtables
+  and flushed into the same SSTable, where it will remain comingled.
+- If the user's read requests for old data cause read repairs that pull old data into the current memtable, that data
+  will be comingled and flushed into the same SSTable.
+
+While TWCS tries to minimize the impact of comingled data, users should attempt to avoid this behavior.  Specifically,
+users should avoid queries that explicitly set the timestamp via CQL ``USING TIMESTAMP``. Additionally, users should run
+frequent repairs (which streams data in such a way that it does not become comingled).
+
+Changing TimeWindowCompactionStrategy Options
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Operators wishing to enable ``TimeWindowCompactionStrategy`` on existing data should consider running a major compaction
+first, placing all existing data into a single (old) window. Subsequent newer writes will then create typical SSTables
+as expected.
+
+Operators wishing to change ``compaction_window_unit`` or ``compaction_window_size`` can do so, but may trigger
+additional compactions as adjacent windows are joined together. If the window size is decrease d (for example, from 24
+hours to 12 hours), then the existing SSTables will not be modified - TWCS can not split existing SSTables into multiple
+windows.
+
diff --git a/src/doc/4.0-rc1/_sources/operating/compression.rst.txt b/src/doc/4.0-rc1/_sources/operating/compression.rst.txt
new file mode 100644
index 0000000..74c992f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/compression.rst.txt
@@ -0,0 +1,164 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Compression
+-----------
+
+Cassandra offers operators the ability to configure compression on a per-table basis. Compression reduces the size of
+data on disk by compressing the SSTable in user-configurable compression ``chunk_length_in_kb``. As Cassandra SSTables
+are immutable, the CPU cost of compressing is only necessary when the SSTable is written - subsequent updates
+to data will land in different SSTables, so Cassandra will not need to decompress, overwrite, and recompress data when
+UPDATE commands are issued. On reads, Cassandra will locate the relevant compressed chunks on disk, decompress the full
+chunk, and then proceed with the remainder of the read path (merging data from disks and memtables, read repair, and so
+on).
+
+Compression algorithms typically trade off between the following three areas:
+
+- **Compression speed**: How fast does the compression algorithm compress data. This is critical in the flush and
+  compaction paths because data must be compressed before it is written to disk.
+- **Decompression speed**: How fast does the compression algorithm de-compress data. This is critical in the read
+  and compaction paths as data must be read off disk in a full chunk and decompressed before it can be returned.
+- **Ratio**: By what ratio is the uncompressed data reduced by. Cassandra typically measures this as the size of data
+  on disk relative to the uncompressed size. For example a ratio of ``0.5`` means that the data on disk is 50% the size
+  of the uncompressed data. Cassandra exposes this ratio per table as the ``SSTable Compression Ratio`` field of
+  ``nodetool tablestats``.
+
+Cassandra offers five compression algorithms by default that make different tradeoffs in these areas. While
+benchmarking compression algorithms depends on many factors (algorithm parameters such as compression level,
+the compressibility of the input data, underlying processor class, etc ...), the following table should help you pick
+a starting point based on your application's requirements with an extremely rough grading of the different choices
+by their performance in these areas (A is relatively good, F is relatively bad):
+
++---------------------------------------------+-----------------------+-------------+---------------+-------+-------------+
+| Compression Algorithm                       | Cassandra Class       | Compression | Decompression | Ratio | C* Version  |
++=============================================+=======================+=============+===============+=======+=============+
+| `LZ4 <https://lz4.github.io/lz4/>`_         | ``LZ4Compressor``     |          A+ |            A+ |    C+ | ``>=1.2.2`` |
++---------------------------------------------+-----------------------+-------------+---------------+-------+-------------+
+| `LZ4HC <https://lz4.github.io/lz4/>`_       | ``LZ4Compressor``     |          C+ |            A+ |    B+ | ``>= 3.6``  |
++---------------------------------------------+-----------------------+-------------+---------------+-------+-------------+
+| `Zstd <https://facebook.github.io/zstd/>`_  | ``ZstdCompressor``    |          A- |            A- |    A+ | ``>= 4.0``  |
++---------------------------------------------+-----------------------+-------------+---------------+-------+-------------+
+| `Snappy <http://google.github.io/snappy/>`_ | ``SnappyCompressor``  |          A- |            A  |     C | ``>= 1.0``  |
++---------------------------------------------+-----------------------+-------------+---------------+-------+-------------+
+| `Deflate (zlib) <https://zlib.net>`_        | ``DeflateCompressor`` |          C  |            C  |     A | ``>= 1.0``  |
++---------------------------------------------+-----------------------+-------------+---------------+-------+-------------+
+
+Generally speaking for a performance critical (latency or throughput) application ``LZ4`` is the right choice as it
+gets excellent ratio per CPU cycle spent. This is why it is the default choice in Cassandra.
+
+For storage critical applications (disk footprint), however, ``Zstd`` may be a better choice as it can get significant
+additional ratio to ``LZ4``.
+
+``Snappy`` is kept for backwards compatibility and ``LZ4`` will typically be preferable.
+
+``Deflate`` is kept for backwards compatibility and ``Zstd`` will typically be preferable.
+
+Configuring Compression
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Compression is configured on a per-table basis as an optional argument to ``CREATE TABLE`` or ``ALTER TABLE``. Three
+options are available for all compressors:
+
+- ``class`` (default: ``LZ4Compressor``): specifies the compression class to use. The two "fast"
+  compressors are ``LZ4Compressor`` and ``SnappyCompressor`` and the two "good" ratio compressors are ``ZstdCompressor``
+  and ``DeflateCompressor``.
+- ``chunk_length_in_kb`` (default: ``16KiB``): specifies the number of kilobytes of data per compression chunk. The main
+  tradeoff here is that larger chunk sizes give compression algorithms more context and improve their ratio, but
+  require reads to deserialize and read more off disk.
+- ``crc_check_chance`` (default: ``1.0``): determines how likely Cassandra is to verify the checksum on each compression
+  chunk during reads to protect against data corruption. Unless you have profiles indicating this is a performance
+  problem it is highly encouraged not to turn this off as it is Cassandra's only protection against bitrot.
+
+The ``LZ4Compressor`` supports the following additional options:
+
+- ``lz4_compressor_type`` (default ``fast``): specifies if we should use the ``high`` (a.k.a ``LZ4HC``) ratio version
+  or the ``fast`` (a.k.a ``LZ4``) version of ``LZ4``. The ``high`` mode supports a configurable level, which can allow
+  operators to tune the performance <-> ratio tradeoff via the ``lz4_high_compressor_level`` option. Note that in
+  ``4.0`` and above it may be preferable to use the ``Zstd`` compressor.
+- ``lz4_high_compressor_level`` (default ``9``): A number between ``1`` and ``17`` inclusive that represents how much
+  CPU time to spend trying to get more compression ratio. Generally lower levels are "faster" but they get less ratio
+  and higher levels are slower but get more compression ratio.
+
+The ``ZstdCompressor`` supports the following options in addition:
+
+- ``compression_level`` (default ``3``): A number between ``-131072`` and ``22`` inclusive that represents how much CPU
+  time to spend trying to get more compression ratio. The lower the level, the faster the speed (at the cost of ratio).
+  Values from 20 to 22 are called "ultra levels" and should be used with caution, as they require more memory.
+  The default of ``3`` is a good choice for competing with ``Deflate`` ratios and ``1`` is a good choice for competing
+  with ``LZ4``.
+
+
+Users can set compression using the following syntax:
+
+::
+
+    CREATE TABLE keyspace.table (id int PRIMARY KEY) WITH compression = {'class': 'LZ4Compressor'};
+
+Or
+
+::
+
+    ALTER TABLE keyspace.table WITH compression = {'class': 'LZ4Compressor', 'chunk_length_in_kb': 64, 'crc_check_chance': 0.5};
+
+Once enabled, compression can be disabled with ``ALTER TABLE`` setting ``enabled`` to ``false``:
+
+::
+
+    ALTER TABLE keyspace.table WITH compression = {'enabled':'false'};
+
+Operators should be aware, however, that changing compression is not immediate. The data is compressed when the SSTable
+is written, and as SSTables are immutable, the compression will not be modified until the table is compacted. Upon
+issuing a change to the compression options via ``ALTER TABLE``, the existing SSTables will not be modified until they
+are compacted - if an operator needs compression changes to take effect immediately, the operator can trigger an SSTable
+rewrite using ``nodetool scrub`` or ``nodetool upgradesstables -a``, both of which will rebuild the SSTables on disk,
+re-compressing the data in the process.
+
+Benefits and Uses
+^^^^^^^^^^^^^^^^^
+
+Compression's primary benefit is that it reduces the amount of data written to disk. Not only does the reduced size save
+in storage requirements, it often increases read and write throughput, as the CPU overhead of compressing data is faster
+than the time it would take to read or write the larger volume of uncompressed data from disk.
+
+Compression is most useful in tables comprised of many rows, where the rows are similar in nature. Tables containing
+similar text columns (such as repeated JSON blobs) often compress very well. Tables containing data that has already
+been compressed or random data (e.g. benchmark datasets) do not typically compress well.
+
+Operational Impact
+^^^^^^^^^^^^^^^^^^
+
+- Compression metadata is stored off-heap and scales with data on disk.  This often requires 1-3GB of off-heap RAM per
+  terabyte of data on disk, though the exact usage varies with ``chunk_length_in_kb`` and compression ratios.
+
+- Streaming operations involve compressing and decompressing data on compressed tables - in some code paths (such as
+  non-vnode bootstrap), the CPU overhead of compression can be a limiting factor.
+
+- To prevent slow compressors (``Zstd``, ``Deflate``, ``LZ4HC``) from blocking flushes for too long, all three
+  flush with the default fast ``LZ4`` compressor and then rely on normal compaction to re-compress the data into the
+  desired compression strategy. See `CASSANDRA-15379 <https://issues.apache.org/jira/browse/CASSANDRA-15379>` for more
+  details.
+
+- The compression path checksums data to ensure correctness - while the traditional Cassandra read path does not have a
+  way to ensure correctness of data on disk, compressed tables allow the user to set ``crc_check_chance`` (a float from
+  0.0 to 1.0) to allow Cassandra to probabilistically validate chunks on read to verify bits on disk are not corrupt.
+
+Advanced Use
+^^^^^^^^^^^^
+
+Advanced users can provide their own compression class by implementing the interface at
+``org.apache.cassandra.io.compress.ICompressor``.
diff --git a/src/doc/4.0-rc1/_sources/operating/hardware.rst.txt b/src/doc/4.0-rc1/_sources/operating/hardware.rst.txt
new file mode 100644
index 0000000..d90550c
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/hardware.rst.txt
@@ -0,0 +1,85 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Hardware Choices
+----------------
+
+Like most databases, Cassandra throughput improves with more CPU cores, more RAM, and faster disks. While Cassandra can
+be made to run on small servers for testing or development environments (including Raspberry Pis), a minimal production
+server requires at least 2 cores, and at least 8GB of RAM. Typical production servers have 8 or more cores and at least
+32GB of RAM.
+
+CPU
+^^^
+Cassandra is highly concurrent, handling many simultaneous requests (both read and write) using multiple threads running
+on as many CPU cores as possible. The Cassandra write path tends to be heavily optimized (writing to the commitlog and
+then inserting the data into the memtable), so writes, in particular, tend to be CPU bound. Consequently, adding
+additional CPU cores often increases throughput of both reads and writes.
+
+Memory
+^^^^^^
+Cassandra runs within a Java VM, which will pre-allocate a fixed size heap (java's Xmx system parameter). In addition to
+the heap, Cassandra will use significant amounts of RAM offheap for compression metadata, bloom filters, row, key, and
+counter caches, and an in process page cache. Finally, Cassandra will take advantage of the operating system's page
+cache, storing recently accessed portions files in RAM for rapid re-use.
+
+For optimal performance, operators should benchmark and tune their clusters based on their individual workload. However,
+basic guidelines suggest:
+
+-  ECC RAM should always be used, as Cassandra has few internal safeguards to protect against bit level corruption
+-  The Cassandra heap should be no less than 2GB, and no more than 50% of your system RAM
+-  Heaps smaller than 12GB should consider ParNew/ConcurrentMarkSweep garbage collection
+-  Heaps larger than 12GB should consider G1GC
+
+Disks
+^^^^^
+Cassandra persists data to disk for two very different purposes. The first is to the commitlog when a new write is made
+so that it can be replayed after a crash or system shutdown. The second is to the data directory when thresholds are
+exceeded and memtables are flushed to disk as SSTables.
+
+Commitlogs receive every write made to a Cassandra node and have the potential to block client operations, but they are
+only ever read on node start-up. SSTable (data file) writes on the other hand occur asynchronously, but are read to
+satisfy client look-ups. SSTables are also periodically merged and rewritten in a process called compaction.  The data
+held in the commitlog directory is data that has not been permanently saved to the SSTable data directories - it will be
+periodically purged once it is flushed to the SSTable data files.
+
+Cassandra performs very well on both spinning hard drives and solid state disks. In both cases, Cassandra's sorted
+immutable SSTables allow for linear reads, few seeks, and few overwrites, maximizing throughput for HDDs and lifespan of
+SSDs by avoiding write amplification. However, when using spinning disks, it's important that the commitlog
+(``commitlog_directory``) be on one physical disk (not simply a partition, but a physical disk), and the data files
+(``data_file_directories``) be set to a separate physical disk. By separating the commitlog from the data directory,
+writes can benefit from sequential appends to the commitlog without having to seek around the platter as reads request
+data from various SSTables on disk.
+
+In most cases, Cassandra is designed to provide redundancy via multiple independent, inexpensive servers. For this
+reason, using NFS or a SAN for data directories is an antipattern and should typically be avoided.  Similarly, servers
+with multiple disks are often better served by using RAID0 or JBOD than RAID1 or RAID5 - replication provided by
+Cassandra obsoletes the need for replication at the disk layer, so it's typically recommended that operators take
+advantage of the additional throughput of RAID0 rather than protecting against failures with RAID1 or RAID5.
+
+Common Cloud Choices
+^^^^^^^^^^^^^^^^^^^^
+
+Many large users of Cassandra run in various clouds, including AWS, Azure, and GCE - Cassandra will happily run in any
+of these environments. Users should choose similar hardware to what would be needed in physical space. In EC2, popular
+options include:
+
+- i2 instances, which provide both a high RAM:CPU ratio and local ephemeral SSDs
+- m4.2xlarge / c4.4xlarge instances, which provide modern CPUs, enhanced networking and work well with EBS GP2 (SSD)
+  storage
+
+Generally, disk and network performance increases with instance size and generation, so newer generations of instances
+and larger instance types within each family often perform better than their smaller or older alternatives.
diff --git a/src/doc/4.0-rc1/_sources/operating/hints.rst.txt b/src/doc/4.0-rc1/_sources/operating/hints.rst.txt
new file mode 100644
index 0000000..55c42a4
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/hints.rst.txt
@@ -0,0 +1,279 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+.. _hints:
+
+Hints
+=====
+
+Hinting is a data repair technique applied during write operations. When
+replica nodes are unavailable to accept a mutation, either due to failure or
+more commonly routine maintenance, coordinators attempting to write to those
+replicas store temporary hints on their local filesystem for later application
+to the unavailable replica. Hints are an important way to help reduce the
+duration of data inconsistency. Coordinators replay hints quickly after
+unavailable replica nodes return to the ring. Hints are best effort, however,
+and do not guarantee eventual consistency like :ref:`anti-entropy repair
+<repair>` does.
+
+Hints are useful because of how Apache Cassandra replicates data to provide
+fault tolerance, high availability and durability. Cassandra :ref:`partitions
+data across the cluster <consistent-hashing-token-ring>` using consistent
+hashing, and then replicates keys to multiple nodes along the hash ring. To
+guarantee availability, all replicas of a key can accept mutations without
+consensus, but this means it is possible for some replicas to accept a mutation
+while others do not. When this happens an inconsistency is introduced.
+
+Hints are one of the three ways, in addition to read-repair and
+full/incremental anti-entropy repair, that Cassandra implements the eventual
+consistency guarantee that all updates are eventually received by all replicas.
+Hints, like read-repair, are best effort and not an alternative to performing
+full repair, but they do help reduce the duration of inconsistency between
+replicas in practice.
+
+Hinted Handoff
+--------------
+
+Hinted handoff is the process by which Cassandra applies hints to unavailable
+nodes.
+
+For example, consider a mutation is to be made at ``Consistency Level``
+``LOCAL_QUORUM`` against a keyspace with ``Replication Factor`` of ``3``.
+Normally the client sends the mutation to a single coordinator, who then sends
+the mutation to all three replicas, and when two of the three replicas
+acknowledge the mutation the coordinator responds successfully to the client.
+If a replica node is unavailable, however, the coordinator stores a hint
+locally to the filesystem for later application. New hints will be retained for
+up to ``max_hint_window_in_ms`` of downtime (defaults to ``3 hours``).  If the
+unavailable replica does return to the cluster before the window expires, the
+coordinator applies any pending hinted mutations against the replica to ensure
+that eventual consistency is maintained.
+
+.. figure:: images/hints.svg
+    :alt: Hinted Handoff Example
+
+    Hinted Handoff in Action
+
+* (``t0``): The write is sent by the client, and the coordinator sends it
+  to the three replicas. Unfortunately ``replica_2`` is restarting and cannot
+  receive the mutation.
+* (``t1``): The client receives a quorum acknowledgement from the coordinator.
+  At this point the client believe the write to be durable and visible to reads
+  (which it is).
+* (``t2``): After the write timeout (default ``2s``), the coordinator decides
+  that ``replica_2`` is unavailable and stores a hint to its local disk.
+* (``t3``): Later, when ``replica_2`` starts back up it sends a gossip message
+  to all nodes, including the coordinator.
+* (``t4``): The coordinator replays hints including the missed mutation
+  against ``replica_2``.
+
+If the node does not return in time, the destination replica will be
+permanently out of sync until either read-repair or full/incremental
+anti-entropy repair propagates the mutation.
+
+Application of Hints
+^^^^^^^^^^^^^^^^^^^^
+
+Hints are streamed in bulk, a segment at a time, to the target replica node and
+the target node replays them locally. After the target node has replayed a
+segment it deletes the segment and receives the next segment. This continues
+until all hints are drained.
+
+Storage of Hints on Disk
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Hints are stored in flat files in the coordinator node’s
+``$CASSANDRA_HOME/data/hints`` directory. A hint includes a hint id, the target
+replica node on which the mutation is meant to be stored, the serialized
+mutation (stored as a blob) that couldn't be delivered to the replica node, the
+mutation timestamp, and the Cassandra version used to serialize the mutation.
+By default hints are compressed using ``LZ4Compressor``. Multiple hints are
+appended to the same hints file.
+
+Since hints contain the original unmodified mutation timestamp, hint application
+is idempotent and cannot overwrite a future mutation.
+
+Hints for Timed Out Write Requests
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Hints are also stored for write requests that time out. The
+``write_request_timeout_in_ms`` setting in ``cassandra.yaml`` configures the
+timeout for write requests.
+
+::
+
+  write_request_timeout_in_ms: 2000
+
+The coordinator waits for the configured amount of time for write requests to
+complete, at which point it will time out and generate a hint for the timed out
+request. The lowest acceptable value for ``write_request_timeout_in_ms`` is 10 ms.
+
+
+Configuring Hints
+-----------------
+
+Hints are enabled by default as they are critical for data consistency. The
+``cassandra.yaml`` configuration file provides several settings for configuring
+hints:
+
+Table 1. Settings for Hints
+
++--------------------------------------------+-------------------------------------------+-------------------------------+
+|Setting                                     | Description                               |Default Value                  |
++--------------------------------------------+-------------------------------------------+-------------------------------+
+|``hinted_handoff_enabled``                  |Enables/Disables hinted handoffs           | ``true``                      |
+|                                            |                                           |                               |
+|                                            |                                           |                               |
+|                                            |                                           |                               |
+|                                            |                                           |                               |
++--------------------------------------------+-------------------------------------------+-------------------------------+
+|``hinted_handoff_disabled_datacenters``     |A list of data centers that do not perform | ``unset``                     |
+|                                            |hinted handoffs even when handoff is       |                               |
+|                                            |otherwise enabled.                         |                               |
+|                                            |Example:                                   |                               |
+|                                            |                                           |                               |
+|                                            | .. code-block:: yaml                      |                               |
+|                                            |                                           |                               |
+|                                            |     hinted_handoff_disabled_datacenters:  |                               |
+|                                            |       - DC1                               |                               |
+|                                            |       - DC2                               |                               |
++--------------------------------------------+-------------------------------------------+-------------------------------+
+|``max_hint_window_in_ms``                   |Defines the maximum amount of time (ms)    | ``10800000`` # 3 hours        |
+|                                            |a node shall have hints generated after it |                               |
+|                                            |has failed.                                |                               |
++--------------------------------------------+-------------------------------------------+-------------------------------+
+|``hinted_handoff_throttle_in_kb``           |Maximum throttle in KBs per second, per    |                               |
+|                                            |delivery thread. This will be reduced      | ``1024``                      |
+|                                            |proportionally to the number of nodes in   |                               |
+|                                            |the cluster.                               |                               |
+|                                            |(If there are two nodes in the cluster,    |                               |
+|                                            |each delivery thread will use the maximum  |                               |
+|                                            |rate; if there are 3, each will throttle   |                               |
+|                                            |to half of the maximum,since it is expected|                               |
+|                                            |for two nodes to be delivering hints       |                               |
+|                                            |simultaneously.)                           |                               |
++--------------------------------------------+-------------------------------------------+-------------------------------+
+|``max_hints_delivery_threads``              |Number of threads with which to deliver    | ``2``                         |
+|                                            |hints; Consider increasing this number when|                               |
+|                                            |you have multi-dc deployments, since       |                               |
+|                                            |cross-dc handoff tends to be slower        |                               |
++--------------------------------------------+-------------------------------------------+-------------------------------+
+|``hints_directory``                         |Directory where Cassandra stores hints.    |``$CASSANDRA_HOME/data/hints`` |
+|                                            |                                           |                               |
++--------------------------------------------+-------------------------------------------+-------------------------------+
+|``hints_flush_period_in_ms``                |How often hints should be flushed from the | ``10000``                     |
+|                                            |internal buffers to disk. Will *not*       |                               |
+|                                            |trigger fsync.                             |                               |
++--------------------------------------------+-------------------------------------------+-------------------------------+
+|``max_hints_file_size_in_mb``               |Maximum size for a single hints file, in   | ``128``                       |
+|                                            |megabytes.                                 |                               |
++--------------------------------------------+-------------------------------------------+-------------------------------+
+|``hints_compression``                       |Compression to apply to the hint files.    | ``LZ4Compressor``             |
+|                                            |If omitted, hints files will be written    |                               |
+|                                            |uncompressed. LZ4, Snappy, and Deflate     |                               |
+|                                            |compressors are supported.                 |                               |
++--------------------------------------------+-------------------------------------------+-------------------------------+
+
+Configuring Hints at Runtime with ``nodetool``
+----------------------------------------------
+
+``nodetool`` provides several commands for configuring hints or getting hints
+related information. The nodetool commands override the corresponding
+settings if any in ``cassandra.yaml`` for the node running the command.
+
+Table 2. Nodetool Commands for Hints
+
++--------------------------------+-------------------------------------------+
+|Command                         | Description                               |
++--------------------------------+-------------------------------------------+
+|``nodetool disablehandoff``     |Disables storing and delivering hints      |
++--------------------------------+-------------------------------------------+
+|``nodetool disablehintsfordc``  |Disables storing and delivering hints to a |
+|                                |data center                                |
++--------------------------------+-------------------------------------------+
+|``nodetool enablehandoff``      |Re-enables future hints storing and        |
+|                                |delivery on the current node               |
++--------------------------------+-------------------------------------------+
+|``nodetool enablehintsfordc``   |Enables hints for a data center that was   |
+|                                |previously disabled                        |
++--------------------------------+-------------------------------------------+
+|``nodetool getmaxhintwindow``   |Prints the max hint window in ms. New in   |
+|                                |Cassandra 4.0.                             |
++--------------------------------+-------------------------------------------+
+|``nodetool handoffwindow``      |Prints current hinted handoff window       |
++--------------------------------+-------------------------------------------+
+|``nodetool pausehandoff``       |Pauses hints delivery process              |
++--------------------------------+-------------------------------------------+
+|``nodetool resumehandoff``      |Resumes hints delivery process             |
++--------------------------------+-------------------------------------------+
+|``nodetool                      |Sets hinted handoff throttle in kb         |
+|sethintedhandoffthrottlekb``    |per second, per delivery thread            |
++--------------------------------+-------------------------------------------+
+|``nodetool setmaxhintwindow``   |Sets the specified max hint window in ms   |
++--------------------------------+-------------------------------------------+
+|``nodetool statushandoff``      |Status of storing future hints on the      |
+|                                |current node                               |
++--------------------------------+-------------------------------------------+
+|``nodetool truncatehints``      |Truncates all hints on the local node, or  |
+|                                |truncates hints for the endpoint(s)        |
+|                                |specified.                                 |
++--------------------------------+-------------------------------------------+
+
+Make Hints Play Faster at Runtime
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The default of ``1024 kbps`` handoff throttle is conservative for most modern
+networks, and it is entirely possible that in a simple node restart you may
+accumulate many gigabytes hints that may take hours to play back. For example if
+you are ingesting ``100 Mbps`` of data per node, a single 10 minute long
+restart will create ``10 minutes * (100 megabit / second) ~= 7 GiB`` of data
+which at ``(1024 KiB / second)`` would take ``7.5 GiB / (1024 KiB / second) =
+2.03 hours`` to play back. The exact math depends on the load balancing strategy
+(round robin is better than token aware), number of tokens per node (more
+tokens is better than fewer), and naturally the cluster's write rate, but
+regardless you may find yourself wanting to increase this throttle at runtime.
+
+If you find yourself in such a situation, you may consider raising
+the ``hinted_handoff_throttle`` dynamically via the
+``nodetool sethintedhandoffthrottlekb`` command.
+
+Allow a Node to be Down Longer at Runtime
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sometimes a node may be down for more than the normal ``max_hint_window_in_ms``,
+(default of three hours), but the hardware and data itself will still be
+accessible.  In such a case you may consider raising the
+``max_hint_window_in_ms`` dynamically via the ``nodetool setmaxhintwindow``
+command added in Cassandra 4.0 (`CASSANDRA-11720 <https://issues.apache.org/jira/browse/CASSANDRA-11720>`_).
+This will instruct Cassandra to continue holding hints for the down
+endpoint for a longer amount of time.
+
+This command should be applied on all nodes in the cluster that may be holding
+hints. If needed, the setting can be applied permanently by setting the
+``max_hint_window_in_ms`` setting in ``cassandra.yaml`` followed by a rolling
+restart.
+
+Monitoring Hint Delivery
+------------------------
+
+Cassandra 4.0 adds histograms available to understand how long it takes to deliver
+hints which is useful for operators to better identify problems (`CASSANDRA-13234
+<https://issues.apache.org/jira/browse/CASSANDRA-13234>`_).
+
+There are also metrics available for tracking :ref:`Hinted Handoff <handoff-metrics>`
+and :ref:`Hints Service <hintsservice-metrics>` metrics.
diff --git a/src/doc/4.0-rc1/_sources/operating/index.rst.txt b/src/doc/4.0-rc1/_sources/operating/index.rst.txt
new file mode 100644
index 0000000..78c7eb6
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/index.rst.txt
@@ -0,0 +1,39 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Operating Cassandra
+===================
+
+.. toctree::
+   :maxdepth: 2
+
+   snitch
+   topo_changes
+   repair
+   read_repair
+   hints
+   compaction/index
+   bloom_filters
+   compression
+   cdc
+   backups
+   bulk_loading
+   metrics
+   security
+   hardware
+
diff --git a/src/doc/4.0-rc1/_sources/operating/metrics.rst.txt b/src/doc/4.0-rc1/_sources/operating/metrics.rst.txt
new file mode 100644
index 0000000..83661a2
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/metrics.rst.txt
@@ -0,0 +1,778 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+.. _monitoring-metrics:
+
+Monitoring
+----------
+
+Metrics in Cassandra are managed using the `Dropwizard Metrics <http://metrics.dropwizard.io>`__ library. These metrics
+can be queried via JMX or pushed to external monitoring systems using a number of `built in
+<http://metrics.dropwizard.io/3.1.0/getting-started/#other-reporting>`__ and `third party
+<http://metrics.dropwizard.io/3.1.0/manual/third-party/>`__ reporter plugins.
+
+Metrics are collected for a single node. It's up to the operator to use an external monitoring system to aggregate them.
+
+Metric Types
+^^^^^^^^^^^^
+All metrics reported by cassandra fit into one of the following types.
+
+``Gauge``
+    An instantaneous measurement of a value.
+
+``Counter``
+    A gauge for an ``AtomicLong`` instance. Typically this is consumed by monitoring the change since the last call to
+    see if there is a large increase compared to the norm.
+
+``Histogram``
+    Measures the statistical distribution of values in a stream of data.
+
+    In addition to minimum, maximum, mean, etc., it also measures median, 75th, 90th, 95th, 98th, 99th, and 99.9th
+    percentiles.
+
+``Timer``
+    Measures both the rate that a particular piece of code is called and the histogram of its duration.
+
+``Latency``
+    Special type that tracks latency (in microseconds) with a ``Timer`` plus a ``Counter`` that tracks the total latency
+    accrued since starting. The former is useful if you track the change in total latency since the last check. Each
+    metric name of this type will have 'Latency' and 'TotalLatency' appended to it.
+
+``Meter``
+    A meter metric which measures mean throughput and one-, five-, and fifteen-minute exponentially-weighted moving
+    average throughputs.
+
+.. _table-metrics:
+
+Table Metrics
+^^^^^^^^^^^^^
+
+Each table in Cassandra has metrics responsible for tracking its state and performance.
+
+The metric names are all appended with the specific ``Keyspace`` and ``Table`` name.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Table.<MetricName>.<Keyspace>.<Table>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Table keyspace=<Keyspace> scope=<Table> name=<MetricName>``
+
+.. NOTE::
+    There is a special table called '``all``' without a keyspace. This represents the aggregation of metrics across
+    **all** tables and keyspaces on the node.
+
+
+=============================================== ============== ===========
+Name                                            Type           Description
+=============================================== ============== ===========
+MemtableOnHeapSize                              Gauge<Long>    Total amount of data stored in the memtable that resides **on**-heap, including column related overhead and partitions overwritten.
+MemtableOffHeapSize                             Gauge<Long>    Total amount of data stored in the memtable that resides **off**-heap, including column related overhead and partitions overwritten.
+MemtableLiveDataSize                            Gauge<Long>    Total amount of live data stored in the memtable, excluding any data structure overhead.
+AllMemtablesOnHeapSize                          Gauge<Long>    Total amount of data stored in the memtables (2i and pending flush memtables included) that resides **on**-heap.
+AllMemtablesOffHeapSize                         Gauge<Long>    Total amount of data stored in the memtables (2i and pending flush memtables included) that resides **off**-heap.
+AllMemtablesLiveDataSize                        Gauge<Long>    Total amount of live data stored in the memtables (2i and pending flush memtables included) that resides off-heap, excluding any data structure overhead.
+MemtableColumnsCount                            Gauge<Long>    Total number of columns present in the memtable.
+MemtableSwitchCount                             Counter        Number of times flush has resulted in the memtable being switched out.
+CompressionRatio                                Gauge<Double>  Current compression ratio for all SSTables.
+EstimatedPartitionSizeHistogram                 Gauge<long[]>  Histogram of estimated partition size (in bytes).
+EstimatedPartitionCount                         Gauge<Long>    Approximate number of keys in table.
+EstimatedColumnCountHistogram                   Gauge<long[]>  Histogram of estimated number of columns.
+SSTablesPerReadHistogram                        Histogram      Histogram of the number of sstable data files accessed per single partition read. SSTables skipped due to Bloom Filters, min-max key or partition index lookup are not taken into acoount.
+ReadLatency                                     Latency        Local read latency for this table.
+RangeLatency                                    Latency        Local range scan latency for this table.
+WriteLatency                                    Latency        Local write latency for this table.
+CoordinatorReadLatency                          Timer          Coordinator read latency for this table.
+CoordinatorWriteLatency                         Timer          Coordinator write latency for this table.
+CoordinatorScanLatency                          Timer          Coordinator range scan latency for this table.
+PendingFlushes                                  Counter        Estimated number of flush tasks pending for this table.
+BytesFlushed                                    Counter        Total number of bytes flushed since server [re]start.
+CompactionBytesWritten                          Counter        Total number of bytes written by compaction since server [re]start.
+PendingCompactions                              Gauge<Integer> Estimate of number of pending compactions for this table.
+LiveSSTableCount                                Gauge<Integer> Number of SSTables on disk for this table.
+LiveDiskSpaceUsed                               Counter        Disk space used by SSTables belonging to this table (in bytes).
+TotalDiskSpaceUsed                              Counter        Total disk space used by SSTables belonging to this table, including obsolete ones waiting to be GC'd.
+MinPartitionSize                                Gauge<Long>    Size of the smallest compacted partition (in bytes).
+MaxPartitionSize                                Gauge<Long>    Size of the largest compacted partition (in bytes).
+MeanPartitionSize                               Gauge<Long>    Size of the average compacted partition (in bytes).
+BloomFilterFalsePositives                       Gauge<Long>    Number of false positives on table's bloom filter.
+BloomFilterFalseRatio                           Gauge<Double>  False positive ratio of table's bloom filter.
+BloomFilterDiskSpaceUsed                        Gauge<Long>    Disk space used by bloom filter (in bytes).
+BloomFilterOffHeapMemoryUsed                    Gauge<Long>    Off-heap memory used by bloom filter.
+IndexSummaryOffHeapMemoryUsed                   Gauge<Long>    Off-heap memory used by index summary.
+CompressionMetadataOffHeapMemoryUsed            Gauge<Long>    Off-heap memory used by compression meta data.
+KeyCacheHitRate                                 Gauge<Double>  Key cache hit rate for this table.
+TombstoneScannedHistogram                       Histogram      Histogram of tombstones scanned in queries on this table.
+LiveScannedHistogram                            Histogram      Histogram of live cells scanned in queries on this table.
+ColUpdateTimeDeltaHistogram                     Histogram      Histogram of column update time delta on this table.
+ViewLockAcquireTime                             Timer          Time taken acquiring a partition lock for materialized view updates on this table.
+ViewReadTime                                    Timer          Time taken during the local read of a materialized view update.
+TrueSnapshotsSize                               Gauge<Long>    Disk space used by snapshots of this table including all SSTable components.
+RowCacheHitOutOfRange                           Counter        Number of table row cache hits that do not satisfy the query filter, thus went to disk.
+RowCacheHit                                     Counter        Number of table row cache hits.
+RowCacheMiss                                    Counter        Number of table row cache misses.
+CasPrepare                                      Latency        Latency of paxos prepare round.
+CasPropose                                      Latency        Latency of paxos propose round.
+CasCommit                                       Latency        Latency of paxos commit round.
+PercentRepaired                                 Gauge<Double>  Percent of table data that is repaired on disk.
+BytesRepaired                                   Gauge<Long>    Size of table data repaired on disk
+BytesUnrepaired                                 Gauge<Long>    Size of table data unrepaired on disk
+BytesPendingRepair                              Gauge<Long>    Size of table data isolated for an ongoing incremental repair
+SpeculativeRetries                              Counter        Number of times speculative retries were sent for this table.
+SpeculativeFailedRetries                        Counter        Number of speculative retries that failed to prevent a timeout
+SpeculativeInsufficientReplicas                 Counter        Number of speculative retries that couldn't be attempted due to lack of replicas
+SpeculativeSampleLatencyNanos                   Gauge<Long>    Number of nanoseconds to wait before speculation is attempted. Value may be statically configured or updated periodically based on coordinator latency.
+WaitingOnFreeMemtableSpace                      Histogram      Histogram of time spent waiting for free memtable space, either on- or off-heap.
+DroppedMutations                                Counter        Number of dropped mutations on this table.
+AnticompactionTime                              Timer          Time spent anticompacting before a consistent repair.
+ValidationTime                                  Timer          Time spent doing validation compaction during repair.
+SyncTime                                        Timer          Time spent doing streaming during repair.
+BytesValidated                                  Histogram      Histogram over the amount of bytes read during validation.
+PartitionsValidated                             Histogram      Histogram over the number of partitions read during validation.
+BytesAnticompacted                              Counter        How many bytes we anticompacted.
+BytesMutatedAnticompaction                      Counter        How many bytes we avoided anticompacting because the sstable was fully contained in the repaired range.
+MutatedAnticompactionGauge                      Gauge<Double>  Ratio of bytes mutated vs total bytes repaired.
+ReadRepairRequests                              Meter          Throughput for mutations generated by read-repair.
+ShortReadProtectionRequests                     Meter          Throughput for requests to get extra rows during short read protection.
+ReplicaFilteringProtectionRequests              Meter          Throughput for row completion requests during replica filtering protection.
+ReplicaFilteringProtectionRowsCachedPerQuery    Histogram      Histogram of the number of rows cached per query when replica filtering protection is engaged.
+=============================================== ============== ===========
+
+Keyspace Metrics
+^^^^^^^^^^^^^^^^
+Each keyspace in Cassandra has metrics responsible for tracking its state and performance.
+
+Most of these metrics are the same as the ``Table Metrics`` above, only they are aggregated at the Keyspace level. The keyspace specific metrics are specified in the table below.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.keyspace.<MetricName>.<Keyspace>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Keyspace scope=<Keyspace> name=<MetricName>``
+
+
+======================================= ============== ===========
+Name                                    Type           Description
+======================================= ============== ===========
+WriteFailedIdeaCL                       Counter        Number of writes that failed to achieve the configured ideal consistency level or 0 if none is configured
+IdealCLWriteLatency                     Latency        Coordinator latency of writes at the configured ideal consistency level. No values are recorded if ideal consistency level is not configured
+RepairTime                              Timer          Total time spent as repair coordinator.
+RepairPrepareTime                       Timer          Total time spent preparing for repair.
+======================================= ============== ===========
+
+ThreadPool Metrics
+^^^^^^^^^^^^^^^^^^
+
+Cassandra splits work of a particular type into its own thread pool.  This provides back-pressure and asynchrony for
+requests on a node.  It's important to monitor the state of these thread pools since they can tell you how saturated a
+node is.
+
+The metric names are all appended with the specific ``ThreadPool`` name.  The thread pools are also categorized under a
+specific type.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.ThreadPools.<MetricName>.<Path>.<ThreadPoolName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=ThreadPools path=<Path> scope=<ThreadPoolName> name=<MetricName>``
+
+===================== ============== ===========
+Name                  Type           Description
+===================== ============== ===========
+ActiveTasks           Gauge<Integer> Number of tasks being actively worked on by this pool.
+PendingTasks          Gauge<Integer> Number of queued tasks queued up on this pool.
+CompletedTasks        Counter        Number of tasks completed.
+TotalBlockedTasks     Counter        Number of tasks that were blocked due to queue saturation.
+CurrentlyBlockedTask  Counter        Number of tasks that are currently blocked due to queue saturation but on retry will become unblocked.
+MaxPoolSize           Gauge<Integer> The maximum number of threads in this pool.
+MaxTasksQueued        Gauge<Integer> The maximum number of tasks queued before a task get blocked.
+===================== ============== ===========
+
+The following thread pools can be monitored.
+
+============================ ============== ===========
+Name                         Type           Description
+============================ ============== ===========
+Native-Transport-Requests    transport      Handles client CQL requests
+CounterMutationStage         request        Responsible for counter writes
+ViewMutationStage            request        Responsible for materialized view writes
+MutationStage                request        Responsible for all other writes
+ReadRepairStage              request        ReadRepair happens on this thread pool
+ReadStage                    request        Local reads run on this thread pool
+RequestResponseStage         request        Coordinator requests to the cluster run on this thread pool
+AntiEntropyStage             internal       Builds merkle tree for repairs
+CacheCleanupExecutor         internal       Cache maintenance performed on this thread pool
+CompactionExecutor           internal       Compactions are run on these threads
+GossipStage                  internal       Handles gossip requests
+HintsDispatcher              internal       Performs hinted handoff
+InternalResponseStage        internal       Responsible for intra-cluster callbacks
+MemtableFlushWriter          internal       Writes memtables to disk
+MemtablePostFlush            internal       Cleans up commit log after memtable is written to disk
+MemtableReclaimMemory        internal       Memtable recycling
+MigrationStage               internal       Runs schema migrations
+MiscStage                    internal       Misceleneous tasks run here
+PendingRangeCalculator       internal       Calculates token range
+PerDiskMemtableFlushWriter_0 internal       Responsible for writing a spec (there is one of these per disk 0-N)
+Sampler                      internal       Responsible for re-sampling the index summaries of SStables
+SecondaryIndexManagement     internal       Performs updates to secondary indexes
+ValidationExecutor           internal       Performs validation compaction or scrubbing
+ViewBuildExecutor            internal       Performs materialized views initial build
+============================ ============== ===========
+
+.. |nbsp| unicode:: 0xA0 .. nonbreaking space
+
+Client Request Metrics
+^^^^^^^^^^^^^^^^^^^^^^
+
+Client requests have their own set of metrics that encapsulate the work happening at coordinator level.
+
+Different types of client requests are broken down by ``RequestType``.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.ClientRequest.<MetricName>.<RequestType>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=ClientRequest scope=<RequestType> name=<MetricName>``
+
+
+:RequestType: CASRead
+:Description: Metrics related to transactional read requests.
+:Metrics:
+    ===================== ============== =============================================================
+    Name                  Type           Description
+    ===================== ============== =============================================================
+    Timeouts              Counter        Number of timeouts encountered.
+    Failures              Counter        Number of transaction failures encountered.
+    |nbsp|                Latency        Transaction read latency.
+    Unavailables          Counter        Number of unavailable exceptions encountered.
+    UnfinishedCommit      Counter        Number of transactions that were committed on read.
+    ConditionNotMet       Counter        Number of transaction preconditions did not match current values.
+    ContentionHistogram   Histogram      How many contended reads were encountered
+    ===================== ============== =============================================================
+
+:RequestType: CASWrite
+:Description: Metrics related to transactional write requests.
+:Metrics:
+    ===================== ============== =============================================================
+    Name                  Type           Description
+    ===================== ============== =============================================================
+    Timeouts              Counter        Number of timeouts encountered.
+    Failures              Counter        Number of transaction failures encountered.
+    |nbsp|                Latency        Transaction write latency.
+    UnfinishedCommit      Counter        Number of transactions that were committed on write.
+    ConditionNotMet       Counter        Number of transaction preconditions did not match current values.
+    ContentionHistogram   Histogram      How many contended writes were encountered
+    MutationSizeHistogram Histogram      Total size in bytes of the requests mutations.
+    ===================== ============== =============================================================
+
+
+:RequestType: Read
+:Description: Metrics related to standard read requests.
+:Metrics:
+    ===================== ============== =============================================================
+    Name                  Type           Description
+    ===================== ============== =============================================================
+    Timeouts              Counter        Number of timeouts encountered.
+    Failures              Counter        Number of read failures encountered.
+    |nbsp|                Latency        Read latency.
+    Unavailables          Counter        Number of unavailable exceptions encountered.
+    ===================== ============== =============================================================
+
+:RequestType: RangeSlice
+:Description: Metrics related to token range read requests.
+:Metrics:
+    ===================== ============== =============================================================
+    Name                  Type           Description
+    ===================== ============== =============================================================
+    Timeouts              Counter        Number of timeouts encountered.
+    Failures              Counter        Number of range query failures encountered.
+    |nbsp|                Latency        Range query latency.
+    Unavailables          Counter        Number of unavailable exceptions encountered.
+    ===================== ============== =============================================================
+
+:RequestType: Write
+:Description: Metrics related to regular write requests.
+:Metrics:
+    ===================== ============== =============================================================
+    Name                  Type           Description
+    ===================== ============== =============================================================
+    Timeouts              Counter        Number of timeouts encountered.
+    Failures              Counter        Number of write failures encountered.
+    |nbsp|                Latency        Write latency.
+    Unavailables          Counter        Number of unavailable exceptions encountered.
+    MutationSizeHistogram Histogram      Total size in bytes of the requests mutations.
+    ===================== ============== =============================================================
+
+
+:RequestType: ViewWrite
+:Description: Metrics related to materialized view write wrtes.
+:Metrics:
+    ===================== ============== =============================================================
+    Timeouts              Counter        Number of timeouts encountered.
+    Failures              Counter        Number of transaction failures encountered.
+    Unavailables          Counter        Number of unavailable exceptions encountered.
+    ViewReplicasAttempted Counter        Total number of attempted view replica writes.
+    ViewReplicasSuccess   Counter        Total number of succeded view replica writes.
+    ViewPendingMutations  Gauge<Long>    ViewReplicasAttempted - ViewReplicasSuccess.
+    ViewWriteLatency      Timer          Time between when mutation is applied to base table and when CL.ONE is achieved on view.
+    ===================== ============== =============================================================
+
+Cache Metrics
+^^^^^^^^^^^^^
+
+Cassandra caches have metrics to track the effectivness of the caches. Though the ``Table Metrics`` might be more useful.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Cache.<MetricName>.<CacheName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Cache scope=<CacheName> name=<MetricName>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+Capacity                   Gauge<Long>    Cache capacity in bytes.
+Entries                    Gauge<Integer> Total number of cache entries.
+FifteenMinuteCacheHitRate  Gauge<Double>  15m cache hit rate.
+FiveMinuteCacheHitRate     Gauge<Double>  5m cache hit rate.
+OneMinuteCacheHitRate      Gauge<Double>  1m cache hit rate.
+HitRate                    Gauge<Double>  All time cache hit rate.
+Hits                       Meter          Total number of cache hits.
+Misses                     Meter          Total number of cache misses.
+MissLatency                Timer          Latency of misses.
+Requests                   Gauge<Long>    Total number of cache requests.
+Size                       Gauge<Long>    Total size of occupied cache, in bytes.
+========================== ============== ===========
+
+The following caches are covered:
+
+============================ ===========
+Name                         Description
+============================ ===========
+CounterCache                 Keeps hot counters in memory for performance.
+ChunkCache                   In process uncompressed page cache.
+KeyCache                     Cache for partition to sstable offsets.
+RowCache                     Cache for rows kept in memory.
+============================ ===========
+
+.. NOTE::
+    Misses and MissLatency are only defined for the ChunkCache
+
+CQL Metrics
+^^^^^^^^^^^
+
+Metrics specific to CQL prepared statement caching.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.CQL.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=CQL name=<MetricName>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+PreparedStatementsCount    Gauge<Integer> Number of cached prepared statements.
+PreparedStatementsEvicted  Counter        Number of prepared statements evicted from the prepared statement cache
+PreparedStatementsExecuted Counter        Number of prepared statements executed.
+RegularStatementsExecuted  Counter        Number of **non** prepared statements executed.
+PreparedStatementsRatio    Gauge<Double>  Percentage of statements that are prepared vs unprepared.
+========================== ============== ===========
+
+.. _dropped-metrics:
+
+DroppedMessage Metrics
+^^^^^^^^^^^^^^^^^^^^^^
+
+Metrics specific to tracking dropped messages for different types of requests.
+Dropped writes are stored and retried by ``Hinted Handoff``
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.DroppedMessage.<MetricName>.<Type>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=DroppedMessage scope=<Type> name=<MetricName>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+CrossNodeDroppedLatency    Timer          The dropped latency across nodes.
+InternalDroppedLatency     Timer          The dropped latency within node.
+Dropped                    Meter          Number of dropped messages.
+========================== ============== ===========
+
+The different types of messages tracked are:
+
+============================ ===========
+Name                         Description
+============================ ===========
+BATCH_STORE                  Batchlog write
+BATCH_REMOVE                 Batchlog cleanup (after succesfully applied)
+COUNTER_MUTATION             Counter writes
+HINT                         Hint replay
+MUTATION                     Regular writes
+READ                         Regular reads
+READ_REPAIR                  Read repair
+PAGED_SLICE                  Paged read
+RANGE_SLICE                  Token range read
+REQUEST_RESPONSE             RPC Callbacks
+_TRACE                       Tracing writes
+============================ ===========
+
+Streaming Metrics
+^^^^^^^^^^^^^^^^^
+
+Metrics reported during ``Streaming`` operations, such as repair, bootstrap, rebuild.
+
+These metrics are specific to a peer endpoint, with the source node being the node you are pulling the metrics from.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Streaming.<MetricName>.<PeerIP>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Streaming scope=<PeerIP> name=<MetricName>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+IncomingBytes              Counter        Number of bytes streamed to this node from the peer.
+OutgoingBytes              Counter        Number of bytes streamed to the peer endpoint from this node.
+IncomingProcessTime        Timer          The time spent on processing the incoming stream message from the peer.
+========================== ============== ===========
+
+
+Compaction Metrics
+^^^^^^^^^^^^^^^^^^
+
+Metrics specific to ``Compaction`` work.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Compaction.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Compaction name=<MetricName>``
+
+========================== ======================================== ===============================================
+Name                       Type                                     Description
+========================== ======================================== ===============================================
+BytesCompacted             Counter                                  Total number of bytes compacted since server [re]start.
+PendingTasks               Gauge<Integer>                           Estimated number of compactions remaining to perform.
+CompletedTasks             Gauge<Long>                              Number of completed compactions since server [re]start.
+TotalCompactionsCompleted  Meter                                    Throughput of completed compactions since server [re]start.
+PendingTasksByTableName    Gauge<Map<String, Map<String, Integer>>> Estimated number of compactions remaining to perform, grouped by keyspace and then table name. This info is also kept in ``Table Metrics``.
+========================== ======================================== ===============================================
+
+CommitLog Metrics
+^^^^^^^^^^^^^^^^^
+
+Metrics specific to the ``CommitLog``
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.CommitLog.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=CommitLog name=<MetricName>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+CompletedTasks             Gauge<Long>    Total number of commit log messages written since [re]start.
+PendingTasks               Gauge<Long>    Number of commit log messages written but yet to be fsync'd.
+TotalCommitLogSize         Gauge<Long>    Current size, in bytes, used by all the commit log segments.
+WaitingOnSegmentAllocation Timer          Time spent waiting for a CommitLogSegment to be allocated - under normal conditions this should be zero.
+WaitingOnCommit            Timer          The time spent waiting on CL fsync; for Periodic this is only occurs when the sync is lagging its sync interval.
+OverSizedMutations         Meter          Throughput for mutations that exceed limit.
+========================== ============== ===========
+
+Storage Metrics
+^^^^^^^^^^^^^^^
+
+Metrics specific to the storage engine.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Storage.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Storage name=<MetricName>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+Exceptions                 Counter        Number of internal exceptions caught. Under normal exceptions this should be zero.
+Load                       Counter        Size, in bytes, of the on disk data size this node manages.
+TotalHints                 Counter        Number of hint messages written to this node since [re]start. Includes one entry for each host to be hinted per hint.
+TotalHintsInProgress       Counter        Number of hints attemping to be sent currently.
+========================== ============== ===========
+
+.. _hintsservice-metrics:
+
+HintsService Metrics
+^^^^^^^^^^^^^^^^^^^^
+
+Metrics specific to the Hints delivery service.  There are also some metrics related to hints tracked in ``Storage Metrics``
+
+These metrics include the peer endpoint **in the metric name**
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.HintsService.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=HintsService name=<MetricName>``
+
+=========================== ============== ===========
+Name                        Type           Description
+=========================== ============== ===========
+HintsSucceeded               Meter          A meter of the hints successfully delivered
+HintsFailed                  Meter          A meter of the hints that failed deliver
+HintsTimedOut                Meter          A meter of the hints that timed out
+Hint_delays                 Histogram      Histogram of hint delivery delays (in milliseconds)
+Hint_delays-<PeerIP>        Histogram      Histogram of hint delivery delays (in milliseconds) per peer
+=========================== ============== ===========
+
+SSTable Index Metrics
+^^^^^^^^^^^^^^^^^^^^^
+
+Metrics specific to the SSTable index metadata.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Index.<MetricName>.RowIndexEntry``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Index scope=RowIndexEntry name=<MetricName>``
+
+=========================== ============== ===========
+Name                        Type           Description
+=========================== ============== ===========
+IndexedEntrySize            Histogram      Histogram of the on-heap size, in bytes, of the index across all SSTables.
+IndexInfoCount              Histogram      Histogram of the number of on-heap index entries managed across all SSTables.
+IndexInfoGets               Histogram      Histogram of the number index seeks performed per SSTable.
+=========================== ============== ===========
+
+BufferPool Metrics
+^^^^^^^^^^^^^^^^^^
+
+Metrics specific to the internal recycled buffer pool Cassandra manages.  This pool is meant to keep allocations and GC
+lower by recycling on and off heap buffers.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.BufferPool.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=BufferPool name=<MetricName>``
+
+=========================== ============== ===========
+Name                        Type           Description
+=========================== ============== ===========
+Size                        Gauge<Long>    Size, in bytes, of the managed buffer pool
+Misses                      Meter           The rate of misses in the pool. The higher this is the more allocations incurred.
+=========================== ============== ===========
+
+
+Client Metrics
+^^^^^^^^^^^^^^
+
+Metrics specifc to client managment.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Client.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Client name=<MetricName>``
+
+============================== ================================ ===========
+Name                           Type                             Description
+============================== ================================ ===========
+ConnectedNativeClients         Gauge<Integer>                   Number of clients connected to this nodes native protocol server
+Connections                    Gauge<List<Map<String, String>>  List of all connections and their state information
+ConnectedNativeClientsByUser   Gauge<Map<String, Int>           Number of connnective native clients by username
+ClientsByProtocolVersion       Gauge<List<Map<String, String>>> List of up to last 100 connections including protocol version. Can be reset with clearConnectionHistory operation in org.apache.cassandra.db:StorageService mbean.
+RequestsSize                   Gauge<Long>                      How many concurrent bytes used in currently processing requests
+RequestsSizeByIpDistribution   Histogram                        How many concurrent bytes used in currently processing requests by different ips
+============================== ================================ ===========
+
+
+Batch Metrics
+^^^^^^^^^^^^^
+
+Metrics specifc to batch statements.
+
+Reported name format:
+
+**Metric Name**
+    ``org.apache.cassandra.metrics.Batch.<MetricName>``
+
+**JMX MBean**
+    ``org.apache.cassandra.metrics:type=Batch name=<MetricName>``
+
+=========================== ============== ===========
+Name                        Type           Description
+=========================== ============== ===========
+PartitionsPerCounterBatch   Histogram      Distribution of the number of partitions processed per counter batch
+PartitionsPerLoggedBatch    Histogram      Distribution of the number of partitions processed per logged batch
+PartitionsPerUnloggedBatch  Histogram      Distribution of the number of partitions processed per unlogged batch
+=========================== ============== ===========
+
+
+JVM Metrics
+^^^^^^^^^^^
+
+JVM metrics such as memory and garbage collection statistics can either be accessed by connecting to the JVM using JMX or can be exported using `Metric Reporters`_.
+
+BufferPool
+++++++++++
+
+**Metric Name**
+    ``jvm.buffers.<direct|mapped>.<MetricName>``
+
+**JMX MBean**
+    ``java.nio:type=BufferPool name=<direct|mapped>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+Capacity                   Gauge<Long>    Estimated total capacity of the buffers in this pool
+Count                      Gauge<Long>    Estimated number of buffers in the pool
+Used                       Gauge<Long>    Estimated memory that the Java virtual machine is using for this buffer pool
+========================== ============== ===========
+
+FileDescriptorRatio
++++++++++++++++++++
+
+**Metric Name**
+    ``jvm.fd.<MetricName>``
+
+**JMX MBean**
+    ``java.lang:type=OperatingSystem name=<OpenFileDescriptorCount|MaxFileDescriptorCount>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+Usage                      Ratio          Ratio of used to total file descriptors
+========================== ============== ===========
+
+GarbageCollector
+++++++++++++++++
+
+**Metric Name**
+    ``jvm.gc.<gc_type>.<MetricName>``
+
+**JMX MBean**
+    ``java.lang:type=GarbageCollector name=<gc_type>``
+
+========================== ============== ===========
+Name                       Type           Description
+========================== ============== ===========
+Count                      Gauge<Long>    Total number of collections that have occurred
+Time                       Gauge<Long>    Approximate accumulated collection elapsed time in milliseconds
+========================== ============== ===========
+
+Memory
+++++++
+
+**Metric Name**
+    ``jvm.memory.<heap/non-heap/total>.<MetricName>``
+
+**JMX MBean**
+    ``java.lang:type=Memory``
+
+========================== ============== ===========
+Committed                  Gauge<Long>    Amount of memory in bytes that is committed for the JVM to use
+Init                       Gauge<Long>    Amount of memory in bytes that the JVM initially requests from the OS
+Max                        Gauge<Long>    Maximum amount of memory in bytes that can be used for memory management
+Usage                      Ratio          Ratio of used to maximum memory
+Used                       Gauge<Long>    Amount of used memory in bytes
+========================== ============== ===========
+
+MemoryPool
+++++++++++
+
+**Metric Name**
+    ``jvm.memory.pools.<memory_pool>.<MetricName>``
+
+**JMX MBean**
+    ``java.lang:type=MemoryPool name=<memory_pool>``
+
+========================== ============== ===========
+Committed                  Gauge<Long>    Amount of memory in bytes that is committed for the JVM to use
+Init                       Gauge<Long>    Amount of memory in bytes that the JVM initially requests from the OS
+Max                        Gauge<Long>    Maximum amount of memory in bytes that can be used for memory management
+Usage                      Ratio          Ratio of used to maximum memory
+Used                       Gauge<Long>    Amount of used memory in bytes
+========================== ============== ===========
+
+JMX
+^^^
+
+Any JMX based client can access metrics from cassandra.
+
+If you wish to access JMX metrics over http it's possible to download `Mx4jTool <http://mx4j.sourceforge.net/>`__ and
+place ``mx4j-tools.jar`` into the classpath.  On startup you will see in the log::
+
+    HttpAdaptor version 3.0.2 started on port 8081
+
+To choose a different port (8081 is the default) or a different listen address (0.0.0.0 is not the default) edit
+``conf/cassandra-env.sh`` and uncomment::
+
+    #MX4J_ADDRESS="-Dmx4jaddress=0.0.0.0"
+
+    #MX4J_PORT="-Dmx4jport=8081"
+
+
+Metric Reporters
+^^^^^^^^^^^^^^^^
+
+As mentioned at the top of this section on monitoring the Cassandra metrics can be exported to a number of monitoring
+system a number of `built in <http://metrics.dropwizard.io/3.1.0/getting-started/#other-reporting>`__ and `third party
+<http://metrics.dropwizard.io/3.1.0/manual/third-party/>`__ reporter plugins.
+
+The configuration of these plugins is managed by the `metrics reporter config project
+<https://github.com/addthis/metrics-reporter-config>`__. There is a sample configuration file located at
+``conf/metrics-reporter-config-sample.yaml``.
+
+Once configured, you simply start cassandra with the flag
+``-Dcassandra.metricsReporterConfigFile=metrics-reporter-config.yaml``. The specified .yaml file plus any 3rd party
+reporter jars must all be in Cassandra's classpath.
diff --git a/src/doc/4.0-rc1/_sources/operating/read_repair.rst.txt b/src/doc/4.0-rc1/_sources/operating/read_repair.rst.txt
new file mode 100644
index 0000000..d280162
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/read_repair.rst.txt
@@ -0,0 +1,169 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+.. _read-repair:
+
+Read repair
+==============
+Read Repair is the process of repairing data replicas during a read request. If all replicas involved in a read request at the given read consistency level are consistent the data is returned to the client and no read repair is needed. But if the replicas involved in a read request at the given consistency level are not consistent a read repair is performed to make replicas involved in the read request consistent. The most up-to-date data is returned to the client. The read repair runs in the foreground and is blocking in that a response is not returned to the client until the read repair has completed and up-to-date data is constructed.
+
+Expectation of Monotonic Quorum Reads
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Cassandra uses a blocking read repair to ensure the expectation of "monotonic quorum reads" i.e. that in 2 successive quorum reads, it’s guaranteed the 2nd one won't get something older than the 1st one, and this even if a failed quorum write made a write of the most up to date value only to a minority of replicas. "Quorum" means majority of nodes among replicas.
+
+Table level configuration of monotonic reads
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Cassandra 4.0 adds support for table level configuration of monotonic reads (`CASSANDRA-14635
+<https://issues.apache.org/jira/browse/CASSANDRA-14635>`_). The ``read_repair`` table option has been added to table schema, with the options ``blocking`` (default), and ``none``.
+
+The ``read_repair`` option configures the read repair behavior to allow tuning for various performance and consistency behaviors. Two consistency properties are affected by read repair behavior.
+
+- Monotonic Quorum Reads: Provided by ``BLOCKING``. Monotonic quorum reads prevents reads from appearing to go back in time in some circumstances. When monotonic quorum reads are not provided and a write fails to reach a quorum of replicas, it may be visible in one read, and then disappear in a subsequent read.
+- Write Atomicity: Provided by ``NONE``. Write atomicity prevents reads from returning partially applied writes. Cassandra attempts to provide partition level write atomicity, but since only the data covered by a ``SELECT`` statement is repaired by a read repair, read repair can break write atomicity when data is read at a more granular level than it is written. For example read repair can break write atomicity if you write multiple rows to a clustered partition in a batch, but then select a single row by specifying the clustering column in a ``SELECT`` statement.
+
+The available read repair settings are:
+
+Blocking
+*********
+The default setting. When ``read_repair`` is set to ``BLOCKING``, and a read repair is started, the read will block on writes sent to other replicas until the CL is reached by the writes. Provides monotonic quorum reads, but not partition level write atomicity.
+
+None
+*********
+When ``read_repair`` is set to ``NONE``, the coordinator will reconcile any differences between replicas, but will not attempt to repair them. Provides partition level write atomicity, but not monotonic quorum reads.
+
+An example of using the ``NONE`` setting for the ``read_repair`` option is as follows:
+
+::
+
+ CREATE TABLE ks.tbl (k INT, c INT, v INT, PRIMARY KEY (k,c)) with read_repair='NONE'");
+
+Read Repair Example
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+To illustrate read repair with an example, consider that a client sends a read request with read consistency level ``TWO`` to a 5-node cluster as illustrated in Figure 1. Read consistency level determines how many replica nodes must return a response before the read request is considered successful.
+
+
+.. figure:: Figure_1_read_repair.jpg
+
+
+Figure 1. Client sends read request to a 5-node Cluster
+
+Three nodes host replicas for the requested data as illustrated in Figure 2. With a read consistency level of ``TWO`` two replica nodes must return a response for the read request to be considered successful. If the node the client sends request to hosts a replica of the data requested only one other replica node needs to be sent a read request to. But if the receiving node does not host a replica for the requested data the node becomes a coordinator node and forwards the read request to a node that hosts a replica. A direct read request is forwarded to the fastest node (as determined by dynamic snitch) as shown in Figure 2. A direct read request is a full read and returns the requested data.
+
+.. figure:: Figure_2_read_repair.jpg
+
+Figure 2. Direct Read Request sent to Fastest Replica Node
+
+Next, the coordinator node sends the requisite number of additional requests to satisfy the consistency level, which is ``TWO``. The coordinator node needs to send one more read request for a total of two. All read requests additional to the first direct read request are digest read requests. A digest read request is not a full read and only returns the hash value of the data. Only a hash value is returned to reduce the network data traffic. In the example being discussed the coordinator node sends one digest read request to a node hosting a replica as illustrated in Figure 3.
+
+.. figure:: Figure_3_read_repair.jpg
+
+Figure 3. Coordinator Sends a Digest Read Request
+
+The coordinator node has received a full copy of data from one node and a hash value for the data from another node. To compare the data returned a hash value is calculated for the  full copy of data. The two hash values are compared. If the hash values are the same no read repair is needed and the full copy of requested data is returned to the client. The coordinator node only performed a total of two replica read request because the read consistency level is ``TWO`` in the example. If the consistency level were higher such as ``THREE``, three replica nodes would need to respond to a read request and only if all digest or hash values were to match with the hash value of the full copy of data would the read request be considered successful and the data returned to the client.
+
+But, if the hash value/s from the digest read request/s are not the same as the hash value of the data from the full read request of the first replica node it implies that an inconsistency in the replicas exists. To fix the inconsistency a read repair is performed.
+
+For example, consider that that digest request returns a hash value that is not the same as the hash value of the data from the direct full read request. We would need to make the replicas consistent for which the coordinator node sends a direct (full) read request to the replica node that it sent a digest read request to earlier as illustrated in Figure 4.
+
+.. figure:: Figure_4_read_repair.jpg
+
+Figure 4. Coordinator sends  Direct Read Request to Replica Node it had sent Digest Read Request to
+
+After receiving the data from the second replica node the coordinator has data from two of the replica nodes. It only needs two replicas as the read consistency level is ``TWO`` in the example. Data from the two replicas is compared and based on the timestamps the most recent replica is selected. Data may need to be merged to construct an up-to-date copy of data if one replica has data for only some of the columns. In the example, if the data from the first direct read request is found to be outdated and the data from the second full read request to be the latest read, repair needs to be performed on Replica 2. If a new up-to-date data is constructed by merging the two replicas a read repair would be needed on both the replicas involved. For example, a read repair is performed on Replica 2 as illustrated in Figure 5.
+
+.. figure:: Figure_5_read_repair.jpg
+
+Figure 5. Coordinator performs Read Repair
+
+
+The most up-to-date data is returned to the client as illustrated in Figure 6. From the three replicas Replica 1 is not even read and thus not repaired. Replica 2 is repaired. Replica 3 is the most up-to-date and returned to client.
+
+.. figure:: Figure_6_read_repair.jpg
+
+Figure 6. Most up-to-date Data returned to Client
+
+Read Consistency Level and Read Repair
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The read consistency is most significant in determining if a read repair needs to be performed. As discussed in Table 1 a read repair is not needed for all of the consistency levels.
+
+Table 1. Read Repair based on Read Consistency Level
+
++----------------------+-------------------------------------------+
+|Read Consistency Level| Description                               |
++----------------------+-------------------------------------------+
+| ONE                  |Read repair is not performed as the        |
+|                      |data from the first direct read request    |
+|                      |satisfies the consistency level ONE.       |
+|                      |No digest read requests are involved       |
+|                      |for finding mismatches in data.            |
++----------------------+-------------------------------------------+
+| TWO                  |Read repair is performed if inconsistencies|
+|                      |in data are found as determined by the     |
+|                      |direct and digest read requests.           |
++----------------------+-------------------------------------------+
+| THREE                |Read repair is performed if inconsistencies|
+|                      |in data are found as determined by the     |
+|                      |direct and digest read requests.           |
++----------------------+-------------------------------------------+
+|LOCAL_ONE             |Read repair is not performed as the data   |
+|                      |from the direct read request from the      |
+|                      |closest replica satisfies the consistency  |
+|                      |level LOCAL_ONE.No digest read requests are|
+|                      |involved for finding mismatches in data.   |
++----------------------+-------------------------------------------+
+|LOCAL_QUORUM          |Read repair is performed if inconsistencies|
+|                      |in data are found as determined by the     |
+|                      |direct and digest read requests.           |
++----------------------+-------------------------------------------+
+|QUORUM                |Read repair is performed if inconsistencies|
+|                      |in data are found as determined by the     |
+|                      |direct and digest read requests.           |
++----------------------+-------------------------------------------+
+
+If read repair is performed it is made only on the replicas that are not up-to-date and that are involved in the read request. The number of replicas involved in a read request would be based on the read consistency level; in the example it is two.
+
+Improved Read Repair Blocking Behavior in Cassandra 4.0
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Cassandra 4.0 makes two improvements to read repair blocking behavior (`CASSANDRA-10726
+<https://issues.apache.org/jira/browse/CASSANDRA-10726>`_).
+
+1. Speculative Retry of Full Data Read Requests. Cassandra 4.0 makes use of speculative retry in sending read requests (full, not digest) to replicas if a full data response is not received, whether in the initial full read request or a full data read request during read repair.  With speculative retry if it looks like a response may not be received from the initial set of replicas Cassandra sent messages to, to satisfy the consistency level, it speculatively sends additional read request to un-contacted replica/s. Cassandra 4.0 will also speculatively send a repair mutation to a minority of nodes not involved in the read repair data read / write cycle with the combined contents of all un-acknowledged mutations if it looks like one may not respond. Cassandra accepts acks from them in lieu of acks from the initial mutations sent out, so long as it receives the same number of acks as repair mutations transmitted.
+
+2. Only blocks on Full Data Responses to satisfy the Consistency Level. Cassandra 4.0 only blocks for what is needed for resolving the digest mismatch and wait for enough full data responses to meet the consistency level, no matter whether it’s speculative retry or read repair chance. As an example, if it looks like Cassandra might not receive full data requests from everyone in time, it sends additional requests to additional replicas not contacted in the initial full data read. If the collection of nodes that end up responding in time end up agreeing on the data, the response from the disagreeing replica that started the read repair is not considered, and won't be included in the response to the client, preserving the expectation of monotonic quorum reads.
+
+Diagnostic Events for Read Repairs
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Cassandra 4.0 adds diagnostic events for read repair (`CASSANDRA-14668
+<https://issues.apache.org/jira/browse/CASSANDRA-14668>`_) that can be used for exposing information such as:
+
+- Contacted endpoints
+- Digest responses by endpoint
+- Affected partition keys
+- Speculated reads / writes
+- Update oversized
+
+Background Read Repair
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Background read repair, which was configured using ``read_repair_chance`` and ``dclocal_read_repair_chance`` settings in ``cassandra.yaml`` is  removed Cassandra 4.0 (`CASSANDRA-13910
+<https://issues.apache.org/jira/browse/CASSANDRA-13910>`_).
+
+Read repair is not an alternative for other kind of repairs such as full repairs or replacing a node that keeps failing. The data returned even after a read repair has been performed may not be the most up-to-date data if consistency level is other than one requiring response from all replicas.
diff --git a/src/doc/4.0-rc1/_sources/operating/repair.rst.txt b/src/doc/4.0-rc1/_sources/operating/repair.rst.txt
new file mode 100644
index 0000000..94fdc11
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/repair.rst.txt
@@ -0,0 +1,208 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+.. _repair:
+
+Repair
+------
+
+Cassandra is designed to remain available if one of it's nodes is down or unreachable. However, when a node is down or
+unreachable, it needs to eventually discover the writes it missed. Hints attempt to inform a node of missed writes, but
+are a best effort, and aren't guaranteed to inform a node of 100% of the writes it missed. These inconsistencies can
+eventually result in data loss as nodes are replaced or tombstones expire.
+
+These inconsistencies are fixed with the repair process. Repair synchronizes the data between nodes by comparing their
+respective datasets for their common token ranges, and streaming the differences for any out of sync sections between
+the nodes. It compares the data with merkle trees, which are a hierarchy of hashes.
+
+Incremental and Full Repairs
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+There are 2 types of repairs: full repairs, and incremental repairs. Full repairs operate over all of the data in the
+token range being repaired. Incremental repairs only repair data that's been written since the previous incremental repair.
+
+Incremental repairs are the default repair type, and if run regularly, can significantly reduce the time and io cost of
+performing a repair. However, it's important to understand that once an incremental repair marks data as repaired, it won't
+try to repair it again. This is fine for syncing up missed writes, but it doesn't protect against things like disk corruption,
+data loss by operator error, or bugs in Cassandra. For this reason, full repairs should still be run occasionally.
+
+Usage and Best Practices
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Since repair can result in a lot of disk and network io, it's not run automatically by Cassandra. It is run by the operator
+via nodetool.
+
+Incremental repair is the default and is run with the following command:
+
+::
+
+    nodetool repair
+
+A full repair can be run with the following command:
+
+::
+
+    nodetool repair --full
+
+Additionally, repair can be run on a single keyspace:
+
+::
+
+    nodetool repair [options] <keyspace_name>
+
+Or even on specific tables:
+
+::
+
+    nodetool repair [options] <keyspace_name> <table1> <table2>
+
+
+The repair command only repairs token ranges on the node being repaired, it doesn't repair the whole cluster. By default, repair
+will operate on all token ranges replicated by the node you're running repair on, which will cause duplicate work if you run it
+on every node. The ``-pr`` flag will only repair the "primary" ranges on a node, so you can repair your entire cluster by running
+``nodetool repair -pr`` on each node in a single datacenter.
+
+The specific frequency of repair that's right for your cluster, of course, depends on several factors. However, if you're
+just starting out and looking for somewhere to start, running an incremental repair every 1-3 days, and a full repair every
+1-3 weeks is probably reasonable. If you don't want to run incremental repairs, a full repair every 5 days is a good place
+to start.
+
+At a minimum, repair should be run often enough that the gc grace period never expires on unrepaired data. Otherwise, deleted
+data could reappear. With a default gc grace period of 10 days, repairing every node in your cluster at least once every 7 days
+will prevent this, while providing enough slack to allow for delays.
+
+Other Options
+^^^^^^^^^^^^^
+
+``-pr, --partitioner-range``
+    Restricts repair to the 'primary' token ranges of the node being repaired. A primary range is just a token range for
+    which a node is the first replica in the ring.
+
+``-prv, --preview``
+    Estimates the amount of streaming that would occur for the given repair command. This builds the merkle trees, and prints
+    the expected streaming activity, but does not actually do any streaming. By default, incremental repairs are estimated,
+    add the ``--full`` flag to estimate a full repair.
+
+``-vd, --validate``
+    Verifies that the repaired data is the same across all nodes. Similiar to ``--preview``, this builds and compares merkle
+    trees of repaired data, but doesn't do any streaming. This is useful for troubleshooting. If this shows that the repaired
+    data is out of sync, a full repair should be run.
+
+.. seealso::
+    :ref:`nodetool repair docs <nodetool_repair>`
+
+Full Repair Example
+^^^^^^^^^^^^^^^^^^^^
+Full repair is typically needed to redistribute data after increasing the replication factor of a keyspace or after adding a node to the cluster. Full repair involves streaming SSTables. To demonstrate full repair start with a three node cluster.
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool status
+ Datacenter: us-east-1
+ =====================
+ Status=Up/Down
+ |/ State=Normal/Leaving/Joining/Moving
+ --  Address   Load        Tokens  Owns  Host ID                              Rack
+ UN  10.0.1.115  547 KiB     256    ?  b64cb32a-b32a-46b4-9eeb-e123fa8fc287  us-east-1b
+ UN  10.0.3.206  617.91 KiB  256    ?  74863177-684b-45f4-99f7-d1006625dc9e  us-east-1d
+ UN  10.0.2.238  670.26 KiB  256    ?  4dcdadd2-41f9-4f34-9892-1f20868b27c7  us-east-1c
+
+Create a keyspace with replication factor 3:
+
+::
+
+ cqlsh> DROP KEYSPACE cqlkeyspace;
+ cqlsh> CREATE KEYSPACE CQLKeyspace
+   ... WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
+
+Add a table to the keyspace:
+
+::
+
+ cqlsh> use cqlkeyspace;
+ cqlsh:cqlkeyspace> CREATE TABLE t (
+            ...   id int,
+            ...   k int,
+            ...   v text,
+            ...   PRIMARY KEY (id)
+            ... );
+
+Add table data:
+
+::
+
+ cqlsh:cqlkeyspace> INSERT INTO t (id, k, v) VALUES (0, 0, 'val0');
+ cqlsh:cqlkeyspace> INSERT INTO t (id, k, v) VALUES (1, 1, 'val1');
+ cqlsh:cqlkeyspace> INSERT INTO t (id, k, v) VALUES (2, 2, 'val2');
+
+A query lists the data added:
+
+::
+
+ cqlsh:cqlkeyspace> SELECT * FROM t;
+
+ id | k | v
+ ----+---+------
+  1 | 1 | val1
+  0 | 0 | val0
+  2 | 2 | val2
+ (3 rows)
+
+Make the following changes to a three node cluster:
+
+1.       Increase the replication factor from 3 to 4.
+2.       Add a 4th node to the cluster
+
+When the replication factor is increased the following message gets output indicating that a full repair is needed as per (`CASSANDRA-13079
+<https://issues.apache.org/jira/browse/CASSANDRA-13079>`_):
+
+::
+
+ cqlsh:cqlkeyspace> ALTER KEYSPACE CQLKeyspace
+            ... WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 4};
+ Warnings :
+ When increasing replication factor you need to run a full (-full) repair to distribute the
+ data.
+
+Perform a full repair on the keyspace ``cqlkeyspace`` table ``t`` with following command:
+
+::
+
+ nodetool repair -full cqlkeyspace t
+
+Full repair completes in about a second as indicated by the output:
+
+::
+
+[ec2-user@ip-10-0-2-238 ~]$ nodetool repair -full cqlkeyspace t
+[2019-08-17 03:06:21,445] Starting repair command #1 (fd576da0-c09b-11e9-b00c-1520e8c38f00), repairing keyspace cqlkeyspace with repair options (parallelism: parallel, primary range: false, incremental: false, job threads: 1, ColumnFamilies: [t], dataCenters: [], hosts: [], previewKind: NONE, # of ranges: 1024, pull repair: false, force repair: false, optimise streams: false)
+[2019-08-17 03:06:23,059] Repair session fd8e5c20-c09b-11e9-b00c-1520e8c38f00 for range [(-8792657144775336505,-8786320730900698730], (-5454146041421260303,-5439402053041523135], (4288357893651763201,4324309707046452322], ... , (4350676211955643098,4351706629422088296]] finished (progress: 0%)
+[2019-08-17 03:06:23,077] Repair completed successfully
+[2019-08-17 03:06:23,077] Repair command #1 finished in 1 second
+[ec2-user@ip-10-0-2-238 ~]$
+
+The ``nodetool  tpstats`` command should list a repair having been completed as ``Repair-Task`` > ``Completed`` column value of 1:
+
+::
+
+ [ec2-user@ip-10-0-2-238 ~]$ nodetool tpstats
+ Pool Name Active   Pending Completed   Blocked  All time blocked
+ ReadStage  0           0           99       0              0
+ …
+ Repair-Task 0       0           1        0              0
+ RequestResponseStage                  0        0        2078        0               0
diff --git a/src/doc/4.0-rc1/_sources/operating/security.rst.txt b/src/doc/4.0-rc1/_sources/operating/security.rst.txt
new file mode 100644
index 0000000..e97baef
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/security.rst.txt
@@ -0,0 +1,441 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+Security
+--------
+There are three main components to the security features provided by Cassandra:
+
+- TLS/SSL encryption for client and inter-node communication
+- Client authentication
+- Authorization
+
+By default, these features are disabled as Cassandra is configured to easily find and be found by other members of a
+cluster. In other words, an out-of-the-box Cassandra installation presents a large attack surface for a bad actor.
+Enabling authentication for clients using the binary protocol is not sufficient to protect a cluster. Malicious users
+able to access internode communication and JMX ports can still:
+
+- Craft internode messages to insert users into authentication schema
+- Craft internode messages to truncate or drop schema
+- Use tools such as ``sstableloader`` to overwrite ``system_auth`` tables 
+- Attach to the cluster directly to capture write traffic
+
+Correct configuration of all three security components should negate theses vectors. Therefore, understanding Cassandra's
+security features is crucial to configuring your cluster to meet your security needs.
+
+
+TLS/SSL Encryption
+^^^^^^^^^^^^^^^^^^
+Cassandra provides secure communication between a client machine and a database cluster and between nodes within a
+cluster. Enabling encryption ensures that data in flight is not compromised and is transferred securely. The options for
+client-to-node and node-to-node encryption are managed separately and may be configured independently.
+
+In both cases, the JVM defaults for supported protocols and cipher suites are used when encryption is enabled. These can
+be overidden using the settings in ``cassandra.yaml``, but this is not recommended unless there are policies in place
+which dictate certain settings or a need to disable vulnerable ciphers or protocols in cases where the JVM cannot be
+updated.
+
+FIPS compliant settings can be configured at the JVM level and should not involve changing encryption settings in
+cassandra.yaml. See `the java document on FIPS <https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html>`__
+for more details.
+
+For information on generating the keystore and truststore files used in SSL communications, see the
+`java documentation on creating keystores <https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore>`__
+
+SSL Certificate Hot Reloading
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Beginning with Cassandra 4, Cassandra supports hot reloading of SSL Certificates. If SSL/TLS support is enabled in Cassandra,
+the node periodically polls the Trust and Key Stores specified in cassandra.yaml. When the files are updated, Cassandra will
+reload them and use them for subsequent connections. Please note that the Trust & Key Store passwords are part of the yaml so
+the updated files should also use the same passwords. The default polling interval is 10 minutes.
+
+Certificate Hot reloading may also be triggered using the ``nodetool reloadssl`` command. Use this if you want to Cassandra to
+immediately notice the changed certificates.
+
+Inter-node Encryption
+~~~~~~~~~~~~~~~~~~~~~
+
+The settings for managing inter-node encryption are found in ``cassandra.yaml`` in the ``server_encryption_options``
+section. To enable inter-node encryption, change the ``internode_encryption`` setting from its default value of ``none``
+to one value from: ``rack``, ``dc`` or ``all``.
+
+Client to Node Encryption
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The settings for managing client to node encryption are found in ``cassandra.yaml`` in the ``client_encryption_options``
+section. There are two primary toggles here for enabling encryption, ``enabled`` and ``optional``.
+
+- If neither is set to ``true``, client connections are entirely unencrypted.
+- If ``enabled`` is set to ``true`` and ``optional`` is set to ``false``, all client connections must be secured.
+- If both options are set to ``true``, both encrypted and unencrypted connections are supported using the same port.
+  Client connections using encryption with this configuration will be automatically detected and handled by the server.
+
+As an alternative to the ``optional`` setting, separate ports can also be configured for secure and unsecure connections
+where operational requirements demand it. To do so, set ``optional`` to false and use the ``native_transport_port_ssl``
+setting in ``cassandra.yaml`` to specify the port to be used for secure client communication.
+
+.. _operation-roles:
+
+Roles
+^^^^^
+
+Cassandra uses database roles, which may represent either a single user or a group of users, in both authentication and
+permissions management. Role management is an extension point in Cassandra and may be configured using the
+``role_manager`` setting in ``cassandra.yaml``. The default setting uses ``CassandraRoleManager``, an implementation
+which stores role information in the tables of the ``system_auth`` keyspace.
+
+See also the :ref:`CQL documentation on roles <cql-roles>`.
+
+Authentication
+^^^^^^^^^^^^^^
+
+Authentication is pluggable in Cassandra and is configured using the ``authenticator`` setting in ``cassandra.yaml``.
+Cassandra ships with two options included in the default distribution.
+
+By default, Cassandra is configured with ``AllowAllAuthenticator`` which performs no authentication checks and therefore
+requires no credentials. It is used to disable authentication completely. Note that authentication is a necessary
+condition of Cassandra's permissions subsystem, so if authentication is disabled, effectively so are permissions.
+
+The default distribution also includes ``PasswordAuthenticator``, which stores encrypted credentials in a system table.
+This can be used to enable simple username/password authentication.
+
+.. _password-authentication:
+
+Enabling Password Authentication
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Before enabling client authentication on the cluster, client applications should be pre-configured with their intended
+credentials. When a connection is initiated, the server will only ask for credentials once authentication is
+enabled, so setting up the client side config in advance is safe. In contrast, as soon as a server has authentication
+enabled, any connection attempt without proper credentials will be rejected which may cause availability problems for
+client applications. Once clients are setup and ready for authentication to be enabled, follow this procedure to enable
+it on the cluster.
+
+Pick a single node in the cluster on which to perform the initial configuration. Ideally, no clients should connect
+to this node during the setup process, so you may want to remove it from client config, block it at the network level
+or possibly add a new temporary node to the cluster for this purpose. On that node, perform the following steps:
+
+1. Open a ``cqlsh`` session and change the replication factor of the ``system_auth`` keyspace. By default, this keyspace
+   uses ``SimpleReplicationStrategy`` and a ``replication_factor`` of 1. It is recommended to change this for any
+   non-trivial deployment to ensure that should nodes become unavailable, login is still possible. Best practice is to
+   configure a replication factor of 3 to 5 per-DC.
+
+::
+
+    ALTER KEYSPACE system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': 3, 'DC2': 3};
+
+2. Edit ``cassandra.yaml`` to change the ``authenticator`` option like so:
+
+::
+
+    authenticator: PasswordAuthenticator
+
+3. Restart the node.
+
+4. Open a new ``cqlsh`` session using the credentials of the default superuser:
+
+::
+
+    cqlsh -u cassandra -p cassandra
+
+5. During login, the credentials for the default superuser are read with a consistency level of ``QUORUM``, whereas
+   those for all other users (including superusers) are read at ``LOCAL_ONE``. In the interests of performance and
+   availability, as well as security, operators should create another superuser and disable the default one. This step
+   is optional, but highly recommended. While logged in as the default superuser, create another superuser role which
+   can be used to bootstrap further configuration.
+
+::
+
+    # create a new superuser
+    CREATE ROLE dba WITH SUPERUSER = true AND LOGIN = true AND PASSWORD = 'super';
+
+6. Start a new cqlsh session, this time logging in as the new_superuser and disable the default superuser.
+
+::
+
+    ALTER ROLE cassandra WITH SUPERUSER = false AND LOGIN = false;
+
+7. Finally, set up the roles and credentials for your application users with :ref:`CREATE ROLE <create-role-statement>`
+   statements.
+
+At the end of these steps, the one node is configured to use password authentication. To roll that out across the
+cluster, repeat steps 2 and 3 on each node in the cluster. Once all nodes have been restarted, authentication will be
+fully enabled throughout the cluster.
+
+Note that using ``PasswordAuthenticator`` also requires the use of :ref:`CassandraRoleManager <operation-roles>`.
+
+See also: :ref:`setting-credentials-for-internal-authentication`, :ref:`CREATE ROLE <create-role-statement>`,
+:ref:`ALTER ROLE <alter-role-statement>`, :ref:`ALTER KEYSPACE <alter-keyspace-statement>` and :ref:`GRANT PERMISSION
+<grant-permission-statement>`,
+
+.. _authorization:
+
+Authorization
+^^^^^^^^^^^^^
+
+Authorization is pluggable in Cassandra and is configured using the ``authorizer`` setting in ``cassandra.yaml``.
+Cassandra ships with two options included in the default distribution.
+
+By default, Cassandra is configured with ``AllowAllAuthorizer`` which performs no checking and so effectively grants all
+permissions to all roles. This must be used if ``AllowAllAuthenticator`` is the configured authenticator.
+
+The default distribution also includes ``CassandraAuthorizer``, which does implement full permissions management
+functionality and stores its data in Cassandra system tables.
+
+Enabling Internal Authorization
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Permissions are modelled as a whitelist, with the default assumption that a given role has no access to any database
+resources. The implication of this is that once authorization is enabled on a node, all requests will be rejected until
+the required permissions have been granted. For this reason, it is strongly recommended to perform the initial setup on
+a node which is not processing client requests.
+
+The following assumes that authentication has already been enabled via the process outlined in
+:ref:`password-authentication`. Perform these steps to enable internal authorization across the cluster:
+
+1. On the selected node, edit ``cassandra.yaml`` to change the ``authorizer`` option like so:
+
+::
+
+    authorizer: CassandraAuthorizer
+
+2. Restart the node.
+
+3. Open a new ``cqlsh`` session using the credentials of a role with superuser credentials:
+
+::
+
+    cqlsh -u dba -p super
+
+4. Configure the appropriate access privileges for your clients using `GRANT PERMISSION <cql.html#grant-permission>`_
+   statements. On the other nodes, until configuration is updated and the node restarted, this will have no effect so
+   disruption to clients is avoided.
+
+::
+
+    GRANT SELECT ON ks.t1 TO db_user;
+
+5. Once all the necessary permissions have been granted, repeat steps 1 and 2 for each node in turn. As each node
+   restarts and clients reconnect, the enforcement of the granted permissions will begin.
+
+See also: :ref:`GRANT PERMISSION <grant-permission-statement>`, `GRANT ALL <grant-all>` and :ref:`REVOKE PERMISSION
+<revoke-permission-statement>`
+
+.. _auth-caching:
+
+Caching
+^^^^^^^
+
+Enabling authentication and authorization places additional load on the cluster by frequently reading from the
+``system_auth`` tables. Furthermore, these reads are in the critical paths of many client operations, and so has the
+potential to severely impact quality of service. To mitigate this, auth data such as credentials, permissions and role
+details are cached for a configurable period. The caching can be configured (and even disabled) from ``cassandra.yaml``
+or using a JMX client. The JMX interface also supports invalidation of the various caches, but any changes made via JMX
+are not persistent and will be re-read from ``cassandra.yaml`` when the node is restarted.
+
+Each cache has 3 options which can be set:
+
+Validity Period
+    Controls the expiration of cache entries. After this period, entries are invalidated and removed from the cache.
+Refresh Rate
+    Controls the rate at which background reads are performed to pick up any changes to the underlying data. While these
+    async refreshes are performed, caches will continue to serve (possibly) stale data. Typically, this will be set to a
+    shorter time than the validity period.
+Max Entries
+    Controls the upper bound on cache size.
+
+The naming for these options in ``cassandra.yaml`` follows the convention:
+
+* ``<type>_validity_in_ms``
+* ``<type>_update_interval_in_ms``
+* ``<type>_cache_max_entries``
+
+Where ``<type>`` is one of ``credentials``, ``permissions``, or ``roles``.
+
+As mentioned, these are also exposed via JMX in the mbeans under the ``org.apache.cassandra.auth`` domain.
+
+JMX access
+^^^^^^^^^^
+
+Access control for JMX clients is configured separately to that for CQL. For both authentication and authorization, two
+providers are available; the first based on standard JMX security and the second which integrates more closely with
+Cassandra's own auth subsystem.
+
+The default settings for Cassandra make JMX accessible only from localhost. To enable remote JMX connections, edit
+``cassandra-env.sh`` to change the ``LOCAL_JMX`` setting to ``no``. Under the
+standard configuration, when remote JMX connections are enabled, :ref:`standard JMX authentication <standard-jmx-auth>`
+is also switched on.
+
+Note that by default, local-only connections are not subject to authentication, but this can be enabled.
+
+If enabling remote connections, it is recommended to also use :ref:`SSL <jmx-with-ssl>` connections.
+
+Finally, after enabling auth and/or SSL, ensure that tools which use JMX, such as :ref:`nodetool <nodetool>`, are
+correctly configured and working as expected.
+
+.. _standard-jmx-auth:
+
+Standard JMX Auth
+~~~~~~~~~~~~~~~~~
+
+Users permitted to connect to the JMX server are specified in a simple text file. The location of this file is set in
+``cassandra-env.sh`` by the line:
+
+::
+
+    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
+
+Edit the password file to add username/password pairs:
+
+::
+
+    jmx_user jmx_password
+
+Secure the credentials file so that only the user running the Cassandra process can read it :
+
+::
+
+    $ chown cassandra:cassandra /etc/cassandra/jmxremote.password
+    $ chmod 400 /etc/cassandra/jmxremote.password
+
+Optionally, enable access control to limit the scope of what defined users can do via JMX. Note that this is a fairly
+blunt instrument in this context as most operational tools in Cassandra require full read/write access. To configure a
+simple access file, uncomment this line in ``cassandra-env.sh``:
+
+::
+
+    #JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access"
+
+Then edit the access file to grant your JMX user readwrite permission:
+
+::
+
+    jmx_user readwrite
+
+Cassandra must be restarted to pick up the new settings.
+
+See also : `Using File-Based Password Authentication In JMX
+<http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdenv>`__
+
+
+Cassandra Integrated Auth
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+An alternative to the out-of-the-box JMX auth is to useeCassandra's own authentication and/or authorization providers
+for JMX clients. This is potentially more flexible and secure but it come with one major caveat. Namely that it is not
+available until `after` a node has joined the ring, because the auth subsystem is not fully configured until that point
+However, it is often critical for monitoring purposes to have JMX access particularly during bootstrap. So it is
+recommended, where possible, to use local only JMX auth during bootstrap and then, if remote connectivity is required,
+to switch to integrated auth once the node has joined the ring and initial setup is complete.
+
+With this option, the same database roles used for CQL authentication can be used to control access to JMX, so updates
+can be managed centrally using just ``cqlsh``. Furthermore, fine grained control over exactly which operations are
+permitted on particular MBeans can be acheived via :ref:`GRANT PERMISSION <grant-permission-statement>`.
+
+To enable integrated authentication, edit ``cassandra-env.sh`` to uncomment these lines:
+
+::
+
+    #JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.remote.login.config=CassandraLogin"
+    #JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config=$CASSANDRA_HOME/conf/cassandra-jaas.config"
+
+And disable the JMX standard auth by commenting this line:
+
+::
+
+    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
+
+To enable integrated authorization, uncomment this line:
+
+::
+
+    #JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.authorizer=org.apache.cassandra.auth.jmx.AuthorizationProxy"
+
+Check standard access control is off by ensuring this line is commented out:
+
+::
+
+   #JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access"
+
+With integrated authentication and authorization enabled, operators can define specific roles and grant them access to
+the particular JMX resources that they need. For example, a role with the necessary permissions to use tools such as
+jconsole or jmc in read-only mode would be defined as:
+
+::
+
+    CREATE ROLE jmx WITH LOGIN = false;
+    GRANT SELECT ON ALL MBEANS TO jmx;
+    GRANT DESCRIBE ON ALL MBEANS TO jmx;
+    GRANT EXECUTE ON MBEAN 'java.lang:type=Threading' TO jmx;
+    GRANT EXECUTE ON MBEAN 'com.sun.management:type=HotSpotDiagnostic' TO jmx;
+
+    # Grant the role with necessary permissions to use nodetool commands (including nodetool status) in read-only mode
+    GRANT EXECUTE ON MBEAN 'org.apache.cassandra.db:type=EndpointSnitchInfo' TO jmx;
+    GRANT EXECUTE ON MBEAN 'org.apache.cassandra.db:type=StorageService' TO jmx;
+
+    # Grant the jmx role to one with login permissions so that it can access the JMX tooling
+    CREATE ROLE ks_user WITH PASSWORD = 'password' AND LOGIN = true AND SUPERUSER = false;
+    GRANT jmx TO ks_user;
+
+Fine grained access control to individual MBeans is also supported:
+
+::
+
+    GRANT EXECUTE ON MBEAN 'org.apache.cassandra.db:type=Tables,keyspace=test_keyspace,table=t1' TO ks_user;
+    GRANT EXECUTE ON MBEAN 'org.apache.cassandra.db:type=Tables,keyspace=test_keyspace,table=*' TO ks_owner;
+
+This permits the ``ks_user`` role to invoke methods on the MBean representing a single table in ``test_keyspace``, while
+granting the same permission for all table level MBeans in that keyspace to the ``ks_owner`` role.
+
+Adding/removing roles and granting/revoking of permissions is handled dynamically once the initial setup is complete, so
+no further restarts are required if permissions are altered.
+
+See also: :ref:`Permissions <cql-permissions>`.
+
+.. _jmx-with-ssl:
+
+JMX With SSL
+~~~~~~~~~~~~
+
+JMX SSL configuration is controlled by a number of system properties, some of which are optional. To turn on SSL, edit
+the relevant lines in ``cassandra-env.sh`` to uncomment and set the values of these
+properties as required:
+
+``com.sun.management.jmxremote.ssl``
+    set to true to enable SSL
+``com.sun.management.jmxremote.ssl.need.client.auth``
+    set to true to enable validation of client certificates
+``com.sun.management.jmxremote.registry.ssl``
+    enables SSL sockets for the RMI registry from which clients obtain the JMX connector stub
+``com.sun.management.jmxremote.ssl.enabled.protocols``
+    by default, the protocols supported by the JVM will be used, override with a comma-separated list. Note that this is
+    not usually necessary and using the defaults is the preferred option.
+``com.sun.management.jmxremote.ssl.enabled.cipher.suites``
+    by default, the cipher suites supported by the JVM will be used, override with a comma-separated list. Note that
+    this is not usually necessary and using the defaults is the preferred option.
+``javax.net.ssl.keyStore``
+    set the path on the local filesystem of the keystore containing server private keys and public certificates
+``javax.net.ssl.keyStorePassword``
+    set the password of the keystore file
+``javax.net.ssl.trustStore``
+    if validation of client certificates is required, use this property to specify the path of the truststore containing
+    the public certificates of trusted clients
+``javax.net.ssl.trustStorePassword``
+    set the password of the truststore file
+
+See also: `Oracle Java7 Docs <http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdemv>`__,
+`Monitor Java with JMX <https://www.lullabot.com/articles/monitor-java-with-jmx>`__
diff --git a/src/doc/4.0-rc1/_sources/operating/snitch.rst.txt b/src/doc/4.0-rc1/_sources/operating/snitch.rst.txt
new file mode 100644
index 0000000..b716e82
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/snitch.rst.txt
@@ -0,0 +1,82 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+.. _snitch:
+
+Snitch
+------
+
+In cassandra, the snitch has two functions:
+
+- it teaches Cassandra enough about your network topology to route requests efficiently.
+- it allows Cassandra to spread replicas around your cluster to avoid correlated failures. It does this by grouping
+  machines into "datacenters" and "racks."  Cassandra will do its best not to have more than one replica on the same
+  "rack" (which may not actually be a physical location).
+
+Dynamic snitching
+^^^^^^^^^^^^^^^^^
+
+The dynamic snitch monitor read latencies to avoid reading from hosts that have slowed down. The dynamic snitch is
+configured with the following properties on ``cassandra.yaml``:
+
+- ``dynamic_snitch``: whether the dynamic snitch should be enabled or disabled.
+- ``dynamic_snitch_update_interval_in_ms``: controls how often to perform the more expensive part of host score
+  calculation.
+- ``dynamic_snitch_reset_interval_in_ms``: if set greater than zero, this will allow 'pinning' of replicas to hosts
+  in order to increase cache capacity.
+- ``dynamic_snitch_badness_threshold:``: The badness threshold will control how much worse the pinned host has to be
+  before the dynamic snitch will prefer other replicas over it.  This is expressed as a double which represents a
+  percentage.  Thus, a value of 0.2 means Cassandra would continue to prefer the static snitch values until the pinned
+  host was 20% worse than the fastest.
+
+Snitch classes
+^^^^^^^^^^^^^^
+
+The ``endpoint_snitch`` parameter in ``cassandra.yaml`` should be set to the class that implements
+``IEndPointSnitch`` which will be wrapped by the dynamic snitch and decide if two endpoints are in the same data center
+or on the same rack. Out of the box, Cassandra provides the snitch implementations:
+
+GossipingPropertyFileSnitch
+    This should be your go-to snitch for production use. The rack and datacenter for the local node are defined in
+    cassandra-rackdc.properties and propagated to other nodes via gossip. If ``cassandra-topology.properties`` exists,
+    it is used as a fallback, allowing migration from the PropertyFileSnitch.
+
+SimpleSnitch
+    Treats Strategy order as proximity. This can improve cache locality when disabling read repair. Only appropriate for
+    single-datacenter deployments.
+
+PropertyFileSnitch
+    Proximity is determined by rack and data center, which are explicitly configured in
+    ``cassandra-topology.properties``.
+
+Ec2Snitch
+    Appropriate for EC2 deployments in a single Region, or in multiple regions with inter-region VPC enabled (available
+    since the end of 2017, see `AWS announcement <https://aws.amazon.com/about-aws/whats-new/2017/11/announcing-support-for-inter-region-vpc-peering/>`_).
+    Loads Region and Availability Zone information from the EC2 API. The Region is treated as the datacenter, and the
+    Availability Zone as the rack. Only private IPs are used, so this will work across multiple regions only if
+    inter-region VPC is enabled.
+
+Ec2MultiRegionSnitch
+    Uses public IPs as broadcast_address to allow cross-region connectivity (thus, you should set seed addresses to the
+    public IP as well). You will need to open the ``storage_port`` or ``ssl_storage_port`` on the public IP firewall
+    (For intra-Region traffic, Cassandra will switch to the private IP after establishing a connection).
+
+RackInferringSnitch
+    Proximity is determined by rack and data center, which are assumed to correspond to the 3rd and 2nd octet of each
+    node's IP address, respectively.  Unless this happens to match your deployment conventions, this is best used as an
+    example of writing a custom Snitch class and is provided in that spirit.
diff --git a/src/doc/4.0-rc1/_sources/operating/topo_changes.rst.txt b/src/doc/4.0-rc1/_sources/operating/topo_changes.rst.txt
new file mode 100644
index 0000000..6c8f8ec
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/operating/topo_changes.rst.txt
@@ -0,0 +1,129 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: none
+
+.. _topology-changes:
+
+Adding, replacing, moving and removing nodes
+--------------------------------------------
+
+Bootstrap
+^^^^^^^^^
+
+Adding new nodes is called "bootstrapping". The ``num_tokens`` parameter will define the amount of virtual nodes
+(tokens) the joining node will be assigned during bootstrap. The tokens define the sections of the ring (token ranges)
+the node will become responsible for.
+
+Token allocation
+~~~~~~~~~~~~~~~~
+
+With the default token allocation algorithm the new node will pick ``num_tokens`` random tokens to become responsible
+for. Since tokens are distributed randomly, load distribution improves with a higher amount of virtual nodes, but it
+also increases token management overhead. The default of 256 virtual nodes should provide a reasonable load balance with
+acceptable overhead.
+
+On 3.0+ a new token allocation algorithm was introduced to allocate tokens based on the load of existing virtual nodes
+for a given keyspace, and thus yield an improved load distribution with a lower number of tokens. To use this approach,
+the new node must be started with the JVM option ``-Dcassandra.allocate_tokens_for_keyspace=<keyspace>``, where
+``<keyspace>`` is the keyspace from which the algorithm can find the load information to optimize token assignment for.
+
+Manual token assignment
+"""""""""""""""""""""""
+
+You may specify a comma-separated list of tokens manually with the ``initial_token`` ``cassandra.yaml`` parameter, and
+if that is specified Cassandra will skip the token allocation process. This may be useful when doing token assignment
+with an external tool or when restoring a node with its previous tokens.
+
+Range streaming
+~~~~~~~~~~~~~~~~
+
+After the tokens are allocated, the joining node will pick current replicas of the token ranges it will become
+responsible for to stream data from. By default it will stream from the primary replica of each token range in order to
+guarantee data in the new node will be consistent with the current state.
+
+In the case of any unavailable replica, the consistent bootstrap process will fail. To override this behavior and
+potentially miss data from an unavailable replica, set the JVM flag ``-Dcassandra.consistent.rangemovement=false``.
+
+Resuming failed/hanged bootstrap
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+On 2.2+, if the bootstrap process fails, it's possible to resume bootstrap from the previous saved state by calling
+``nodetool bootstrap resume``. If for some reason the bootstrap hangs or stalls, it may also be resumed by simply
+restarting the node. In order to cleanup bootstrap state and start fresh, you may set the JVM startup flag
+``-Dcassandra.reset_bootstrap_progress=true``.
+
+On lower versions, when the bootstrap proces fails it is recommended to wipe the node (remove all the data), and restart
+the bootstrap process again.
+
+Manual bootstrapping
+~~~~~~~~~~~~~~~~~~~~
+
+It's possible to skip the bootstrapping process entirely and join the ring straight away by setting the hidden parameter
+``auto_bootstrap: false``. This may be useful when restoring a node from a backup or creating a new data-center.
+
+Removing nodes
+^^^^^^^^^^^^^^
+
+You can take a node out of the cluster with ``nodetool decommission`` to a live node, or ``nodetool removenode`` (to any
+other machine) to remove a dead one. This will assign the ranges the old node was responsible for to other nodes, and
+replicate the appropriate data there. If decommission is used, the data will stream from the decommissioned node. If
+removenode is used, the data will stream from the remaining replicas.
+
+No data is removed automatically from the node being decommissioned, so if you want to put the node back into service at
+a different token on the ring, it should be removed manually.
+
+Moving nodes
+^^^^^^^^^^^^
+
+When ``num_tokens: 1`` it's possible to move the node position in the ring with ``nodetool move``. Moving is both a
+convenience over and more efficient than decommission + bootstrap. After moving a node, ``nodetool cleanup`` should be
+run to remove any unnecessary data.
+
+Replacing a dead node
+^^^^^^^^^^^^^^^^^^^^^
+
+In order to replace a dead node, start cassandra with the JVM startup flag
+``-Dcassandra.replace_address_first_boot=<dead_node_ip>``. Once this property is enabled the node starts in a hibernate
+state, during which all the other nodes will see this node to be DOWN (DN), however this node will see itself as UP 
+(UN). Accurate replacement state can be found in ``nodetool netstats``.
+
+The replacing node will now start to bootstrap the data from the rest of the nodes in the cluster. A replacing node will
+only receive writes during the bootstrapping phase if it has a different ip address to the node that is being replaced. 
+(See CASSANDRA-8523 and CASSANDRA-12344)
+
+Once the bootstrapping is complete the node will be marked "UP". 
+
+.. Note:: If any of the following cases apply, you **MUST** run repair to make the replaced node consistent again, since 
+    it missed ongoing writes during/prior to bootstrapping. The *replacement* timeframe refers to the period from when the
+    node initially dies to when a new node completes the replacement process.
+
+    1. The node is down for longer than ``max_hint_window_in_ms`` before being replaced.
+    2. You are replacing using the same IP address as the dead node **and** replacement takes longer than ``max_hint_window_in_ms``.
+
+Monitoring progress
+^^^^^^^^^^^^^^^^^^^
+
+Bootstrap, replace, move and remove progress can be monitored using ``nodetool netstats`` which will show the progress
+of the streaming operations.
+
+Cleanup data after range movements
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+As a safety measure, Cassandra does not automatically remove data from nodes that "lose" part of their token range due
+to a range movement operation (bootstrap, move, replace). Run ``nodetool cleanup`` on the nodes that lost ranges to the
+joining node when you are satisfied the new node is up and working. If you do not do this the old data will still be
+counted against the load on that node.
diff --git a/src/doc/4.0-rc1/_sources/plugins/index.rst.txt b/src/doc/4.0-rc1/_sources/plugins/index.rst.txt
new file mode 100644
index 0000000..4073a92
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/plugins/index.rst.txt
@@ -0,0 +1,35 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Third-Party Plugins
+===================
+
+Available third-party plugins for Apache Cassandra
+
+CAPI-Rowcache
+-------------
+
+The Coherent Accelerator Process Interface (CAPI) is a general term for the infrastructure of attaching a Coherent accelerator to an IBM POWER system. A key innovation in IBM POWER8’s open architecture is the CAPI. It provides a high bandwidth, low latency path between external devices, the POWER8 core, and the system’s open memory architecture. IBM Data Engine for NoSQL is an integrated platform for large and fast growing NoSQL data stores. It builds on the CAPI capability of POWER8 systems and provides super-fast access to large flash storage capacity and addresses the challenges associated with typical x86 server based scale-out deployments.
+
+The official page for the `CAPI-Rowcache plugin <https://github.com/ppc64le/capi-rowcache>`__ contains further details how to build/run/download the plugin.
+
+
+Stratio’s Cassandra Lucene Index
+--------------------------------
+
+Stratio’s Lucene index is a Cassandra secondary index implementation based on `Apache Lucene <http://lucene.apache.org/>`__. It extends Cassandra’s functionality to provide near real-time distributed search engine capabilities such as with ElasticSearch or `Apache Solr <http://lucene.apache.org/solr/>`__, including full text search capabilities, free multivariable, geospatial and bitemporal search, relevance queries and sorting based on column value, relevance or distance. Each node indexes its own data, so high availability and scalability is guaranteed.
+
+The official Github repository `Cassandra Lucene Index <http://www.github.com/stratio/cassandra-lucene-index>`__ contains everything you need to build/run/configure the plugin.
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_sources/tools/cassandra_stress.rst.txt b/src/doc/4.0-rc1/_sources/tools/cassandra_stress.rst.txt
new file mode 100644
index 0000000..c59d058
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/cassandra_stress.rst.txt
@@ -0,0 +1,273 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. highlight:: yaml
+
+.. _cassandra_stress:
+
+Cassandra Stress
+----------------
+
+cassandra-stress is a tool for benchmarking and load testing a Cassandra
+cluster. cassandra-stress supports testing arbitrary CQL tables and queries
+to allow users to benchmark their data model.
+
+This documentation focuses on user mode as this allows the testing of your
+actual schema. 
+
+Usage
+^^^^^
+There are several operation types:
+
+    * write-only, read-only, and mixed workloads of standard data
+    * write-only and read-only workloads for counter columns
+    * user configured workloads, running custom queries on custom schemas
+
+The syntax is `cassandra-stress <command> [options]`. If you want more information on a given command
+or options, just run `cassandra-stress help <command|option>`.
+
+Commands:
+    read:
+        Multiple concurrent reads - the cluster must first be populated by a write test
+    write:
+        Multiple concurrent writes against the cluster
+    mixed:
+        Interleaving of any basic commands, with configurable ratio and distribution - the cluster must first be populated by a write test
+    counter_write:
+        Multiple concurrent updates of counters.
+    counter_read:
+        Multiple concurrent reads of counters. The cluster must first be populated by a counterwrite test.
+    user:
+        Interleaving of user provided queries, with configurable ratio and distribution.
+    help:
+        Print help for a command or option
+    print:
+        Inspect the output of a distribution definition
+    legacy:
+        Legacy support mode
+
+Primary Options:
+    -pop:
+        Population distribution and intra-partition visit order
+    -insert:
+        Insert specific options relating to various methods for batching and splitting partition updates
+    -col:
+        Column details such as size and count distribution, data generator, names, comparator and if super columns should be used
+    -rate:
+        Thread count, rate limit or automatic mode (default is auto)
+    -mode:
+        Thrift or CQL with options
+    -errors:
+        How to handle errors when encountered during stress
+    -sample:
+        Specify the number of samples to collect for measuring latency
+    -schema:
+        Replication settings, compression, compaction, etc.
+    -node:
+        Nodes to connect to
+    -log:
+        Where to log progress to, and the interval at which to do it
+    -transport:
+        Custom transport factories
+    -port:
+        The port to connect to cassandra nodes on
+    -sendto:
+        Specify a stress server to send this command to
+    -graph:
+        Graph recorded metrics
+    -tokenrange:
+        Token range settings
+
+
+Suboptions:
+    Every command and primary option has its own collection of suboptions. These are too numerous to list here.
+    For information on the suboptions for each command or option, please use the help command,
+    `cassandra-stress help <command|option>`.
+
+User mode
+^^^^^^^^^
+
+User mode allows you to use your stress your own schemas. This can save time in
+the long run rather than building an application and then realising your schema
+doesn't scale.
+
+Profile
++++++++
+
+User mode requires a profile defined in YAML.
+Multiple YAML files may be specified in which case operations in the ops argument are referenced as specname.opname.
+
+An identifier for the profile::
+
+  specname: staff_activities
+
+The keyspace for the test::
+
+  keyspace: staff
+
+CQL for the keyspace. Optional if the keyspace already exists::
+
+  keyspace_definition: |
+   CREATE KEYSPACE stresscql WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
+
+The table to be stressed::
+  
+  table: staff_activities
+
+CQL for the table. Optional if the table already exists::
+
+  table_definition: |
+    CREATE TABLE staff_activities (
+        name text,
+        when timeuuid,
+        what text,
+        PRIMARY KEY(name, when, what)
+    ) 
+
+
+Optional meta information on the generated columns in the above table.
+The min and max only apply to text and blob types.
+The distribution field represents the total unique population
+distribution of that column across rows::
+
+    columnspec:
+      - name: name
+        size: uniform(5..10) # The names of the staff members are between 5-10 characters
+        population: uniform(1..10) # 10 possible staff members to pick from
+      - name: when
+        cluster: uniform(20..500) # Staff members do between 20 and 500 events
+      - name: what
+        size: normal(10..100,50)
+
+Supported types are:
+
+An exponential distribution over the range [min..max]::
+
+    EXP(min..max)
+
+An extreme value (Weibull) distribution over the range [min..max]::
+
+    EXTREME(min..max,shape)
+
+A gaussian/normal distribution, where mean=(min+max)/2, and stdev is (mean-min)/stdvrng::
+
+    GAUSSIAN(min..max,stdvrng)
+
+A gaussian/normal distribution, with explicitly defined mean and stdev::
+
+    GAUSSIAN(min..max,mean,stdev)
+
+A uniform distribution over the range [min, max]::
+
+    UNIFORM(min..max)
+
+A fixed distribution, always returning the same value::
+
+    FIXED(val)
+      
+If preceded by ~, the distribution is inverted
+
+Defaults for all columns are size: uniform(4..8), population: uniform(1..100B), cluster: fixed(1)
+
+Insert distributions::
+
+    insert:
+      # How many partition to insert per batch
+      partitions: fixed(1)
+      # How many rows to update per partition
+      select: fixed(1)/500
+      # UNLOGGED or LOGGED batch for insert
+      batchtype: UNLOGGED
+
+
+Currently all inserts are done inside batches.
+
+Read statements to use during the test::
+
+    queries:
+       events:
+          cql: select *  from staff_activities where name = ?
+          fields: samerow
+       latest_event:
+          cql: select * from staff_activities where name = ?  LIMIT 1
+          fields: samerow
+
+Running a user mode test::
+
+    cassandra-stress user profile=./example.yaml duration=1m "ops(insert=1,latest_event=1,events=1)" truncate=once
+
+This will create the schema then run tests for 1 minute with an equal number of inserts, latest_event queries and events
+queries. Additionally the table will be truncated once before the test.
+
+The full example can be found here :download:`yaml <./stress-example.yaml>`
+
+Running a user mode test with multiple yaml files::
+    cassandra-stress user profile=./example.yaml,./example2.yaml duration=1m "ops(ex1.insert=1,ex1.latest_event=1,ex2.insert=2)" truncate=once
+
+This will run operations as specified in both the example.yaml and example2.yaml files. example.yaml and example2.yaml can reference the same table
+ although care must be taken that the table definition is identical (data generation specs can be different).
+
+Lightweight transaction support
++++++++++++++++++++++++++++++++
+
+cassandra-stress supports lightweight transactions. In this it will first read current data from Cassandra and then uses read value(s)
+to fulfill lightweight transaction condition(s).
+
+Lightweight transaction update query::
+
+    queries:
+      regularupdate:
+          cql: update blogposts set author = ? where domain = ? and published_date = ?
+          fields: samerow
+      updatewithlwt:
+          cql: update blogposts set author = ? where domain = ? and published_date = ? IF body = ? AND url = ?
+          fields: samerow
+
+The full example can be found here :download:`yaml <./stress-lwt-example.yaml>`
+
+Graphing
+^^^^^^^^
+
+Graphs can be generated for each run of stress.
+
+.. image:: example-stress-graph.png
+
+To create a new graph::
+
+    cassandra-stress user profile=./stress-example.yaml "ops(insert=1,latest_event=1,events=1)" -graph file=graph.html title="Awesome graph"
+
+To add a new run to an existing graph point to an existing file and add a revision name::
+
+    cassandra-stress user profile=./stress-example.yaml duration=1m "ops(insert=1,latest_event=1,events=1)" -graph file=graph.html title="Awesome graph" revision="Second run"
+
+FAQ
+^^^^
+
+**How do you use NetworkTopologyStrategy for the keyspace?**
+
+Use the schema option making sure to either escape the parenthesis or enclose in quotes::
+
+    cassandra-stress write -schema "replication(strategy=NetworkTopologyStrategy,datacenter1=3)"
+
+**How do you use SSL?**
+
+Use the transport option::
+
+    cassandra-stress "write n=100k cl=ONE no-warmup" -transport "truststore=$HOME/jks/truststore.jks truststore-password=cassandra"
+
+**Is Cassandra Stress a secured tool?**
+
+Cassandra stress is not a secured tool. Serialization and other aspects of the tool offer no security guarantees.
diff --git a/src/doc/4.0-rc1/_sources/tools/cqlsh.rst.txt b/src/doc/4.0-rc1/_sources/tools/cqlsh.rst.txt
new file mode 100644
index 0000000..2f47554
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/cqlsh.rst.txt
@@ -0,0 +1,458 @@
+.. highlight:: none
+
+.. _cqlsh:
+
+cqlsh: the CQL shell
+--------------------
+
+cqlsh is a command line shell for interacting with Cassandra through CQL (the Cassandra Query Language).  It is shipped
+with every Cassandra package, and can be found in the bin/ directory alongside the cassandra executable.  cqlsh utilizes
+the Python native protocol driver, and connects to the single node specified on the command line.
+
+
+Compatibility
+^^^^^^^^^^^^^
+
+cqlsh is compatible with Python 3.6+ (and 2.7, deprecated).
+
+In general, a given version of cqlsh is only guaranteed to work with the version of Cassandra that it was released with.
+In some cases, cqlsh make work with older or newer versions of Cassandra, but this is not officially supported.
+
+
+Optional Dependencies
+^^^^^^^^^^^^^^^^^^^^^
+
+cqlsh ships with all essential dependencies.  However, there are some optional dependencies that can be installed to
+improve the capabilities of cqlsh.
+
+pytz
+~~~~
+
+By default, cqlsh displays all timestamps with a UTC timezone.  To support display of timestamps with another timezone,
+the `pytz <http://pytz.sourceforge.net/>`__ library must be installed.  See the ``timezone`` option in cqlshrc_ for
+specifying a timezone to use.
+
+cython
+~~~~~~
+
+The performance of cqlsh's ``COPY`` operations can be improved by installing `cython <http://cython.org/>`__.  This will
+compile the python modules that are central to the performance of ``COPY``.
+
+cqlshrc
+^^^^^^^
+
+The ``cqlshrc`` file holds configuration options for cqlsh.  By default this is in the user's home directory at
+``~/.cassandra/cqlsh``, but a custom location can be specified with the ``--cqlshrc`` option.
+
+Example config values and documentation can be found in the ``conf/cqlshrc.sample`` file of a tarball installation.  You
+can also view the latest version of `cqlshrc online <https://github.com/apache/cassandra/blob/trunk/conf/cqlshrc.sample>`__.
+
+
+Command Line Options
+^^^^^^^^^^^^^^^^^^^^
+
+Usage:
+
+``cqlsh [options] [host [port]]``
+
+Options:
+
+``-C`` ``--color``
+  Force color output
+
+``--no-color``
+  Disable color output
+
+``--browser``
+  Specify the browser to use for displaying cqlsh help.  This can be one of the `supported browser names
+  <https://docs.python.org/3/library/webbrowser.html>`__ (e.g. ``firefox``) or a browser path followed by ``%s`` (e.g.
+  ``/usr/bin/google-chrome-stable %s``).
+
+``--ssl``
+  Use SSL when connecting to Cassandra
+
+``-u`` ``--user``
+  Username to authenticate against Cassandra with
+
+``-p`` ``--password``
+  Password to authenticate against Cassandra with, should
+  be used in conjunction with ``--user``
+
+``-k`` ``--keyspace``
+  Keyspace to authenticate to, should be used in conjunction
+  with ``--user``
+
+``-f`` ``--file``
+  Execute commands from the given file, then exit
+
+``--debug``
+  Print additional debugging information
+
+``--encoding``
+  Specify a non-default encoding for output (defaults to UTF-8)
+
+``--cqlshrc``
+  Specify a non-default location for the ``cqlshrc`` file
+
+``-e`` ``--execute``
+  Execute the given statement, then exit
+
+``--connect-timeout``
+  Specify the connection timeout in seconds (defaults to 2s)
+
+``--python /path/to/python``
+  Specify the full path to Python interpreter to override default on systems with multiple interpreters installed
+
+``--request-timeout``
+  Specify the request timeout in seconds (defaults to 10s)
+
+``-t`` ``--tty``
+  Force tty mode (command prompt)
+
+
+Special Commands
+^^^^^^^^^^^^^^^^
+
+In addition to supporting regular CQL statements, cqlsh also supports a number of special commands that are not part of
+CQL.  These are detailed below.
+
+``CONSISTENCY``
+~~~~~~~~~~~~~~~
+
+`Usage`: ``CONSISTENCY <consistency level>``
+
+Sets the consistency level for operations to follow.  Valid arguments include:
+
+- ``ANY``
+- ``ONE``
+- ``TWO``
+- ``THREE``
+- ``QUORUM``
+- ``ALL``
+- ``LOCAL_QUORUM``
+- ``LOCAL_ONE``
+- ``SERIAL``
+- ``LOCAL_SERIAL``
+
+``SERIAL CONSISTENCY``
+~~~~~~~~~~~~~~~~~~~~~~
+
+`Usage`: ``SERIAL CONSISTENCY <consistency level>``
+
+Sets the serial consistency level for operations to follow.  Valid arguments include:
+
+- ``SERIAL``
+- ``LOCAL_SERIAL``
+
+The serial consistency level is only used by conditional updates (``INSERT``, ``UPDATE`` and ``DELETE`` with an ``IF``
+condition). For those, the serial consistency level defines the consistency level of the serial phase (or “paxos” phase)
+while the normal consistency level defines the consistency for the “learn” phase, i.e. what type of reads will be
+guaranteed to see the update right away. For example, if a conditional write has a consistency level of ``QUORUM`` (and
+is successful), then a ``QUORUM`` read is guaranteed to see that write. But if the regular consistency level of that
+write is ``ANY``, then only a read with a consistency level of ``SERIAL`` is guaranteed to see it (even a read with
+consistency ``ALL`` is not guaranteed to be enough).
+
+``SHOW VERSION``
+~~~~~~~~~~~~~~~~
+Prints the cqlsh, Cassandra, CQL, and native protocol versions in use.  Example::
+
+    cqlsh> SHOW VERSION
+    [cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
+
+``SHOW HOST``
+~~~~~~~~~~~~~
+
+Prints the IP address and port of the Cassandra node that cqlsh is connected to in addition to the cluster name.
+Example::
+
+    cqlsh> SHOW HOST
+    Connected to Prod_Cluster at 192.0.0.1:9042.
+
+``SHOW SESSION``
+~~~~~~~~~~~~~~~~
+
+Pretty prints a specific tracing session.
+
+`Usage`: ``SHOW SESSION <session id>``
+
+Example usage::
+
+    cqlsh> SHOW SESSION 95ac6470-327e-11e6-beca-dfb660d92ad8
+
+    Tracing session: 95ac6470-327e-11e6-beca-dfb660d92ad8
+
+     activity                                                  | timestamp                  | source    | source_elapsed | client
+    -----------------------------------------------------------+----------------------------+-----------+----------------+-----------
+                                            Execute CQL3 query | 2016-06-14 17:23:13.979000 | 127.0.0.1 |              0 | 127.0.0.1
+     Parsing SELECT * FROM system.local; [SharedPool-Worker-1] | 2016-06-14 17:23:13.982000 | 127.0.0.1 |           3843 | 127.0.0.1
+    ...
+
+
+``SOURCE``
+~~~~~~~~~~
+
+Reads the contents of a file and executes each line as a CQL statement or special cqlsh command.
+
+`Usage`: ``SOURCE <string filename>``
+
+Example usage::
+
+    cqlsh> SOURCE '/home/thobbs/commands.cql'
+
+``CAPTURE``
+~~~~~~~~~~~
+
+Begins capturing command output and appending it to a specified file.  Output will not be shown at the console while it
+is captured.
+
+`Usage`::
+
+    CAPTURE '<file>';
+    CAPTURE OFF;
+    CAPTURE;
+
+That is, the path to the file to be appended to must be given inside a string literal. The path is interpreted relative
+to the current working directory. The tilde shorthand notation (``'~/mydir'``) is supported for referring to ``$HOME``.
+
+Only query result output is captured. Errors and output from cqlsh-only commands will still be shown in the cqlsh
+session.
+
+To stop capturing output and show it in the cqlsh session again, use ``CAPTURE OFF``.
+
+To inspect the current capture configuration, use ``CAPTURE`` with no arguments.
+
+``HELP``
+~~~~~~~~
+
+Gives information about cqlsh commands. To see available topics, enter ``HELP`` without any arguments. To see help on a
+topic, use ``HELP <topic>``.  Also see the ``--browser`` argument for controlling what browser is used to display help.
+
+``TRACING``
+~~~~~~~~~~~
+
+Enables or disables tracing for queries.  When tracing is enabled, once a query completes, a trace of the events during
+the query will be printed.
+
+`Usage`::
+
+    TRACING ON
+    TRACING OFF
+
+``PAGING``
+~~~~~~~~~~
+
+Enables paging, disables paging, or sets the page size for read queries.  When paging is enabled, only one page of data
+will be fetched at a time and a prompt will appear to fetch the next page.  Generally, it's a good idea to leave paging
+enabled in an interactive session to avoid fetching and printing large amounts of data at once.
+
+`Usage`::
+
+    PAGING ON
+    PAGING OFF
+    PAGING <page size in rows>
+
+``EXPAND``
+~~~~~~~~~~
+
+Enables or disables vertical printing of rows.  Enabling ``EXPAND`` is useful when many columns are fetched, or the
+contents of a single column are large.
+
+`Usage`::
+
+    EXPAND ON
+    EXPAND OFF
+
+``LOGIN``
+~~~~~~~~~
+
+Authenticate as a specified Cassandra user for the current session.
+
+`Usage`::
+
+    LOGIN <username> [<password>]
+
+``EXIT``
+~~~~~~~~~
+
+Ends the current session and terminates the cqlsh process.
+
+`Usage`::
+
+    EXIT
+    QUIT
+
+``CLEAR``
+~~~~~~~~~
+
+Clears the console.
+
+`Usage`::
+
+    CLEAR
+    CLS
+
+``DESCRIBE``
+~~~~~~~~~~~~
+
+Prints a description (typically a series of DDL statements) of a schema element or the cluster.  This is useful for
+dumping all or portions of the schema.
+
+`Usage`::
+
+    DESCRIBE CLUSTER
+    DESCRIBE SCHEMA
+    DESCRIBE KEYSPACES
+    DESCRIBE KEYSPACE <keyspace name>
+    DESCRIBE TABLES
+    DESCRIBE TABLE <table name>
+    DESCRIBE INDEX <index name>
+    DESCRIBE MATERIALIZED VIEW <view name>
+    DESCRIBE TYPES
+    DESCRIBE TYPE <type name>
+    DESCRIBE FUNCTIONS
+    DESCRIBE FUNCTION <function name>
+    DESCRIBE AGGREGATES
+    DESCRIBE AGGREGATE <aggregate function name>
+
+In any of the commands, ``DESC`` may be used in place of ``DESCRIBE``.
+
+The ``DESCRIBE CLUSTER`` command prints the cluster name and partitioner::
+
+    cqlsh> DESCRIBE CLUSTER
+
+    Cluster: Test Cluster
+    Partitioner: Murmur3Partitioner
+
+The ``DESCRIBE SCHEMA`` command prints the DDL statements needed to recreate the entire schema.  This is especially
+useful for dumping the schema in order to clone a cluster or restore from a backup.
+
+``COPY TO``
+~~~~~~~~~~~
+
+Copies data from a table to a CSV file.
+
+`Usage`::
+
+    COPY <table name> [(<column>, ...)] TO <file name> WITH <copy option> [AND <copy option> ...]
+
+If no columns are specified, all columns from the table will be copied to the CSV file.  A subset of columns to copy may
+be specified by adding a comma-separated list of column names surrounded by parenthesis after the table name.
+
+
+The ``<file name>`` should be a string literal (with single quotes) representing a path to the destination file.  This
+can also the special value ``STDOUT`` (without single quotes) to print the CSV to stdout.
+
+See :ref:`shared-copy-options` for options that apply to both ``COPY TO`` and ``COPY FROM``.
+
+Options for ``COPY TO``
+```````````````````````
+
+``MAXREQUESTS``
+  The maximum number token ranges to fetch simultaneously. Defaults to 6.
+
+``PAGESIZE``
+  The number of rows to fetch in a single page. Defaults to 1000.
+
+``PAGETIMEOUT``
+  By default the page timeout is 10 seconds per 1000 entries
+  in the page size or 10 seconds if pagesize is smaller.
+
+``BEGINTOKEN``, ``ENDTOKEN``
+  Token range to export.  Defaults to exporting the full ring.
+
+``MAXOUTPUTSIZE``
+  The maximum size of the output file measured in number of lines;
+  beyond this maximum the output file will be split into segments.
+  -1 means unlimited, and is the default.
+
+``ENCODING``
+  The encoding used for characters. Defaults to ``utf8``.
+
+``COPY FROM``
+~~~~~~~~~~~~~
+Copies data from a CSV file to table.
+
+`Usage`::
+
+    COPY <table name> [(<column>, ...)] FROM <file name> WITH <copy option> [AND <copy option> ...]
+
+If no columns are specified, all columns from the CSV file will be copied to the table.  A subset
+of columns to copy may be specified by adding a comma-separated list of column names surrounded
+by parenthesis after the table name.
+
+The ``<file name>`` should be a string literal (with single quotes) representing a path to the
+source file.  This can also the special value ``STDIN`` (without single quotes) to read the
+CSV data from stdin.
+
+See :ref:`shared-copy-options` for options that apply to both ``COPY TO`` and ``COPY FROM``.
+
+Options for ``COPY TO``
+```````````````````````
+
+``INGESTRATE``
+  The maximum number of rows to process per second. Defaults to 100000.
+
+``MAXROWS``
+  The maximum number of rows to import. -1 means unlimited, and is the default.
+
+``SKIPROWS``
+  A number of initial rows to skip.  Defaults to 0.
+
+``SKIPCOLS``
+  A comma-separated list of column names to ignore.  By default, no columns are skipped.
+
+``MAXPARSEERRORS``
+  The maximum global number of parsing errors to ignore. -1 means unlimited, and is the default.
+
+``MAXINSERTERRORS``
+  The maximum global number of insert errors to ignore. -1 means unlimited.  The default is 1000.
+
+``ERRFILE`` =
+  A file to store all rows that could not be imported, by default this is ``import_<ks>_<table>.err`` where ``<ks>`` is
+  your keyspace and ``<table>`` is your table name.
+
+``MAXBATCHSIZE``
+  The max number of rows inserted in a single batch. Defaults to 20.
+
+``MINBATCHSIZE``
+  The min number of rows inserted in a single batch. Defaults to 2.
+
+``CHUNKSIZE``
+  The number of rows that are passed to child worker processes from the main process at a time. Defaults to 1000.
+
+.. _shared-copy-options:
+
+Shared COPY Options
+```````````````````
+
+Options that are common to both ``COPY TO`` and ``COPY FROM``.
+
+``NULLVAL``
+  The string placeholder for null values.  Defaults to ``null``.
+
+``HEADER``
+  For ``COPY TO``, controls whether the first line in the CSV output file will contain the column names.  For COPY FROM,
+  specifies whether the first line in the CSV input file contains column names.  Defaults to ``false``.
+
+``DECIMALSEP``
+  The character that is used as the decimal point separator.  Defaults to ``.``.
+
+``THOUSANDSSEP``
+  The character that is used to separate thousands. Defaults to the empty string.
+
+``BOOLSTYlE``
+  The string literal format for boolean values.  Defaults to ``True,False``.
+
+``NUMPROCESSES``
+  The number of child worker processes to create for ``COPY`` tasks.  Defaults to a max of 4 for ``COPY FROM`` and 16
+  for ``COPY TO``.  However, at most (num_cores - 1) processes will be created.
+
+``MAXATTEMPTS``
+  The maximum number of failed attempts to fetch a range of data (when using ``COPY TO``) or insert a chunk of data
+  (when using ``COPY FROM``) before giving up. Defaults to 5.
+
+``REPORTFREQUENCY``
+  How often status updates are refreshed, in seconds.  Defaults to 0.25.
+
+``RATEFILE``
+  An optional file to output rate statistics to.  By default, statistics are not output to a file.
diff --git a/src/doc/4.0-rc1/_sources/tools/generatetokens.rst.txt b/src/doc/4.0-rc1/_sources/tools/generatetokens.rst.txt
new file mode 100644
index 0000000..24448d0
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/generatetokens.rst.txt
@@ -0,0 +1,56 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+generatetokens
+------------
+
+Pre-generates tokens for a datacenter with the given number of nodes using the token allocation algorithm. Useful in edge-cases when generated tokens needs to be known in advance of bootstrapping nodes. In nearly all cases it is best to just let the bootstrapping nodes automatically generate their own tokens.
+ref: https://issues.apache.org/jira/browse/CASSANDRA-16205
+
+
+Usage
+^^^^^
+generatetokens -n NODES -t TOKENS --rf REPLICATION_FACTOR [--partitioner PARTITIONER] [--racks RACK_NODE_COUNTS]
+
+
+===================================                   ================================================================================
+    -n,--nodes <arg>                                  Number of nodes.
+    -t,--tokens <arg>                                 Number of tokens/vnodes per node.
+    --rf <arg>                                        Replication factor.
+    -p,--partitioner <arg>                            Database partitioner, either Murmur3Partitioner or RandomPartitioner.
+    --racks <arg>                                     Number of nodes per rack, separated by commas. Must add up to the total node count. For example, 'generatetokens -n 30 -t 8 --rf 3 --racks 10,10,10' will generate tokens for three racks of 10 nodes each.
+===================================                   ================================================================================
+
+
+This command, if used, is expected to be run before the Cassandra node is first started. The output from the command is used to configure the nodes `num_tokens` setting in the `cassandra.yaml`
+
+
+Example Output
+^^^^^^^^^^^^^^
+Example usage and output is
+
+    $ tools/bin/generatetokens -n 9 -t 4 --rf 3 --racks 3,3,3
+
+    Generating tokens for 9 nodes with 4 vnodes each for replication factor 3 and partitioner Murmur3Partitioner
+    Node 0 rack 0: [-6270077235120413733, -1459727275878514299, 2887564907718879562, 5778609289102954400]
+    Node 1 rack 1: [-8780789453057732897, -3279530982831298765, 1242905755717369197, 8125606440590916903]
+    Node 2 rack 2: [-7240625170832344686, -4453155190605073029, 74749827226930055, 4615117940688406403]
+    Node 3 rack 0: [-5361616212862743381, -2369629129354906532, 2065235331718124379, 6952107864846935651]
+    Node 4 rack 1: [-8010707311945038792, -692488724325792122, 3751341424203642982, 7538857152718926277]
+    Node 5 rack 2: [-7625666241388691739, -3866343086718185897, 5196863614895680401, 8895780530621367810]
+    Node 6 rack 0: [-5815846723991578557, -1076108000102153211, 1654070543717746788, 8510693485606142356]
+    Node 7 rack 1: [-2824580056093102649, 658827791472149626, 3319453165961261272, 6365358576974945025]
+    Node 8 rack 2: [-4159749138661629463, -1914678202616710416, 4905990777792043402, 6658733220910940338]
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_sources/tools/index.rst.txt b/src/doc/4.0-rc1/_sources/tools/index.rst.txt
new file mode 100644
index 0000000..56fbabc
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/index.rst.txt
@@ -0,0 +1,29 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Cassandra Tools
+===============
+
+This section describes the command line tools provided with Apache Cassandra.
+
+.. toctree::
+   :maxdepth: 3
+
+   cqlsh
+   generatetokens
+   nodetool/nodetool
+   sstable/index
+   cassandra_stress
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/assassinate.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/assassinate.rst.txt
new file mode 100644
index 0000000..0ec5dc8
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/assassinate.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_assassinate:
+
+assassinate
+-----------
+
+Usage
+---------
+
+.. include:: assassinate.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/bootstrap.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/bootstrap.rst.txt
new file mode 100644
index 0000000..e280fee
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/bootstrap.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_bootstrap:
+
+bootstrap
+---------
+
+Usage
+---------
+
+.. include:: bootstrap.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/cleanup.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/cleanup.rst.txt
new file mode 100644
index 0000000..70ba8f9
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/cleanup.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_cleanup:
+
+cleanup
+-------
+
+Usage
+---------
+
+.. include:: cleanup.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/clearsnapshot.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/clearsnapshot.rst.txt
new file mode 100644
index 0000000..8781475
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/clearsnapshot.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_clearsnapshot:
+
+clearsnapshot
+-------------
+
+Usage
+---------
+
+.. include:: clearsnapshot.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/clientstats.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/clientstats.rst.txt
new file mode 100644
index 0000000..7f5e47a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/clientstats.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_clientstats:
+
+clientstats
+-----------
+
+Usage
+---------
+
+.. include:: clientstats.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/compact.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/compact.rst.txt
new file mode 100644
index 0000000..a26347c
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/compact.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_compact:
+
+compact
+-------
+
+Usage
+---------
+
+.. include:: compact.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/compactionhistory.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/compactionhistory.rst.txt
new file mode 100644
index 0000000..896433e
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/compactionhistory.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_compactionhistory:
+
+compactionhistory
+-----------------
+
+Usage
+---------
+
+.. include:: compactionhistory.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/compactionstats.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/compactionstats.rst.txt
new file mode 100644
index 0000000..6128225
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/compactionstats.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_compactionstats:
+
+compactionstats
+---------------
+
+Usage
+---------
+
+.. include:: compactionstats.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/decommission.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/decommission.rst.txt
new file mode 100644
index 0000000..8b00ff4
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/decommission.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_decommission:
+
+decommission
+------------
+
+Usage
+---------
+
+.. include:: decommission.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/describecluster.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/describecluster.rst.txt
new file mode 100644
index 0000000..55df135
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/describecluster.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_describecluster:
+
+describecluster
+---------------
+
+Usage
+---------
+
+.. include:: describecluster.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/describering.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/describering.rst.txt
new file mode 100644
index 0000000..3a964e8
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/describering.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_describering:
+
+describering
+------------
+
+Usage
+---------
+
+.. include:: describering.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/disableauditlog.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/disableauditlog.rst.txt
new file mode 100644
index 0000000..4b20b0a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/disableauditlog.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disableauditlog:
+
+disableauditlog
+---------------
+
+Usage
+---------
+
+.. include:: disableauditlog.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/disableautocompaction.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/disableautocompaction.rst.txt
new file mode 100644
index 0000000..16549f2
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/disableautocompaction.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disableautocompaction:
+
+disableautocompaction
+---------------------
+
+Usage
+---------
+
+.. include:: disableautocompaction.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/disablebackup.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/disablebackup.rst.txt
new file mode 100644
index 0000000..c9537e0
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/disablebackup.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disablebackup:
+
+disablebackup
+-------------
+
+Usage
+---------
+
+.. include:: disablebackup.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/disablebinary.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/disablebinary.rst.txt
new file mode 100644
index 0000000..86e981f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/disablebinary.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disablebinary:
+
+disablebinary
+-------------
+
+Usage
+---------
+
+.. include:: disablebinary.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/disablefullquerylog.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/disablefullquerylog.rst.txt
new file mode 100644
index 0000000..d68cd49
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/disablefullquerylog.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disablefullquerylog:
+
+disablefullquerylog
+-------------------
+
+Usage
+---------
+
+.. include:: disablefullquerylog.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/disablegossip.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/disablegossip.rst.txt
new file mode 100644
index 0000000..76f3d06
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/disablegossip.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disablegossip:
+
+disablegossip
+-------------
+
+Usage
+---------
+
+.. include:: disablegossip.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/disablehandoff.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/disablehandoff.rst.txt
new file mode 100644
index 0000000..35f1133
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/disablehandoff.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disablehandoff:
+
+disablehandoff
+--------------
+
+Usage
+---------
+
+.. include:: disablehandoff.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/disablehintsfordc.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/disablehintsfordc.rst.txt
new file mode 100644
index 0000000..892c31b
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/disablehintsfordc.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disablehintsfordc:
+
+disablehintsfordc
+-----------------
+
+Usage
+---------
+
+.. include:: disablehintsfordc.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/disableoldprotocolversions.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/disableoldprotocolversions.rst.txt
new file mode 100644
index 0000000..09d8a15
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/disableoldprotocolversions.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_disableoldprotocolversions:
+
+disableoldprotocolversions
+--------------------------
+
+Usage
+---------
+
+.. include:: disableoldprotocolversions.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/drain.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/drain.rst.txt
new file mode 100644
index 0000000..03093ac
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/drain.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_drain:
+
+drain
+-----
+
+Usage
+---------
+
+.. include:: drain.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/enableauditlog.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/enableauditlog.rst.txt
new file mode 100644
index 0000000..7936c7a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/enableauditlog.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enableauditlog:
+
+enableauditlog
+--------------
+
+Usage
+---------
+
+.. include:: enableauditlog.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/enableautocompaction.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/enableautocompaction.rst.txt
new file mode 100644
index 0000000..2ddf60f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/enableautocompaction.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enableautocompaction:
+
+enableautocompaction
+--------------------
+
+Usage
+---------
+
+.. include:: enableautocompaction.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/enablebackup.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/enablebackup.rst.txt
new file mode 100644
index 0000000..9a06c66
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/enablebackup.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enablebackup:
+
+enablebackup
+------------
+
+Usage
+---------
+
+.. include:: enablebackup.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/enablebinary.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/enablebinary.rst.txt
new file mode 100644
index 0000000..5b1c6da
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/enablebinary.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enablebinary:
+
+enablebinary
+------------
+
+Usage
+---------
+
+.. include:: enablebinary.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/enablefullquerylog.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/enablefullquerylog.rst.txt
new file mode 100644
index 0000000..ec871c2
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/enablefullquerylog.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enablefullquerylog:
+
+enablefullquerylog
+------------------
+
+Usage
+---------
+
+.. include:: enablefullquerylog.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/enablegossip.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/enablegossip.rst.txt
new file mode 100644
index 0000000..ae66186
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/enablegossip.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enablegossip:
+
+enablegossip
+------------
+
+Usage
+---------
+
+.. include:: enablegossip.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/enablehandoff.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/enablehandoff.rst.txt
new file mode 100644
index 0000000..d764c3a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/enablehandoff.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enablehandoff:
+
+enablehandoff
+-------------
+
+Usage
+---------
+
+.. include:: enablehandoff.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/enablehintsfordc.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/enablehintsfordc.rst.txt
new file mode 100644
index 0000000..6c42087
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/enablehintsfordc.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enablehintsfordc:
+
+enablehintsfordc
+----------------
+
+Usage
+---------
+
+.. include:: enablehintsfordc.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/enableoldprotocolversions.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/enableoldprotocolversions.rst.txt
new file mode 100644
index 0000000..e44dc37
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/enableoldprotocolversions.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_enableoldprotocolversions:
+
+enableoldprotocolversions
+-------------------------
+
+Usage
+---------
+
+.. include:: enableoldprotocolversions.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/failuredetector.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/failuredetector.rst.txt
new file mode 100644
index 0000000..25d02b0
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/failuredetector.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_failuredetector:
+
+failuredetector
+---------------
+
+Usage
+---------
+
+.. include:: failuredetector.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/flush.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/flush.rst.txt
new file mode 100644
index 0000000..45e9b2c
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/flush.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_flush:
+
+flush
+-----
+
+Usage
+---------
+
+.. include:: flush.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/garbagecollect.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/garbagecollect.rst.txt
new file mode 100644
index 0000000..3af605a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/garbagecollect.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_garbagecollect:
+
+garbagecollect
+--------------
+
+Usage
+---------
+
+.. include:: garbagecollect.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/gcstats.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/gcstats.rst.txt
new file mode 100644
index 0000000..3e4b459
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/gcstats.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_gcstats:
+
+gcstats
+-------
+
+Usage
+---------
+
+.. include:: gcstats.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getbatchlogreplaythrottle.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getbatchlogreplaythrottle.rst.txt
new file mode 100644
index 0000000..6f56f7d
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getbatchlogreplaythrottle.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getbatchlogreplaythrottle:
+
+getbatchlogreplaythrottle
+-------------------------
+
+Usage
+---------
+
+.. include:: getbatchlogreplaythrottle.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getcompactionthreshold.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getcompactionthreshold.rst.txt
new file mode 100644
index 0000000..e17f4b2
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getcompactionthreshold.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getcompactionthreshold:
+
+getcompactionthreshold
+----------------------
+
+Usage
+---------
+
+.. include:: getcompactionthreshold.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getcompactionthroughput.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getcompactionthroughput.rst.txt
new file mode 100644
index 0000000..ef41115
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getcompactionthroughput.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getcompactionthroughput:
+
+getcompactionthroughput
+-----------------------
+
+Usage
+---------
+
+.. include:: getcompactionthroughput.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getconcurrency.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getconcurrency.rst.txt
new file mode 100644
index 0000000..9b03734
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getconcurrency.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getconcurrency:
+
+getconcurrency
+--------------
+
+Usage
+---------
+
+.. include:: getconcurrency.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getconcurrentcompactors.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getconcurrentcompactors.rst.txt
new file mode 100644
index 0000000..8e137e0
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getconcurrentcompactors.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getconcurrentcompactors:
+
+getconcurrentcompactors
+-----------------------
+
+Usage
+---------
+
+.. include:: getconcurrentcompactors.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getconcurrentviewbuilders.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getconcurrentviewbuilders.rst.txt
new file mode 100644
index 0000000..e113d74
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getconcurrentviewbuilders.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getconcurrentviewbuilders:
+
+getconcurrentviewbuilders
+-------------------------
+
+Usage
+---------
+
+.. include:: getconcurrentviewbuilders.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getendpoints.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getendpoints.rst.txt
new file mode 100644
index 0000000..ac0d43c
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getendpoints.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getendpoints:
+
+getendpoints
+------------
+
+Usage
+---------
+
+.. include:: getendpoints.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getfullquerylog.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getfullquerylog.rst.txt
new file mode 100644
index 0000000..b8294cd
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getfullquerylog.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getfullquerylog:
+
+getfullquerylog
+---------------
+
+Usage
+---------
+
+.. include:: getfullquerylog.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getinterdcstreamthroughput.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getinterdcstreamthroughput.rst.txt
new file mode 100644
index 0000000..abdd7e7
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getinterdcstreamthroughput.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getinterdcstreamthroughput:
+
+getinterdcstreamthroughput
+--------------------------
+
+Usage
+---------
+
+.. include:: getinterdcstreamthroughput.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getlogginglevels.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getlogginglevels.rst.txt
new file mode 100644
index 0000000..9936e8d
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getlogginglevels.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getlogginglevels:
+
+getlogginglevels
+----------------
+
+Usage
+---------
+
+.. include:: getlogginglevels.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getmaxhintwindow.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getmaxhintwindow.rst.txt
new file mode 100644
index 0000000..1a0fe01
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getmaxhintwindow.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getmaxhintwindow:
+
+getmaxhintwindow
+----------------
+
+Usage
+---------
+
+.. include:: getmaxhintwindow.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getseeds.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getseeds.rst.txt
new file mode 100644
index 0000000..e315630
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getseeds.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getseeds:
+
+getseeds
+--------
+
+Usage
+---------
+
+.. include:: getseeds.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getsnapshotthrottle.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getsnapshotthrottle.rst.txt
new file mode 100644
index 0000000..19031f3
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getsnapshotthrottle.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getsnapshotthrottle:
+
+getsnapshotthrottle
+-------------------
+
+Usage
+---------
+
+.. include:: getsnapshotthrottle.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getsstables.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getsstables.rst.txt
new file mode 100644
index 0000000..1a866cc
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getsstables.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getsstables:
+
+getsstables
+-----------
+
+Usage
+---------
+
+.. include:: getsstables.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/getstreamthroughput.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/getstreamthroughput.rst.txt
new file mode 100644
index 0000000..6d7dbc4
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/getstreamthroughput.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_getstreamthroughput:
+
+getstreamthroughput
+-------------------
+
+Usage
+---------
+
+.. include:: getstreamthroughput.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/gettimeout.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/gettimeout.rst.txt
new file mode 100644
index 0000000..9d2e9ed
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/gettimeout.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_gettimeout:
+
+gettimeout
+----------
+
+Usage
+---------
+
+.. include:: gettimeout.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/gettraceprobability.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/gettraceprobability.rst.txt
new file mode 100644
index 0000000..3f5783f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/gettraceprobability.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_gettraceprobability:
+
+gettraceprobability
+-------------------
+
+Usage
+---------
+
+.. include:: gettraceprobability.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/gossipinfo.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/gossipinfo.rst.txt
new file mode 100644
index 0000000..cd3513a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/gossipinfo.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_gossipinfo:
+
+gossipinfo
+----------
+
+Usage
+---------
+
+.. include:: gossipinfo.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/help.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/help.rst.txt
new file mode 100644
index 0000000..8cab88f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/help.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_help:
+
+help
+----
+
+Usage
+---------
+
+.. include:: help.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/import.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/import.rst.txt
new file mode 100644
index 0000000..532ba2d
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/import.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_import:
+
+import
+------
+
+Usage
+---------
+
+.. include:: import.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/info.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/info.rst.txt
new file mode 100644
index 0000000..74012e9
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/info.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_info:
+
+info
+----
+
+Usage
+---------
+
+.. include:: info.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/invalidatecountercache.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/invalidatecountercache.rst.txt
new file mode 100644
index 0000000..ce1a94d
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/invalidatecountercache.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_invalidatecountercache:
+
+invalidatecountercache
+----------------------
+
+Usage
+---------
+
+.. include:: invalidatecountercache.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/invalidatekeycache.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/invalidatekeycache.rst.txt
new file mode 100644
index 0000000..3e80511
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/invalidatekeycache.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_invalidatekeycache:
+
+invalidatekeycache
+------------------
+
+Usage
+---------
+
+.. include:: invalidatekeycache.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/invalidaterowcache.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/invalidaterowcache.rst.txt
new file mode 100644
index 0000000..fd84f1d
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/invalidaterowcache.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_invalidaterowcache:
+
+invalidaterowcache
+------------------
+
+Usage
+---------
+
+.. include:: invalidaterowcache.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/join.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/join.rst.txt
new file mode 100644
index 0000000..a2819eb
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/join.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_join:
+
+join
+----
+
+Usage
+---------
+
+.. include:: join.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/listsnapshots.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/listsnapshots.rst.txt
new file mode 100644
index 0000000..d897cfa
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/listsnapshots.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_listsnapshots:
+
+listsnapshots
+-------------
+
+Usage
+---------
+
+.. include:: listsnapshots.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/move.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/move.rst.txt
new file mode 100644
index 0000000..04b3bdb
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/move.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_move:
+
+move
+----
+
+Usage
+---------
+
+.. include:: move.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/netstats.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/netstats.rst.txt
new file mode 100644
index 0000000..b94a09e
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/netstats.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_netstats:
+
+netstats
+--------
+
+Usage
+---------
+
+.. include:: netstats.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/nodetool.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/nodetool.rst.txt
new file mode 100644
index 0000000..c27e26f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/nodetool.rst.txt
@@ -0,0 +1,259 @@
+.. _nodetool
+
+Nodetool
+--------
+
+Usage
+---------
+
+usage: nodetool [(-u <username> | --username <username>)]
+        [(-pw <password> | --password <password>)] [(-h <host> | --host <host>)]
+        [(-pp | --print-port)] [(-p <port> | --port <port>)]
+        [(-pwf <passwordFilePath> | --password-file <passwordFilePath>)] <command>
+        [<args>]
+
+The most commonly used nodetool commands are:
+
+    :doc:`assassinate` -                   Forcefully remove a dead node without re-replicating any data.  Use as a last resort if you cannot removenode
+
+    :doc:`bootstrap` -                     Monitor/manage node's bootstrap process
+
+    :doc:`cleanup` -                       Triggers the immediate cleanup of keys no longer belonging to a node. By default, clean all keyspaces
+
+    :doc:`clearsnapshot` -                 Remove the snapshot with the given name from the given keyspaces
+
+    :doc:`clientstats` -                   Print information about connected clients
+
+    :doc:`compact` -                       Force a (major) compaction on one or more tables or user-defined compaction on given SSTables
+
+    :doc:`compactionhistory` -             Print history of compaction
+
+    :doc:`compactionstats` -               Print statistics on compactions
+
+    :doc:`decommission` -                  Decommission the *node I am connecting to*
+
+    :doc:`describecluster` -               Print the name, snitch, partitioner and schema version of a cluster
+
+    :doc:`describering` -                  Shows the token ranges info of a given keyspace
+
+    :doc:`disableauditlog` -               Disable the audit log
+
+    :doc:`disableautocompaction` -         Disable autocompaction for the given keyspace and table
+
+    :doc:`disablebackup` -                 Disable incremental backup
+
+    :doc:`disablebinary` -                 Disable native transport (binary protocol)
+
+    :doc:`disablefullquerylog` -           Disable the full query log
+
+    :doc:`disablegossip` -                 Disable gossip (effectively marking the node down)
+
+    :doc:`disablehandoff` -                Disable storing hinted handoffs
+
+    :doc:`disablehintsfordc` -             Disable hints for a data center
+
+    :doc:`disableoldprotocolversions` -    Disable old protocol versions
+
+    :doc:`drain` -                         Drain the node (stop accepting writes and flush all tables)
+
+    :doc:`enableauditlog` -                Enable the audit log
+
+    :doc:`enableautocompaction` -          Enable autocompaction for the given keyspace and table
+
+    :doc:`enablebackup` -                  Enable incremental backup
+
+    :doc:`enablebinary` -                  Reenable native transport (binary protocol)
+
+    :doc:`enablefullquerylog` -            Enable full query logging, defaults for the options are configured in cassandra.yaml
+
+    :doc:`enablegossip` -                  Reenable gossip
+
+    :doc:`enablehandoff` -                 Reenable future hints storing on the current node
+
+    :doc:`enablehintsfordc` -              Enable hints for a data center that was previsouly disabled
+
+    :doc:`enableoldprotocolversions` -     Enable old protocol versions
+
+    :doc:`failuredetector` -               Shows the failure detector information for the cluster
+
+    :doc:`flush` -                         Flush one or more tables
+
+    :doc:`garbagecollect` -                Remove deleted data from one or more tables
+
+    :doc:`gcstats` -                       Print GC Statistics
+
+    :doc:`getbatchlogreplaythrottle` -     Print batchlog replay throttle in KB/s. This is reduced proportionally to the number of nodes in the cluster.
+
+    :doc:`getcompactionthreshold` -        Print min and max compaction thresholds for a given table
+
+    :doc:`getcompactionthroughput` -       Print the MB/s throughput cap for compaction in the system
+
+    :doc:`getconcurrency` -                Get maximum concurrency for processing stages
+
+    :doc:`getconcurrentcompactors` -       Get the number of concurrent compactors in the system.
+
+    :doc:`getconcurrentviewbuilders` -     Get the number of concurrent view builders in the system
+
+    :doc:`getendpoints` -                  Print the end points that owns the key
+
+    :doc:`getfullquerylog` -           
+    :doc:`print` -  configuration of fql if enabled, otherwise the configuration reflected in cassandra.yaml
+
+    :doc:`getinterdcstreamthroughput` -    Print the Mb/s throughput cap for inter-datacenter streaming in the system
+
+    :doc:`getlogginglevels` -              Get the runtime logging levels
+
+    :doc:`getmaxhintwindow` -              Print the max hint window in ms
+
+    :doc:`getseeds` -                      Get the currently in use seed node IP list excluding the node IP
+
+    :doc:`getsnapshotthrottle` -           Print the snapshot_links_per_second throttle for snapshot/clearsnapshot
+
+    :doc:`getsstables` -                   Print the sstable filenames that own the key
+
+    :doc:`getstreamthroughput` -           Print the Mb/s throughput cap for streaming in the system
+
+    :doc:`gettimeout` -                    Print the timeout of the given type in ms
+
+    :doc:`gettraceprobability` -           Print the current trace probability value
+
+    :doc:`gossipinfo` -                    Shows the gossip information for the cluster
+
+    :doc:`help` -                          Display help information
+
+    :doc:`import` -                        Import new SSTables to the system
+
+    :doc:`info` -                          Print node information (uptime, load, ...)
+
+    :doc:`invalidatecountercache` -        Invalidate the counter cache
+
+    :doc:`invalidatekeycache` -            Invalidate the key cache
+
+    :doc:`invalidaterowcache` -            Invalidate the row cache
+
+    :doc:`join` -                          Join the ring
+
+    :doc:`listsnapshots` -                 Lists all the snapshots along with the size on disk and true size. True size is the total size of all SSTables which are not backed up to disk. Size on disk is total size of the snapshot on disk. Total TrueDiskSpaceUsed does not make any SSTable deduplication.
+
+    :doc:`move` -                          Move node on the token ring to a new token
+
+    :doc:`netstats` -                      Print network information on provided host (connecting node by default)
+
+    :doc:`pausehandoff` -                  Pause hints delivery process
+
+    :doc:`profileload` -                   Low footprint profiling of activity for a period of time
+
+    :doc:`proxyhistograms` -               Print statistic histograms for network operations
+
+    :doc:`rangekeysample` -                Shows the sampled keys held across all keyspaces
+
+    :doc:`rebuild` -                       Rebuild data by streaming from other nodes (similarly to bootstrap)
+
+    :doc:`rebuild_index` -                 A full rebuild of native secondary indexes for a given table
+
+    :doc:`refresh` -                       Load newly placed SSTables to the system without restart
+
+    :doc:`refreshsizeestimates` -          Refresh system.size_estimates
+
+    :doc:`reloadlocalschema` -             Reload local node schema from system tables
+
+    :doc:`reloadseeds` -                   Reload the seed node list from the seed node provider
+
+    :doc:`reloadssl` -                     Signals Cassandra to reload SSL certificates
+
+    :doc:`reloadtriggers` -                Reload trigger classes
+
+    :doc:`relocatesstables` -              Relocates sstables to the correct disk
+
+    :doc:`removenode` -                    Show status of current node removal, force completion of pending removal or remove provided ID
+
+    :doc:`repair` -                        Repair one or more tables
+
+    :doc:`repair_admin` -              
+    :doc:`list` -  and fail incremental repair sessions
+
+    :doc:`replaybatchlog` -                Kick off batchlog replay and wait for finish
+
+    :doc:`resetfullquerylog` -             Stop the full query log and clean files in the configured full query log directory from cassandra.yaml as well as JMX
+
+    :doc:`resetlocalschema` -              Reset node's local schema and resync
+
+    :doc:`resumehandoff` -                 Resume hints delivery process
+
+    :doc:`ring` -                          Print information about the token ring
+
+    :doc:`scrub` -                         Scrub (rebuild sstables for) one or more tables
+
+    :doc:`setbatchlogreplaythrottle` -     Set batchlog replay throttle in KB per second, or 0 to disable throttling. This will be reduced proportionally to the number of nodes in the cluster.
+
+    :doc:`setcachecapacity` -              Set global key, row, and counter cache capacities (in MB units)
+
+    :doc:`setcachekeystosave` -            Set number of keys saved by each cache for faster post-restart warmup. 0 to disable
+
+    :doc:`setcompactionthreshold` -        Set min and max compaction thresholds for a given table
+
+    :doc:`setcompactionthroughput` -       Set the MB/s throughput cap for compaction in the system, or 0 to disable throttling
+
+    :doc:`setconcurrency` -                Set maximum concurrency for processing stage
+
+    :doc:`setconcurrentcompactors` -       Set number of concurrent compactors in the system.
+
+    :doc:`setconcurrentviewbuilders` -     Set the number of concurrent view builders in the system
+
+    :doc:`sethintedhandoffthrottlekb` -    Set hinted handoff throttle in kb per second, per delivery thread.
+
+    :doc:`setinterdcstreamthroughput` -    Set the Mb/s throughput cap for inter-datacenter streaming in the system, or 0 to disable throttling
+
+    :doc:`setlogginglevel` -               Set the log level threshold for a given component or class. Will reset to the initial configuration if called with no parameters.
+
+    :doc:`setmaxhintwindow` -              Set the specified max hint window in ms
+
+    :doc:`setsnapshotthrottle` -           Set the snapshot_links_per_second cap for snapshot and clearsnapshot throttling
+
+    :doc:`setstreamthroughput` -           Set the Mb/s throughput cap for streaming in the system, or 0 to disable throttling
+
+    :doc:`settimeout` -                    Set the specified timeout in ms, or 0 to disable timeout
+
+    :doc:`settraceprobability` -           Sets the probability for tracing any given request to value. 0 disables, 1 enables for all requests, 0 is the default
+
+    :doc:`sjk` -                           Run commands of 'Swiss Java Knife'. Run 'nodetool sjk --help' for more information.
+
+    :doc:`snapshot` -                      Take a snapshot of specified keyspaces or a snapshot of the specified table
+
+    :doc:`status` -                        Print cluster information (state, load, IDs, ...)
+
+    :doc:`statusautocompaction` -      
+    :doc:`status` -  of autocompaction of the given keyspace and table
+
+    :doc:`statusbackup` -                  Status of incremental backup
+
+    :doc:`statusbinary` -                  Status of native transport (binary protocol)
+
+    :doc:`statusgossip` -                  Status of gossip
+
+    :doc:`statushandoff` -                 Status of storing future hints on the current node
+
+    :doc:`stop` -                          Stop compaction
+
+    :doc:`stopdaemon` -                    Stop cassandra daemon
+
+    :doc:`tablehistograms` -               Print statistic histograms for a given table
+
+    :doc:`tablestats` -                    Print statistics on tables
+
+    :doc:`toppartitions` -                 Sample and print the most active partitions
+
+    :doc:`tpstats` -                       Print usage statistics of thread pools
+
+    :doc:`truncatehints` -                 Truncate all hints on the local node, or truncate hints for the endpoint(s) specified.
+
+    :doc:`upgradesstables` -               Rewrite sstables (for the requested tables) that are not on the current version (thus upgrading them to said current version)
+
+    :doc:`verify` -                        Verify (check data checksum for) one or more tables
+
+    :doc:`version` -                       Print cassandra version
+
+    :doc:`viewbuildstatus` -               Show progress of a materialized view build
+
+See 'nodetool help <command>' for more information on a specific command.
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/pausehandoff.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/pausehandoff.rst.txt
new file mode 100644
index 0000000..85ea996
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/pausehandoff.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_pausehandoff:
+
+pausehandoff
+------------
+
+Usage
+---------
+
+.. include:: pausehandoff.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/profileload.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/profileload.rst.txt
new file mode 100644
index 0000000..aff289f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/profileload.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_profileload:
+
+profileload
+-----------
+
+Usage
+---------
+
+.. include:: profileload.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/proxyhistograms.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/proxyhistograms.rst.txt
new file mode 100644
index 0000000..c4f333f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/proxyhistograms.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_proxyhistograms:
+
+proxyhistograms
+---------------
+
+Usage
+---------
+
+.. include:: proxyhistograms.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/rangekeysample.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/rangekeysample.rst.txt
new file mode 100644
index 0000000..983ce93
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/rangekeysample.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_rangekeysample:
+
+rangekeysample
+--------------
+
+Usage
+---------
+
+.. include:: rangekeysample.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/rebuild.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/rebuild.rst.txt
new file mode 100644
index 0000000..7a94ce4
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/rebuild.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_rebuild:
+
+rebuild
+-------
+
+Usage
+---------
+
+.. include:: rebuild.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/rebuild_index.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/rebuild_index.rst.txt
new file mode 100644
index 0000000..a1ea4f5
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/rebuild_index.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_rebuild_index:
+
+rebuild_index
+-------------
+
+Usage
+---------
+
+.. include:: rebuild_index.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/refresh.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/refresh.rst.txt
new file mode 100644
index 0000000..f68f040
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/refresh.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_refresh:
+
+refresh
+-------
+
+Usage
+---------
+
+.. include:: refresh.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/refreshsizeestimates.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/refreshsizeestimates.rst.txt
new file mode 100644
index 0000000..2f3610a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/refreshsizeestimates.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_refreshsizeestimates:
+
+refreshsizeestimates
+--------------------
+
+Usage
+---------
+
+.. include:: refreshsizeestimates.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/reloadlocalschema.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/reloadlocalschema.rst.txt
new file mode 100644
index 0000000..7ccc0c5
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/reloadlocalschema.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_reloadlocalschema:
+
+reloadlocalschema
+-----------------
+
+Usage
+---------
+
+.. include:: reloadlocalschema.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/reloadseeds.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/reloadseeds.rst.txt
new file mode 100644
index 0000000..5c6751d
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/reloadseeds.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_reloadseeds:
+
+reloadseeds
+-----------
+
+Usage
+---------
+
+.. include:: reloadseeds.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/reloadssl.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/reloadssl.rst.txt
new file mode 100644
index 0000000..9781b29
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/reloadssl.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_reloadssl:
+
+reloadssl
+---------
+
+Usage
+---------
+
+.. include:: reloadssl.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/reloadtriggers.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/reloadtriggers.rst.txt
new file mode 100644
index 0000000..2f7959d
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/reloadtriggers.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_reloadtriggers:
+
+reloadtriggers
+--------------
+
+Usage
+---------
+
+.. include:: reloadtriggers.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/relocatesstables.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/relocatesstables.rst.txt
new file mode 100644
index 0000000..9951d33
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/relocatesstables.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_relocatesstables:
+
+relocatesstables
+----------------
+
+Usage
+---------
+
+.. include:: relocatesstables.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/removenode.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/removenode.rst.txt
new file mode 100644
index 0000000..fe0a041
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/removenode.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_removenode:
+
+removenode
+----------
+
+Usage
+---------
+
+.. include:: removenode.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/repair.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/repair.rst.txt
new file mode 100644
index 0000000..b43baba
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/repair.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_repair:
+
+repair
+------
+
+Usage
+---------
+
+.. include:: repair.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/repair_admin.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/repair_admin.rst.txt
new file mode 100644
index 0000000..1212c39
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/repair_admin.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_repair_admin:
+
+repair_admin
+------------
+
+Usage
+---------
+
+.. include:: repair_admin.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/replaybatchlog.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/replaybatchlog.rst.txt
new file mode 100644
index 0000000..073f091
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/replaybatchlog.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_replaybatchlog:
+
+replaybatchlog
+--------------
+
+Usage
+---------
+
+.. include:: replaybatchlog.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/resetfullquerylog.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/resetfullquerylog.rst.txt
new file mode 100644
index 0000000..a7661ec
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/resetfullquerylog.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_resetfullquerylog:
+
+resetfullquerylog
+-----------------
+
+Usage
+---------
+
+.. include:: resetfullquerylog.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/resetlocalschema.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/resetlocalschema.rst.txt
new file mode 100644
index 0000000..cd1b75d
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/resetlocalschema.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_resetlocalschema:
+
+resetlocalschema
+----------------
+
+Usage
+---------
+
+.. include:: resetlocalschema.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/resumehandoff.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/resumehandoff.rst.txt
new file mode 100644
index 0000000..48a0451
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/resumehandoff.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_resumehandoff:
+
+resumehandoff
+-------------
+
+Usage
+---------
+
+.. include:: resumehandoff.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/ring.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/ring.rst.txt
new file mode 100644
index 0000000..7b3c195
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/ring.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_ring:
+
+ring
+----
+
+Usage
+---------
+
+.. include:: ring.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/scrub.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/scrub.rst.txt
new file mode 100644
index 0000000..fc926eb
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/scrub.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_scrub:
+
+scrub
+-----
+
+Usage
+---------
+
+.. include:: scrub.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/setbatchlogreplaythrottle.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/setbatchlogreplaythrottle.rst.txt
new file mode 100644
index 0000000..2ae628a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/setbatchlogreplaythrottle.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setbatchlogreplaythrottle:
+
+setbatchlogreplaythrottle
+-------------------------
+
+Usage
+---------
+
+.. include:: setbatchlogreplaythrottle.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/setcachecapacity.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/setcachecapacity.rst.txt
new file mode 100644
index 0000000..92c7d63
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/setcachecapacity.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setcachecapacity:
+
+setcachecapacity
+----------------
+
+Usage
+---------
+
+.. include:: setcachecapacity.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/setcachekeystosave.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/setcachekeystosave.rst.txt
new file mode 100644
index 0000000..639179f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/setcachekeystosave.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setcachekeystosave:
+
+setcachekeystosave
+------------------
+
+Usage
+---------
+
+.. include:: setcachekeystosave.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/setcompactionthreshold.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/setcompactionthreshold.rst.txt
new file mode 100644
index 0000000..3a3e88b
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/setcompactionthreshold.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setcompactionthreshold:
+
+setcompactionthreshold
+----------------------
+
+Usage
+---------
+
+.. include:: setcompactionthreshold.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/setcompactionthroughput.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/setcompactionthroughput.rst.txt
new file mode 100644
index 0000000..27185da
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/setcompactionthroughput.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setcompactionthroughput:
+
+setcompactionthroughput
+-----------------------
+
+Usage
+---------
+
+.. include:: setcompactionthroughput.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/setconcurrency.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/setconcurrency.rst.txt
new file mode 100644
index 0000000..75b0953
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/setconcurrency.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setconcurrency:
+
+setconcurrency
+--------------
+
+Usage
+---------
+
+.. include:: setconcurrency.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/setconcurrentcompactors.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/setconcurrentcompactors.rst.txt
new file mode 100644
index 0000000..75969de
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/setconcurrentcompactors.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setconcurrentcompactors:
+
+setconcurrentcompactors
+-----------------------
+
+Usage
+---------
+
+.. include:: setconcurrentcompactors.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/setconcurrentviewbuilders.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/setconcurrentviewbuilders.rst.txt
new file mode 100644
index 0000000..26f53a1
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/setconcurrentviewbuilders.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setconcurrentviewbuilders:
+
+setconcurrentviewbuilders
+-------------------------
+
+Usage
+---------
+
+.. include:: setconcurrentviewbuilders.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/sethintedhandoffthrottlekb.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/sethintedhandoffthrottlekb.rst.txt
new file mode 100644
index 0000000..9986ca2
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/sethintedhandoffthrottlekb.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_sethintedhandoffthrottlekb:
+
+sethintedhandoffthrottlekb
+--------------------------
+
+Usage
+---------
+
+.. include:: sethintedhandoffthrottlekb.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/setinterdcstreamthroughput.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/setinterdcstreamthroughput.rst.txt
new file mode 100644
index 0000000..ed406a7
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/setinterdcstreamthroughput.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setinterdcstreamthroughput:
+
+setinterdcstreamthroughput
+--------------------------
+
+Usage
+---------
+
+.. include:: setinterdcstreamthroughput.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/setlogginglevel.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/setlogginglevel.rst.txt
new file mode 100644
index 0000000..eaa4030
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/setlogginglevel.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setlogginglevel:
+
+setlogginglevel
+---------------
+
+Usage
+---------
+
+.. include:: setlogginglevel.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/setmaxhintwindow.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/setmaxhintwindow.rst.txt
new file mode 100644
index 0000000..0c62c32
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/setmaxhintwindow.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setmaxhintwindow:
+
+setmaxhintwindow
+----------------
+
+Usage
+---------
+
+.. include:: setmaxhintwindow.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/setsnapshotthrottle.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/setsnapshotthrottle.rst.txt
new file mode 100644
index 0000000..f01234a
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/setsnapshotthrottle.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setsnapshotthrottle:
+
+setsnapshotthrottle
+-------------------
+
+Usage
+---------
+
+.. include:: setsnapshotthrottle.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/setstreamthroughput.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/setstreamthroughput.rst.txt
new file mode 100644
index 0000000..76447f1
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/setstreamthroughput.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_setstreamthroughput:
+
+setstreamthroughput
+-------------------
+
+Usage
+---------
+
+.. include:: setstreamthroughput.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/settimeout.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/settimeout.rst.txt
new file mode 100644
index 0000000..4ec9a6e
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/settimeout.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_settimeout:
+
+settimeout
+----------
+
+Usage
+---------
+
+.. include:: settimeout.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/settraceprobability.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/settraceprobability.rst.txt
new file mode 100644
index 0000000..a95b485
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/settraceprobability.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_settraceprobability:
+
+settraceprobability
+-------------------
+
+Usage
+---------
+
+.. include:: settraceprobability.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/sjk.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/sjk.rst.txt
new file mode 100644
index 0000000..19bf1d6
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/sjk.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_sjk:
+
+sjk
+---
+
+Usage
+---------
+
+.. include:: sjk.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/snapshot.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/snapshot.rst.txt
new file mode 100644
index 0000000..097a655
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/snapshot.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_snapshot:
+
+snapshot
+--------
+
+Usage
+---------
+
+.. include:: snapshot.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/status.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/status.rst.txt
new file mode 100644
index 0000000..4d3050e
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/status.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_status:
+
+status
+------
+
+Usage
+---------
+
+.. include:: status.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/statusautocompaction.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/statusautocompaction.rst.txt
new file mode 100644
index 0000000..3748e0e
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/statusautocompaction.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_statusautocompaction:
+
+statusautocompaction
+--------------------
+
+Usage
+---------
+
+.. include:: statusautocompaction.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/statusbackup.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/statusbackup.rst.txt
new file mode 100644
index 0000000..6546ec0
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/statusbackup.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_statusbackup:
+
+statusbackup
+------------
+
+Usage
+---------
+
+.. include:: statusbackup.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/statusbinary.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/statusbinary.rst.txt
new file mode 100644
index 0000000..0bb5011
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/statusbinary.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_statusbinary:
+
+statusbinary
+------------
+
+Usage
+---------
+
+.. include:: statusbinary.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/statusgossip.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/statusgossip.rst.txt
new file mode 100644
index 0000000..7dc57ed
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/statusgossip.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_statusgossip:
+
+statusgossip
+------------
+
+Usage
+---------
+
+.. include:: statusgossip.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/statushandoff.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/statushandoff.rst.txt
new file mode 100644
index 0000000..aa1c4eb
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/statushandoff.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_statushandoff:
+
+statushandoff
+-------------
+
+Usage
+---------
+
+.. include:: statushandoff.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/stop.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/stop.rst.txt
new file mode 100644
index 0000000..1e44dbe
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/stop.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_stop:
+
+stop
+----
+
+Usage
+---------
+
+.. include:: stop.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/stopdaemon.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/stopdaemon.rst.txt
new file mode 100644
index 0000000..4ae9510
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/stopdaemon.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_stopdaemon:
+
+stopdaemon
+----------
+
+Usage
+---------
+
+.. include:: stopdaemon.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/tablehistograms.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/tablehistograms.rst.txt
new file mode 100644
index 0000000..79d2b4c
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/tablehistograms.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_tablehistograms:
+
+tablehistograms
+---------------
+
+Usage
+---------
+
+.. include:: tablehistograms.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/tablestats.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/tablestats.rst.txt
new file mode 100644
index 0000000..5b2c02d
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/tablestats.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_tablestats:
+
+tablestats
+----------
+
+Usage
+---------
+
+.. include:: tablestats.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/toppartitions.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/toppartitions.rst.txt
new file mode 100644
index 0000000..7118163
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/toppartitions.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_toppartitions:
+
+toppartitions
+-------------
+
+Usage
+---------
+
+.. include:: toppartitions.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/tpstats.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/tpstats.rst.txt
new file mode 100644
index 0000000..c6b6620
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/tpstats.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_tpstats:
+
+tpstats
+-------
+
+Usage
+---------
+
+.. include:: tpstats.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/truncatehints.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/truncatehints.rst.txt
new file mode 100644
index 0000000..4b75391
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/truncatehints.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_truncatehints:
+
+truncatehints
+-------------
+
+Usage
+---------
+
+.. include:: truncatehints.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/upgradesstables.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/upgradesstables.rst.txt
new file mode 100644
index 0000000..505cc14
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/upgradesstables.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_upgradesstables:
+
+upgradesstables
+---------------
+
+Usage
+---------
+
+.. include:: upgradesstables.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/verify.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/verify.rst.txt
new file mode 100644
index 0000000..dbd152c
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/verify.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_verify:
+
+verify
+------
+
+Usage
+---------
+
+.. include:: verify.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/version.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/version.rst.txt
new file mode 100644
index 0000000..fca4e3f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/version.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_version:
+
+version
+-------
+
+Usage
+---------
+
+.. include:: version.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/nodetool/viewbuildstatus.rst.txt b/src/doc/4.0-rc1/_sources/tools/nodetool/viewbuildstatus.rst.txt
new file mode 100644
index 0000000..758fe50
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/nodetool/viewbuildstatus.rst.txt
@@ -0,0 +1,11 @@
+.. _nodetool_viewbuildstatus:
+
+viewbuildstatus
+---------------
+
+Usage
+---------
+
+.. include:: viewbuildstatus.txt
+  :literal:
+
diff --git a/src/doc/4.0-rc1/_sources/tools/sstable/index.rst.txt b/src/doc/4.0-rc1/_sources/tools/sstable/index.rst.txt
new file mode 100644
index 0000000..b9e483f
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/sstable/index.rst.txt
@@ -0,0 +1,39 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+SSTable Tools
+=============
+
+This section describes the functionality of the various sstable tools.
+
+Cassandra must be stopped before these tools are executed, or unexpected results will occur. Note: the scripts do not verify that Cassandra is stopped.
+
+.. toctree::
+   :maxdepth: 2
+
+   sstabledump
+   sstableexpiredblockers
+   sstablelevelreset
+   sstableloader
+   sstablemetadata
+   sstableofflinerelevel
+   sstablerepairedset
+   sstablescrub
+   sstablesplit
+   sstableupgrade
+   sstableutil
+   sstableverify
+
diff --git a/src/doc/4.0-rc1/_sources/tools/sstable/sstabledump.rst.txt b/src/doc/4.0-rc1/_sources/tools/sstable/sstabledump.rst.txt
new file mode 100644
index 0000000..8f38afa
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/sstable/sstabledump.rst.txt
@@ -0,0 +1,294 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+sstabledump
+-----------
+
+Dump contents of a given SSTable to standard output in JSON format.
+
+You must supply exactly one sstable. 
+
+Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.
+
+Usage
+^^^^^
+sstabledump <options> <sstable file path> 
+
+===================================     ================================================================================
+-d                                      CQL row per line internal representation
+-e                                      Enumerate partition keys only
+-k <arg>                                Partition key
+-x <arg>                                Excluded partition key(s)
+-t                                      Print raw timestamps instead of iso8601 date strings
+-l                                      Output each row as a separate JSON object
+===================================     ================================================================================
+
+If necessary, use sstableutil first to find out the sstables used by a table.
+
+Dump entire table
+^^^^^^^^^^^^^^^^^
+
+Dump the entire table without any options.
+
+Example::
+
+    sstabledump /var/lib/cassandra/data/keyspace/eventlog-65c429e08c5a11e8939edf4f403979ef/mc-1-big-Data.db > eventlog_dump_2018Jul26
+
+    cat eventlog_dump_2018Jul26
+    [
+      {
+        "partition" : {
+          "key" : [ "3578d7de-c60d-4599-aefb-3f22a07b2bc6" ],
+          "position" : 0
+        },
+        "rows" : [
+          {
+            "type" : "row",
+            "position" : 61,
+            "liveness_info" : { "tstamp" : "2018-07-20T20:23:08.378711Z" },
+            "cells" : [
+              { "name" : "event", "value" : "party" },
+              { "name" : "insertedtimestamp", "value" : "2018-07-20 20:23:08.384Z" },
+              { "name" : "source", "value" : "asdf" }
+            ]
+          }
+        ]
+      },
+      {
+        "partition" : {
+          "key" : [ "d18250c0-84fc-4d40-b957-4248dc9d790e" ],
+          "position" : 62
+        },
+        "rows" : [
+          {
+            "type" : "row",
+            "position" : 123,
+            "liveness_info" : { "tstamp" : "2018-07-20T20:23:07.783522Z" },
+            "cells" : [
+              { "name" : "event", "value" : "party" },
+              { "name" : "insertedtimestamp", "value" : "2018-07-20 20:23:07.789Z" },
+              { "name" : "source", "value" : "asdf" }
+            ]
+          }
+        ]
+      },
+      {
+        "partition" : {
+          "key" : [ "cf188983-d85b-48d6-9365-25005289beb2" ],
+          "position" : 124
+        },
+        "rows" : [
+          {
+            "type" : "row",
+            "position" : 182,
+            "liveness_info" : { "tstamp" : "2018-07-20T20:22:27.028809Z" },
+            "cells" : [
+              { "name" : "event", "value" : "party" },
+              { "name" : "insertedtimestamp", "value" : "2018-07-20 20:22:27.055Z" },
+              { "name" : "source", "value" : "asdf" }
+            ]
+          }
+        ]
+      }
+    ]
+
+Dump table in a more manageable format
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Use the -l option to dump each row as a separate JSON object. This will make the output easier to manipulate for large data sets. ref: https://issues.apache.org/jira/browse/CASSANDRA-13848
+
+Example::
+
+    sstabledump /var/lib/cassandra/data/keyspace/eventlog-65c429e08c5a11e8939edf4f403979ef/mc-1-big-Data.db -l > eventlog_dump_2018Jul26_justlines
+
+    cat eventlog_dump_2018Jul26_justlines
+    [
+      {
+        "partition" : {
+          "key" : [ "3578d7de-c60d-4599-aefb-3f22a07b2bc6" ],
+          "position" : 0
+        },
+        "rows" : [
+          {
+            "type" : "row",
+            "position" : 61,
+            "liveness_info" : { "tstamp" : "2018-07-20T20:23:08.378711Z" },
+            "cells" : [
+              { "name" : "event", "value" : "party" },
+              { "name" : "insertedtimestamp", "value" : "2018-07-20 20:23:08.384Z" },
+              { "name" : "source", "value" : "asdf" }
+            ]
+          }
+        ]
+      },
+      {
+        "partition" : {
+          "key" : [ "d18250c0-84fc-4d40-b957-4248dc9d790e" ],
+          "position" : 62
+        },
+        "rows" : [
+          {
+            "type" : "row",
+            "position" : 123,
+            "liveness_info" : { "tstamp" : "2018-07-20T20:23:07.783522Z" },
+            "cells" : [
+              { "name" : "event", "value" : "party" },
+              { "name" : "insertedtimestamp", "value" : "2018-07-20 20:23:07.789Z" },
+              { "name" : "source", "value" : "asdf" }
+            ]
+          }
+        ]
+      },
+      {
+        "partition" : {
+          "key" : [ "cf188983-d85b-48d6-9365-25005289beb2" ],
+          "position" : 124
+        },
+        "rows" : [
+          {
+            "type" : "row",
+            "position" : 182,
+            "liveness_info" : { "tstamp" : "2018-07-20T20:22:27.028809Z" },
+            "cells" : [
+              { "name" : "event", "value" : "party" },
+              { "name" : "insertedtimestamp", "value" : "2018-07-20 20:22:27.055Z" },
+              { "name" : "source", "value" : "asdf" }
+            ]
+          }
+        ]
+      }
+
+Dump only keys
+^^^^^^^^^^^^^^
+
+Dump only the keys by using the -e option.
+
+Example::
+
+    sstabledump /var/lib/cassandra/data/keyspace/eventlog-65c429e08c5a11e8939edf4f403979ef/mc-1-big-Data.db -e > eventlog_dump_2018Jul26_justkeys
+
+    cat eventlog_dump_2018Jul26b
+    [ [ "3578d7de-c60d-4599-aefb-3f22a07b2bc6" ], [ "d18250c0-84fc-4d40-b957-4248dc9d790e" ], [ "cf188983-d85b-48d6-9365-25005289beb2" ]
+
+Dump row for a single key
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Dump a single key using the -k option.
+
+Example::
+
+    sstabledump /var/lib/cassandra/data/keyspace/eventlog-65c429e08c5a11e8939edf4f403979ef/mc-1-big-Data.db -k 3578d7de-c60d-4599-aefb-3f22a07b2bc6 > eventlog_dump_2018Jul26_singlekey
+
+    cat eventlog_dump_2018Jul26_singlekey
+    [
+      {
+        "partition" : {
+          "key" : [ "3578d7de-c60d-4599-aefb-3f22a07b2bc6" ],
+          "position" : 0
+        },
+        "rows" : [
+          {
+            "type" : "row",
+            "position" : 61,
+            "liveness_info" : { "tstamp" : "2018-07-20T20:23:08.378711Z" },
+            "cells" : [
+              { "name" : "event", "value" : "party" },
+              { "name" : "insertedtimestamp", "value" : "2018-07-20 20:23:08.384Z" },
+              { "name" : "source", "value" : "asdf" }
+            ]
+          }
+        ]
+      }
+
+Exclude a key or keys in dump of rows
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Dump a table except for the rows excluded with the -x option. Multiple keys can be used.
+
+Example::
+
+    sstabledump /var/lib/cassandra/data/keyspace/eventlog-65c429e08c5a11e8939edf4f403979ef/mc-1-big-Data.db -x 3578d7de-c60d-4599-aefb-3f22a07b2bc6 d18250c0-84fc-4d40-b957-4248dc9d790e  > eventlog_dump_2018Jul26_excludekeys
+
+    cat eventlog_dump_2018Jul26_excludekeys
+    [
+      {
+        "partition" : {
+          "key" : [ "cf188983-d85b-48d6-9365-25005289beb2" ],
+          "position" : 0
+        },
+        "rows" : [
+          {
+            "type" : "row",
+            "position" : 182,
+            "liveness_info" : { "tstamp" : "2018-07-20T20:22:27.028809Z" },
+            "cells" : [
+              { "name" : "event", "value" : "party" },
+              { "name" : "insertedtimestamp", "value" : "2018-07-20 20:22:27.055Z" },
+              { "name" : "source", "value" : "asdf" }
+            ]
+          }
+        ]
+      }
+
+Display raw timestamps
+^^^^^^^^^^^^^^^^^^^^^^
+
+By default, dates are displayed in iso8601 date format. Using the -t option will dump the data with the raw timestamp.
+
+Example::
+
+    sstabledump /var/lib/cassandra/data/keyspace/eventlog-65c429e08c5a11e8939edf4f403979ef/mc-1-big-Data.db -t -k cf188983-d85b-48d6-9365-25005289beb2 > eventlog_dump_2018Jul26_times
+
+    cat eventlog_dump_2018Jul26_times
+    [
+      {
+        "partition" : {
+          "key" : [ "cf188983-d85b-48d6-9365-25005289beb2" ],
+          "position" : 124
+        },
+        "rows" : [
+          {
+            "type" : "row",
+            "position" : 182,
+            "liveness_info" : { "tstamp" : "1532118147028809" },
+            "cells" : [
+              { "name" : "event", "value" : "party" },
+              { "name" : "insertedtimestamp", "value" : "2018-07-20 20:22:27.055Z" },
+              { "name" : "source", "value" : "asdf" }
+            ]
+          }
+        ]
+      }
+
+
+Display internal structure in output
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Dump the table in a format that reflects the internal structure.
+
+Example::
+
+    sstabledump /var/lib/cassandra/data/keyspace/eventlog-65c429e08c5a11e8939edf4f403979ef/mc-1-big-Data.db -d > eventlog_dump_2018Jul26_d
+
+    cat eventlog_dump_2018Jul26_d
+    [3578d7de-c60d-4599-aefb-3f22a07b2bc6]@0 Row[info=[ts=1532118188378711] ]:  | [event=party ts=1532118188378711], [insertedtimestamp=2018-07-20 20:23Z ts=1532118188378711], [source=asdf ts=1532118188378711]
+    [d18250c0-84fc-4d40-b957-4248dc9d790e]@62 Row[info=[ts=1532118187783522] ]:  | [event=party ts=1532118187783522], [insertedtimestamp=2018-07-20 20:23Z ts=1532118187783522], [source=asdf ts=1532118187783522]
+    [cf188983-d85b-48d6-9365-25005289beb2]@124 Row[info=[ts=1532118147028809] ]:  | [event=party ts=1532118147028809], [insertedtimestamp=2018-07-20 20:22Z ts=1532118147028809], [source=asdf ts=1532118147028809]
+
+
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/tools/sstable/sstableexpiredblockers.rst.txt b/src/doc/4.0-rc1/_sources/tools/sstable/sstableexpiredblockers.rst.txt
new file mode 100644
index 0000000..ec83794
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/sstable/sstableexpiredblockers.rst.txt
@@ -0,0 +1,48 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+sstableexpiredblockers
+----------------------
+
+During compaction, entire sstables can be dropped if they contain only expired tombstones, and if it is guaranteed that the data is not newer than the data in other sstables. An expired sstable can be blocked from getting dropped if its newest timestamp is newer than the oldest data in another sstable.
+
+This tool is used to list all sstables that are blocking other sstables from getting dropped (by having older data than the newest tombstone in an expired sstable) so a user can figure out why certain sstables are still on disk.
+
+ref: https://issues.apache.org/jira/browse/CASSANDRA-10015
+
+Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.
+
+Usage
+^^^^^
+
+sstableexpiredblockers <keyspace> <table>
+
+Output blocked sstables
+^^^^^^^^^^^^^^^^^^^^^^^
+
+If the sstables exist for the table, but no tables have older data than the newest tombstone in an expired sstable, the script will return nothing.
+
+Otherwise, the script will return `<sstable> blocks <#> expired sstables from getting dropped` followed by a list of the blocked sstables.
+
+Example::
+
+    sstableexpiredblockers keyspace1 standard1
+
+    [BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-0665ae80b2d711e886c66d2c86545d91/mc-2-big-Data.db') (minTS = 5, maxTS = 5, maxLDT = 2147483647)],  blocks 1 expired sstables from getting dropped: [BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-0665ae80b2d711e886c66d2c86545d91/mc-3-big-Data.db') (minTS = 1536349775157606, maxTS = 1536349780311159, maxLDT = 1536349780)],
+
+    [BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-0665ae80b2d711e886c66d2c86545d91/mc-1-big-Data.db') (minTS = 1, maxTS = 10, maxLDT = 2147483647)],  blocks 1 expired sstables from getting dropped: [BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-0665ae80b2d711e886c66d2c86545d91/mc-3-big-Data.db') (minTS = 1536349775157606, maxTS = 1536349780311159, maxLDT = 1536349780)],
+
+
diff --git a/src/doc/4.0-rc1/_sources/tools/sstable/sstablelevelreset.rst.txt b/src/doc/4.0-rc1/_sources/tools/sstable/sstablelevelreset.rst.txt
new file mode 100644
index 0000000..7069094
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/sstable/sstablelevelreset.rst.txt
@@ -0,0 +1,82 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+sstablelevelreset
+-----------------
+
+If LeveledCompactionStrategy is set, this script can be used to reset level to 0 on a given set of sstables. This is useful if you want to, for example, change the minimum sstable size, and therefore restart the compaction process using this new configuration.
+
+See http://cassandra.apache.org/doc/latest/operating/compaction.html#leveled-compaction-strategy for information on how levels are used in this compaction strategy.
+
+Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.
+
+ref: https://issues.apache.org/jira/browse/CASSANDRA-5271
+
+Usage
+^^^^^
+
+sstablelevelreset --really-reset <keyspace> <table>
+
+The really-reset flag is required, to ensure this intrusive command is not run accidentally.
+
+Table not found
+^^^^^^^^^^^^^^^
+
+If the keyspace and/or table is not in the schema (e.g., if you misspelled the table name), the script will return an error.
+
+Example:: 
+
+    ColumnFamily not found: keyspace/evenlog.
+
+Table has no sstables
+^^^^^^^^^^^^^^^^^^^^^
+
+Example::
+
+    Found no sstables, did you give the correct keyspace/table?
+
+
+Table already at level 0
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+The script will not set the level if it is already set to 0.
+
+Example::
+
+    Skipped /var/lib/cassandra/data/keyspace/eventlog-65c429e08c5a11e8939edf4f403979ef/mc-1-big-Data.db since it is already on level 0
+
+Table levels reduced to 0
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If the level is not already 0, then this will reset it to 0.
+
+Example::
+
+    sstablemetadata /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-8-big-Data.db | grep -i level
+    SSTable Level: 1
+
+    sstablelevelreset --really-reset keyspace eventlog
+    Changing level from 1 to 0 on /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-8-big-Data.db
+
+    sstablemetadata /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-8-big-Data.db | grep -i level
+    SSTable Level: 0
+
+
+
+
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/tools/sstable/sstableloader.rst.txt b/src/doc/4.0-rc1/_sources/tools/sstable/sstableloader.rst.txt
new file mode 100644
index 0000000..a9b3734
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/sstable/sstableloader.rst.txt
@@ -0,0 +1,273 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+sstableloader
+---------------
+
+Bulk-load the sstables found in the directory <dir_path> to the configured cluster. The parent directories of <dir_path> are used as the target keyspace/table name. For example, to load an sstable named ma-1-big-Data.db into keyspace1/standard1, you will need to have the files ma-1-big-Data.db and ma-1-big-Index.db in a directory /path/to/keyspace1/standard1/. The tool will create new sstables, and does not clean up your copied files.
+
+Several of the options listed below don't work quite as intended, and in those cases, workarounds are mentioned for specific use cases. 
+
+To avoid having the sstable files to be loaded compacted while reading them, place the files in an alternate keyspace/table path than the data directory.
+
+ref: https://issues.apache.org/jira/browse/CASSANDRA-1278
+
+Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.
+
+Usage
+^^^^^
+
+sstableloader <options> <dir_path>
+
+===================================================   ================================================================================
+-d, --nodes <initial hosts>                           Required. Try to connect to these hosts (comma-separated) 
+                                                      initially for ring information
+-u, --username <username>                             username for Cassandra authentication
+-pw, --password <password>                            password for Cassandra authentication
+-p, --port <native transport port>                    port used for native connection (default 9042)
+-sp, --storage-port <storage port>                    port used for internode communication (default 7000)
+-ssp, --ssl-storage-port <ssl storage port>           port used for TLS internode communication (default 7001)
+--no-progress                                         don't display progress
+-t, --throttle <throttle>                             throttle speed in Mbits (default unlimited)
+-idct, --inter-dc-throttle <inter-dc-throttle>        inter-datacenter throttle speed in Mbits (default unlimited)
+-cph, --connections-per-host <connectionsPerHost>     number of concurrent connections-per-host
+-i, --ignore <NODES>                                  don't stream to this (comma separated) list of nodes
+-alg, --ssl-alg <ALGORITHM>                           Client SSL: algorithm (default: SunX509)
+-ciphers, --ssl-ciphers <CIPHER-SUITES>               Client SSL: comma-separated list of encryption suites to use
+-ks, --keystore <KEYSTORE>                            Client SSL: full path to keystore
+-kspw, --keystore-password <KEYSTORE-PASSWORD>        Client SSL: password of the keystore
+-st, --store-type <STORE-TYPE>                        Client SSL: type of store
+-ts, --truststore <TRUSTSTORE>                        Client SSL: full path to truststore
+-tspw, --truststore-password <TRUSTSTORE-PASSWORD>    Client SSL: password of the truststore
+-prtcl, --ssl-protocol <PROTOCOL>                     Client SSL: connections protocol to use (default: TLS)
+-ap, --auth-provider <auth provider>                  custom AuthProvider class name for cassandra authentication
+-f, --conf-path <path to config file>                 cassandra.yaml file path for streaming throughput and client/server SSL
+-v, --verbose                                         verbose output
+-h, --help                                            display this help message
+===================================================   ================================================================================
+
+You can provide a cassandra.yaml file with the -f command line option to set up streaming throughput, and client and server encryption options. Only stream_throughput_outbound_megabits_per_sec, server_encryption_options, and client_encryption_options are read from yaml. You can override options read from cassandra.yaml with corresponding command line options.
+
+Load sstables from a Snapshot
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Copy the snapshot sstables into an accessible directory and use sstableloader to restore them.
+
+Example::
+
+    cp snapshots/1535397029191/* /path/to/keyspace1/standard1/
+
+    sstableloader --nodes 172.17.0.2 /var/lib/cassandra/loadme/keyspace1/standard1-f8a4fa30aa2a11e8af27091830ac5256/
+    Established connection to initial hosts
+    Opening sstables and calculating sections to stream
+    Streaming relevant part of /var/lib/cassandra/loadme/keyspace1/standard1-f8a4fa30aa2a11e8af27091830ac5256/ma-3-big-Data.db to [/172.17.0.2]
+    progress: [/172.17.0.2]0:1/1 100% total: 100% 0  MB/s(avg: 1 MB/s)
+    Summary statistics:
+       Connections per host:         : 1
+       Total files transferred:      : 1
+       Total bytes transferred:      : 4700000
+       Total duration (ms):          : 4390
+       Average transfer rate (MB/s): : 1
+       Peak transfer rate (MB/s):    : 1
+
+The -d or --nodes option is required, or the script will not run.
+
+Example::
+
+    sstableloader /var/lib/cassandra/loadme/keyspace1/standard1-f8a4fa30aa2a11e8af27091830ac5256/
+    Initial hosts must be specified (-d)
+
+Use a Config File for SSL Clusters
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If SSL encryption is enabled in the cluster, use the --conf-path option with sstableloader to point the tool to the cassandra.yaml with the relevant server_encryption_options (e.g., truststore location, algorithm). This will work better than passing individual ssl options shown above to sstableloader on the command line.
+
+Example::
+
+    sstableloader --nodes 172.17.0.2 --conf-path /etc/cassandra/cassandra.yaml /var/lib/cassandra/loadme/keyspace1/standard1-0974e5a0aa5811e8a0a06d2c86545d91/snapshots/
+    Established connection to initial hosts
+    Opening sstables and calculating sections to stream
+    Streaming relevant part of /var/lib/cassandra/loadme/keyspace1/standard1-0974e5a0aa5811e8a0a06d2c86545d91/mc-1-big-Data.db  to [/172.17.0.2]
+    progress: [/172.17.0.2]0:0/1 1  % total: 1% 9.165KiB/s (avg: 9.165KiB/s)
+    progress: [/172.17.0.2]0:0/1 2  % total: 2% 5.147MiB/s (avg: 18.299KiB/s)
+    progress: [/172.17.0.2]0:0/1 4  % total: 4% 9.751MiB/s (avg: 27.423KiB/s)
+    progress: [/172.17.0.2]0:0/1 5  % total: 5% 8.203MiB/s (avg: 36.524KiB/s)
+    ...
+    progress: [/172.17.0.2]0:1/1 100% total: 100% 0.000KiB/s (avg: 480.513KiB/s)
+
+    Summary statistics:
+       Connections per host    : 1
+       Total files transferred : 1
+       Total bytes transferred : 4.387MiB
+       Total duration          : 9356 ms
+       Average transfer rate   : 480.105KiB/s
+       Peak transfer rate      : 586.410KiB/s
+
+Hide Progress Output
+^^^^^^^^^^^^^^^^^^^^
+
+To hide the output of progress and the summary statistics (e.g., if you wanted to use this tool in a script), use the --no-progress option.
+
+Example::
+
+    sstableloader --nodes 172.17.0.2 --no-progress /var/lib/cassandra/loadme/keyspace1/standard1-f8a4fa30aa2a11e8af27091830ac5256/
+    Established connection to initial hosts
+    Opening sstables and calculating sections to stream
+    Streaming relevant part of /var/lib/cassandra/loadme/keyspace1/standard1-f8a4fa30aa2a11e8af27091830ac5256/ma-4-big-Data.db to [/172.17.0.2]
+
+Get More Detail
+^^^^^^^^^^^^^^^
+
+Using the --verbose option will provide much more progress output.
+
+Example::
+
+    sstableloader --nodes 172.17.0.2 --verbose /var/lib/cassandra/loadme/keyspace1/standard1-0974e5a0aa5811e8a0a06d2c86545d91/
+    Established connection to initial hosts
+    Opening sstables and calculating sections to stream
+    Streaming relevant part of /var/lib/cassandra/loadme/keyspace1/standard1-0974e5a0aa5811e8a0a06d2c86545d91/mc-1-big-Data.db  to [/172.17.0.2]
+    progress: [/172.17.0.2]0:0/1 1  % total: 1% 12.056KiB/s (avg: 12.056KiB/s)
+    progress: [/172.17.0.2]0:0/1 2  % total: 2% 9.092MiB/s (avg: 24.081KiB/s)
+    progress: [/172.17.0.2]0:0/1 4  % total: 4% 18.832MiB/s (avg: 36.099KiB/s)
+    progress: [/172.17.0.2]0:0/1 5  % total: 5% 2.253MiB/s (avg: 47.882KiB/s)
+    progress: [/172.17.0.2]0:0/1 7  % total: 7% 6.388MiB/s (avg: 59.743KiB/s)
+    progress: [/172.17.0.2]0:0/1 8  % total: 8% 14.606MiB/s (avg: 71.635KiB/s)
+    progress: [/172.17.0.2]0:0/1 9  % total: 9% 8.880MiB/s (avg: 83.465KiB/s)
+    progress: [/172.17.0.2]0:0/1 11 % total: 11% 5.217MiB/s (avg: 95.176KiB/s)
+    progress: [/172.17.0.2]0:0/1 12 % total: 12% 12.563MiB/s (avg: 106.975KiB/s)
+    progress: [/172.17.0.2]0:0/1 14 % total: 14% 2.550MiB/s (avg: 118.322KiB/s)
+    progress: [/172.17.0.2]0:0/1 15 % total: 15% 16.638MiB/s (avg: 130.063KiB/s)
+    progress: [/172.17.0.2]0:0/1 17 % total: 17% 17.270MiB/s (avg: 141.793KiB/s)
+    progress: [/172.17.0.2]0:0/1 18 % total: 18% 11.280MiB/s (avg: 153.452KiB/s)
+    progress: [/172.17.0.2]0:0/1 19 % total: 19% 2.903MiB/s (avg: 164.603KiB/s)
+    progress: [/172.17.0.2]0:0/1 21 % total: 21% 6.744MiB/s (avg: 176.061KiB/s)
+    progress: [/172.17.0.2]0:0/1 22 % total: 22% 6.011MiB/s (avg: 187.440KiB/s)
+    progress: [/172.17.0.2]0:0/1 24 % total: 24% 9.690MiB/s (avg: 198.920KiB/s)
+    progress: [/172.17.0.2]0:0/1 25 % total: 25% 11.481MiB/s (avg: 210.412KiB/s)
+    progress: [/172.17.0.2]0:0/1 27 % total: 27% 9.957MiB/s (avg: 221.848KiB/s)
+    progress: [/172.17.0.2]0:0/1 28 % total: 28% 10.270MiB/s (avg: 233.265KiB/s)
+    progress: [/172.17.0.2]0:0/1 29 % total: 29% 7.812MiB/s (avg: 244.571KiB/s)
+    progress: [/172.17.0.2]0:0/1 31 % total: 31% 14.843MiB/s (avg: 256.021KiB/s)
+    progress: [/172.17.0.2]0:0/1 32 % total: 32% 11.457MiB/s (avg: 267.394KiB/s)
+    progress: [/172.17.0.2]0:0/1 34 % total: 34% 6.550MiB/s (avg: 278.536KiB/s)
+    progress: [/172.17.0.2]0:0/1 35 % total: 35% 9.115MiB/s (avg: 289.782KiB/s)
+    progress: [/172.17.0.2]0:0/1 37 % total: 37% 11.054MiB/s (avg: 301.064KiB/s)
+    progress: [/172.17.0.2]0:0/1 38 % total: 38% 10.449MiB/s (avg: 312.307KiB/s)
+    progress: [/172.17.0.2]0:0/1 39 % total: 39% 1.646MiB/s (avg: 321.665KiB/s)
+    progress: [/172.17.0.2]0:0/1 41 % total: 41% 13.300MiB/s (avg: 332.872KiB/s)
+    progress: [/172.17.0.2]0:0/1 42 % total: 42% 14.370MiB/s (avg: 344.082KiB/s)
+    progress: [/172.17.0.2]0:0/1 44 % total: 44% 16.734MiB/s (avg: 355.314KiB/s)
+    progress: [/172.17.0.2]0:0/1 45 % total: 45% 22.245MiB/s (avg: 366.592KiB/s)
+    progress: [/172.17.0.2]0:0/1 47 % total: 47% 25.561MiB/s (avg: 377.882KiB/s)
+    progress: [/172.17.0.2]0:0/1 48 % total: 48% 24.543MiB/s (avg: 389.155KiB/s)
+    progress: [/172.17.0.2]0:0/1 49 % total: 49% 4.894MiB/s (avg: 399.688KiB/s)
+    progress: [/172.17.0.2]0:0/1 51 % total: 51% 8.331MiB/s (avg: 410.559KiB/s)
+    progress: [/172.17.0.2]0:0/1 52 % total: 52% 5.771MiB/s (avg: 421.150KiB/s)
+    progress: [/172.17.0.2]0:0/1 54 % total: 54% 8.738MiB/s (avg: 431.983KiB/s)
+    progress: [/172.17.0.2]0:0/1 55 % total: 55% 3.406MiB/s (avg: 441.911KiB/s)
+    progress: [/172.17.0.2]0:0/1 56 % total: 56% 9.791MiB/s (avg: 452.730KiB/s)
+    progress: [/172.17.0.2]0:0/1 58 % total: 58% 3.401MiB/s (avg: 462.545KiB/s)
+    progress: [/172.17.0.2]0:0/1 59 % total: 59% 5.280MiB/s (avg: 472.840KiB/s)
+    progress: [/172.17.0.2]0:0/1 61 % total: 61% 12.232MiB/s (avg: 483.663KiB/s)
+    progress: [/172.17.0.2]0:0/1 62 % total: 62% 9.258MiB/s (avg: 494.325KiB/s)
+    progress: [/172.17.0.2]0:0/1 64 % total: 64% 2.877MiB/s (avg: 503.640KiB/s)
+    progress: [/172.17.0.2]0:0/1 65 % total: 65% 7.461MiB/s (avg: 514.078KiB/s)
+    progress: [/172.17.0.2]0:0/1 66 % total: 66% 24.247MiB/s (avg: 525.018KiB/s)
+    progress: [/172.17.0.2]0:0/1 68 % total: 68% 9.348MiB/s (avg: 535.563KiB/s)
+    progress: [/172.17.0.2]0:0/1 69 % total: 69% 5.130MiB/s (avg: 545.563KiB/s)
+    progress: [/172.17.0.2]0:0/1 71 % total: 71% 19.861MiB/s (avg: 556.392KiB/s)
+    progress: [/172.17.0.2]0:0/1 72 % total: 72% 15.501MiB/s (avg: 567.122KiB/s)
+    progress: [/172.17.0.2]0:0/1 74 % total: 74% 5.031MiB/s (avg: 576.996KiB/s)
+    progress: [/172.17.0.2]0:0/1 75 % total: 75% 22.771MiB/s (avg: 587.813KiB/s)
+    progress: [/172.17.0.2]0:0/1 76 % total: 76% 22.780MiB/s (avg: 598.619KiB/s)
+    progress: [/172.17.0.2]0:0/1 78 % total: 78% 20.684MiB/s (avg: 609.386KiB/s)
+    progress: [/172.17.0.2]0:0/1 79 % total: 79% 22.920MiB/s (avg: 620.173KiB/s)
+    progress: [/172.17.0.2]0:0/1 81 % total: 81% 7.458MiB/s (avg: 630.333KiB/s)
+    progress: [/172.17.0.2]0:0/1 82 % total: 82% 22.993MiB/s (avg: 641.090KiB/s)
+    progress: [/172.17.0.2]0:0/1 84 % total: 84% 21.392MiB/s (avg: 651.814KiB/s)
+    progress: [/172.17.0.2]0:0/1 85 % total: 85% 7.732MiB/s (avg: 661.938KiB/s)
+    progress: [/172.17.0.2]0:0/1 86 % total: 86% 3.476MiB/s (avg: 670.892KiB/s)
+    progress: [/172.17.0.2]0:0/1 88 % total: 88% 19.889MiB/s (avg: 681.521KiB/s)
+    progress: [/172.17.0.2]0:0/1 89 % total: 89% 21.077MiB/s (avg: 692.162KiB/s)
+    progress: [/172.17.0.2]0:0/1 91 % total: 91% 24.062MiB/s (avg: 702.835KiB/s)
+    progress: [/172.17.0.2]0:0/1 92 % total: 92% 19.798MiB/s (avg: 713.431KiB/s)
+    progress: [/172.17.0.2]0:0/1 94 % total: 94% 17.591MiB/s (avg: 723.965KiB/s)
+    progress: [/172.17.0.2]0:0/1 95 % total: 95% 13.725MiB/s (avg: 734.361KiB/s)
+    progress: [/172.17.0.2]0:0/1 96 % total: 96% 16.737MiB/s (avg: 744.846KiB/s)
+    progress: [/172.17.0.2]0:0/1 98 % total: 98% 22.701MiB/s (avg: 755.443KiB/s)
+    progress: [/172.17.0.2]0:0/1 99 % total: 99% 18.718MiB/s (avg: 765.954KiB/s)
+    progress: [/172.17.0.2]0:1/1 100% total: 100% 6.613MiB/s (avg: 767.802KiB/s)
+    progress: [/172.17.0.2]0:1/1 100% total: 100% 0.000KiB/s (avg: 670.295KiB/s)
+
+    Summary statistics:
+       Connections per host    : 1
+       Total files transferred : 1
+       Total bytes transferred : 4.387MiB
+       Total duration          : 6706 ms
+       Average transfer rate   : 669.835KiB/s
+       Peak transfer rate      : 767.802KiB/s
+
+
+Throttling Load
+^^^^^^^^^^^^^^^
+
+To prevent the table loader from overloading the system resources, you can throttle the process with the --throttle option. The default is unlimited (no throttling). Throttle units are in megabits. Note that the total duration is increased in the example below.
+
+Example::
+
+    sstableloader --nodes 172.17.0.2 --throttle 1 /var/lib/cassandra/loadme/keyspace1/standard1-f8a4fa30aa2a11e8af27091830ac5256/
+    Established connection to initial hosts
+    Opening sstables and calculating sections to stream
+    Streaming relevant part of /var/lib/cassandra/loadme/keyspace1/standard1-f8a4fa30aa2a11e8af27091830ac5256/ma-6-big-Data.db to [/172.17.0.2]
+    progress: [/172.17.0.2]0:1/1 100% total: 100% 0  MB/s(avg: 0 MB/s)
+    Summary statistics:
+       Connections per host:         : 1
+       Total files transferred:      : 1
+       Total bytes transferred:      : 4595705
+       Total duration (ms):          : 37634
+       Average transfer rate (MB/s): : 0
+       Peak transfer rate (MB/s):    : 0
+
+Speeding up Load
+^^^^^^^^^^^^^^^^
+
+To speed up the load process, the number of connections per host can be increased.
+
+Example::
+
+    sstableloader --nodes 172.17.0.2 --connections-per-host 100 /var/lib/cassandra/loadme/keyspace1/standard1-f8a4fa30aa2a11e8af27091830ac5256/
+    Established connection to initial hosts
+    Opening sstables and calculating sections to stream
+    Streaming relevant part of /var/lib/cassandra/loadme/keyspace1/standard1-f8a4fa30aa2a11e8af27091830ac5256/ma-9-big-Data.db to [/172.17.0.2]
+    progress: [/172.17.0.2]0:1/1 100% total: 100% 0  MB/s(avg: 1 MB/s)
+    Summary statistics:
+       Connections per host:         : 100
+       Total files transferred:      : 1
+       Total bytes transferred:      : 4595705
+       Total duration (ms):          : 3486
+       Average transfer rate (MB/s): : 1
+       Peak transfer rate (MB/s):    : 1
+
+This small data set doesn't benefit much from the increase in connections per host, but note that the total duration has decreased in this example.
+
+
+
+
+
+
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/tools/sstable/sstablemetadata.rst.txt b/src/doc/4.0-rc1/_sources/tools/sstable/sstablemetadata.rst.txt
new file mode 100644
index 0000000..48a1de5
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/sstable/sstablemetadata.rst.txt
@@ -0,0 +1,304 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+sstablemetadata
+---------------
+
+Print information about an sstable from the related Statistics.db and Summary.db files to standard output.
+
+ref: https://issues.apache.org/jira/browse/CASSANDRA-7159 and https://issues.apache.org/jira/browse/CASSANDRA-10838
+
+Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.
+
+Usage
+^^^^^
+
+sstablemetadata <options> <sstable filename(s)>
+
+=========================        ================================================================================
+-c,--colors                      Use ANSI color sequences
+-g,--gc_grace_seconds <arg>      Time to use when calculating droppable tombstones
+-s,--scan                        Full sstable scan for additional details. Only available in 3.0+ sstables. Defaults: false
+-t,--timestamp_unit <arg>        Time unit that cell timestamps are written with
+-u,--unicode                     Use unicode to draw histograms and progress bars
+=========================        ================================================================================
+
+Print all the metadata
+^^^^^^^^^^^^^^^^^^^^^^
+
+Run sstablemetadata against the *Data.db file(s) related to a table. If necessary, find the *Data.db file(s) using sstableutil.
+
+Example::
+
+    sstableutil keyspace1 standard1 | grep Data
+    /var/lib/cassandra/data/keyspace1/standard1-f6845640a6cb11e8b6836d2c86545d91/mc-1-big-Data.db
+
+    sstablemetadata /var/lib/cassandra/data/keyspace1/standard1-f6845640a6cb11e8b6836d2c86545d91/mc-1-big-Data.db
+
+    SSTable: /var/lib/cassandra/data/keyspace1/standard1-f6845640a6cb11e8b6836d2c86545d91/mc-1-big
+    Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
+    Bloom Filter FP chance: 0.010000
+    Minimum timestamp: 1535025576141000
+    Maximum timestamp: 1535025604309000
+    SSTable min local deletion time: 2147483647
+    SSTable max local deletion time: 2147483647
+    Compressor: org.apache.cassandra.io.compress.LZ4Compressor
+    TTL min: 86400
+    TTL max: 86400
+    First token: -9223004712949498654 (key=39373333373831303130)
+    Last token: 9222554117157811897 (key=4f3438394e39374d3730)
+    Estimated droppable tombstones: 0.9188263888888889
+    SSTable Level: 0
+    Repaired at: 0
+    Replay positions covered: {CommitLogPosition(segmentId=1535025390651, position=226400)=CommitLogPosition(segmentId=1535025390651, position=6849139)}
+    totalColumnsSet: 100000
+    totalRows: 20000
+    Estimated tombstone drop times:
+    1535039100:     80390
+    1535039160:      5645
+    1535039220:     13965
+    Count               Row Size        Cell Count
+    1                          0                 0
+    2                          0                 0
+    3                          0                 0
+    4                          0                 0
+    5                          0             20000
+    6                          0                 0
+    7                          0                 0
+    8                          0                 0
+    10                         0                 0
+    12                         0                 0
+    14                         0                 0
+    17                         0                 0
+    20                         0                 0
+    24                         0                 0
+    29                         0                 0
+    35                         0                 0
+    42                         0                 0
+    50                         0                 0
+    60                         0                 0
+    72                         0                 0
+    86                         0                 0
+    103                        0                 0
+    124                        0                 0
+    149                        0                 0
+    179                        0                 0
+    215                        0                 0
+    258                    20000                 0
+    310                        0                 0
+    372                        0                 0
+    446                        0                 0
+    535                        0                 0
+    642                        0                 0
+    770                        0                 0
+    924                        0                 0
+    1109                       0                 0
+    1331                       0                 0
+    1597                       0                 0
+    1916                       0                 0
+    2299                       0                 0
+    2759                       0                 0
+    3311                       0                 0
+    3973                       0                 0
+    4768                       0                 0
+    5722                       0                 0
+    6866                       0                 0
+    8239                       0                 0
+    9887                       0                 0
+    11864                      0                 0
+    14237                      0                 0
+    17084                      0                 0
+    20501                      0                 0
+    24601                      0                 0
+    29521                      0                 0
+    35425                      0                 0
+    42510                      0                 0
+    51012                      0                 0
+    61214                      0                 0
+    73457                      0                 0
+    88148                      0                 0
+    105778                     0                 0
+    126934                     0                 0
+    152321                     0                 0
+    182785                     0                 0
+    219342                     0                 0
+    263210                     0                 0
+    315852                     0                 0
+    379022                     0                 0
+    454826                     0                 0
+    545791                     0                 0
+    654949                     0                 0
+    785939                     0                 0
+    943127                     0                 0
+    1131752                    0                 0
+    1358102                    0                 0
+    1629722                    0                 0
+    1955666                    0                 0
+    2346799                    0                 0
+    2816159                    0                 0
+    3379391                    0                 0
+    4055269                    0                 0
+    4866323                    0                 0
+    5839588                    0                 0
+    7007506                    0                 0
+    8409007                    0                 0
+    10090808                   0                 0
+    12108970                   0                 0
+    14530764                   0                 0
+    17436917                   0                 0
+    20924300                   0                 0
+    25109160                   0                 0
+    30130992                   0                 0
+    36157190                   0                 0
+    43388628                   0                 0
+    52066354                   0                 0
+    62479625                   0                 0
+    74975550                   0                 0
+    89970660                   0                 0
+    107964792                  0                 0
+    129557750                  0                 0
+    155469300                  0                 0
+    186563160                  0                 0
+    223875792                  0                 0
+    268650950                  0                 0
+    322381140                  0                 0
+    386857368                  0                 0
+    464228842                  0                 0
+    557074610                  0                 0
+    668489532                  0                 0
+    802187438                  0                 0
+    962624926                  0                 0
+    1155149911                 0                 0
+    1386179893                 0                 0
+    1663415872                 0                 0
+    1996099046                 0                 0
+    2395318855                 0                 0
+    2874382626                 0
+    3449259151                 0
+    4139110981                 0
+    4966933177                 0
+    5960319812                 0
+    7152383774                 0
+    8582860529                 0
+    10299432635                 0
+    12359319162                 0
+    14831182994                 0
+    17797419593                 0
+    21356903512                 0
+    25628284214                 0
+    30753941057                 0
+    36904729268                 0
+    44285675122                 0
+    53142810146                 0
+    63771372175                 0
+    76525646610                 0
+    91830775932                 0
+    110196931118                 0
+    132236317342                 0
+    158683580810                 0
+    190420296972                 0
+    228504356366                 0
+    274205227639                 0
+    329046273167                 0
+    394855527800                 0
+    473826633360                 0
+    568591960032                 0
+    682310352038                 0
+    818772422446                 0
+    982526906935                 0
+    1179032288322                 0
+    1414838745986                 0
+    Estimated cardinality: 20196
+    EncodingStats minTTL: 0
+    EncodingStats minLocalDeletionTime: 1442880000
+    EncodingStats minTimestamp: 1535025565275000
+    KeyType: org.apache.cassandra.db.marshal.BytesType
+    ClusteringTypes: [org.apache.cassandra.db.marshal.UTF8Type]
+    StaticColumns: {C3:org.apache.cassandra.db.marshal.BytesType, C4:org.apache.cassandra.db.marshal.BytesType, C0:org.apache.cassandra.db.marshal.BytesType, C1:org.apache.cassandra.db.marshal.BytesType, C2:org.apache.cassandra.db.marshal.BytesType}
+    RegularColumns: {}
+
+Specify gc grace seconds
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+To see the ratio of droppable tombstones given a configured gc grace seconds, use the gc_grace_seconds option. Because the sstablemetadata tool doesn't access the schema directly, this is a way to more accurately estimate droppable tombstones -- for example, if you pass in gc_grace_seconds matching what is configured in the schema. The gc_grace_seconds value provided is subtracted from the curent machine time (in seconds). 
+
+ref: https://issues.apache.org/jira/browse/CASSANDRA-12208
+
+Example::
+
+    sstablemetadata /var/lib/cassandra/data/keyspace1/standard1-41b52700b4ed11e896476d2c86545d91/mc-12-big-Data.db | grep "Estimated tombstone drop times" -A4
+    Estimated tombstone drop times:
+    1536599100:         1
+    1536599640:         1
+    1536599700:         2
+
+    echo $(date +%s)
+    1536602005
+
+    # if gc_grace_seconds was configured at 100, all of the tombstones would be currently droppable 
+    sstablemetadata --gc_grace_seconds 100 /var/lib/cassandra/data/keyspace1/standard1-41b52700b4ed11e896476d2c86545d91/mc-12-big-Data.db | grep "Estimated droppable tombstones"
+    Estimated droppable tombstones: 4.0E-5
+
+    # if gc_grace_seconds was configured at 4700, some of the tombstones would be currently droppable 
+    sstablemetadata --gc_grace_seconds 4700 /var/lib/cassandra/data/keyspace1/standard1-41b52700b4ed11e896476d2c86545d91/mc-12-big-Data.db | grep "Estimated droppable tombstones"
+    Estimated droppable tombstones: 9.61111111111111E-6
+
+    # if gc_grace_seconds was configured at 5000, none of the tombstones would be currently droppable 
+    sstablemetadata --gc_grace_seconds 5000 /var/lib/cassandra/data/keyspace1/standard1-41b52700b4ed11e896476d2c86545d91/mc-12-big-Data.db | grep "Estimated droppable tombstones"
+    Estimated droppable tombstones: 0.0
+
+Explanation of each value printed above
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+===================================  ================================================================================
+   Value                             Explanation
+===================================  ================================================================================
+SSTable                              prefix of the sstable filenames related to this sstable
+Partitioner                          partitioner type used to distribute data across nodes; defined in cassandra.yaml  
+Bloom Filter FP                      precision of Bloom filter used in reads; defined in the table definition   
+Minimum timestamp                    minimum timestamp of any entry in this sstable, in epoch microseconds  
+Maximum timestamp                    maximum timestamp of any entry in this sstable, in epoch microseconds
+SSTable min local deletion time      minimum timestamp of deletion date, based on TTL, in epoch seconds
+SSTable max local deletion time      maximum timestamp of deletion date, based on TTL, in epoch seconds
+Compressor                           blank (-) by default; if not blank, indicates type of compression enabled on the table
+TTL min                              time-to-live in seconds; default 0 unless defined in the table definition
+TTL max                              time-to-live in seconds; default 0 unless defined in the table definition
+First token                          lowest token and related key found in the sstable summary
+Last token                           highest token and related key found in the sstable summary
+Estimated droppable tombstones       ratio of tombstones to columns, using configured gc grace seconds if relevant
+SSTable level                        compaction level of this sstable, if leveled compaction (LCS) is used
+Repaired at                          the timestamp this sstable was marked as repaired via sstablerepairedset, in epoch milliseconds
+Replay positions covered             the interval of time and commitlog positions related to this sstable
+totalColumnsSet                      number of cells in the table
+totalRows                            number of rows in the table
+Estimated tombstone drop times       approximate number of rows that will expire, ordered by epoch seconds
+Count  Row Size  Cell Count          two histograms in two columns; one represents distribution of Row Size 
+                                     and the other represents distribution of Cell Count
+Estimated cardinality                an estimate of unique values, used for compaction
+EncodingStats* minTTL                in epoch milliseconds
+EncodingStats* minLocalDeletionTime  in epoch seconds
+EncodingStats* minTimestamp          in epoch microseconds
+KeyType                              the type of partition key, useful in reading and writing data 
+                                     from/to storage; defined in the table definition
+ClusteringTypes                      the type of clustering key, useful in reading and writing data 
+                                     from/to storage; defined in the table definition
+StaticColumns                        a list of the shared columns in the table
+RegularColumns                       a list of non-static, non-key columns in the table
+===================================  ================================================================================
+* For the encoding stats values, the delta of this and the current epoch time is used when encoding and storing data in the most optimal way.
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/tools/sstable/sstableofflinerelevel.rst.txt b/src/doc/4.0-rc1/_sources/tools/sstable/sstableofflinerelevel.rst.txt
new file mode 100644
index 0000000..c031d29
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/sstable/sstableofflinerelevel.rst.txt
@@ -0,0 +1,95 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+sstableofflinerelevel
+---------------------
+
+When using LeveledCompactionStrategy, sstables can get stuck at L0 on a recently bootstrapped node, and compactions may never catch up. This tool is used to bump sstables into the highest level possible.
+
+ref: https://issues.apache.org/jira/browse/CASSANDRA-8301
+
+The way this is done is: sstables are storted by their last token. Given an original leveling like this (note that [ ] indicates token boundaries, not sstable size on disk; all sstables are the same size)::
+
+    L3 [][][][][][][][][][][]
+    L2 [    ][    ][    ][  ]
+    L1 [          ][        ]
+    L0 [                    ]
+
+Will look like this after being dropped to L0 and sorted by last token (and, to illustrate overlap, the overlapping ones are put on a new line)::
+
+    [][][]
+    [    ][][][]
+        [    ]
+    [          ]
+    ...
+
+Then, we start iterating from the smallest last-token and adding all sstables that do not cause an overlap to a level. We will reconstruct the original leveling top-down. Whenever we add an sstable to the level, we remove it from the sorted list. Once we reach the end of the sorted list, we have a full level, and can start over with the level below.
+
+If we end up with more levels than expected, we put all levels exceeding the expected in L0, for example, original L0 files will most likely be put in a level of its own since they most often overlap many other sstables.
+
+Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.
+
+Usage
+^^^^^
+
+sstableofflinerelevel [--dry-run] <keyspace> <table>
+
+Doing a dry run
+^^^^^^^^^^^^^^^
+
+Use the --dry-run option to see the current level distribution and predicted level after the change.
+
+Example::
+
+    sstableofflinerelevel --dry-run keyspace eventlog
+    For sstables in /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753:
+    Current leveling:
+    L0=2
+    Potential leveling:
+    L0=1
+    L1=1
+
+Running a relevel
+^^^^^^^^^^^^^^^^^
+
+Example::
+
+    sstableofflinerelevel keyspace eventlog
+    For sstables in /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753:
+    Current leveling:
+    L0=2
+    New leveling:
+    L0=1
+    L1=1
+
+Keyspace or table not found
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If an invalid keyspace and/or table is provided, an exception will be thrown.
+
+Example::
+
+    sstableofflinerelevel --dry-run keyspace evenlog
+
+    Exception in thread "main" java.lang.IllegalArgumentException: Unknown keyspace/columnFamily keyspace1.evenlog
+        at org.apache.cassandra.tools.SSTableOfflineRelevel.main(SSTableOfflineRelevel.java:96)
+
+
+
+
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/tools/sstable/sstablerepairedset.rst.txt b/src/doc/4.0-rc1/_sources/tools/sstable/sstablerepairedset.rst.txt
new file mode 100644
index 0000000..ebacef3
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/sstable/sstablerepairedset.rst.txt
@@ -0,0 +1,79 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+sstablerepairedset
+------------------
+
+Repairs can take a very long time in some environments, for large sizes of data. Use this tool to set the repairedAt status on a given set of sstables, so that repairs can be run on only un-repaired sstables if desired.
+
+Note that running a repair (e.g., via nodetool repair) doesn't set the status of this metadata. Only setting the status of this metadata via this tool does.
+
+ref: https://issues.apache.org/jira/browse/CASSANDRA-5351
+
+Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.
+
+Usage
+^^^^^
+sstablerepairedset --really-set <options> [-f <sstable-list> | <sstables>]
+
+===================================                   ================================================================================
+--really-set                                          required if you want to really set the status
+--is-repaired                                         set the repairedAt status to the last modified time
+--is-unrepaired                                       set the repairedAt status to 0
+-f                                                    use a file containing a list of sstables as the input
+===================================                   ================================================================================
+
+Set a lot of sstables to unrepaired status
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+There are many ways to do this programmatically. This way would likely include variables for the keyspace and table.
+
+Example::
+
+    find /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/* -name "*Data.db" -print0 | xargs -0 -I % sstablerepairedset --really-set --is-unrepaired %
+
+Set one to many sstables to repaired status
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Set the repairedAt status after a repair to mark the sstables as repaired. Again, using variables for the keyspace and table names is a good choice.
+
+Example::
+
+    nodetool repair keyspace1 standard1
+    find /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/* -name "*Data.db" -print0 | xargs -0 -I % sstablerepairedset --really-set --is-repaired %
+
+Print metadata showing repaired status
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+sstablemetadata can be used to view the status set or unset using this command.
+
+Example:
+
+    sstablerepairedset --really-set --is-repaired /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db
+    sstablemetadata /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db | grep "Repaired at"
+    Repaired at: 1534443974000
+
+    sstablerepairedset --really-set --is-unrepaired /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db
+    sstablemetadata /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db | grep "Repaired at"
+    Repaired at: 0
+
+Using command in a script
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If you know you ran repair 2 weeks ago, you can do something like the following::
+
+    sstablerepairset --is-repaired -f <(find /var/lib/cassandra/data/.../ -iname "*Data.db*" -mtime +14)
+
diff --git a/src/doc/4.0-rc1/_sources/tools/sstable/sstablescrub.rst.txt b/src/doc/4.0-rc1/_sources/tools/sstable/sstablescrub.rst.txt
new file mode 100644
index 0000000..a8529e3
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/sstable/sstablescrub.rst.txt
@@ -0,0 +1,100 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+sstablescrub
+------------
+
+Fix a broken sstable. The scrub process rewrites the sstable, skipping any corrupted rows. Because these rows are lost, follow this process with a repair.
+
+ref: https://issues.apache.org/jira/browse/CASSANDRA-4321
+
+Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.
+
+Usage
+^^^^^
+sstablescrub <options> <keyspace> <table>
+
+===================================     ================================================================================
+--debug                                 display stack traces
+-e,--header-fix <arg>                   Option whether and how to perform a check of the sstable serialization-headers and fix , fixable issues.
+                                        Possible argument values:
+                                         - validate-only: validate the serialization-headers, but do not fix those. Do not continue with scrub - i.e. only validate the header (dry-run of fix-only).
+                                         - validate: (default) validate the serialization-headers, but do not fix those and only continue with scrub if no error were detected.
+                                         - fix-only: validate and fix the serialization-headers, don't continue with scrub.
+                                         - fix: validate and fix the serialization-headers, do not fix and do not continue with scrub if the serialization-header check encountered errors.
+                                         - off: don't perform the serialization-header checks.
+-h,--help                               display this help message
+-m,--manifest-check                     only check and repair the leveled manifest, without actually scrubbing the sstables
+-n,--no-validate                        do not validate columns using column validator
+-r,--reinsert-overflowed-ttl            Rewrites rows with overflowed expiration date affected by CASSANDRA-14092 
+                                        with the maximum supported expiration date of 2038-01-19T03:14:06+00:00. The rows are rewritten with the original timestamp incremented by one millisecond to override/supersede any potential tombstone that may have been generated during compaction of the affected rows.
+-s,--skip-corrupted                     skip corrupt rows in counter tables
+-v,--verbose                            verbose output
+===================================     ================================================================================
+
+Basic Scrub
+^^^^^^^^^^^
+
+The scrub without options will do a snapshot first, then write all non-corrupted files to a new sstable.
+
+Example::
+
+    sstablescrub keyspace1 standard1
+    Pre-scrub sstables snapshotted into snapshot pre-scrub-1534424070883
+    Scrubbing BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-6365332094dd11e88f324f9c503e4753/mc-5-big-Data.db') (17.142MiB)
+    Scrub of BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-6365332094dd11e88f324f9c503e4753/mc-5-big-Data.db') complete: 73367 rows in new sstable and 0 empty (tombstoned) rows dropped
+    Checking leveled manifest
+
+Scrub without Validation
+^^^^^^^^^^^^^^^^^^^^^^^^
+ref: https://issues.apache.org/jira/browse/CASSANDRA-9406
+
+Use the --no-validate option to retain data that may be misrepresented (e.g., an integer stored in a long field) but not corrupt. This data usually doesn not present any errors to the client.
+
+Example::
+
+    sstablescrub --no-validate keyspace1 standard1
+    Pre-scrub sstables snapshotted into snapshot pre-scrub-1536243158517
+    Scrubbing BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-bc9cf530b1da11e886c66d2c86545d91/mc-2-big-Data.db') (4.482MiB)
+    Scrub of BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-bc9cf530b1da11e886c66d2c86545d91/mc-2-big-Data.db') complete; looks like all 0 rows were tombstoned
+
+Skip Corrupted Counter Tables
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ref: https://issues.apache.org/jira/browse/CASSANDRA-5930
+
+If counter tables are corrupted in a way that prevents sstablescrub from completing, you can use the --skip-corrupted option to skip scrubbing those counter tables. This workaround is not necessary in versions 2.0+.
+
+Example::
+
+    sstablescrub --skip-corrupted keyspace1 counter1
+
+Dealing with Overflow Dates
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ref: https://issues.apache.org/jira/browse/CASSANDRA-14092
+
+Using the option --reinsert-overflowed-ttl allows a rewriting of rows that had a max TTL going over the maximum (causing an overflow).
+
+Example::
+
+    sstablescrub --reinsert-overflowed-ttl keyspace1 counter1
+
+Manifest Check
+^^^^^^^^^^^^^^
+
+As of Cassandra version 2.0, this option is no longer relevant, since level data was moved from a separate manifest into the sstable metadata.
+
diff --git a/src/doc/4.0-rc1/_sources/tools/sstable/sstablesplit.rst.txt b/src/doc/4.0-rc1/_sources/tools/sstable/sstablesplit.rst.txt
new file mode 100644
index 0000000..5386fa4
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/sstable/sstablesplit.rst.txt
@@ -0,0 +1,93 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+sstablesplit
+------------
+
+Big sstable files can take up a lot of disk space. The sstablesplit tool can be used to split those large files into smaller files. It can be thought of as a type of anticompaction. 
+
+ref: https://issues.apache.org/jira/browse/CASSANDRA-4766
+
+Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.
+
+Usage
+^^^^^
+sstablesplit <options> <filename>
+
+===================================                   ================================================================================
+--debug                                               display stack traces
+-h, --help                                            display this help message
+--no-snapshot                                         don't snapshot the sstables before splitting
+-s, --size <size>                                     maximum size in MB for the output sstables (default: 50)
+===================================                   ================================================================================
+
+This command should be run with Cassandra stopped. Note: the script does not verify that Cassandra is stopped.
+
+Split a File
+^^^^^^^^^^^^
+
+Split a large sstable into smaller sstables. By default, unless the option --no-snapshot is added, a snapshot will be done of the original sstable and placed in the snapshots folder.
+
+Example::
+
+    sstablesplit /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-8-big-Data.db
+    
+    Pre-split sstables snapshotted into snapshot pre-split-1533144514795
+
+Split Multiple Files
+^^^^^^^^^^^^^^^^^^^^
+
+Wildcards can be used in the filename portion of the command to split multiple files.
+
+Example::
+
+    sstablesplit --size 1 /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-1*
+
+Attempt to Split a Small File
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If the file is already smaller than the split size provided, the sstable will not be split.
+
+Example::
+
+    sstablesplit /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-8-big-Data.db
+    Skipping /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-8-big-Data.db: it's size (1.442 MB) is less than the split size (50 MB)
+    No sstables needed splitting.
+
+Split a File into Specified Size
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The default size used for splitting is 50MB. Specify another size with the --size option. The size is in megabytes (MB). Specify only the number, not the units. For example --size 50 is correct, but --size 50MB is not.
+
+Example::
+
+    sstablesplit --size 1 /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-9-big-Data.db
+    Pre-split sstables snapshotted into snapshot pre-split-1533144996008
+
+
+Split Without Snapshot
+^^^^^^^^^^^^^^^^^^^^^^
+
+By default, sstablesplit will create a snapshot before splitting. If a snapshot is not needed, use the --no-snapshot option to skip it.
+
+Example::
+
+    sstablesplit --size 1 --no-snapshot /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-11-big-Data.db
+
+Note: There is no output, but you can see the results in your file system.
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/tools/sstable/sstableupgrade.rst.txt b/src/doc/4.0-rc1/_sources/tools/sstable/sstableupgrade.rst.txt
new file mode 100644
index 0000000..66386ac
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/sstable/sstableupgrade.rst.txt
@@ -0,0 +1,137 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+sstableupgrade
+--------------
+
+Upgrade the sstables in the given table (or snapshot) to the current version of Cassandra. This process is typically done after a Cassandra version upgrade. This operation will rewrite the sstables in the specified table to match the currently installed version of Cassandra. The sstableupgrade command can also be used to downgrade sstables to a previous version.
+
+The snapshot option will only upgrade the specified snapshot. Upgrading snapshots is required before attempting to restore a snapshot taken in a major version older than the major version Cassandra is currently running. This will replace the files in the given snapshot as well as break any hard links to live sstables.
+
+Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.
+
+Usage
+^^^^^
+sstableupgrade <options> <keyspace> <table> [snapshot_name]
+
+===================================                   ================================================================================
+--debug                                               display stack traces
+-h,--help                                             display this help message
+-k,--keep-source                                      do not delete the source sstables
+===================================                   ================================================================================
+
+Rewrite tables to the current Cassandra version
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Start with a set of sstables in one version of Cassandra::
+
+    ls -al /tmp/cassandra/data/keyspace1/standard1-9695b790a63211e8a6fb091830ac5256/
+    ...
+    -rw-r--r--   1 user  wheel      348 Aug 22 13:45 keyspace1-standard1-ka-1-CRC.db
+    -rw-r--r--   1 user  wheel  5620000 Aug 22 13:45 keyspace1-standard1-ka-1-Data.db
+    -rw-r--r--   1 user  wheel       10 Aug 22 13:45 keyspace1-standard1-ka-1-Digest.sha1
+    -rw-r--r--   1 user  wheel    25016 Aug 22 13:45 keyspace1-standard1-ka-1-Filter.db
+    -rw-r--r--   1 user  wheel   480000 Aug 22 13:45 keyspace1-standard1-ka-1-Index.db
+    -rw-r--r--   1 user  wheel     9895 Aug 22 13:45 keyspace1-standard1-ka-1-Statistics.db
+    -rw-r--r--   1 user  wheel     3562 Aug 22 13:45 keyspace1-standard1-ka-1-Summary.db
+    -rw-r--r--   1 user  wheel       79 Aug 22 13:45 keyspace1-standard1-ka-1-TOC.txt
+
+After upgrading the Cassandra version, upgrade the sstables::
+
+    sstableupgrade keyspace1 standard1
+    Found 1 sstables that need upgrading.
+    Upgrading BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-9695b790a63211e8a6fb091830ac5256/keyspace1-standard1-ka-1-Data.db')
+    Upgrade of BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-9695b790a63211e8a6fb091830ac5256/keyspace1-standard1-ka-1-Data.db') complete.
+
+    ls -al /tmp/cassandra/data/keyspace1/standard1-9695b790a63211e8a6fb091830ac5256/
+    ...
+    drwxr-xr-x   2 user  wheel       64 Aug 22 13:48 backups
+    -rw-r--r--   1 user  wheel      292 Aug 22 13:48 mc-2-big-CRC.db
+    -rw-r--r--   1 user  wheel  4599475 Aug 22 13:48 mc-2-big-Data.db
+    -rw-r--r--   1 user  wheel       10 Aug 22 13:48 mc-2-big-Digest.crc32
+    -rw-r--r--   1 user  wheel    25256 Aug 22 13:48 mc-2-big-Filter.db
+    -rw-r--r--   1 user  wheel   330807 Aug 22 13:48 mc-2-big-Index.db
+    -rw-r--r--   1 user  wheel    10312 Aug 22 13:48 mc-2-big-Statistics.db
+    -rw-r--r--   1 user  wheel     3506 Aug 22 13:48 mc-2-big-Summary.db
+    -rw-r--r--   1 user  wheel       80 Aug 22 13:48 mc-2-big-TOC.txt
+
+Rewrite tables to the current Cassandra version, and keep tables in old version
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Again, starting with a set of sstables in one version::
+
+    ls -al /tmp/cassandra/data/keyspace1/standard1-db532690a63411e8b4ae091830ac5256/
+    ...
+    -rw-r--r--   1 user  wheel      348 Aug 22 13:58 keyspace1-standard1-ka-1-CRC.db
+    -rw-r--r--   1 user  wheel  5620000 Aug 22 13:58 keyspace1-standard1-ka-1-Data.db
+    -rw-r--r--   1 user  wheel       10 Aug 22 13:58 keyspace1-standard1-ka-1-Digest.sha1
+    -rw-r--r--   1 user  wheel    25016 Aug 22 13:58 keyspace1-standard1-ka-1-Filter.db
+    -rw-r--r--   1 user  wheel   480000 Aug 22 13:58 keyspace1-standard1-ka-1-Index.db
+    -rw-r--r--   1 user  wheel     9895 Aug 22 13:58 keyspace1-standard1-ka-1-Statistics.db
+    -rw-r--r--   1 user  wheel     3562 Aug 22 13:58 keyspace1-standard1-ka-1-Summary.db
+    -rw-r--r--   1 user  wheel       79 Aug 22 13:58 keyspace1-standard1-ka-1-TOC.txt
+
+After upgrading the Cassandra version, upgrade the sstables, retaining the original sstables::
+
+    sstableupgrade keyspace1 standard1 -k
+    Found 1 sstables that need upgrading.
+    Upgrading BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-db532690a63411e8b4ae091830ac5256/keyspace1-standard1-ka-1-Data.db')
+    Upgrade of BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-db532690a63411e8b4ae091830ac5256/keyspace1-standard1-ka-1-Data.db') complete.
+
+    ls -al /tmp/cassandra/data/keyspace1/standard1-db532690a63411e8b4ae091830ac5256/
+    ...
+    drwxr-xr-x   2 user  wheel       64 Aug 22 14:00 backups
+    -rw-r--r--@  1 user  wheel      348 Aug 22 13:58 keyspace1-standard1-ka-1-CRC.db
+    -rw-r--r--@  1 user  wheel  5620000 Aug 22 13:58 keyspace1-standard1-ka-1-Data.db
+    -rw-r--r--@  1 user  wheel       10 Aug 22 13:58 keyspace1-standard1-ka-1-Digest.sha1
+    -rw-r--r--@  1 user  wheel    25016 Aug 22 13:58 keyspace1-standard1-ka-1-Filter.db
+    -rw-r--r--@  1 user  wheel   480000 Aug 22 13:58 keyspace1-standard1-ka-1-Index.db
+    -rw-r--r--@  1 user  wheel     9895 Aug 22 13:58 keyspace1-standard1-ka-1-Statistics.db
+    -rw-r--r--@  1 user  wheel     3562 Aug 22 13:58 keyspace1-standard1-ka-1-Summary.db
+    -rw-r--r--@  1 user  wheel       79 Aug 22 13:58 keyspace1-standard1-ka-1-TOC.txt
+    -rw-r--r--   1 user  wheel      292 Aug 22 14:01 mc-2-big-CRC.db
+    -rw-r--r--   1 user  wheel  4596370 Aug 22 14:01 mc-2-big-Data.db
+    -rw-r--r--   1 user  wheel       10 Aug 22 14:01 mc-2-big-Digest.crc32
+    -rw-r--r--   1 user  wheel    25256 Aug 22 14:01 mc-2-big-Filter.db
+    -rw-r--r--   1 user  wheel   330801 Aug 22 14:01 mc-2-big-Index.db
+    -rw-r--r--   1 user  wheel    10312 Aug 22 14:01 mc-2-big-Statistics.db
+    -rw-r--r--   1 user  wheel     3506 Aug 22 14:01 mc-2-big-Summary.db
+    -rw-r--r--   1 user  wheel       80 Aug 22 14:01 mc-2-big-TOC.txt
+
+
+Rewrite a snapshot to the current Cassandra version
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Find the snapshot name::
+
+    nodetool listsnapshots
+
+    Snapshot Details:
+    Snapshot name       Keyspace name                Column family name           True size          Size on disk
+    ...
+    1534962986979       keyspace1                    standard1                    5.85 MB            5.85 MB
+
+Then rewrite the snapshot::
+
+    sstableupgrade keyspace1 standard1 1534962986979
+    Found 1 sstables that need upgrading.
+    Upgrading BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-5850e9f0a63711e8a5c5091830ac5256/snapshots/1534962986979/keyspace1-standard1-ka-1-Data.db')
+    Upgrade of BigTableReader(path='/var/lib/cassandra/data/keyspace1/standard1-5850e9f0a63711e8a5c5091830ac5256/snapshots/1534962986979/keyspace1-standard1-ka-1-Data.db') complete.
+
+
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/tools/sstable/sstableutil.rst.txt b/src/doc/4.0-rc1/_sources/tools/sstable/sstableutil.rst.txt
new file mode 100644
index 0000000..30becd0
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/sstable/sstableutil.rst.txt
@@ -0,0 +1,91 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+sstableutil
+-----------
+
+List sstable files for the provided table.
+
+ref: https://issues.apache.org/jira/browse/CASSANDRA-7066
+
+Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.
+
+Usage
+^^^^^
+sstableutil <options> <keyspace> <table>
+
+===================================                   ================================================================================
+-c, --cleanup                                         clean up any outstanding transactions
+-d, --debug                                           display stack traces
+-h, --help                                            display this help message
+-o, --oplog                                           include operation logs
+-t, --type <arg>                                      all (list all files, final or temporary), tmp (list temporary files only), 
+                                                      final (list final files only),
+-v, --verbose                                         verbose output
+===================================                   ================================================================================
+
+List all sstables
+^^^^^^^^^^^^^^^^^
+
+The basic command lists the sstables associated with a given keyspace/table.
+
+Example::
+
+    sstableutil keyspace eventlog
+    Listing files...
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-CRC.db
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Digest.crc32
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Filter.db
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Index.db
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Statistics.db
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Summary.db
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-TOC.txt
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-CRC.db
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Digest.crc32
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Filter.db
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Index.db
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Statistics.db
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Summary.db
+    /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-TOC.txt
+
+List only temporary sstables 
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Using the -t option followed by `tmp` will list all temporary sstables, in the format above. Temporary sstables were used in pre-3.0 versions of Cassandra.
+
+List only final sstables
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Using the -t option followed by `final` will list all final sstables, in the format above. In recent versions of Cassandra, this is the same output as not using the -t option.
+
+Include transaction logs
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Using the -o option will include transaction logs in the listing, in the format above.
+
+Clean up sstables
+^^^^^^^^^^^^^^^^^
+
+Using the -c option removes any transactions left over from incomplete writes or compactions.
+
+From the 3.0 upgrade notes:
+
+New transaction log files have been introduced to replace the compactions_in_progress system table, temporary file markers (tmp and tmplink) and sstable ancestors. Therefore, compaction metadata no longer contains ancestors. Transaction log files list sstable descriptors involved in compactions and other operations such as flushing and streaming. Use the sstableutil tool to list any sstable files currently involved in operations not yet completed, which previously would have been marked as temporary. A transaction log file contains one sstable per line, with the prefix "add:" or "remove:". They also contain a special line "commit", only inserted at the end when the transaction is committed. On startup we use these files to cleanup any partial transactions that were in progress when the process exited. If the commit line is found, we keep new sstables (those with the "add" prefix) and delete the old sstables (those with the "remove" prefix), vice-versa if the commit line is missing. Should you lose or delete these log files, both old and new sstable files will be kept as live files, which will result in duplicated sstables. These files are protected by incremental checksums so you should not manually edit them. When restoring a full backup or moving sstable files, you should clean-up any left over transactions and their temporary files first. 
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/tools/sstable/sstableverify.rst.txt b/src/doc/4.0-rc1/_sources/tools/sstable/sstableverify.rst.txt
new file mode 100644
index 0000000..dad3f44
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/tools/sstable/sstableverify.rst.txt
@@ -0,0 +1,91 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+sstableverify
+-------------
+
+Check sstable(s) for errors or corruption, for the provided table.
+
+ref: https://issues.apache.org/jira/browse/CASSANDRA-5791
+
+Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.
+
+Usage
+^^^^^
+sstableverify <options> <keyspace> <table>
+
+===================================                   ================================================================================
+--debug                                               display stack traces
+-e, --extended                                        extended verification
+-h, --help                                            display this help message
+-v, --verbose                                         verbose output
+===================================                   ================================================================================
+
+Basic Verification
+^^^^^^^^^^^^^^^^^^
+
+This is the basic verification. It is not a very quick process, and uses memory. You might need to increase your memory settings if you have many sstables.
+
+Example::
+
+    sstableverify keyspace eventlog
+    Verifying BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db') (7.353MiB)
+    Deserializing sstable metadata for BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db')
+    Checking computed hash of BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db')
+    Verifying BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db') (3.775MiB)
+    Deserializing sstable metadata for BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db')
+    Checking computed hash of BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db')
+
+Extended Verification
+^^^^^^^^^^^^^^^^^^^^^
+
+During an extended verification, the individual values will be validated for errors or corruption. This of course takes more time.
+
+Example::
+
+    root@DC1C1:/# sstableverify -e keyspace eventlog
+    WARN  14:08:06,255 Only 33.096GiB free across all data volumes. Consider adding more capacity to your cluster or removing obsolete snapshots
+    Verifying BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db') (7.353MiB)
+    Deserializing sstable metadata for BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db')
+    Checking computed hash of BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db')
+    Extended Verify requested, proceeding to inspect values
+    Verify of BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db') succeeded. All 33211 rows read successfully
+    Verifying BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db') (3.775MiB)
+    Deserializing sstable metadata for BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db')
+    Checking computed hash of BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db')
+    Extended Verify requested, proceeding to inspect values
+    Verify of BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db') succeeded. All 17068 rows read successfully
+
+Corrupted File
+^^^^^^^^^^^^^^
+
+Corrupted files are listed if they are detected by the script.
+
+Example::
+
+    sstableverify keyspace eventlog
+    Verifying BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-40-big-Data.db') (7.416MiB)
+    Deserializing sstable metadata for BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-40-big-Data.db')
+    Checking computed hash of BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-40-big-Data.db')
+    Error verifying BigTableReader(path='/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-40-big-Data.db'): Corrupted: /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-40-big-Data.db
+
+A similar (but less verbose) tool will show the suggested actions::
+
+    nodetool verify keyspace eventlog
+    error: Invalid SSTable /var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-40-big-Data.db, please force repair
+
+
+
diff --git a/src/doc/4.0-rc1/_sources/troubleshooting/finding_nodes.rst.txt b/src/doc/4.0-rc1/_sources/troubleshooting/finding_nodes.rst.txt
new file mode 100644
index 0000000..df5e16c
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/troubleshooting/finding_nodes.rst.txt
@@ -0,0 +1,149 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Find The Misbehaving Nodes
+==========================
+
+The first step to troubleshooting a Cassandra issue is to use error messages,
+metrics and monitoring information to identify if the issue lies with the
+clients or the server and if it does lie with the server find the problematic
+nodes in the Cassandra cluster. The goal is to determine if this is a systemic
+issue (e.g. a query pattern that affects the entire cluster) or isolated to a
+subset of nodes (e.g. neighbors holding a shared token range or even a single
+node with bad hardware).
+
+There are many sources of information that help determine where the problem
+lies. Some of the most common are mentioned below.
+
+Client Logs and Errors
+----------------------
+Clients of the cluster often leave the best breadcrumbs to follow. Perhaps
+client latencies or error rates have increased in a particular datacenter
+(likely eliminating other datacenter's nodes), or clients are receiving a
+particular kind of error code indicating a particular kind of problem.
+Troubleshooters can often rule out many failure modes just by reading the error
+messages. In fact, many Cassandra error messages include the last coordinator
+contacted to help operators find nodes to start with.
+
+Some common errors (likely culprit in parenthesis) assuming the client has
+similar error names as the Datastax :ref:`drivers <client-drivers>`:
+
+* ``SyntaxError`` (**client**). This and other ``QueryValidationException``
+  indicate that the client sent a malformed request. These are rarely server
+  issues and usually indicate bad queries.
+* ``UnavailableException`` (**server**): This means that the Cassandra
+  coordinator node has rejected the query as it believes that insufficent
+  replica nodes are available.  If many coordinators are throwing this error it
+  likely means that there really are (typically) multiple nodes down in the
+  cluster and you can identify them using :ref:`nodetool status
+  <nodetool-status>` If only a single coordinator is throwing this error it may
+  mean that node has been partitioned from the rest.
+* ``OperationTimedOutException`` (**server**): This is the most frequent
+  timeout message raised when clients set timeouts and means that the query
+  took longer than the supplied timeout. This is a *client side* timeout
+  meaning that it took longer than the client specified timeout. The error
+  message will include the coordinator node that was last tried which is
+  usually a good starting point. This error usually indicates either
+  aggressive client timeout values or latent server coordinators/replicas.
+* ``ReadTimeoutException`` or ``WriteTimeoutException`` (**server**): These
+  are raised when clients do not specify lower timeouts and there is a
+  *coordinator* timeouts based on the values supplied in the ``cassandra.yaml``
+  configuration file. They usually indicate a serious server side problem as
+  the default values are usually multiple seconds.
+
+Metrics
+-------
+
+If you have Cassandra :ref:`metrics <monitoring-metrics>` reporting to a
+centralized location such as `Graphite <https://graphiteapp.org/>`_ or
+`Grafana <https://grafana.com/>`_ you can typically use those to narrow down
+the problem. At this stage narrowing down the issue to a particular
+datacenter, rack, or even group of nodes is the main goal. Some helpful metrics
+to look at are:
+
+Errors
+^^^^^^
+Cassandra refers to internode messaging errors as "drops", and provided a
+number of :ref:`Dropped Message Metrics <dropped-metrics>` to help narrow
+down errors. If particular nodes are dropping messages actively, they are
+likely related to the issue.
+
+Latency
+^^^^^^^
+For timeouts or latency related issues you can start with :ref:`Table
+Metrics <table-metrics>` by comparing Coordinator level metrics e.g.
+``CoordinatorReadLatency`` or ``CoordinatorWriteLatency`` with their associated
+replica metrics e.g.  ``ReadLatency`` or ``WriteLatency``.  Issues usually show
+up on the ``99th`` percentile before they show up on the ``50th`` percentile or
+the ``mean``.  While ``maximum`` coordinator latencies are not typically very
+helpful due to the exponentially decaying reservoir used internally to produce
+metrics, ``maximum`` replica latencies that correlate with increased ``99th``
+percentiles on coordinators can help narrow down the problem.
+
+There are usually three main possibilities:
+
+1. Coordinator latencies are high on all nodes, but only a few node's local
+   read latencies are high. This points to slow replica nodes and the
+   coordinator's are just side-effects. This usually happens when clients are
+   not token aware.
+2. Coordinator latencies and replica latencies increase at the
+   same time on the a few nodes. If clients are token aware this is almost
+   always what happens and points to slow replicas of a subset of token
+   ranges (only part of the ring).
+3. Coordinator and local latencies are high on many nodes. This usually
+   indicates either a tipping point in the cluster capacity (too many writes or
+   reads per second), or a new query pattern.
+
+It's important to remember that depending on the client's load balancing
+behavior and consistency levels coordinator and replica metrics may or may
+not correlate. In particular if you use ``TokenAware`` policies the same
+node's coordinator and replica latencies will often increase together, but if
+you just use normal ``DCAwareRoundRobin`` coordinator latencies can increase
+with unrelated replica node's latencies. For example:
+
+* ``TokenAware`` + ``LOCAL_ONE``: should always have coordinator and replica
+  latencies on the same node rise together
+* ``TokenAware`` + ``LOCAL_QUORUM``: should always have coordinator and
+  multiple replica latencies rise together in the same datacenter.
+* ``TokenAware`` + ``QUORUM``: replica latencies in other datacenters can
+  affect coordinator latencies.
+* ``DCAwareRoundRobin`` + ``LOCAL_ONE``: coordinator latencies and unrelated
+  replica node's latencies will rise together.
+* ``DCAwareRoundRobin`` + ``LOCAL_QUORUM``: different coordinator and replica
+  latencies will rise together with little correlation.
+
+Query Rates
+^^^^^^^^^^^
+Sometimes the :ref:`Table <table-metrics>` query rate metrics can help
+narrow down load issues as  "small" increase in coordinator queries per second
+(QPS) may correlate with a very large increase in replica level QPS. This most
+often happens with ``BATCH`` writes, where a client may send a single ``BATCH``
+query that might contain 50 statements in it, which if you have 9 copies (RF=3,
+three datacenters) means that every coordinator ``BATCH`` write turns into 450
+replica writes! This is why keeping ``BATCH``'s to the same partition is so
+critical, otherwise you can exhaust significant CPU capacitity with a "single"
+query.
+
+
+Next Step: Investigate the Node(s)
+----------------------------------
+
+Once you have narrowed down the problem as much as possible (datacenter, rack
+, node), login to one of the nodes using SSH and proceed to debug using
+:ref:`logs <reading-logs>`, :ref:`nodetool <use-nodetool>`, and
+:ref:`os tools <use-os-tools>`. If you are not able to login you may still
+have access to :ref:`logs <reading-logs>` and :ref:`nodetool <use-nodetool>`
+remotely.
diff --git a/src/doc/4.0-rc1/_sources/troubleshooting/index.rst.txt b/src/doc/4.0-rc1/_sources/troubleshooting/index.rst.txt
new file mode 100644
index 0000000..79b46d6
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/troubleshooting/index.rst.txt
@@ -0,0 +1,39 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+Troubleshooting
+===============
+
+As any distributed database does, sometimes Cassandra breaks and you will have
+to troubleshoot what is going on. Generally speaking you can debug Cassandra
+like any other distributed Java program, meaning that you have to find which
+machines in your cluster are misbehaving and then isolate the problem using
+logs and tools. Luckily Cassandra had a great set of instrospection tools to
+help you.
+
+These pages include a number of command examples demonstrating various
+debugging and analysis techniques, mostly for Linux/Unix systems. If you don't
+have access to the machines running Cassandra, or are running on Windows or
+another operating system you may not be able to use the exact commands but
+there are likely equivalent tools you can use.
+
+.. toctree::
+    :maxdepth: 2
+
+    finding_nodes
+    reading_logs
+    use_nodetool
+    use_tools
diff --git a/src/doc/4.0-rc1/_sources/troubleshooting/reading_logs.rst.txt b/src/doc/4.0-rc1/_sources/troubleshooting/reading_logs.rst.txt
new file mode 100644
index 0000000..08f7d4d
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/troubleshooting/reading_logs.rst.txt
@@ -0,0 +1,267 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. _reading-logs:
+
+Cassandra Logs
+==============
+Cassandra has rich support for logging and attempts to give operators maximum
+insight into the database while at the same time limiting noise to the logs.
+
+Common Log Files
+----------------
+Cassandra has three main logs, the ``system.log``, ``debug.log`` and
+``gc.log`` which hold general logging messages, debugging logging messages, and
+java garbage collection logs respectively.
+
+These logs by default live in ``${CASSANDRA_HOME}/logs``, but most Linux
+distributions relocate logs to ``/var/log/cassandra``. Operators can tune
+this location as well as what levels are logged using the provided
+``logback.xml`` file.
+
+``system.log``
+^^^^^^^^^^^^^^
+This log is the default Cassandra log and is a good place to start any
+investigation. Some examples of activities logged to this log:
+
+* Uncaught exceptions. These can be very useful for debugging errors.
+* ``GCInspector`` messages indicating long garbage collector pauses. When long
+  pauses happen Cassandra will print how long and also what was the state of
+  the system (thread state) at the time of that pause. This can help narrow
+  down a capacity issue (either not enough heap or not enough spare CPU).
+* Information about nodes joining and leaving the cluster as well as token
+  metadata (data ownersip) changes. This is useful for debugging network
+  partitions, data movements, and more.
+* Keyspace/Table creation, modification, deletion.
+* ``StartupChecks`` that ensure optimal configuration of the operating system
+  to run Cassandra
+* Information about some background operational tasks (e.g. Index
+  Redistribution).
+
+As with any application, looking for ``ERROR`` or ``WARN`` lines can be a
+great first step::
+
+    $ # Search for warnings or errors in the latest system.log
+    $ grep 'WARN\|ERROR' system.log | tail
+    ...
+
+    $ # Search for warnings or errors in all rotated system.log
+    $ zgrep 'WARN\|ERROR' system.log.* | less
+    ...
+
+``debug.log``
+^^^^^^^^^^^^^^
+This log contains additional debugging information that may be useful when
+troubleshooting but may be much noiser than the normal ``system.log``. Some
+examples of activities logged to this log:
+
+* Information about compactions, including when they start, which sstables
+  they contain, and when they finish.
+* Information about memtable flushes to disk, including when they happened,
+  how large the flushes were, and which commitlog segments the flush impacted.
+
+This log can be *very* noisy, so it is highly recommended to use ``grep`` and
+other log analysis tools to dive deep. For example::
+
+    $ # Search for messages involving a CompactionTask with 5 lines of context
+    $ grep CompactionTask debug.log -C 5
+    ...
+
+    $ # Look at the distribution of flush tasks per keyspace
+    $ grep "Enqueuing flush" debug.log | cut -f 10 -d ' ' | sort | uniq -c
+        6 compaction_history:
+        1 test_keyspace:
+        2 local:
+        17 size_estimates:
+        17 sstable_activity:
+
+
+``gc.log``
+^^^^^^^^^^^^^^
+The gc log is a standard Java GC log. With the default ``jvm.options``
+settings you get a lot of valuable information in this log such as
+application pause times, and why pauses happened. This may help narrow
+down throughput or latency issues to a mistuned JVM. For example you can
+view the last few pauses::
+
+    $ grep stopped gc.log.0.current | tail
+    2018-08-29T00:19:39.522+0000: 3022663.591: Total time for which application threads were stopped: 0.0332813 seconds, Stopping threads took: 0.0008189 seconds
+    2018-08-29T00:19:44.369+0000: 3022668.438: Total time for which application threads were stopped: 0.0312507 seconds, Stopping threads took: 0.0007025 seconds
+    2018-08-29T00:19:49.796+0000: 3022673.865: Total time for which application threads were stopped: 0.0307071 seconds, Stopping threads took: 0.0006662 seconds
+    2018-08-29T00:19:55.452+0000: 3022679.521: Total time for which application threads were stopped: 0.0309578 seconds, Stopping threads took: 0.0006832 seconds
+    2018-08-29T00:20:00.127+0000: 3022684.197: Total time for which application threads were stopped: 0.0310082 seconds, Stopping threads took: 0.0007090 seconds
+    2018-08-29T00:20:06.583+0000: 3022690.653: Total time for which application threads were stopped: 0.0317346 seconds, Stopping threads took: 0.0007106 seconds
+    2018-08-29T00:20:10.079+0000: 3022694.148: Total time for which application threads were stopped: 0.0299036 seconds, Stopping threads took: 0.0006889 seconds
+    2018-08-29T00:20:15.739+0000: 3022699.809: Total time for which application threads were stopped: 0.0078283 seconds, Stopping threads took: 0.0006012 seconds
+    2018-08-29T00:20:15.770+0000: 3022699.839: Total time for which application threads were stopped: 0.0301285 seconds, Stopping threads took: 0.0003789 seconds
+    2018-08-29T00:20:15.798+0000: 3022699.867: Total time for which application threads were stopped: 0.0279407 seconds, Stopping threads took: 0.0003627 seconds
+
+
+This shows a lot of valuable information including how long the application
+was paused (meaning zero user queries were being serviced during the e.g. 33ms
+JVM pause) as well as how long it took to enter the safepoint. You can use this
+raw data to e.g. get the longest pauses::
+
+    $ grep stopped gc.log.0.current | cut -f 11 -d ' ' | sort -n  | tail | xargs -IX grep X gc.log.0.current | sort -k 1
+    2018-08-28T17:13:40.520-0700: 1.193: Total time for which application threads were stopped: 0.0157914 seconds, Stopping threads took: 0.0000355 seconds
+    2018-08-28T17:13:41.206-0700: 1.879: Total time for which application threads were stopped: 0.0249811 seconds, Stopping threads took: 0.0000318 seconds
+    2018-08-28T17:13:41.638-0700: 2.311: Total time for which application threads were stopped: 0.0561130 seconds, Stopping threads took: 0.0000328 seconds
+    2018-08-28T17:13:41.677-0700: 2.350: Total time for which application threads were stopped: 0.0362129 seconds, Stopping threads took: 0.0000597 seconds
+    2018-08-28T17:13:41.781-0700: 2.454: Total time for which application threads were stopped: 0.0442846 seconds, Stopping threads took: 0.0000238 seconds
+    2018-08-28T17:13:41.976-0700: 2.649: Total time for which application threads were stopped: 0.0377115 seconds, Stopping threads took: 0.0000250 seconds
+    2018-08-28T17:13:42.172-0700: 2.845: Total time for which application threads were stopped: 0.0475415 seconds, Stopping threads took: 0.0001018 seconds
+    2018-08-28T17:13:42.825-0700: 3.498: Total time for which application threads were stopped: 0.0379155 seconds, Stopping threads took: 0.0000571 seconds
+    2018-08-28T17:13:43.574-0700: 4.247: Total time for which application threads were stopped: 0.0323812 seconds, Stopping threads took: 0.0000574 seconds
+    2018-08-28T17:13:44.602-0700: 5.275: Total time for which application threads were stopped: 0.0238975 seconds, Stopping threads took: 0.0000788 seconds
+
+In this case any client waiting on a query would have experienced a `56ms`
+latency at 17:13:41.
+
+Note that GC pauses are not _only_ garbage collection, although
+generally speaking high pauses with fast safepoints indicate a lack of JVM heap
+or mistuned JVM GC algorithm. High pauses with slow safepoints typically
+indicate that the JVM is having trouble entering a safepoint which usually
+indicates slow disk drives (Cassandra makes heavy use of memory mapped reads
+which the JVM doesn't know could have disk latency, so the JVM safepoint logic
+doesn't handle a blocking memory mapped read particularly well).
+
+Using these logs you can even get a pause distribution with something like
+`histogram.py <https://github.com/bitly/data_hacks/blob/master/data_hacks/histogram.py>`_::
+
+    $ grep stopped gc.log.0.current | cut -f 11 -d ' ' | sort -n | histogram.py
+    # NumSamples = 410293; Min = 0.00; Max = 11.49
+    # Mean = 0.035346; Variance = 0.002216; SD = 0.047078; Median 0.036498
+    # each ∎ represents a count of 5470
+        0.0001 -     1.1496 [410255]: ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
+        1.1496 -     2.2991 [    15]:
+        2.2991 -     3.4486 [     5]:
+        3.4486 -     4.5981 [     1]:
+        4.5981 -     5.7475 [     5]:
+        5.7475 -     6.8970 [     9]:
+        6.8970 -     8.0465 [     1]:
+        8.0465 -     9.1960 [     0]:
+        9.1960 -    10.3455 [     0]:
+       10.3455 -    11.4949 [     2]:
+
+We can see in this case while we have very good average performance something
+is causing multi second JVM pauses ... In this case it was mostly safepoint
+pauses caused by slow disks::
+
+    $ grep stopped gc.log.0.current | cut -f 11 -d ' ' | sort -n | tail | xargs -IX grep X  gc.log.0.current| sort -k 1
+    2018-07-27T04:52:27.413+0000: 187831.482: Total time for which application threads were stopped: 6.5037022 seconds, Stopping threads took: 0.0005212 seconds
+    2018-07-30T23:38:18.354+0000: 514582.423: Total time for which application threads were stopped: 6.3262938 seconds, Stopping threads took: 0.0004882 seconds
+    2018-08-01T02:37:48.380+0000: 611752.450: Total time for which application threads were stopped: 10.3879659 seconds, Stopping threads took: 0.0004475 seconds
+    2018-08-06T22:04:14.990+0000: 1113739.059: Total time for which application threads were stopped: 6.0917409 seconds, Stopping threads took: 0.0005553 seconds
+    2018-08-14T00:04:06.091+0000: 1725730.160: Total time for which application threads were stopped: 6.0141054 seconds, Stopping threads took: 0.0004976 seconds
+    2018-08-17T06:23:06.755+0000: 2007670.824: Total time for which application threads were stopped: 6.0133694 seconds, Stopping threads took: 0.0006011 seconds
+    2018-08-23T06:35:46.068+0000: 2526830.137: Total time for which application threads were stopped: 6.4767751 seconds, Stopping threads took: 6.4426849 seconds
+    2018-08-23T06:36:29.018+0000: 2526873.087: Total time for which application threads were stopped: 11.4949489 seconds, Stopping threads took: 11.4638297 seconds
+    2018-08-23T06:37:12.671+0000: 2526916.741: Total time for which application threads were stopped: 6.3867003 seconds, Stopping threads took: 6.3507166 seconds
+    2018-08-23T06:37:47.156+0000: 2526951.225: Total time for which application threads were stopped: 7.9528200 seconds, Stopping threads took: 7.9197756 seconds
+
+Sometimes reading and understanding java GC logs is hard, but you can take the
+raw GC files and visualize them using tools such as `GCViewer
+<https://github.com/chewiebug/GCViewer>`_ which take the Cassandra GC log as
+input and show you detailed visual information on your garbage collection
+performance. This includes pause analysis as well as throughput information.
+For a stable Cassandra JVM you probably want to aim for pauses less than
+`200ms` and GC throughput greater than `99%` (ymmv).
+
+Java GC pauses are one of the leading causes of tail latency in Cassandra
+(along with drive latency) so sometimes this information can be crucial
+while debugging tail latency issues.
+
+
+Getting More Information
+------------------------
+
+If the default logging levels are insuficient, ``nodetool`` can set higher
+or lower logging levels for various packages and classes using the
+``nodetool setlogginglevel`` command. Start by viewing the current levels::
+
+    $ nodetool getlogginglevels
+
+    Logger Name                                        Log Level
+    ROOT                                                    INFO
+    org.apache.cassandra                                   DEBUG
+
+Perhaps the ``Gossiper`` is acting up and we wish to enable it at ``TRACE``
+level for even more insight::
+
+
+    $ nodetool setlogginglevel org.apache.cassandra.gms.Gossiper TRACE
+
+    $ nodetool getlogginglevels
+
+    Logger Name                                        Log Level
+    ROOT                                                    INFO
+    org.apache.cassandra                                   DEBUG
+    org.apache.cassandra.gms.Gossiper                      TRACE
+
+    $ grep TRACE debug.log | tail -2
+    TRACE [GossipStage:1] 2018-07-04 17:07:47,879 Gossiper.java:1234 - Updating
+    heartbeat state version to 2344 from 2343 for 127.0.0.2:7000 ...
+    TRACE [GossipStage:1] 2018-07-04 17:07:47,879 Gossiper.java:923 - local
+    heartbeat version 2341 greater than 2340 for 127.0.0.1:7000
+
+
+Note that any changes made this way are reverted on next Cassandra process
+restart. To make the changes permanent add the appropriate rule to
+``logback.xml``.
+
+.. code-block:: diff
+
+	diff --git a/conf/logback.xml b/conf/logback.xml
+	index b2c5b10..71b0a49 100644
+	--- a/conf/logback.xml
+	+++ b/conf/logback.xml
+	@@ -98,4 +98,5 @@ appender reference in the root level section below.
+	   </root>
+
+	   <logger name="org.apache.cassandra" level="DEBUG"/>
+	+  <logger name="org.apache.cassandra.gms.Gossiper" level="TRACE"/>
+	 </configuration>
+
+Full Query Logger
+^^^^^^^^^^^^^^^^^
+
+Cassandra 4.0 additionally ships with support for full query logging. This
+is a highly performant binary logging tool which captures Cassandra queries
+in real time, writes them (if possible) to a log file, and ensures the total
+size of the capture does not exceed a particular limit. FQL is enabled with
+``nodetool`` and the logs are read with the provided ``bin/fqltool`` utility::
+
+    $ mkdir /var/tmp/fql_logs
+    $ nodetool enablefullquerylog --path /var/tmp/fql_logs
+
+    # ... do some querying
+
+    $ bin/fqltool dump /var/tmp/fql_logs/20180705-00.cq4 | tail
+    Query time: 1530750927224
+    Query: SELECT * FROM system_virtual_schema.columns WHERE keyspace_name =
+    'system_views' AND table_name = 'sstable_tasks';
+    Values:
+
+    Type: single
+    Protocol version: 4
+    Query time: 1530750934072
+    Query: select * from keyspace1.standard1 ;
+    Values:
+
+    $ nodetool disablefullquerylog
+
+Note that if you want more information than this tool provides, there are other
+live capture options available such as :ref:`packet capture <packet-capture>`.
diff --git a/src/doc/4.0-rc1/_sources/troubleshooting/use_nodetool.rst.txt b/src/doc/4.0-rc1/_sources/troubleshooting/use_nodetool.rst.txt
new file mode 100644
index 0000000..5072f85
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/troubleshooting/use_nodetool.rst.txt
@@ -0,0 +1,245 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. _use-nodetool:
+
+Use Nodetool
+============
+
+Cassandra's ``nodetool`` allows you to narrow problems from the cluster down
+to a particular node and gives a lot of insight into the state of the Cassandra
+process itself. There are dozens of useful commands (see ``nodetool help``
+for all the commands), but briefly some of the most useful for troubleshooting:
+
+.. _nodetool-status:
+
+Cluster Status
+--------------
+
+You can use ``nodetool status`` to assess status of the cluster::
+
+    $ nodetool status <optional keyspace>
+
+    Datacenter: dc1
+    =======================
+    Status=Up/Down
+    |/ State=Normal/Leaving/Joining/Moving
+    --  Address    Load       Tokens       Owns (effective)  Host ID                               Rack
+    UN  127.0.1.1  4.69 GiB   1            100.0%            35ea8c9f-b7a2-40a7-b9c5-0ee8b91fdd0e  r1
+    UN  127.0.1.2  4.71 GiB   1            100.0%            752e278f-b7c5-4f58-974b-9328455af73f  r2
+    UN  127.0.1.3  4.69 GiB   1            100.0%            9dc1a293-2cc0-40fa-a6fd-9e6054da04a7  r3
+
+In this case we can see that we have three nodes in one datacenter with about
+4.6GB of data each and they are all "up". The up/down status of a node is
+independently determined by every node in the cluster, so you may have to run
+``nodetool status`` on multiple nodes in a cluster to see the full view.
+
+You can use ``nodetool status`` plus a little grep to see which nodes are
+down::
+
+    $ nodetool status | grep -v '^UN'
+    Datacenter: dc1
+    ===============
+    Status=Up/Down
+    |/ State=Normal/Leaving/Joining/Moving
+    --  Address    Load       Tokens       Owns (effective)  Host ID                               Rack
+    Datacenter: dc2
+    ===============
+    Status=Up/Down
+    |/ State=Normal/Leaving/Joining/Moving
+    --  Address    Load       Tokens       Owns (effective)  Host ID                               Rack
+    DN  127.0.0.5  105.73 KiB  1            33.3%             df303ac7-61de-46e9-ac79-6e630115fd75  r1
+
+In this case there are two datacenters and there is one node down in datacenter
+``dc2`` and rack ``r1``. This may indicate an issue on ``127.0.0.5``
+warranting investigation.
+
+.. _nodetool-proxyhistograms:
+
+Coordinator Query Latency
+-------------------------
+You can view latency distributions of coordinator read and write latency
+to help narrow down latency issues using ``nodetool proxyhistograms``::
+
+    $ nodetool proxyhistograms
+    Percentile       Read Latency      Write Latency      Range Latency   CAS Read Latency  CAS Write Latency View Write Latency
+                         (micros)           (micros)           (micros)           (micros)           (micros)           (micros)
+    50%                    454.83             219.34               0.00               0.00               0.00               0.00
+    75%                    545.79             263.21               0.00               0.00               0.00               0.00
+    95%                    654.95             315.85               0.00               0.00               0.00               0.00
+    98%                    785.94             379.02               0.00               0.00               0.00               0.00
+    99%                   3379.39            2346.80               0.00               0.00               0.00               0.00
+    Min                     42.51             105.78               0.00               0.00               0.00               0.00
+    Max                  25109.16           43388.63               0.00               0.00               0.00               0.00
+
+Here you can see the full latency distribution of reads, writes, range requests
+(e.g. ``select * from keyspace.table``), CAS read (compare phase of CAS) and
+CAS write (set phase of compare and set). These can be useful for narrowing
+down high level latency problems, for example in this case if a client had a
+20 millisecond timeout on their reads they might experience the occasional
+timeout from this node but less than 1% (since the 99% read latency is 3.3
+milliseconds < 20 milliseconds).
+
+.. _nodetool-tablehistograms:
+
+Local Query Latency
+-------------------
+
+If you know which table is having latency/error issues, you can use
+``nodetool tablehistograms`` to get a better idea of what is happening
+locally on a node::
+
+    $ nodetool tablehistograms keyspace table
+    Percentile  SSTables     Write Latency      Read Latency    Partition Size        Cell Count
+                                  (micros)          (micros)           (bytes)
+    50%             0.00             73.46            182.79             17084               103
+    75%             1.00             88.15            315.85             17084               103
+    95%             2.00            126.93            545.79             17084               103
+    98%             2.00            152.32            654.95             17084               103
+    99%             2.00            182.79            785.94             17084               103
+    Min             0.00             42.51             24.60             14238                87
+    Max             2.00          12108.97          17436.92             17084               103
+
+This shows you percentile breakdowns particularly critical metrics.
+
+The first column contains how many sstables were read per logical read. A very
+high number here indicates that you may have chosen the wrong compaction
+strategy, e.g. ``SizeTieredCompactionStrategy`` typically has many more reads
+per read than ``LeveledCompactionStrategy`` does for update heavy workloads.
+
+The second column shows you a latency breakdown of *local* write latency. In
+this case we see that while the p50 is quite good at 73 microseconds, the
+maximum latency is quite slow at 12 milliseconds. High write max latencies
+often indicate a slow commitlog volume (slow to fsync) or large writes
+that quickly saturate commitlog segments.
+
+The third column shows you a latency breakdown of *local* read latency. We can
+see that local Cassandra reads are (as expected) slower than local writes, and
+the read speed correlates highly with the number of sstables read per read.
+
+The fourth and fifth columns show distributions of partition size and column
+count per partition. These are useful for determining if the table has on
+average skinny or wide partitions and can help you isolate bad data patterns.
+For example if you have a single cell that is 2 megabytes, that is probably
+going to cause some heap pressure when it's read.
+
+.. _nodetool-tpstats:
+
+Threadpool State
+----------------
+
+You can use ``nodetool tpstats`` to view the current outstanding requests on
+a particular node. This is useful for trying to find out which resource
+(read threads, write threads, compaction, request response threads) the
+Cassandra process lacks. For example::
+
+    $ nodetool tpstats
+    Pool Name                         Active   Pending      Completed   Blocked  All time blocked
+    ReadStage                              2         0             12         0                 0
+    MiscStage                              0         0              0         0                 0
+    CompactionExecutor                     0         0           1940         0                 0
+    MutationStage                          0         0              0         0                 0
+    GossipStage                            0         0          10293         0                 0
+    Repair-Task                            0         0              0         0                 0
+    RequestResponseStage                   0         0             16         0                 0
+    ReadRepairStage                        0         0              0         0                 0
+    CounterMutationStage                   0         0              0         0                 0
+    MemtablePostFlush                      0         0             83         0                 0
+    ValidationExecutor                     0         0              0         0                 0
+    MemtableFlushWriter                    0         0             30         0                 0
+    ViewMutationStage                      0         0              0         0                 0
+    CacheCleanupExecutor                   0         0              0         0                 0
+    MemtableReclaimMemory                  0         0             30         0                 0
+    PendingRangeCalculator                 0         0             11         0                 0
+    SecondaryIndexManagement               0         0              0         0                 0
+    HintsDispatcher                        0         0              0         0                 0
+    Native-Transport-Requests              0         0            192         0                 0
+    MigrationStage                         0         0             14         0                 0
+    PerDiskMemtableFlushWriter_0           0         0             30         0                 0
+    Sampler                                0         0              0         0                 0
+    ViewBuildExecutor                      0         0              0         0                 0
+    InternalResponseStage                  0         0              0         0                 0
+    AntiEntropyStage                       0         0              0         0                 0
+
+    Message type           Dropped                  Latency waiting in queue (micros)
+                                                 50%               95%               99%               Max
+    READ                         0               N/A               N/A               N/A               N/A
+    RANGE_SLICE                  0              0.00              0.00              0.00              0.00
+    _TRACE                       0               N/A               N/A               N/A               N/A
+    HINT                         0               N/A               N/A               N/A               N/A
+    MUTATION                     0               N/A               N/A               N/A               N/A
+    COUNTER_MUTATION             0               N/A               N/A               N/A               N/A
+    BATCH_STORE                  0               N/A               N/A               N/A               N/A
+    BATCH_REMOVE                 0               N/A               N/A               N/A               N/A
+    REQUEST_RESPONSE             0              0.00              0.00              0.00              0.00
+    PAGED_RANGE                  0               N/A               N/A               N/A               N/A
+    READ_REPAIR                  0               N/A               N/A               N/A               N/A
+
+This command shows you all kinds of interesting statistics. The first section
+shows a detailed breakdown of threadpools for each Cassandra stage, including
+how many threads are current executing (Active) and how many are waiting to
+run (Pending). Typically if you see pending executions in a particular
+threadpool that indicates a problem localized to that type of operation. For
+example if the ``RequestResponseState`` queue is backing up, that means
+that the coordinators are waiting on a lot of downstream replica requests and
+may indicate a lack of token awareness, or very high consistency levels being
+used on read requests (for example reading at ``ALL`` ties up RF
+``RequestResponseState`` threads whereas ``LOCAL_ONE`` only uses a single
+thread in the ``ReadStage`` threadpool). On the other hand if you see a lot of
+pending compactions that may indicate that your compaction threads cannot keep
+up with the volume of writes and you may need to tune either the compaction
+strategy or the ``concurrent_compactors`` or ``compaction_throughput`` options.
+
+The second section shows drops (errors) and latency distributions for all the
+major request types. Drops are cumulative since process start, but if you
+have any that indicate a serious problem as the default timeouts to qualify as
+a drop are quite high (~5-10 seconds). Dropped messages often warrants further
+investigation.
+
+.. _nodetool-compactionstats:
+
+Compaction State
+----------------
+
+As Cassandra is a LSM datastore, Cassandra sometimes has to compact sstables
+together, which can have adverse effects on performance. In particular,
+compaction uses a reasonable quantity of CPU resources, invalidates large
+quantities of the OS `page cache <https://en.wikipedia.org/wiki/Page_cache>`_,
+and can put a lot of load on your disk drives. There are great
+:ref:`os tools <os-iostat>` to determine if this is the case, but often it's a
+good idea to check if compactions are even running using
+``nodetool compactionstats``::
+
+    $ nodetool compactionstats
+    pending tasks: 2
+    - keyspace.table: 2
+
+    id                                   compaction type keyspace table completed total    unit  progress
+    2062b290-7f3a-11e8-9358-cd941b956e60 Compaction      keyspace table 21848273  97867583 bytes 22.32%
+    Active compaction remaining time :   0h00m04s
+
+In this case there is a single compaction running on the ``keyspace.table``
+table, has completed 21.8 megabytes of 97 and Cassandra estimates (based on
+the configured compaction throughput) that this will take 4 seconds. You can
+also pass ``-H`` to get the units in a human readable format.
+
+Generally each running compaction can consume a single core, but the more
+you do in parallel the faster data compacts. Compaction is crucial to ensuring
+good read performance so having the right balance of concurrent compactions
+such that compactions complete quickly but don't take too many resources
+away from query threads is very important for performance. If you notice
+compaction unable to keep up, try tuning Cassandra's ``concurrent_compactors``
+or ``compaction_throughput`` options.
diff --git a/src/doc/4.0-rc1/_sources/troubleshooting/use_tools.rst.txt b/src/doc/4.0-rc1/_sources/troubleshooting/use_tools.rst.txt
new file mode 100644
index 0000000..b1347cc
--- /dev/null
+++ b/src/doc/4.0-rc1/_sources/troubleshooting/use_tools.rst.txt
@@ -0,0 +1,542 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+.. or more contributor license agreements.  See the NOTICE file
+.. distributed with this work for additional information
+.. regarding copyright ownership.  The ASF licenses this file
+.. to you under the Apache License, Version 2.0 (the
+.. "License"); you may not use this file except in compliance
+.. with the License.  You may obtain a copy of the License at
+..
+..     http://www.apache.org/licenses/LICENSE-2.0
+..
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+
+.. _use-os-tools:
+
+Diving Deep, Use External Tools
+===============================
+
+Machine access allows operators to dive even deeper than logs and ``nodetool``
+allow. While every Cassandra operator may have their personal favorite
+toolsets for troubleshooting issues, this page contains some of the most common
+operator techniques and examples of those tools. Many of these commands work
+only on Linux, but if you are deploying on a different operating system you may
+have access to other substantially similar tools that assess similar OS level
+metrics and processes.
+
+JVM Tooling
+-----------
+The JVM ships with a number of useful tools. Some of them are useful for
+debugging Cassandra issues, especially related to heap and execution stacks.
+
+**NOTE**: There are two common gotchas with JVM tooling and Cassandra:
+
+1. By default Cassandra ships with ``-XX:+PerfDisableSharedMem`` set to prevent
+   long pauses (see ``CASSANDRA-9242`` and ``CASSANDRA-9483`` for details). If
+   you want to use JVM tooling you can instead have ``/tmp`` mounted on an in
+   memory ``tmpfs`` which also effectively works around ``CASSANDRA-9242``.
+2. Make sure you run the tools as the same user as Cassandra is running as,
+   e.g. if the database is running as ``cassandra`` the tool also has to be
+   run as ``cassandra``, e.g. via ``sudo -u cassandra <cmd>``.
+
+Garbage Collection State (jstat)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+If you suspect heap pressure you can use ``jstat`` to dive deep into the
+garbage collection state of a Cassandra process. This command is always
+safe to run and yields detailed heap information including eden heap usage (E),
+old generation heap usage (O), count of eden collections (YGC), time spend in
+eden collections (YGCT), old/mixed generation collections (FGC) and time spent
+in old/mixed generation collections (FGCT)::
+
+
+    jstat -gcutil <cassandra pid> 500ms
+     S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
+     0.00   0.00  81.53  31.16  93.07  88.20     12    0.151     3    0.257    0.408
+     0.00   0.00  82.36  31.16  93.07  88.20     12    0.151     3    0.257    0.408
+     0.00   0.00  82.36  31.16  93.07  88.20     12    0.151     3    0.257    0.408
+     0.00   0.00  83.19  31.16  93.07  88.20     12    0.151     3    0.257    0.408
+     0.00   0.00  83.19  31.16  93.07  88.20     12    0.151     3    0.257    0.408
+     0.00   0.00  84.19  31.16  93.07  88.20     12    0.151     3    0.257    0.408
+     0.00   0.00  84.19  31.16  93.07  88.20     12    0.151     3    0.257    0.408
+     0.00   0.00  85.03  31.16  93.07  88.20     12    0.151     3    0.257    0.408
+     0.00   0.00  85.03  31.16  93.07  88.20     12    0.151     3    0.257    0.408
+     0.00   0.00  85.94  31.16  93.07  88.20     12    0.151     3    0.257    0.408
+
+In this case we see we have a relatively healthy heap profile, with 31.16%
+old generation heap usage and 83% eden. If the old generation routinely is
+above 75% then you probably need more heap (assuming CMS with a 75% occupancy
+threshold). If you do have such persistently high old gen that often means you
+either have under-provisioned the old generation heap, or that there is too
+much live data on heap for Cassandra to collect (e.g. because of memtables).
+Another thing to watch for is time between young garbage collections (YGC),
+which indicate how frequently the eden heap is collected. Each young gc pause
+is about 20-50ms, so if you have a lot of them your clients will notice in
+their high percentile latencies.
+
+Thread Information (jstack)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+To get a point in time snapshot of exactly what Cassandra is doing, run
+``jstack`` against the Cassandra PID. **Note** that this does pause the JVM for
+a very brief period (<20ms).::
+
+    $ jstack <cassandra pid> > threaddump
+
+    # display the threaddump
+    $ cat threaddump
+    ...
+
+    # look at runnable threads
+    $grep RUNNABLE threaddump -B 1
+    "Attach Listener" #15 daemon prio=9 os_prio=0 tid=0x00007f829c001000 nid=0x3a74 waiting on condition [0x0000000000000000]
+       java.lang.Thread.State: RUNNABLE
+    --
+    "DestroyJavaVM" #13 prio=5 os_prio=0 tid=0x00007f82e800e000 nid=0x2a19 waiting on condition [0x0000000000000000]
+       java.lang.Thread.State: RUNNABLE
+    --
+    "JPS thread pool" #10 prio=5 os_prio=0 tid=0x00007f82e84d0800 nid=0x2a2c runnable [0x00007f82d0856000]
+       java.lang.Thread.State: RUNNABLE
+    --
+    "Service Thread" #9 daemon prio=9 os_prio=0 tid=0x00007f82e80d7000 nid=0x2a2a runnable [0x0000000000000000]
+       java.lang.Thread.State: RUNNABLE
+    --
+    "C1 CompilerThread3" #8 daemon prio=9 os_prio=0 tid=0x00007f82e80cc000 nid=0x2a29 waiting on condition [0x0000000000000000]
+       java.lang.Thread.State: RUNNABLE
+    --
+    ...
+
+    # Note that the nid is the Linux thread id
+
+Some of the most important information in the threaddumps are waiting/blocking
+threads, including what locks or monitors the thread is blocking/waiting on.
+
+Basic OS Tooling
+----------------
+A great place to start when debugging a Cassandra issue is understanding how
+Cassandra is interacting with system resources. The following are all
+resources that Cassandra makes heavy uses of:
+
+* CPU cores. For executing concurrent user queries
+* CPU processing time. For query activity (data decompression, row merging,
+  etc...)
+* CPU processing time (low priority). For background tasks (compaction,
+  streaming, etc ...)
+* RAM for Java Heap. Used to hold internal data-structures and by default the
+  Cassandra memtables. Heap space is a crucial component of write performance
+  as well as generally.
+* RAM for OS disk cache. Used to cache frequently accessed SSTable blocks. OS
+  disk cache is a crucial component of read performance.
+* Disks. Cassandra cares a lot about disk read latency, disk write throughput,
+  and of course disk space.
+* Network latency. Cassandra makes many internode requests, so network latency
+  between nodes can directly impact performance.
+* Network throughput. Cassandra (as other databases) frequently have the
+  so called "incast" problem where a small request (e.g. ``SELECT * from
+  foo.bar``) returns a massively large result set (e.g. the entire dataset).
+  In such situations outgoing bandwidth is crucial.
+
+Often troubleshooting Cassandra comes down to troubleshooting what resource
+the machine or cluster is running out of. Then you create more of that resource
+or change the query pattern to make less use of that resource.
+
+High Level Resource Usage (top/htop)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Cassandra makes signifiant use of system resources, and often the very first
+useful action is to run ``top`` or ``htop`` (`website
+<https://hisham.hm/htop/>`_)to see the state of the machine.
+
+Useful things to look at:
+
+* System load levels. While these numbers can be confusing, generally speaking
+  if the load average is greater than the number of CPU cores, Cassandra
+  probably won't have very good (sub 100 millisecond) latencies. See
+  `Linux Load Averages <http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html>`_
+  for more information.
+* CPU utilization. ``htop`` in particular can help break down CPU utilization
+  into ``user`` (low and normal priority), ``system`` (kernel), and ``io-wait``
+  . Cassandra query threads execute as normal priority ``user`` threads, while
+  compaction threads execute as low priority ``user`` threads. High ``system``
+  time could indicate problems like thread contention, and high ``io-wait``
+  may indicate slow disk drives. This can help you understand what Cassandra
+  is spending processing resources doing.
+* Memory usage. Look for which programs have the most resident memory, it is
+  probably Cassandra. The number for Cassandra is likely inaccurately high due
+  to how Linux (as of 2018) accounts for memory mapped file memory.
+
+.. _os-iostat:
+
+IO Usage (iostat)
+^^^^^^^^^^^^^^^^^
+Use iostat to determine how data drives are faring, including latency
+distributions, throughput, and utilization::
+
+    $ sudo iostat -xdm 2
+    Linux 4.13.0-13-generic (hostname)     07/03/2018     _x86_64_    (8 CPU)
+
+    Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
+    sda               0.00     0.28    0.32    5.42     0.01     0.13    48.55     0.01    2.21    0.26    2.32   0.64   0.37
+    sdb               0.00     0.00    0.00    0.00     0.00     0.00    79.34     0.00    0.20    0.20    0.00   0.16   0.00
+    sdc               0.34     0.27    0.76    0.36     0.01     0.02    47.56     0.03   26.90    2.98   77.73   9.21   1.03
+
+    Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
+    sda               0.00     0.00    2.00   32.00     0.01     4.04   244.24     0.54   16.00    0.00   17.00   1.06   3.60
+    sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
+    sdc               0.00    24.50    0.00  114.00     0.00    11.62   208.70     5.56   48.79    0.00   48.79   1.12  12.80
+
+
+In this case we can see that ``/dev/sdc1`` is a very slow drive, having an
+``await`` close to 50 milliseconds and an ``avgqu-sz`` close to 5 ios. The
+drive is not particularly saturated (utilization is only 12.8%), but we should
+still be concerned about how this would affect our p99 latency since 50ms is
+quite long for typical Cassandra operations. That being said, in this case
+most of the latency is present in writes (typically writes are more latent
+than reads), which due to the LSM nature of Cassandra is often hidden from
+the user.
+
+Important metrics to assess using iostat:
+
+* Reads and writes per second. These numbers will change with the workload,
+  but generally speaking the more reads Cassandra has to do from disk the
+  slower Cassandra read latencies are. Large numbers of reads per second
+  can be a dead giveaway that the cluster has insufficient memory for OS
+  page caching.
+* Write throughput. Cassandra's LSM model defers user writes and batches them
+  together, which means that throughput to the underlying medium is the most
+  important write metric for Cassandra.
+* Read latency (``r_await``). When Cassandra missed the OS page cache and reads
+  from SSTables, the read latency directly determines how fast Cassandra can
+  respond with the data.
+* Write latency. Cassandra is less sensitive to write latency except when it
+  syncs the commit log. This typically enters into the very high percentiles of
+  write latency.
+
+Note that to get detailed latency breakdowns you will need a more advanced
+tool such as :ref:`bcc-tools <use-bcc-tools>`.
+
+OS page Cache Usage
+^^^^^^^^^^^^^^^^^^^
+As Cassandra makes heavy use of memory mapped files, the health of the
+operating system's `Page Cache <https://en.wikipedia.org/wiki/Page_cache>`_ is
+crucial to performance. Start by finding how much available cache is in the
+system::
+
+    $ free -g
+                  total        used        free      shared  buff/cache   available
+    Mem:             15           9           2           0           3           5
+    Swap:             0           0           0
+
+In this case 9GB of memory is used by user processes (Cassandra heap) and 8GB
+is available for OS page cache. Of that, 3GB is actually used to cache files.
+If most memory is used and unavailable to the page cache, Cassandra performance
+can suffer significantly. This is why Cassandra starts with a reasonably small
+amount of memory reserved for the heap.
+
+If you suspect that you are missing the OS page cache frequently you can use
+advanced tools like :ref:`cachestat <use-bcc-tools>` or
+:ref:`vmtouch <use-vmtouch>` to dive deeper.
+
+Network Latency and Reliability
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Whenever Cassandra does writes or reads that involve other replicas,
+``LOCAL_QUORUM`` reads for example, one of the dominant effects on latency is
+network latency. When trying to debug issues with multi machine operations,
+the network can be an important resource to investigate. You can determine
+internode latency using tools like ``ping`` and ``traceroute`` or most
+effectively ``mtr``::
+
+    $ mtr -nr www.google.com
+    Start: Sun Jul 22 13:10:28 2018
+    HOST: hostname                     Loss%   Snt   Last   Avg  Best  Wrst StDev
+      1.|-- 192.168.1.1                0.0%    10    2.0   1.9   1.1   3.7   0.7
+      2.|-- 96.123.29.15               0.0%    10   11.4  11.0   9.0  16.4   1.9
+      3.|-- 68.86.249.21               0.0%    10   10.6  10.7   9.0  13.7   1.1
+      4.|-- 162.141.78.129             0.0%    10   11.5  10.6   9.6  12.4   0.7
+      5.|-- 162.151.78.253             0.0%    10   10.9  12.1  10.4  20.2   2.8
+      6.|-- 68.86.143.93               0.0%    10   12.4  12.6   9.9  23.1   3.8
+      7.|-- 96.112.146.18              0.0%    10   11.9  12.4  10.6  15.5   1.6
+      9.|-- 209.85.252.250             0.0%    10   13.7  13.2  12.5  13.9   0.0
+     10.|-- 108.170.242.238            0.0%    10   12.7  12.4  11.1  13.0   0.5
+     11.|-- 74.125.253.149             0.0%    10   13.4  13.7  11.8  19.2   2.1
+     12.|-- 216.239.62.40              0.0%    10   13.4  14.7  11.5  26.9   4.6
+     13.|-- 108.170.242.81             0.0%    10   14.4  13.2  10.9  16.0   1.7
+     14.|-- 72.14.239.43               0.0%    10   12.2  16.1  11.0  32.8   7.1
+     15.|-- 216.58.195.68              0.0%    10   25.1  15.3  11.1  25.1   4.8
+
+In this example of ``mtr``, we can rapidly assess the path that your packets
+are taking, as well as what their typical loss and latency are. Packet loss
+typically leads to between ``200ms`` and ``3s`` of additional latency, so that
+can be a common cause of latency issues.
+
+Network Throughput
+^^^^^^^^^^^^^^^^^^
+As Cassandra is sensitive to outgoing bandwidth limitations, sometimes it is
+useful to determine if network throughput is limited. One handy tool to do
+this is `iftop <https://www.systutorials.com/docs/linux/man/8-iftop/>`_ which
+shows both bandwidth usage as well as connection information at a glance. An
+example showing traffic during a stress run against a local ``ccm`` cluster::
+
+    $ # remove the -t for ncurses instead of pure text
+    $ sudo iftop -nNtP -i lo
+    interface: lo
+    IP address is: 127.0.0.1
+    MAC address is: 00:00:00:00:00:00
+    Listening on lo
+       # Host name (port/service if enabled)            last 2s   last 10s   last 40s cumulative
+    --------------------------------------------------------------------------------------------
+       1 127.0.0.1:58946                          =>      869Kb      869Kb      869Kb      217KB
+         127.0.0.3:9042                           <=         0b         0b         0b         0B
+       2 127.0.0.1:54654                          =>      736Kb      736Kb      736Kb      184KB
+         127.0.0.1:9042                           <=         0b         0b         0b         0B
+       3 127.0.0.1:51186                          =>      669Kb      669Kb      669Kb      167KB
+         127.0.0.2:9042                           <=         0b         0b         0b         0B
+       4 127.0.0.3:9042                           =>     3.30Kb     3.30Kb     3.30Kb       845B
+         127.0.0.1:58946                          <=         0b         0b         0b         0B
+       5 127.0.0.1:9042                           =>     2.79Kb     2.79Kb     2.79Kb       715B
+         127.0.0.1:54654                          <=         0b         0b         0b         0B
+       6 127.0.0.2:9042                           =>     2.54Kb     2.54Kb     2.54Kb       650B
+         127.0.0.1:51186                          <=         0b         0b         0b         0B
+       7 127.0.0.1:36894                          =>     1.65Kb     1.65Kb     1.65Kb       423B
+         127.0.0.5:7000                           <=         0b         0b         0b         0B
+       8 127.0.0.1:38034                          =>     1.50Kb     1.50Kb     1.50Kb       385B
+         127.0.0.2:7000                           <=         0b         0b         0b         0B
+       9 127.0.0.1:56324                          =>     1.50Kb     1.50Kb     1.50Kb       383B
+         127.0.0.1:7000                           <=         0b         0b         0b         0B
+      10 127.0.0.1:53044                          =>     1.43Kb     1.43Kb     1.43Kb       366B
+         127.0.0.4:7000                           <=         0b         0b         0b         0B
+    --------------------------------------------------------------------------------------------
+    Total send rate:                                     2.25Mb     2.25Mb     2.25Mb
+    Total receive rate:                                      0b         0b         0b
+    Total send and receive rate:                         2.25Mb     2.25Mb     2.25Mb
+    --------------------------------------------------------------------------------------------
+    Peak rate (sent/received/total):                     2.25Mb         0b     2.25Mb
+    Cumulative (sent/received/total):                     576KB         0B      576KB
+    ============================================================================================
+
+In this case we can see that bandwidth is fairly shared between many peers,
+but if the total was getting close to the rated capacity of the NIC or was focussed
+on a single client, that may indicate a clue as to what issue is occurring.
+
+Advanced tools
+--------------
+Sometimes as an operator you may need to really dive deep. This is where
+advanced OS tooling can come in handy.
+
+.. _use-bcc-tools:
+
+bcc-tools
+^^^^^^^^^
+Most modern Linux distributions (kernels newer than ``4.1``) support `bcc-tools
+<https://github.com/iovisor/bcc>`_ for diving deep into performance problems.
+First install ``bcc-tools``, e.g.  via ``apt`` on Debian::
+
+    $ apt install bcc-tools
+
+Then you can use all the tools that ``bcc-tools`` contains. One of the most
+useful tools is ``cachestat``
+(`cachestat examples <https://github.com/iovisor/bcc/blob/master/tools/cachestat_example.txt>`_)
+which allows you to determine exactly how many OS page cache hits and misses
+are happening::
+
+    $ sudo /usr/share/bcc/tools/cachestat -T 1
+    TIME        TOTAL   MISSES     HITS  DIRTIES   BUFFERS_MB  CACHED_MB
+    18:44:08       66       66        0       64           88       4427
+    18:44:09       40       40        0       75           88       4427
+    18:44:10     4353       45     4308      203           88       4427
+    18:44:11       84       77        7       13           88       4428
+    18:44:12     2511       14     2497       14           88       4428
+    18:44:13      101       98        3       18           88       4428
+    18:44:14    16741        0    16741       58           88       4428
+    18:44:15     1935       36     1899       18           88       4428
+    18:44:16       89       34       55       18           88       4428
+
+In this case there are not too many page cache ``MISSES`` which indicates a
+reasonably sized cache. These metrics are the most direct measurement of your
+Cassandra node's "hot" dataset. If you don't have enough cache, ``MISSES`` will
+be high and performance will be slow. If you have enough cache, ``MISSES`` will
+be low and performance will be fast (as almost all reads are being served out
+of memory).
+
+You can also measure disk latency distributions using ``biolatency``
+(`biolatency examples <https://github.com/iovisor/bcc/blob/master/tools/biolatency_example.txt>`_)
+to get an idea of how slow Cassandra will be when reads miss the OS page Cache
+and have to hit disks::
+
+    $ sudo /usr/share/bcc/tools/biolatency -D 10
+    Tracing block device I/O... Hit Ctrl-C to end.
+
+
+    disk = 'sda'
+         usecs               : count     distribution
+             0 -> 1          : 0        |                                        |
+             2 -> 3          : 0        |                                        |
+             4 -> 7          : 0        |                                        |
+             8 -> 15         : 0        |                                        |
+            16 -> 31         : 12       |****************************************|
+            32 -> 63         : 9        |******************************          |
+            64 -> 127        : 1        |***                                     |
+           128 -> 255        : 3        |**********                              |
+           256 -> 511        : 7        |***********************                 |
+           512 -> 1023       : 2        |******                                  |
+
+    disk = 'sdc'
+         usecs               : count     distribution
+             0 -> 1          : 0        |                                        |
+             2 -> 3          : 0        |                                        |
+             4 -> 7          : 0        |                                        |
+             8 -> 15         : 0        |                                        |
+            16 -> 31         : 0        |                                        |
+            32 -> 63         : 0        |                                        |
+            64 -> 127        : 41       |************                            |
+           128 -> 255        : 17       |*****                                   |
+           256 -> 511        : 13       |***                                     |
+           512 -> 1023       : 2        |                                        |
+          1024 -> 2047       : 0        |                                        |
+          2048 -> 4095       : 0        |                                        |
+          4096 -> 8191       : 56       |*****************                       |
+          8192 -> 16383      : 131      |****************************************|
+         16384 -> 32767      : 9        |**                                      |
+
+In this case most ios on the data drive (``sdc``) are fast, but many take
+between 8 and 16 milliseconds.
+
+Finally ``biosnoop`` (`examples <https://github.com/iovisor/bcc/blob/master/tools/biosnoop_example.txt>`_)
+can be used to dive even deeper and see per IO latencies::
+
+    $ sudo /usr/share/bcc/tools/biosnoop | grep java | head
+    0.000000000    java           17427  sdc     R  3972458600 4096      13.58
+    0.000818000    java           17427  sdc     R  3972459408 4096       0.35
+    0.007098000    java           17416  sdc     R  3972401824 4096       5.81
+    0.007896000    java           17416  sdc     R  3972489960 4096       0.34
+    0.008920000    java           17416  sdc     R  3972489896 4096       0.34
+    0.009487000    java           17427  sdc     R  3972401880 4096       0.32
+    0.010238000    java           17416  sdc     R  3972488368 4096       0.37
+    0.010596000    java           17427  sdc     R  3972488376 4096       0.34
+    0.011236000    java           17410  sdc     R  3972488424 4096       0.32
+    0.011825000    java           17427  sdc     R  3972488576 16384      0.65
+    ... time passes
+    8.032687000    java           18279  sdc     R  10899712  122880     3.01
+    8.033175000    java           18279  sdc     R  10899952  8192       0.46
+    8.073295000    java           18279  sdc     R  23384320  122880     3.01
+    8.073768000    java           18279  sdc     R  23384560  8192       0.46
+
+
+With ``biosnoop`` you see every single IO and how long they take. This data
+can be used to construct the latency distributions in ``biolatency`` but can
+also be used to better understand how disk latency affects performance. For
+example this particular drive takes ~3ms to service a memory mapped read due to
+the large default value (``128kb``) of ``read_ahead_kb``. To improve point read
+performance you may may want to decrease ``read_ahead_kb`` on fast data volumes
+such as SSDs while keeping the a higher value like ``128kb`` value is probably
+right for HDs. There are tradeoffs involved, see `queue-sysfs
+<https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt>`_ docs for more
+information, but regardless ``biosnoop`` is useful for understanding *how*
+Cassandra uses drives.
+
+.. _use-vmtouch:
+
+vmtouch
+^^^^^^^
+Sometimes it's useful to know how much of the Cassandra data files are being
+cached by the OS. A great tool for answering this question is
+`vmtouch <https://github.com/hoytech/vmtouch>`_.
+
+First install it::
+
+    $ git clone https://github.com/hoytech/vmtouch.git
+    $ cd vmtouch
+    $ make
+
+Then run it on the Cassandra data directory::
+
+    $ ./vmtouch /var/lib/cassandra/data/
+               Files: 312
+         Directories: 92
+      Resident Pages: 62503/64308  244M/251M  97.2%
+             Elapsed: 0.005657 seconds
+
+In this case almost the entire dataset is hot in OS page Cache. Generally
+speaking the percentage doesn't really matter unless reads are missing the
+cache (per e.g. :ref:`cachestat <use-bcc-tools>`), in which case having
+additional memory may help read performance.
+
+CPU Flamegraphs
+^^^^^^^^^^^^^^^
+Cassandra often uses a lot of CPU, but telling *what* it is doing can prove
+difficult. One of the best ways to analyze Cassandra on CPU time is to use
+`CPU Flamegraphs <http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html>`_
+which display in a useful way which areas of Cassandra code are using CPU. This
+may help narrow down a compaction problem to a "compaction problem dropping
+tombstones" or just generally help you narrow down what Cassandra is doing
+while it is having an issue. To get CPU flamegraphs follow the instructions for
+`Java Flamegraphs
+<http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html#Java>`_.
+
+Generally:
+
+1. Enable the ``-XX:+PreserveFramePointer`` option in Cassandra's
+   ``jvm.options`` configuation file. This has a negligible performance impact
+   but allows you actually see what Cassandra is doing.
+2. Run ``perf`` to get some data.
+3. Send that data through the relevant scripts in the FlameGraph toolset and
+   convert the data into a pretty flamegraph. View the resulting SVG image in
+   a browser or other image browser.
+
+For example just cloning straight off github we first install the
+``perf-map-agent`` to the location of our JVMs (assumed to be
+``/usr/lib/jvm``)::
+
+    $ sudo bash
+    $ export JAVA_HOME=/usr/lib/jvm/java-8-oracle/
+    $ cd /usr/lib/jvm
+    $ git clone --depth=1 https://github.com/jvm-profiling-tools/perf-map-agent
+    $ cd perf-map-agent
+    $ cmake .
+    $ make
+
+Now to get a flamegraph::
+
+    $ git clone --depth=1 https://github.com/brendangregg/FlameGraph
+    $ sudo bash
+    $ cd FlameGraph
+    $ # Record traces of Cassandra and map symbols for all java processes
+    $ perf record -F 49 -a -g -p <CASSANDRA PID> -- sleep 30; ./jmaps
+    $ # Translate the data
+    $ perf script > cassandra_stacks
+    $ cat cassandra_stacks | ./stackcollapse-perf.pl | grep -v cpu_idle | \
+        ./flamegraph.pl --color=java --hash > cassandra_flames.svg
+
+
+The resulting SVG is searchable, zoomable, and generally easy to introspect
+using a browser.
+
+.. _packet-capture:
+
+Packet Capture
+^^^^^^^^^^^^^^
+Sometimes you have to understand what queries a Cassandra node is performing
+*right now* to troubleshoot an issue. For these times trusty packet capture
+tools like ``tcpdump`` and `Wireshark
+<https://www.wireshark.org/>`_ can be very helpful to dissect packet captures.
+Wireshark even has native `CQL support
+<https://www.wireshark.org/docs/dfref/c/cql.html>`_ although it sometimes has
+compatibility issues with newer Cassandra protocol releases.
+
+To get a packet capture first capture some packets::
+
+    $ sudo tcpdump -U -s0 -i <INTERFACE> -w cassandra.pcap -n "tcp port 9042"
+
+Now open it up with wireshark::
+
+    $ wireshark cassandra.pcap
+
+If you don't see CQL like statements try telling to decode as CQL by right
+clicking on a packet going to 9042 -> ``Decode as`` -> select CQL from the
+dropdown for port 9042.
+
+If you don't want to do this manually or use a GUI, you can also use something
+like `cqltrace <https://github.com/jolynch/cqltrace>`_ to ease obtaining and
+parsing CQL packet captures.
diff --git a/src/doc/4.0-rc1/_static/ajax-loader.gif b/src/doc/4.0-rc1/_static/ajax-loader.gif
new file mode 100644
index 0000000..61faf8c
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/ajax-loader.gif
Binary files differ
diff --git a/src/doc/4.0-rc1/_static/basic.css b/src/doc/4.0-rc1/_static/basic.css
new file mode 100644
index 0000000..0807176
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/basic.css
@@ -0,0 +1,676 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+    clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+    word-wrap: break-word;
+    overflow-wrap : break-word;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox form.search {
+    overflow: hidden;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+    float: left;
+    width: 80%;
+    padding: 0.25em;
+    box-sizing: border-box;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+    float: left;
+    width: 20%;
+    border-left: none;
+    padding: 0.25em;
+    box-sizing: border-box;
+}
+
+
+img {
+    border: 0;
+    max-width: 100%;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li div.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+    width: 90%;
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+    width: 100%;
+}
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable ul {
+    margin-top: 0;
+    margin-bottom: 0;
+    list-style-type: none;
+}
+
+table.indextable > tbody > tr > td > ul {
+    padding-left: 0em;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+div.modindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+/* -- domain module index --------------------------------------------------- */
+
+table.modindextable td {
+    padding: 2px;
+    border-collapse: collapse;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+div.body {
+    min-width: 450px;
+    max-width: 800px;
+}
+
+div.body p, div.body dd, div.body li, div.body blockquote {
+    -moz-hyphens: auto;
+    -ms-hyphens: auto;
+    -webkit-hyphens: auto;
+    hyphens: auto;
+}
+
+a.headerlink {
+    visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink,
+caption:hover > a.headerlink,
+p.caption:hover > a.headerlink,
+div.code-block-caption:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+    clear: left;
+    float: left;
+    margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+    clear: right;
+    float: right;
+    margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-center {
+    text-align: center;
+}
+
+.align-right {
+    text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px 7px 0 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px 7px 0 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+div.admonition dl {
+    margin-bottom: 0;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.align-center {
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table caption span.caption-number {
+    font-style: italic;
+}
+
+table caption span.caption-text {
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 5px;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+table.footnote td, table.footnote th {
+    border: 0 !important;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+table.citation {
+    border-left: solid 1px gray;
+    margin-left: 1px;
+}
+
+table.citation td {
+    border-bottom: none;
+}
+
+/* -- figures --------------------------------------------------------------- */
+
+div.figure {
+    margin: 0.5em;
+    padding: 0.5em;
+}
+
+div.figure p.caption {
+    padding: 0.3em;
+}
+
+div.figure p.caption span.caption-number {
+    font-style: italic;
+}
+
+div.figure p.caption span.caption-text {
+}
+
+/* -- field list styles ----------------------------------------------------- */
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.field-name {
+    -moz-hyphens: manual;
+    -ms-hyphens: manual;
+    -webkit-hyphens: manual;
+    hyphens: manual;
+}
+
+/* -- hlist styles ---------------------------------------------------------- */
+
+table.hlist td {
+    vertical-align: top;
+}
+
+
+/* -- other body styles ----------------------------------------------------- */
+
+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;
+}
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd p {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+dt:target, span.highlighted {
+    background-color: #fbe54e;
+}
+
+rect.highlighted {
+    fill: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.sig-paren {
+    font-size: larger;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa;
+}
+
+.line-block {
+    display: block;
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+.line-block .line-block {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+    font-family: sans-serif;
+}
+
+.accelerator {
+    text-decoration: underline;
+}
+
+.classifier {
+    font-style: oblique;
+}
+
+abbr, acronym {
+    border-bottom: dotted 1px;
+    cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+    overflow: auto;
+    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
+}
+
+span.pre {
+    -moz-hyphens: none;
+    -ms-hyphens: none;
+    -webkit-hyphens: none;
+    hyphens: none;
+}
+
+td.linenos pre {
+    padding: 5px 0px;
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    margin-left: 0.5em;
+}
+
+table.highlighttable td {
+    padding: 0 0.5em 0 0.5em;
+}
+
+div.code-block-caption {
+    padding: 2px 5px;
+    font-size: small;
+}
+
+div.code-block-caption code {
+    background-color: transparent;
+}
+
+div.code-block-caption + div > div.highlight > pre {
+    margin-top: 0;
+}
+
+div.code-block-caption span.caption-number {
+    padding: 0.1em 0.3em;
+    font-style: italic;
+}
+
+div.code-block-caption span.caption-text {
+}
+
+div.literal-block-wrapper {
+    padding: 1em 1em 0;
+}
+
+div.literal-block-wrapper div.highlight {
+    margin: 0;
+}
+
+code.descname {
+    background-color: transparent;
+    font-weight: bold;
+    font-size: 1.2em;
+}
+
+code.descclassname {
+    background-color: transparent;
+}
+
+code.xref, a code {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
+    background-color: transparent;
+}
+
+.viewcode-link {
+    float: right;
+}
+
+.viewcode-back {
+    float: right;
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    margin: -1px -10px;
+    padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+span.eqno a.headerlink {
+    position: relative;
+    left: 0px;
+    z-index: 1;
+}
+
+div.math:hover a.headerlink {
+    visibility: visible;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0 !important;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_static/comment-bright.png b/src/doc/4.0-rc1/_static/comment-bright.png
new file mode 100644
index 0000000..15e27ed
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/comment-bright.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_static/comment-close.png b/src/doc/4.0-rc1/_static/comment-close.png
new file mode 100644
index 0000000..4d91bcf
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/comment-close.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_static/comment.png b/src/doc/4.0-rc1/_static/comment.png
new file mode 100644
index 0000000..dfbc0cb
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/comment.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_static/doctools.js b/src/doc/4.0-rc1/_static/doctools.js
new file mode 100644
index 0000000..344db17
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/doctools.js
@@ -0,0 +1,315 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+  var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+    "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+    "profile", "profileEnd"];
+  window.console = {};
+  for (var i = 0; i < names.length; ++i)
+    window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+  return decodeURIComponent(x).replace(/\+/g, ' ');
+};
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+  if (typeof s === 'undefined')
+    s = document.location.search;
+  var parts = s.substr(s.indexOf('?') + 1).split('&');
+  var result = {};
+  for (var i = 0; i < parts.length; i++) {
+    var tmp = parts[i].split('=', 2);
+    var key = jQuery.urldecode(tmp[0]);
+    var value = jQuery.urldecode(tmp[1]);
+    if (key in result)
+      result[key].push(value);
+    else
+      result[key] = [value];
+  }
+  return result;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+  function highlight(node, addItems) {
+    if (node.nodeType === 3) {
+      var val = node.nodeValue;
+      var pos = val.toLowerCase().indexOf(text);
+      if (pos >= 0 &&
+          !jQuery(node.parentNode).hasClass(className) &&
+          !jQuery(node.parentNode).hasClass("nohighlight")) {
+        var span;
+        var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
+        if (isInSVG) {
+          span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
+        } else {
+          span = document.createElement("span");
+          span.className = className;
+        }
+        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+          document.createTextNode(val.substr(pos + text.length)),
+          node.nextSibling));
+        node.nodeValue = val.substr(0, pos);
+        if (isInSVG) {
+          var bbox = span.getBBox();
+          var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
+       	  rect.x.baseVal.value = bbox.x;
+          rect.y.baseVal.value = bbox.y;
+          rect.width.baseVal.value = bbox.width;
+          rect.height.baseVal.value = bbox.height;
+          rect.setAttribute('class', className);
+          var parentOfText = node.parentNode.parentNode;
+          addItems.push({
+              "parent": node.parentNode,
+              "target": rect});
+        }
+      }
+    }
+    else if (!jQuery(node).is("button, select, textarea")) {
+      jQuery.each(node.childNodes, function() {
+        highlight(this, addItems);
+      });
+    }
+  }
+  var addItems = [];
+  var result = this.each(function() {
+    highlight(this, addItems);
+  });
+  for (var i = 0; i < addItems.length; ++i) {
+    jQuery(addItems[i].parent).before(addItems[i].target);
+  }
+  return result;
+};
+
+/*
+ * backward compatibility for jQuery.browser
+ * This will be supported until firefox bug is fixed.
+ */
+if (!jQuery.browser) {
+  jQuery.uaMatch = function(ua) {
+    ua = ua.toLowerCase();
+
+    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
+      /(webkit)[ \/]([\w.]+)/.exec(ua) ||
+      /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
+      /(msie) ([\w.]+)/.exec(ua) ||
+      ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
+      [];
+
+    return {
+      browser: match[ 1 ] || "",
+      version: match[ 2 ] || "0"
+    };
+  };
+  jQuery.browser = {};
+  jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
+}
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+  init : function() {
+    this.fixFirefoxAnchorBug();
+    this.highlightSearchWords();
+    this.initIndexTable();
+    if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
+      this.initOnKeyListeners();
+    }
+  },
+
+  /**
+   * i18n support
+   */
+  TRANSLATIONS : {},
+  PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
+  LOCALE : 'unknown',
+
+  // gettext and ngettext don't access this so that the functions
+  // can safely bound to a different name (_ = Documentation.gettext)
+  gettext : function(string) {
+    var translated = Documentation.TRANSLATIONS[string];
+    if (typeof translated === 'undefined')
+      return string;
+    return (typeof translated === 'string') ? translated : translated[0];
+  },
+
+  ngettext : function(singular, plural, n) {
+    var translated = Documentation.TRANSLATIONS[singular];
+    if (typeof translated === 'undefined')
+      return (n == 1) ? singular : plural;
+    return translated[Documentation.PLURALEXPR(n)];
+  },
+
+  addTranslations : function(catalog) {
+    for (var key in catalog.messages)
+      this.TRANSLATIONS[key] = catalog.messages[key];
+    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+    this.LOCALE = catalog.locale;
+  },
+
+  /**
+   * add context elements like header anchor links
+   */
+  addContextElements : function() {
+    $('div[id] > :header:first').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this headline')).
+      appendTo(this);
+    });
+    $('dt[id]').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this definition')).
+      appendTo(this);
+    });
+  },
+
+  /**
+   * workaround a firefox stupidity
+   * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
+   */
+  fixFirefoxAnchorBug : function() {
+    if (document.location.hash && $.browser.mozilla)
+      window.setTimeout(function() {
+        document.location.href += '';
+      }, 10);
+  },
+
+  /**
+   * highlight the search words provided in the url in the text
+   */
+  highlightSearchWords : function() {
+    var params = $.getQueryParameters();
+    var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+    if (terms.length) {
+      var body = $('div.body');
+      if (!body.length) {
+        body = $('body');
+      }
+      window.setTimeout(function() {
+        $.each(terms, function() {
+          body.highlightText(this.toLowerCase(), 'highlighted');
+        });
+      }, 10);
+      $('<p class="highlight-link"><a href="javascript:Documentation.' +
+        'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
+          .appendTo($('#searchbox'));
+    }
+  },
+
+  /**
+   * init the domain index toggle buttons
+   */
+  initIndexTable : function() {
+    var togglers = $('img.toggler').click(function() {
+      var src = $(this).attr('src');
+      var idnum = $(this).attr('id').substr(7);
+      $('tr.cg-' + idnum).toggle();
+      if (src.substr(-9) === 'minus.png')
+        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+      else
+        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+    }).css('display', '');
+    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+        togglers.click();
+    }
+  },
+
+  /**
+   * helper function to hide the search marks again
+   */
+  hideSearchWords : function() {
+    $('#searchbox .highlight-link').fadeOut(300);
+    $('span.highlighted').removeClass('highlighted');
+  },
+
+  /**
+   * make the url absolute
+   */
+  makeURL : function(relativeURL) {
+    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+  },
+
+  /**
+   * get the current relative url
+   */
+  getCurrentURL : function() {
+    var path = document.location.pathname;
+    var parts = path.split(/\//);
+    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+      if (this === '..')
+        parts.pop();
+    });
+    var url = parts.join('/');
+    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+  },
+
+  initOnKeyListeners: function() {
+    $(document).keyup(function(event) {
+      var activeElementType = document.activeElement.tagName;
+      // don't navigate when in search box or textarea
+      if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
+        switch (event.keyCode) {
+          case 37: // left
+            var prevHref = $('link[rel="prev"]').prop('href');
+            if (prevHref) {
+              window.location.href = prevHref;
+              return false;
+            }
+          case 39: // right
+            var nextHref = $('link[rel="next"]').prop('href');
+            if (nextHref) {
+              window.location.href = nextHref;
+              return false;
+            }
+        }
+      }
+    });
+  }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+  Documentation.init();
+});
diff --git a/src/doc/4.0-rc1/_static/documentation_options.js b/src/doc/4.0-rc1/_static/documentation_options.js
new file mode 100644
index 0000000..d28647e
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/documentation_options.js
@@ -0,0 +1,10 @@
+var DOCUMENTATION_OPTIONS = {
+    URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
+    VERSION: '',
+    LANGUAGE: 'None',
+    COLLAPSE_INDEX: false,
+    FILE_SUFFIX: '.html',
+    HAS_SOURCE: true,
+    SOURCELINK_SUFFIX: '.txt',
+    NAVIGATION_WITH_KEYS: false,
+};
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_static/down-pressed.png b/src/doc/4.0-rc1/_static/down-pressed.png
new file mode 100644
index 0000000..5756c8c
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/down-pressed.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_static/down.png b/src/doc/4.0-rc1/_static/down.png
new file mode 100644
index 0000000..1b3bdad
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/down.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_static/extra.css b/src/doc/4.0-rc1/_static/extra.css
new file mode 100644
index 0000000..5e40dd7
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/extra.css
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+div:not(.highlight) > pre {
+    background: #fff;
+    border: 1px solid #e1e4e5;
+    color: #404040;
+    margin: 1px 0 24px 0;
+    overflow-x: auto;
+    padding: 12px 12px;
+    font-size: 12px;
+}
+
+a.reference.internal code.literal {
+    border: none;
+    font-size: 12px;
+    color: #2980B9;
+    padding: 0;
+    background: none;
+}
+
+a.reference.internal:visited code.literal {
+    color: #9B59B6;
+    padding: 0;
+    background: none;
+}
+
+
+/* override table width restrictions */
+.wy-table-responsive table td, .wy-table-responsive table th {
+    white-space: normal;
+}
+
+.wy-table-responsive {
+    margin-bottom: 24px;
+    max-width: 100%;
+    overflow: visible;
+}
+
+table.contentstable {
+    margin: 0;
+}
+
+td.rightcolumn {
+    padding-left: 30px;
+}
+
+div#wipwarning {
+    font-size: 14px;
+    border: 1px solid #ecc;
+    color: #f66;
+    background: #ffe8e8;
+    padding: 10px 30px;
+    margin-bottom: 30px;
+}
+.content-container{
+    padding-right: 15px;
+    padding-left: 15px;
+    margin-right: auto;
+    margin-left: auto;
+    width:100%;
+}
diff --git a/src/doc/4.0-rc1/_static/file.png b/src/doc/4.0-rc1/_static/file.png
new file mode 100644
index 0000000..a858a41
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/file.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_static/jquery-3.2.1.js b/src/doc/4.0-rc1/_static/jquery-3.2.1.js
new file mode 100644
index 0000000..d2d8ca4
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/jquery-3.2.1.js
@@ -0,0 +1,10253 @@
+/*!
+ * jQuery JavaScript Library v3.2.1
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright JS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2017-03-20T18:59Z
+ */
+( function( global, factory ) {
+
+	"use strict";
+
+	if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+		// For CommonJS and CommonJS-like environments where a proper `window`
+		// is present, execute the factory and get jQuery.
+		// For environments that do not have a `window` with a `document`
+		// (such as Node.js), expose a factory as module.exports.
+		// This accentuates the need for the creation of a real `window`.
+		// e.g. var jQuery = require("jquery")(window);
+		// See ticket #14549 for more info.
+		module.exports = global.document ?
+			factory( global, true ) :
+			function( w ) {
+				if ( !w.document ) {
+					throw new Error( "jQuery requires a window with a document" );
+				}
+				return factory( w );
+			};
+	} else {
+		factory( global );
+	}
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var document = window.document;
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+
+
+	function DOMEval( code, doc ) {
+		doc = doc || document;
+
+		var script = doc.createElement( "script" );
+
+		script.text = code;
+		doc.head.appendChild( script ).parentNode.removeChild( script );
+	}
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+
+
+var
+	version = "3.2.1",
+
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
+
+		// The jQuery object is actually just the init constructor 'enhanced'
+		// Need init if jQuery is called (just allow error to be thrown if not included)
+		return new jQuery.fn.init( selector, context );
+	},
+
+	// Support: Android <=4.0 only
+	// Make sure we trim BOM and NBSP
+	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+	// Matches dashed string for camelizing
+	rmsPrefix = /^-ms-/,
+	rdashAlpha = /-([a-z])/g,
+
+	// Used by jQuery.camelCase as callback to replace()
+	fcamelCase = function( all, letter ) {
+		return letter.toUpperCase();
+	};
+
+jQuery.fn = jQuery.prototype = {
+
+	// The current version of jQuery being used
+	jquery: version,
+
+	constructor: jQuery,
+
+	// The default length of a jQuery object is 0
+	length: 0,
+
+	toArray: function() {
+		return slice.call( this );
+	},
+
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+
+		// Return all the elements in a clean array
+		if ( num == null ) {
+			return slice.call( this );
+		}
+
+		// Return just the one element from the set
+		return num < 0 ? this[ num + this.length ] : this[ num ];
+	},
+
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
+
+		// Build a new jQuery matched element set
+		var ret = jQuery.merge( this.constructor(), elems );
+
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+
+		// Return the newly-formed element set
+		return ret;
+	},
+
+	// Execute a callback for every element in the matched set.
+	each: function( callback ) {
+		return jQuery.each( this, callback );
+	},
+
+	map: function( callback ) {
+		return this.pushStack( jQuery.map( this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		} ) );
+	},
+
+	slice: function() {
+		return this.pushStack( slice.apply( this, arguments ) );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	eq: function( i ) {
+		var len = this.length,
+			j = +i + ( i < 0 ? len : 0 );
+		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor();
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: push,
+	sort: arr.sort,
+	splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var options, name, src, copy, copyIsArray, clone,
+		target = arguments[ 0 ] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+
+		// Skip the boolean and the target
+		target = arguments[ i ] || {};
+		i++;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+		target = {};
+	}
+
+	// Extend jQuery itself if only one argument is passed
+	if ( i === length ) {
+		target = this;
+		i--;
+	}
+
+	for ( ; i < length; i++ ) {
+
+		// Only deal with non-null/undefined values
+		if ( ( options = arguments[ i ] ) != null ) {
+
+			// Extend the base object
+			for ( name in options ) {
+				src = target[ name ];
+				copy = options[ name ];
+
+				// Prevent never-ending loop
+				if ( target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+					( copyIsArray = Array.isArray( copy ) ) ) ) {
+
+					if ( copyIsArray ) {
+						copyIsArray = false;
+						clone = src && Array.isArray( src ) ? src : [];
+
+					} else {
+						clone = src && jQuery.isPlainObject( src ) ? src : {};
+					}
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend( {
+
+	// Unique for each copy of jQuery on the page
+	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+	// Assume jQuery is ready without the ready module
+	isReady: true,
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	noop: function() {},
+
+	isFunction: function( obj ) {
+		return jQuery.type( obj ) === "function";
+	},
+
+	isWindow: function( obj ) {
+		return obj != null && obj === obj.window;
+	},
+
+	isNumeric: function( obj ) {
+
+		// As of jQuery 3.0, isNumeric is limited to
+		// strings and numbers (primitives or objects)
+		// that can be coerced to finite numbers (gh-2662)
+		var type = jQuery.type( obj );
+		return ( type === "number" || type === "string" ) &&
+
+			// parseFloat NaNs numeric-cast false positives ("")
+			// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+			// subtraction forces infinities to NaN
+			!isNaN( obj - parseFloat( obj ) );
+	},
+
+	isPlainObject: function( obj ) {
+		var proto, Ctor;
+
+		// Detect obvious negatives
+		// Use toString instead of jQuery.type to catch host objects
+		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+			return false;
+		}
+
+		proto = getProto( obj );
+
+		// Objects with no prototype (e.g., `Object.create( null )`) are plain
+		if ( !proto ) {
+			return true;
+		}
+
+		// Objects with prototype are plain iff they were constructed by a global Object function
+		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+	},
+
+	isEmptyObject: function( obj ) {
+
+		/* eslint-disable no-unused-vars */
+		// See https://github.com/eslint/eslint/issues/6125
+		var name;
+
+		for ( name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	type: function( obj ) {
+		if ( obj == null ) {
+			return obj + "";
+		}
+
+		// Support: Android <=2.3 only (functionish RegExp)
+		return typeof obj === "object" || typeof obj === "function" ?
+			class2type[ toString.call( obj ) ] || "object" :
+			typeof obj;
+	},
+
+	// Evaluates a script in a global context
+	globalEval: function( code ) {
+		DOMEval( code );
+	},
+
+	// Convert dashed to camelCase; used by the css and data modules
+	// Support: IE <=9 - 11, Edge 12 - 13
+	// Microsoft forgot to hump their vendor prefix (#9572)
+	camelCase: function( string ) {
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+	},
+
+	each: function( obj, callback ) {
+		var length, i = 0;
+
+		if ( isArrayLike( obj ) ) {
+			length = obj.length;
+			for ( ; i < length; i++ ) {
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+					break;
+				}
+			}
+		} else {
+			for ( i in obj ) {
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+					break;
+				}
+			}
+		}
+
+		return obj;
+	},
+
+	// Support: Android <=4.0 only
+	trim: function( text ) {
+		return text == null ?
+			"" :
+			( text + "" ).replace( rtrim, "" );
+	},
+
+	// results is for internal usage only
+	makeArray: function( arr, results ) {
+		var ret = results || [];
+
+		if ( arr != null ) {
+			if ( isArrayLike( Object( arr ) ) ) {
+				jQuery.merge( ret,
+					typeof arr === "string" ?
+					[ arr ] : arr
+				);
+			} else {
+				push.call( ret, arr );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, arr, i ) {
+		return arr == null ? -1 : indexOf.call( arr, elem, i );
+	},
+
+	// Support: Android <=4.0 only, PhantomJS 1 only
+	// push.apply(_, arraylike) throws on ancient WebKit
+	merge: function( first, second ) {
+		var len = +second.length,
+			j = 0,
+			i = first.length;
+
+		for ( ; j < len; j++ ) {
+			first[ i++ ] = second[ j ];
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, invert ) {
+		var callbackInverse,
+			matches = [],
+			i = 0,
+			length = elems.length,
+			callbackExpect = !invert;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( ; i < length; i++ ) {
+			callbackInverse = !callback( elems[ i ], i );
+			if ( callbackInverse !== callbackExpect ) {
+				matches.push( elems[ i ] );
+			}
+		}
+
+		return matches;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var length, value,
+			i = 0,
+			ret = [];
+
+		// Go through the array, translating each of the items to their new values
+		if ( isArrayLike( elems ) ) {
+			length = elems.length;
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+
+		// Go through every key on the object,
+		} else {
+			for ( i in elems ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return concat.apply( [], ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// Bind a function to a context, optionally partially applying any
+	// arguments.
+	proxy: function( fn, context ) {
+		var tmp, args, proxy;
+
+		if ( typeof context === "string" ) {
+			tmp = fn[ context ];
+			context = fn;
+			fn = tmp;
+		}
+
+		// Quick check to determine if target is callable, in the spec
+		// this throws a TypeError, but we will just return undefined.
+		if ( !jQuery.isFunction( fn ) ) {
+			return undefined;
+		}
+
+		// Simulated bind
+		args = slice.call( arguments, 2 );
+		proxy = function() {
+			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+		};
+
+		// Set the guid of unique handler to the same of original handler, so it can be removed
+		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+		return proxy;
+	},
+
+	now: Date.now,
+
+	// jQuery.support is not used in Core but other projects attach their
+	// properties to it so it needs to exist.
+	support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+	// Support: real iOS 8.2 only (not reproducible in simulator)
+	// `in` check used to prevent JIT error (gh-2145)
+	// hasOwn isn't used here due to false negatives
+	// regarding Nodelist length in IE
+	var length = !!obj && "length" in obj && obj.length,
+		type = jQuery.type( obj );
+
+	if ( type === "function" || jQuery.isWindow( obj ) ) {
+		return false;
+	}
+
+	return type === "array" || length === 0 ||
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.3.3
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-08-08
+ */
+(function( window ) {
+
+var i,
+	support,
+	Expr,
+	getText,
+	isXML,
+	tokenize,
+	compile,
+	select,
+	outermostContext,
+	sortInput,
+	hasDuplicate,
+
+	// Local document vars
+	setDocument,
+	document,
+	docElem,
+	documentIsHTML,
+	rbuggyQSA,
+	rbuggyMatches,
+	matches,
+	contains,
+
+	// Instance-specific data
+	expando = "sizzle" + 1 * new Date(),
+	preferredDoc = window.document,
+	dirruns = 0,
+	done = 0,
+	classCache = createCache(),
+	tokenCache = createCache(),
+	compilerCache = createCache(),
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+		}
+		return 0;
+	},
+
+	// Instance methods
+	hasOwn = ({}).hasOwnProperty,
+	arr = [],
+	pop = arr.pop,
+	push_native = arr.push,
+	push = arr.push,
+	slice = arr.slice,
+	// Use a stripped-down indexOf as it's faster than native
+	// https://jsperf.com/thor-indexof-vs-for/5
+	indexOf = function( list, elem ) {
+		var i = 0,
+			len = list.length;
+		for ( ; i < len; i++ ) {
+			if ( list[i] === elem ) {
+				return i;
+			}
+		}
+		return -1;
+	},
+
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+	// Regular expressions
+
+	// http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+
+	// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+
+	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+		// Operator (capture 2)
+		"*([*^$|!~]?=)" + whitespace +
+		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+		"*\\]",
+
+	pseudos = ":(" + identifier + ")(?:\\((" +
+		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+		// 1. quoted (capture 3; capture 4 or capture 5)
+		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+		// 2. simple (capture 6)
+		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+		// 3. anything else (capture 2)
+		".*" +
+		")\\)|)",
+
+	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+	rwhitespace = new RegExp( whitespace + "+", "g" ),
+	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+	rpseudo = new RegExp( pseudos ),
+	ridentifier = new RegExp( "^" + identifier + "$" ),
+
+	matchExpr = {
+		"ID": new RegExp( "^#(" + identifier + ")" ),
+		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
+		"ATTR": new RegExp( "^" + attributes ),
+		"PSEUDO": new RegExp( "^" + pseudos ),
+		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+		// For use in libraries implementing .is()
+		// We use this for POS matching in `select`
+		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+	},
+
+	rinputs = /^(?:input|select|textarea|button)$/i,
+	rheader = /^h\d$/i,
+
+	rnative = /^[^{]+\{\s*\[native \w/,
+
+	// Easily-parseable/retrievable ID or TAG or CLASS selectors
+	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+	rsibling = /[+~]/,
+
+	// CSS escapes
+	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+	funescape = function( _, escaped, escapedWhitespace ) {
+		var high = "0x" + escaped - 0x10000;
+		// NaN means non-codepoint
+		// Support: Firefox<24
+		// Workaround erroneous numeric interpretation of +"0x"
+		return high !== high || escapedWhitespace ?
+			escaped :
+			high < 0 ?
+				// BMP codepoint
+				String.fromCharCode( high + 0x10000 ) :
+				// Supplemental Plane codepoint (surrogate pair)
+				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+	},
+
+	// CSS string/identifier serialization
+	// https://drafts.csswg.org/cssom/#common-serializing-idioms
+	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
+	fcssescape = function( ch, asCodePoint ) {
+		if ( asCodePoint ) {
+
+			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+			if ( ch === "\0" ) {
+				return "\uFFFD";
+			}
+
+			// Control characters and (dependent upon position) numbers get escaped as code points
+			return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+		}
+
+		// Other potentially-special ASCII characters get backslash-escaped
+		return "\\" + ch;
+	},
+
+	// Used for iframes
+	// See setDocument()
+	// Removing the function wrapper causes a "Permission Denied"
+	// error in IE
+	unloadHandler = function() {
+		setDocument();
+	},
+
+	disabledAncestor = addCombinator(
+		function( elem ) {
+			return elem.disabled === true && ("form" in elem || "label" in elem);
+		},
+		{ dir: "parentNode", next: "legend" }
+	);
+
+// Optimize for push.apply( _, NodeList )
+try {
+	push.apply(
+		(arr = slice.call( preferredDoc.childNodes )),
+		preferredDoc.childNodes
+	);
+	// Support: Android<4.0
+	// Detect silently failing push.apply
+	arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+	push = { apply: arr.length ?
+
+		// Leverage slice if possible
+		function( target, els ) {
+			push_native.apply( target, slice.call(els) );
+		} :
+
+		// Support: IE<9
+		// Otherwise append directly
+		function( target, els ) {
+			var j = target.length,
+				i = 0;
+			// Can't trust NodeList.length
+			while ( (target[j++] = els[i++]) ) {}
+			target.length = j - 1;
+		}
+	};
+}
+
+function Sizzle( selector, context, results, seed ) {
+	var m, i, elem, nid, match, groups, newSelector,
+		newContext = context && context.ownerDocument,
+
+		// nodeType defaults to 9, since context defaults to document
+		nodeType = context ? context.nodeType : 9;
+
+	results = results || [];
+
+	// Return early from calls with invalid selector or context
+	if ( typeof selector !== "string" || !selector ||
+		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+		return results;
+	}
+
+	// Try to shortcut find operations (as opposed to filters) in HTML documents
+	if ( !seed ) {
+
+		if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+			setDocument( context );
+		}
+		context = context || document;
+
+		if ( documentIsHTML ) {
+
+			// If the selector is sufficiently simple, try using a "get*By*" DOM method
+			// (excepting DocumentFragment context, where the methods don't exist)
+			if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+				// ID selector
+				if ( (m = match[1]) ) {
+
+					// Document context
+					if ( nodeType === 9 ) {
+						if ( (elem = context.getElementById( m )) ) {
+
+							// Support: IE, Opera, Webkit
+							// TODO: identify versions
+							// getElementById can match elements by name instead of ID
+							if ( elem.id === m ) {
+								results.push( elem );
+								return results;
+							}
+						} else {
+							return results;
+						}
+
+					// Element context
+					} else {
+
+						// Support: IE, Opera, Webkit
+						// TODO: identify versions
+						// getElementById can match elements by name instead of ID
+						if ( newContext && (elem = newContext.getElementById( m )) &&
+							contains( context, elem ) &&
+							elem.id === m ) {
+
+							results.push( elem );
+							return results;
+						}
+					}
+
+				// Type selector
+				} else if ( match[2] ) {
+					push.apply( results, context.getElementsByTagName( selector ) );
+					return results;
+
+				// Class selector
+				} else if ( (m = match[3]) && support.getElementsByClassName &&
+					context.getElementsByClassName ) {
+
+					push.apply( results, context.getElementsByClassName( m ) );
+					return results;
+				}
+			}
+
+			// Take advantage of querySelectorAll
+			if ( support.qsa &&
+				!compilerCache[ selector + " " ] &&
+				(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+				if ( nodeType !== 1 ) {
+					newContext = context;
+					newSelector = selector;
+
+				// qSA looks outside Element context, which is not what we want
+				// Thanks to Andrew Dupont for this workaround technique
+				// Support: IE <=8
+				// Exclude object elements
+				} else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+					// Capture the context ID, setting it first if necessary
+					if ( (nid = context.getAttribute( "id" )) ) {
+						nid = nid.replace( rcssescape, fcssescape );
+					} else {
+						context.setAttribute( "id", (nid = expando) );
+					}
+
+					// Prefix every selector in the list
+					groups = tokenize( selector );
+					i = groups.length;
+					while ( i-- ) {
+						groups[i] = "#" + nid + " " + toSelector( groups[i] );
+					}
+					newSelector = groups.join( "," );
+
+					// Expand context for sibling selectors
+					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+						context;
+				}
+
+				if ( newSelector ) {
+					try {
+						push.apply( results,
+							newContext.querySelectorAll( newSelector )
+						);
+						return results;
+					} catch ( qsaError ) {
+					} finally {
+						if ( nid === expando ) {
+							context.removeAttribute( "id" );
+						}
+					}
+				}
+			}
+		}
+	}
+
+	// All others
+	return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *	deleting the oldest entry
+ */
+function createCache() {
+	var keys = [];
+
+	function cache( key, value ) {
+		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+		if ( keys.push( key + " " ) > Expr.cacheLength ) {
+			// Only keep the most recent entries
+			delete cache[ keys.shift() ];
+		}
+		return (cache[ key + " " ] = value);
+	}
+	return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+	fn[ expando ] = true;
+	return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+	var el = document.createElement("fieldset");
+
+	try {
+		return !!fn( el );
+	} catch (e) {
+		return false;
+	} finally {
+		// Remove from its parent by default
+		if ( el.parentNode ) {
+			el.parentNode.removeChild( el );
+		}
+		// release memory in IE
+		el = null;
+	}
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+	var arr = attrs.split("|"),
+		i = arr.length;
+
+	while ( i-- ) {
+		Expr.attrHandle[ arr[i] ] = handler;
+	}
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+	var cur = b && a,
+		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+			a.sourceIndex - b.sourceIndex;
+
+	// Use IE sourceIndex if available on both nodes
+	if ( diff ) {
+		return diff;
+	}
+
+	// Check if b follows a
+	if ( cur ) {
+		while ( (cur = cur.nextSibling) ) {
+			if ( cur === b ) {
+				return -1;
+			}
+		}
+	}
+
+	return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return name === "input" && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return (name === "input" || name === "button") && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+
+	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+	return function( elem ) {
+
+		// Only certain elements can match :enabled or :disabled
+		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
+		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
+		if ( "form" in elem ) {
+
+			// Check for inherited disabledness on relevant non-disabled elements:
+			// * listed form-associated elements in a disabled fieldset
+			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
+			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
+			// * option elements in a disabled optgroup
+			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
+			// All such elements have a "form" property.
+			if ( elem.parentNode && elem.disabled === false ) {
+
+				// Option elements defer to a parent optgroup if present
+				if ( "label" in elem ) {
+					if ( "label" in elem.parentNode ) {
+						return elem.parentNode.disabled === disabled;
+					} else {
+						return elem.disabled === disabled;
+					}
+				}
+
+				// Support: IE 6 - 11
+				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
+				return elem.isDisabled === disabled ||
+
+					// Where there is no isDisabled, check manually
+					/* jshint -W018 */
+					elem.isDisabled !== !disabled &&
+						disabledAncestor( elem ) === disabled;
+			}
+
+			return elem.disabled === disabled;
+
+		// Try to winnow out elements that can't be disabled before trusting the disabled property.
+		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
+		// even exist on them, let alone have a boolean value.
+		} else if ( "label" in elem ) {
+			return elem.disabled === disabled;
+		}
+
+		// Remaining elements are neither :enabled nor :disabled
+		return false;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+	return markFunction(function( argument ) {
+		argument = +argument;
+		return markFunction(function( seed, matches ) {
+			var j,
+				matchIndexes = fn( [], seed.length, argument ),
+				i = matchIndexes.length;
+
+			// Match elements found at the specified indexes
+			while ( i-- ) {
+				if ( seed[ (j = matchIndexes[i]) ] ) {
+					seed[j] = !(matches[j] = seed[j]);
+				}
+			}
+		});
+	});
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+	return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+	// documentElement is verified for cases where it doesn't yet exist
+	// (such as loading iframes in IE - #4833)
+	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+	return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+	var hasCompare, subWindow,
+		doc = node ? node.ownerDocument || node : preferredDoc;
+
+	// Return early if doc is invalid or already selected
+	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+		return document;
+	}
+
+	// Update global variables
+	document = doc;
+	docElem = document.documentElement;
+	documentIsHTML = !isXML( document );
+
+	// Support: IE 9-11, Edge
+	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+	if ( preferredDoc !== document &&
+		(subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+
+		// Support: IE 11, Edge
+		if ( subWindow.addEventListener ) {
+			subWindow.addEventListener( "unload", unloadHandler, false );
+
+		// Support: IE 9 - 10 only
+		} else if ( subWindow.attachEvent ) {
+			subWindow.attachEvent( "onunload", unloadHandler );
+		}
+	}
+
+	/* Attributes
+	---------------------------------------------------------------------- */
+
+	// Support: IE<8
+	// Verify that getAttribute really returns attributes and not properties
+	// (excepting IE8 booleans)
+	support.attributes = assert(function( el ) {
+		el.className = "i";
+		return !el.getAttribute("className");
+	});
+
+	/* getElement(s)By*
+	---------------------------------------------------------------------- */
+
+	// Check if getElementsByTagName("*") returns only elements
+	support.getElementsByTagName = assert(function( el ) {
+		el.appendChild( document.createComment("") );
+		return !el.getElementsByTagName("*").length;
+	});
+
+	// Support: IE<9
+	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+	// Support: IE<10
+	// Check if getElementById returns elements by name
+	// The broken getElementById methods don't pick up programmatically-set names,
+	// so use a roundabout getElementsByName test
+	support.getById = assert(function( el ) {
+		docElem.appendChild( el ).id = expando;
+		return !document.getElementsByName || !document.getElementsByName( expando ).length;
+	});
+
+	// ID filter and find
+	if ( support.getById ) {
+		Expr.filter["ID"] = function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				return elem.getAttribute("id") === attrId;
+			};
+		};
+		Expr.find["ID"] = function( id, context ) {
+			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+				var elem = context.getElementById( id );
+				return elem ? [ elem ] : [];
+			}
+		};
+	} else {
+		Expr.filter["ID"] =  function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				var node = typeof elem.getAttributeNode !== "undefined" &&
+					elem.getAttributeNode("id");
+				return node && node.value === attrId;
+			};
+		};
+
+		// Support: IE 6 - 7 only
+		// getElementById is not reliable as a find shortcut
+		Expr.find["ID"] = function( id, context ) {
+			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+				var node, i, elems,
+					elem = context.getElementById( id );
+
+				if ( elem ) {
+
+					// Verify the id attribute
+					node = elem.getAttributeNode("id");
+					if ( node && node.value === id ) {
+						return [ elem ];
+					}
+
+					// Fall back on getElementsByName
+					elems = context.getElementsByName( id );
+					i = 0;
+					while ( (elem = elems[i++]) ) {
+						node = elem.getAttributeNode("id");
+						if ( node && node.value === id ) {
+							return [ elem ];
+						}
+					}
+				}
+
+				return [];
+			}
+		};
+	}
+
+	// Tag
+	Expr.find["TAG"] = support.getElementsByTagName ?
+		function( tag, context ) {
+			if ( typeof context.getElementsByTagName !== "undefined" ) {
+				return context.getElementsByTagName( tag );
+
+			// DocumentFragment nodes don't have gEBTN
+			} else if ( support.qsa ) {
+				return context.querySelectorAll( tag );
+			}
+		} :
+
+		function( tag, context ) {
+			var elem,
+				tmp = [],
+				i = 0,
+				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+				results = context.getElementsByTagName( tag );
+
+			// Filter out possible comments
+			if ( tag === "*" ) {
+				while ( (elem = results[i++]) ) {
+					if ( elem.nodeType === 1 ) {
+						tmp.push( elem );
+					}
+				}
+
+				return tmp;
+			}
+			return results;
+		};
+
+	// Class
+	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+			return context.getElementsByClassName( className );
+		}
+	};
+
+	/* QSA/matchesSelector
+	---------------------------------------------------------------------- */
+
+	// QSA and matchesSelector support
+
+	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+	rbuggyMatches = [];
+
+	// qSa(:focus) reports false when true (Chrome 21)
+	// We allow this because of a bug in IE8/9 that throws an error
+	// whenever `document.activeElement` is accessed on an iframe
+	// So, we allow :focus to pass through QSA all the time to avoid the IE error
+	// See https://bugs.jquery.com/ticket/13378
+	rbuggyQSA = [];
+
+	if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+		// Build QSA regex
+		// Regex strategy adopted from Diego Perini
+		assert(function( el ) {
+			// Select is set to empty string on purpose
+			// This is to test IE's treatment of not explicitly
+			// setting a boolean content attribute,
+			// since its presence should be enough
+			// https://bugs.jquery.com/ticket/12359
+			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
+				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
+				"<option selected=''></option></select>";
+
+			// Support: IE8, Opera 11-12.16
+			// Nothing should be selected when empty strings follow ^= or $= or *=
+			// The test attribute must be unknown in Opera but "safe" for WinRT
+			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+			if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+			}
+
+			// Support: IE8
+			// Boolean attributes and "value" are not treated correctly
+			if ( !el.querySelectorAll("[selected]").length ) {
+				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+			}
+
+			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+				rbuggyQSA.push("~=");
+			}
+
+			// Webkit/Opera - :checked should return selected option elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			// IE8 throws error here and will not see later tests
+			if ( !el.querySelectorAll(":checked").length ) {
+				rbuggyQSA.push(":checked");
+			}
+
+			// Support: Safari 8+, iOS 8+
+			// https://bugs.webkit.org/show_bug.cgi?id=136851
+			// In-page `selector#id sibling-combinator selector` fails
+			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+				rbuggyQSA.push(".#.+[+~]");
+			}
+		});
+
+		assert(function( el ) {
+			el.innerHTML = "<a href='' disabled='disabled'></a>" +
+				"<select disabled='disabled'><option/></select>";
+
+			// Support: Windows 8 Native Apps
+			// The type and name attributes are restricted during .innerHTML assignment
+			var input = document.createElement("input");
+			input.setAttribute( "type", "hidden" );
+			el.appendChild( input ).setAttribute( "name", "D" );
+
+			// Support: IE8
+			// Enforce case-sensitivity of name attribute
+			if ( el.querySelectorAll("[name=d]").length ) {
+				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+			}
+
+			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+			// IE8 throws error here and will not see later tests
+			if ( el.querySelectorAll(":enabled").length !== 2 ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Support: IE9-11+
+			// IE's :disabled selector does not pick up the children of disabled fieldsets
+			docElem.appendChild( el ).disabled = true;
+			if ( el.querySelectorAll(":disabled").length !== 2 ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Opera 10-11 does not throw on post-comma invalid pseudos
+			el.querySelectorAll("*,:x");
+			rbuggyQSA.push(",.*:");
+		});
+	}
+
+	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+		docElem.webkitMatchesSelector ||
+		docElem.mozMatchesSelector ||
+		docElem.oMatchesSelector ||
+		docElem.msMatchesSelector) )) ) {
+
+		assert(function( el ) {
+			// Check to see if it's possible to do matchesSelector
+			// on a disconnected node (IE 9)
+			support.disconnectedMatch = matches.call( el, "*" );
+
+			// This should fail with an exception
+			// Gecko does not error, returns false instead
+			matches.call( el, "[s!='']:x" );
+			rbuggyMatches.push( "!=", pseudos );
+		});
+	}
+
+	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+	/* Contains
+	---------------------------------------------------------------------- */
+	hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+	// Element contains another
+	// Purposefully self-exclusive
+	// As in, an element does not contain itself
+	contains = hasCompare || rnative.test( docElem.contains ) ?
+		function( a, b ) {
+			var adown = a.nodeType === 9 ? a.documentElement : a,
+				bup = b && b.parentNode;
+			return a === bup || !!( bup && bup.nodeType === 1 && (
+				adown.contains ?
+					adown.contains( bup ) :
+					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+			));
+		} :
+		function( a, b ) {
+			if ( b ) {
+				while ( (b = b.parentNode) ) {
+					if ( b === a ) {
+						return true;
+					}
+				}
+			}
+			return false;
+		};
+
+	/* Sorting
+	---------------------------------------------------------------------- */
+
+	// Document order sorting
+	sortOrder = hasCompare ?
+	function( a, b ) {
+
+		// Flag for duplicate removal
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		// Sort on method existence if only one input has compareDocumentPosition
+		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+		if ( compare ) {
+			return compare;
+		}
+
+		// Calculate position if both inputs belong to the same document
+		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+			a.compareDocumentPosition( b ) :
+
+			// Otherwise we know they are disconnected
+			1;
+
+		// Disconnected nodes
+		if ( compare & 1 ||
+			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+			// Choose the first element that is related to our preferred document
+			if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+				return -1;
+			}
+			if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+				return 1;
+			}
+
+			// Maintain original order
+			return sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+		}
+
+		return compare & 4 ? -1 : 1;
+	} :
+	function( a, b ) {
+		// Exit early if the nodes are identical
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		var cur,
+			i = 0,
+			aup = a.parentNode,
+			bup = b.parentNode,
+			ap = [ a ],
+			bp = [ b ];
+
+		// Parentless nodes are either documents or disconnected
+		if ( !aup || !bup ) {
+			return a === document ? -1 :
+				b === document ? 1 :
+				aup ? -1 :
+				bup ? 1 :
+				sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+
+		// If the nodes are siblings, we can do a quick check
+		} else if ( aup === bup ) {
+			return siblingCheck( a, b );
+		}
+
+		// Otherwise we need full lists of their ancestors for comparison
+		cur = a;
+		while ( (cur = cur.parentNode) ) {
+			ap.unshift( cur );
+		}
+		cur = b;
+		while ( (cur = cur.parentNode) ) {
+			bp.unshift( cur );
+		}
+
+		// Walk down the tree looking for a discrepancy
+		while ( ap[i] === bp[i] ) {
+			i++;
+		}
+
+		return i ?
+			// Do a sibling check if the nodes have a common ancestor
+			siblingCheck( ap[i], bp[i] ) :
+
+			// Otherwise nodes in our document sort first
+			ap[i] === preferredDoc ? -1 :
+			bp[i] === preferredDoc ? 1 :
+			0;
+	};
+
+	return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+	return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	// Make sure that attribute selectors are quoted
+	expr = expr.replace( rattributeQuotes, "='$1']" );
+
+	if ( support.matchesSelector && documentIsHTML &&
+		!compilerCache[ expr + " " ] &&
+		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+		try {
+			var ret = matches.call( elem, expr );
+
+			// IE 9's matchesSelector returns false on disconnected nodes
+			if ( ret || support.disconnectedMatch ||
+					// As well, disconnected nodes are said to be in a document
+					// fragment in IE 9
+					elem.document && elem.document.nodeType !== 11 ) {
+				return ret;
+			}
+		} catch (e) {}
+	}
+
+	return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+	// Set document vars if needed
+	if ( ( context.ownerDocument || context ) !== document ) {
+		setDocument( context );
+	}
+	return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	var fn = Expr.attrHandle[ name.toLowerCase() ],
+		// Don't get fooled by Object.prototype properties (jQuery #13807)
+		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+			fn( elem, name, !documentIsHTML ) :
+			undefined;
+
+	return val !== undefined ?
+		val :
+		support.attributes || !documentIsHTML ?
+			elem.getAttribute( name ) :
+			(val = elem.getAttributeNode(name)) && val.specified ?
+				val.value :
+				null;
+};
+
+Sizzle.escape = function( sel ) {
+	return (sel + "").replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+	throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+	var elem,
+		duplicates = [],
+		j = 0,
+		i = 0;
+
+	// Unless we *know* we can detect duplicates, assume their presence
+	hasDuplicate = !support.detectDuplicates;
+	sortInput = !support.sortStable && results.slice( 0 );
+	results.sort( sortOrder );
+
+	if ( hasDuplicate ) {
+		while ( (elem = results[i++]) ) {
+			if ( elem === results[ i ] ) {
+				j = duplicates.push( i );
+			}
+		}
+		while ( j-- ) {
+			results.splice( duplicates[ j ], 1 );
+		}
+	}
+
+	// Clear input after sorting to release objects
+	// See https://github.com/jquery/sizzle/pull/225
+	sortInput = null;
+
+	return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+	var node,
+		ret = "",
+		i = 0,
+		nodeType = elem.nodeType;
+
+	if ( !nodeType ) {
+		// If no nodeType, this is expected to be an array
+		while ( (node = elem[i++]) ) {
+			// Do not traverse comment nodes
+			ret += getText( node );
+		}
+	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+		// Use textContent for elements
+		// innerText usage removed for consistency of new lines (jQuery #11153)
+		if ( typeof elem.textContent === "string" ) {
+			return elem.textContent;
+		} else {
+			// Traverse its children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				ret += getText( elem );
+			}
+		}
+	} else if ( nodeType === 3 || nodeType === 4 ) {
+		return elem.nodeValue;
+	}
+	// Do not include comment or processing instruction nodes
+
+	return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+	// Can be adjusted by the user
+	cacheLength: 50,
+
+	createPseudo: markFunction,
+
+	match: matchExpr,
+
+	attrHandle: {},
+
+	find: {},
+
+	relative: {
+		">": { dir: "parentNode", first: true },
+		" ": { dir: "parentNode" },
+		"+": { dir: "previousSibling", first: true },
+		"~": { dir: "previousSibling" }
+	},
+
+	preFilter: {
+		"ATTR": function( match ) {
+			match[1] = match[1].replace( runescape, funescape );
+
+			// Move the given value to match[3] whether quoted or unquoted
+			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+			if ( match[2] === "~=" ) {
+				match[3] = " " + match[3] + " ";
+			}
+
+			return match.slice( 0, 4 );
+		},
+
+		"CHILD": function( match ) {
+			/* matches from matchExpr["CHILD"]
+				1 type (only|nth|...)
+				2 what (child|of-type)
+				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+				4 xn-component of xn+y argument ([+-]?\d*n|)
+				5 sign of xn-component
+				6 x of xn-component
+				7 sign of y-component
+				8 y of y-component
+			*/
+			match[1] = match[1].toLowerCase();
+
+			if ( match[1].slice( 0, 3 ) === "nth" ) {
+				// nth-* requires argument
+				if ( !match[3] ) {
+					Sizzle.error( match[0] );
+				}
+
+				// numeric x and y parameters for Expr.filter.CHILD
+				// remember that false/true cast respectively to 0/1
+				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+			// other types prohibit arguments
+			} else if ( match[3] ) {
+				Sizzle.error( match[0] );
+			}
+
+			return match;
+		},
+
+		"PSEUDO": function( match ) {
+			var excess,
+				unquoted = !match[6] && match[2];
+
+			if ( matchExpr["CHILD"].test( match[0] ) ) {
+				return null;
+			}
+
+			// Accept quoted arguments as-is
+			if ( match[3] ) {
+				match[2] = match[4] || match[5] || "";
+
+			// Strip excess characters from unquoted arguments
+			} else if ( unquoted && rpseudo.test( unquoted ) &&
+				// Get excess from tokenize (recursively)
+				(excess = tokenize( unquoted, true )) &&
+				// advance to the next closing parenthesis
+				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+				// excess is a negative index
+				match[0] = match[0].slice( 0, excess );
+				match[2] = unquoted.slice( 0, excess );
+			}
+
+			// Return only captures needed by the pseudo filter method (type and argument)
+			return match.slice( 0, 3 );
+		}
+	},
+
+	filter: {
+
+		"TAG": function( nodeNameSelector ) {
+			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+			return nodeNameSelector === "*" ?
+				function() { return true; } :
+				function( elem ) {
+					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+				};
+		},
+
+		"CLASS": function( className ) {
+			var pattern = classCache[ className + " " ];
+
+			return pattern ||
+				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+				classCache( className, function( elem ) {
+					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+				});
+		},
+
+		"ATTR": function( name, operator, check ) {
+			return function( elem ) {
+				var result = Sizzle.attr( elem, name );
+
+				if ( result == null ) {
+					return operator === "!=";
+				}
+				if ( !operator ) {
+					return true;
+				}
+
+				result += "";
+
+				return operator === "=" ? result === check :
+					operator === "!=" ? result !== check :
+					operator === "^=" ? check && result.indexOf( check ) === 0 :
+					operator === "*=" ? check && result.indexOf( check ) > -1 :
+					operator === "$=" ? check && result.slice( -check.length ) === check :
+					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+					false;
+			};
+		},
+
+		"CHILD": function( type, what, argument, first, last ) {
+			var simple = type.slice( 0, 3 ) !== "nth",
+				forward = type.slice( -4 ) !== "last",
+				ofType = what === "of-type";
+
+			return first === 1 && last === 0 ?
+
+				// Shortcut for :nth-*(n)
+				function( elem ) {
+					return !!elem.parentNode;
+				} :
+
+				function( elem, context, xml ) {
+					var cache, uniqueCache, outerCache, node, nodeIndex, start,
+						dir = simple !== forward ? "nextSibling" : "previousSibling",
+						parent = elem.parentNode,
+						name = ofType && elem.nodeName.toLowerCase(),
+						useCache = !xml && !ofType,
+						diff = false;
+
+					if ( parent ) {
+
+						// :(first|last|only)-(child|of-type)
+						if ( simple ) {
+							while ( dir ) {
+								node = elem;
+								while ( (node = node[ dir ]) ) {
+									if ( ofType ?
+										node.nodeName.toLowerCase() === name :
+										node.nodeType === 1 ) {
+
+										return false;
+									}
+								}
+								// Reverse direction for :only-* (if we haven't yet done so)
+								start = dir = type === "only" && !start && "nextSibling";
+							}
+							return true;
+						}
+
+						start = [ forward ? parent.firstChild : parent.lastChild ];
+
+						// non-xml :nth-child(...) stores cache data on `parent`
+						if ( forward && useCache ) {
+
+							// Seek `elem` from a previously-cached index
+
+							// ...in a gzip-friendly way
+							node = parent;
+							outerCache = node[ expando ] || (node[ expando ] = {});
+
+							// Support: IE <9 only
+							// Defend against cloned attroperties (jQuery gh-1709)
+							uniqueCache = outerCache[ node.uniqueID ] ||
+								(outerCache[ node.uniqueID ] = {});
+
+							cache = uniqueCache[ type ] || [];
+							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+							diff = nodeIndex && cache[ 2 ];
+							node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+								// Fallback to seeking `elem` from the start
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								// When found, cache indexes on `parent` and break
+								if ( node.nodeType === 1 && ++diff && node === elem ) {
+									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+									break;
+								}
+							}
+
+						} else {
+							// Use previously-cached element index if available
+							if ( useCache ) {
+								// ...in a gzip-friendly way
+								node = elem;
+								outerCache = node[ expando ] || (node[ expando ] = {});
+
+								// Support: IE <9 only
+								// Defend against cloned attroperties (jQuery gh-1709)
+								uniqueCache = outerCache[ node.uniqueID ] ||
+									(outerCache[ node.uniqueID ] = {});
+
+								cache = uniqueCache[ type ] || [];
+								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+								diff = nodeIndex;
+							}
+
+							// xml :nth-child(...)
+							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
+							if ( diff === false ) {
+								// Use the same loop as above to seek `elem` from the start
+								while ( (node = ++nodeIndex && node && node[ dir ] ||
+									(diff = nodeIndex = 0) || start.pop()) ) {
+
+									if ( ( ofType ?
+										node.nodeName.toLowerCase() === name :
+										node.nodeType === 1 ) &&
+										++diff ) {
+
+										// Cache the index of each encountered element
+										if ( useCache ) {
+											outerCache = node[ expando ] || (node[ expando ] = {});
+
+											// Support: IE <9 only
+											// Defend against cloned attroperties (jQuery gh-1709)
+											uniqueCache = outerCache[ node.uniqueID ] ||
+												(outerCache[ node.uniqueID ] = {});
+
+											uniqueCache[ type ] = [ dirruns, diff ];
+										}
+
+										if ( node === elem ) {
+											break;
+										}
+									}
+								}
+							}
+						}
+
+						// Incorporate the offset, then check against cycle size
+						diff -= last;
+						return diff === first || ( diff % first === 0 && diff / first >= 0 );
+					}
+				};
+		},
+
+		"PSEUDO": function( pseudo, argument ) {
+			// pseudo-class names are case-insensitive
+			// http://www.w3.org/TR/selectors/#pseudo-classes
+			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+			// Remember that setFilters inherits from pseudos
+			var args,
+				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+					Sizzle.error( "unsupported pseudo: " + pseudo );
+
+			// The user may use createPseudo to indicate that
+			// arguments are needed to create the filter function
+			// just as Sizzle does
+			if ( fn[ expando ] ) {
+				return fn( argument );
+			}
+
+			// But maintain support for old signatures
+			if ( fn.length > 1 ) {
+				args = [ pseudo, pseudo, "", argument ];
+				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+					markFunction(function( seed, matches ) {
+						var idx,
+							matched = fn( seed, argument ),
+							i = matched.length;
+						while ( i-- ) {
+							idx = indexOf( seed, matched[i] );
+							seed[ idx ] = !( matches[ idx ] = matched[i] );
+						}
+					}) :
+					function( elem ) {
+						return fn( elem, 0, args );
+					};
+			}
+
+			return fn;
+		}
+	},
+
+	pseudos: {
+		// Potentially complex pseudos
+		"not": markFunction(function( selector ) {
+			// Trim the selector passed to compile
+			// to avoid treating leading and trailing
+			// spaces as combinators
+			var input = [],
+				results = [],
+				matcher = compile( selector.replace( rtrim, "$1" ) );
+
+			return matcher[ expando ] ?
+				markFunction(function( seed, matches, context, xml ) {
+					var elem,
+						unmatched = matcher( seed, null, xml, [] ),
+						i = seed.length;
+
+					// Match elements unmatched by `matcher`
+					while ( i-- ) {
+						if ( (elem = unmatched[i]) ) {
+							seed[i] = !(matches[i] = elem);
+						}
+					}
+				}) :
+				function( elem, context, xml ) {
+					input[0] = elem;
+					matcher( input, null, xml, results );
+					// Don't keep the element (issue #299)
+					input[0] = null;
+					return !results.pop();
+				};
+		}),
+
+		"has": markFunction(function( selector ) {
+			return function( elem ) {
+				return Sizzle( selector, elem ).length > 0;
+			};
+		}),
+
+		"contains": markFunction(function( text ) {
+			text = text.replace( runescape, funescape );
+			return function( elem ) {
+				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+			};
+		}),
+
+		// "Whether an element is represented by a :lang() selector
+		// is based solely on the element's language value
+		// being equal to the identifier C,
+		// or beginning with the identifier C immediately followed by "-".
+		// The matching of C against the element's language value is performed case-insensitively.
+		// The identifier C does not have to be a valid language name."
+		// http://www.w3.org/TR/selectors/#lang-pseudo
+		"lang": markFunction( function( lang ) {
+			// lang value must be a valid identifier
+			if ( !ridentifier.test(lang || "") ) {
+				Sizzle.error( "unsupported lang: " + lang );
+			}
+			lang = lang.replace( runescape, funescape ).toLowerCase();
+			return function( elem ) {
+				var elemLang;
+				do {
+					if ( (elemLang = documentIsHTML ?
+						elem.lang :
+						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+						elemLang = elemLang.toLowerCase();
+						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+					}
+				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+				return false;
+			};
+		}),
+
+		// Miscellaneous
+		"target": function( elem ) {
+			var hash = window.location && window.location.hash;
+			return hash && hash.slice( 1 ) === elem.id;
+		},
+
+		"root": function( elem ) {
+			return elem === docElem;
+		},
+
+		"focus": function( elem ) {
+			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+		},
+
+		// Boolean properties
+		"enabled": createDisabledPseudo( false ),
+		"disabled": createDisabledPseudo( true ),
+
+		"checked": function( elem ) {
+			// In CSS3, :checked should return both checked and selected elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			var nodeName = elem.nodeName.toLowerCase();
+			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+		},
+
+		"selected": function( elem ) {
+			// Accessing this property makes selected-by-default
+			// options in Safari work properly
+			if ( elem.parentNode ) {
+				elem.parentNode.selectedIndex;
+			}
+
+			return elem.selected === true;
+		},
+
+		// Contents
+		"empty": function( elem ) {
+			// http://www.w3.org/TR/selectors/#empty-pseudo
+			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+			//   but not by others (comment: 8; processing instruction: 7; etc.)
+			// nodeType < 6 works because attributes (2) do not appear as children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				if ( elem.nodeType < 6 ) {
+					return false;
+				}
+			}
+			return true;
+		},
+
+		"parent": function( elem ) {
+			return !Expr.pseudos["empty"]( elem );
+		},
+
+		// Element/input types
+		"header": function( elem ) {
+			return rheader.test( elem.nodeName );
+		},
+
+		"input": function( elem ) {
+			return rinputs.test( elem.nodeName );
+		},
+
+		"button": function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return name === "input" && elem.type === "button" || name === "button";
+		},
+
+		"text": function( elem ) {
+			var attr;
+			return elem.nodeName.toLowerCase() === "input" &&
+				elem.type === "text" &&
+
+				// Support: IE<8
+				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+		},
+
+		// Position-in-collection
+		"first": createPositionalPseudo(function() {
+			return [ 0 ];
+		}),
+
+		"last": createPositionalPseudo(function( matchIndexes, length ) {
+			return [ length - 1 ];
+		}),
+
+		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			return [ argument < 0 ? argument + length : argument ];
+		}),
+
+		"even": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 0;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"odd": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 1;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; --i >= 0; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; ++i < length; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		})
+	}
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+	Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+	Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+	var matched, match, tokens, type,
+		soFar, groups, preFilters,
+		cached = tokenCache[ selector + " " ];
+
+	if ( cached ) {
+		return parseOnly ? 0 : cached.slice( 0 );
+	}
+
+	soFar = selector;
+	groups = [];
+	preFilters = Expr.preFilter;
+
+	while ( soFar ) {
+
+		// Comma and first run
+		if ( !matched || (match = rcomma.exec( soFar )) ) {
+			if ( match ) {
+				// Don't consume trailing commas as valid
+				soFar = soFar.slice( match[0].length ) || soFar;
+			}
+			groups.push( (tokens = []) );
+		}
+
+		matched = false;
+
+		// Combinators
+		if ( (match = rcombinators.exec( soFar )) ) {
+			matched = match.shift();
+			tokens.push({
+				value: matched,
+				// Cast descendant combinators to space
+				type: match[0].replace( rtrim, " " )
+			});
+			soFar = soFar.slice( matched.length );
+		}
+
+		// Filters
+		for ( type in Expr.filter ) {
+			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+				(match = preFilters[ type ]( match ))) ) {
+				matched = match.shift();
+				tokens.push({
+					value: matched,
+					type: type,
+					matches: match
+				});
+				soFar = soFar.slice( matched.length );
+			}
+		}
+
+		if ( !matched ) {
+			break;
+		}
+	}
+
+	// Return the length of the invalid excess
+	// if we're just parsing
+	// Otherwise, throw an error or return tokens
+	return parseOnly ?
+		soFar.length :
+		soFar ?
+			Sizzle.error( selector ) :
+			// Cache the tokens
+			tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+	var i = 0,
+		len = tokens.length,
+		selector = "";
+	for ( ; i < len; i++ ) {
+		selector += tokens[i].value;
+	}
+	return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+	var dir = combinator.dir,
+		skip = combinator.next,
+		key = skip || dir,
+		checkNonElements = base && key === "parentNode",
+		doneName = done++;
+
+	return combinator.first ?
+		// Check against closest ancestor/preceding element
+		function( elem, context, xml ) {
+			while ( (elem = elem[ dir ]) ) {
+				if ( elem.nodeType === 1 || checkNonElements ) {
+					return matcher( elem, context, xml );
+				}
+			}
+			return false;
+		} :
+
+		// Check against all ancestor/preceding elements
+		function( elem, context, xml ) {
+			var oldCache, uniqueCache, outerCache,
+				newCache = [ dirruns, doneName ];
+
+			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+			if ( xml ) {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						if ( matcher( elem, context, xml ) ) {
+							return true;
+						}
+					}
+				}
+			} else {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+						// Support: IE <9 only
+						// Defend against cloned attroperties (jQuery gh-1709)
+						uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+						if ( skip && skip === elem.nodeName.toLowerCase() ) {
+							elem = elem[ dir ] || elem;
+						} else if ( (oldCache = uniqueCache[ key ]) &&
+							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+							// Assign to newCache so results back-propagate to previous elements
+							return (newCache[ 2 ] = oldCache[ 2 ]);
+						} else {
+							// Reuse newcache so results back-propagate to previous elements
+							uniqueCache[ key ] = newCache;
+
+							// A match means we're done; a fail means we have to keep checking
+							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+								return true;
+							}
+						}
+					}
+				}
+			}
+			return false;
+		};
+}
+
+function elementMatcher( matchers ) {
+	return matchers.length > 1 ?
+		function( elem, context, xml ) {
+			var i = matchers.length;
+			while ( i-- ) {
+				if ( !matchers[i]( elem, context, xml ) ) {
+					return false;
+				}
+			}
+			return true;
+		} :
+		matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+	var i = 0,
+		len = contexts.length;
+	for ( ; i < len; i++ ) {
+		Sizzle( selector, contexts[i], results );
+	}
+	return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+	var elem,
+		newUnmatched = [],
+		i = 0,
+		len = unmatched.length,
+		mapped = map != null;
+
+	for ( ; i < len; i++ ) {
+		if ( (elem = unmatched[i]) ) {
+			if ( !filter || filter( elem, context, xml ) ) {
+				newUnmatched.push( elem );
+				if ( mapped ) {
+					map.push( i );
+				}
+			}
+		}
+	}
+
+	return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+	if ( postFilter && !postFilter[ expando ] ) {
+		postFilter = setMatcher( postFilter );
+	}
+	if ( postFinder && !postFinder[ expando ] ) {
+		postFinder = setMatcher( postFinder, postSelector );
+	}
+	return markFunction(function( seed, results, context, xml ) {
+		var temp, i, elem,
+			preMap = [],
+			postMap = [],
+			preexisting = results.length,
+
+			// Get initial elements from seed or context
+			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+			// Prefilter to get matcher input, preserving a map for seed-results synchronization
+			matcherIn = preFilter && ( seed || !selector ) ?
+				condense( elems, preMap, preFilter, context, xml ) :
+				elems,
+
+			matcherOut = matcher ?
+				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+					// ...intermediate processing is necessary
+					[] :
+
+					// ...otherwise use results directly
+					results :
+				matcherIn;
+
+		// Find primary matches
+		if ( matcher ) {
+			matcher( matcherIn, matcherOut, context, xml );
+		}
+
+		// Apply postFilter
+		if ( postFilter ) {
+			temp = condense( matcherOut, postMap );
+			postFilter( temp, [], context, xml );
+
+			// Un-match failing elements by moving them back to matcherIn
+			i = temp.length;
+			while ( i-- ) {
+				if ( (elem = temp[i]) ) {
+					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+				}
+			}
+		}
+
+		if ( seed ) {
+			if ( postFinder || preFilter ) {
+				if ( postFinder ) {
+					// Get the final matcherOut by condensing this intermediate into postFinder contexts
+					temp = [];
+					i = matcherOut.length;
+					while ( i-- ) {
+						if ( (elem = matcherOut[i]) ) {
+							// Restore matcherIn since elem is not yet a final match
+							temp.push( (matcherIn[i] = elem) );
+						}
+					}
+					postFinder( null, (matcherOut = []), temp, xml );
+				}
+
+				// Move matched elements from seed to results to keep them synchronized
+				i = matcherOut.length;
+				while ( i-- ) {
+					if ( (elem = matcherOut[i]) &&
+						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+						seed[temp] = !(results[temp] = elem);
+					}
+				}
+			}
+
+		// Add elements to results, through postFinder if defined
+		} else {
+			matcherOut = condense(
+				matcherOut === results ?
+					matcherOut.splice( preexisting, matcherOut.length ) :
+					matcherOut
+			);
+			if ( postFinder ) {
+				postFinder( null, results, matcherOut, xml );
+			} else {
+				push.apply( results, matcherOut );
+			}
+		}
+	});
+}
+
+function matcherFromTokens( tokens ) {
+	var checkContext, matcher, j,
+		len = tokens.length,
+		leadingRelative = Expr.relative[ tokens[0].type ],
+		implicitRelative = leadingRelative || Expr.relative[" "],
+		i = leadingRelative ? 1 : 0,
+
+		// The foundational matcher ensures that elements are reachable from top-level context(s)
+		matchContext = addCombinator( function( elem ) {
+			return elem === checkContext;
+		}, implicitRelative, true ),
+		matchAnyContext = addCombinator( function( elem ) {
+			return indexOf( checkContext, elem ) > -1;
+		}, implicitRelative, true ),
+		matchers = [ function( elem, context, xml ) {
+			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+				(checkContext = context).nodeType ?
+					matchContext( elem, context, xml ) :
+					matchAnyContext( elem, context, xml ) );
+			// Avoid hanging onto element (issue #299)
+			checkContext = null;
+			return ret;
+		} ];
+
+	for ( ; i < len; i++ ) {
+		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+		} else {
+			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+			// Return special upon seeing a positional matcher
+			if ( matcher[ expando ] ) {
+				// Find the next relative operator (if any) for proper handling
+				j = ++i;
+				for ( ; j < len; j++ ) {
+					if ( Expr.relative[ tokens[j].type ] ) {
+						break;
+					}
+				}
+				return setMatcher(
+					i > 1 && elementMatcher( matchers ),
+					i > 1 && toSelector(
+						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
+						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+					).replace( rtrim, "$1" ),
+					matcher,
+					i < j && matcherFromTokens( tokens.slice( i, j ) ),
+					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+					j < len && toSelector( tokens )
+				);
+			}
+			matchers.push( matcher );
+		}
+	}
+
+	return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+	var bySet = setMatchers.length > 0,
+		byElement = elementMatchers.length > 0,
+		superMatcher = function( seed, context, xml, results, outermost ) {
+			var elem, j, matcher,
+				matchedCount = 0,
+				i = "0",
+				unmatched = seed && [],
+				setMatched = [],
+				contextBackup = outermostContext,
+				// We must always have either seed elements or outermost context
+				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+				// Use integer dirruns iff this is the outermost matcher
+				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+				len = elems.length;
+
+			if ( outermost ) {
+				outermostContext = context === document || context || outermost;
+			}
+
+			// Add elements passing elementMatchers directly to results
+			// Support: IE<9, Safari
+			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+				if ( byElement && elem ) {
+					j = 0;
+					if ( !context && elem.ownerDocument !== document ) {
+						setDocument( elem );
+						xml = !documentIsHTML;
+					}
+					while ( (matcher = elementMatchers[j++]) ) {
+						if ( matcher( elem, context || document, xml) ) {
+							results.push( elem );
+							break;
+						}
+					}
+					if ( outermost ) {
+						dirruns = dirrunsUnique;
+					}
+				}
+
+				// Track unmatched elements for set filters
+				if ( bySet ) {
+					// They will have gone through all possible matchers
+					if ( (elem = !matcher && elem) ) {
+						matchedCount--;
+					}
+
+					// Lengthen the array for every element, matched or not
+					if ( seed ) {
+						unmatched.push( elem );
+					}
+				}
+			}
+
+			// `i` is now the count of elements visited above, and adding it to `matchedCount`
+			// makes the latter nonnegative.
+			matchedCount += i;
+
+			// Apply set filters to unmatched elements
+			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+			// no element matchers and no seed.
+			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
+			// numerically zero.
+			if ( bySet && i !== matchedCount ) {
+				j = 0;
+				while ( (matcher = setMatchers[j++]) ) {
+					matcher( unmatched, setMatched, context, xml );
+				}
+
+				if ( seed ) {
+					// Reintegrate element matches to eliminate the need for sorting
+					if ( matchedCount > 0 ) {
+						while ( i-- ) {
+							if ( !(unmatched[i] || setMatched[i]) ) {
+								setMatched[i] = pop.call( results );
+							}
+						}
+					}
+
+					// Discard index placeholder values to get only actual matches
+					setMatched = condense( setMatched );
+				}
+
+				// Add matches to results
+				push.apply( results, setMatched );
+
+				// Seedless set matches succeeding multiple successful matchers stipulate sorting
+				if ( outermost && !seed && setMatched.length > 0 &&
+					( matchedCount + setMatchers.length ) > 1 ) {
+
+					Sizzle.uniqueSort( results );
+				}
+			}
+
+			// Override manipulation of globals by nested matchers
+			if ( outermost ) {
+				dirruns = dirrunsUnique;
+				outermostContext = contextBackup;
+			}
+
+			return unmatched;
+		};
+
+	return bySet ?
+		markFunction( superMatcher ) :
+		superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+	var i,
+		setMatchers = [],
+		elementMatchers = [],
+		cached = compilerCache[ selector + " " ];
+
+	if ( !cached ) {
+		// Generate a function of recursive functions that can be used to check each element
+		if ( !match ) {
+			match = tokenize( selector );
+		}
+		i = match.length;
+		while ( i-- ) {
+			cached = matcherFromTokens( match[i] );
+			if ( cached[ expando ] ) {
+				setMatchers.push( cached );
+			} else {
+				elementMatchers.push( cached );
+			}
+		}
+
+		// Cache the compiled function
+		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+		// Save selector and tokenization
+		cached.selector = selector;
+	}
+	return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+	var i, tokens, token, type, find,
+		compiled = typeof selector === "function" && selector,
+		match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+	results = results || [];
+
+	// Try to minimize operations if there is only one selector in the list and no seed
+	// (the latter of which guarantees us context)
+	if ( match.length === 1 ) {
+
+		// Reduce context if the leading compound selector is an ID
+		tokens = match[0] = match[0].slice( 0 );
+		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+				context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
+
+			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+			if ( !context ) {
+				return results;
+
+			// Precompiled matchers will still verify ancestry, so step up a level
+			} else if ( compiled ) {
+				context = context.parentNode;
+			}
+
+			selector = selector.slice( tokens.shift().value.length );
+		}
+
+		// Fetch a seed set for right-to-left matching
+		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+		while ( i-- ) {
+			token = tokens[i];
+
+			// Abort if we hit a combinator
+			if ( Expr.relative[ (type = token.type) ] ) {
+				break;
+			}
+			if ( (find = Expr.find[ type ]) ) {
+				// Search, expanding context for leading sibling combinators
+				if ( (seed = find(
+					token.matches[0].replace( runescape, funescape ),
+					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+				)) ) {
+
+					// If seed is empty or no tokens remain, we can return early
+					tokens.splice( i, 1 );
+					selector = seed.length && toSelector( tokens );
+					if ( !selector ) {
+						push.apply( results, seed );
+						return results;
+					}
+
+					break;
+				}
+			}
+		}
+	}
+
+	// Compile and execute a filtering function if one is not provided
+	// Provide `match` to avoid retokenization if we modified the selector above
+	( compiled || compile( selector, match ) )(
+		seed,
+		context,
+		!documentIsHTML,
+		results,
+		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+	);
+	return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( el ) {
+	// Should return 1, but returns 4 (following)
+	return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( el ) {
+	el.innerHTML = "<a href='#'></a>";
+	return el.firstChild.getAttribute("href") === "#" ;
+}) ) {
+	addHandle( "type|href|height|width", function( elem, name, isXML ) {
+		if ( !isXML ) {
+			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+		}
+	});
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( el ) {
+	el.innerHTML = "<input/>";
+	el.firstChild.setAttribute( "value", "" );
+	return el.firstChild.getAttribute( "value" ) === "";
+}) ) {
+	addHandle( "value", function( elem, name, isXML ) {
+		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+			return elem.defaultValue;
+		}
+	});
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( el ) {
+	return el.getAttribute("disabled") == null;
+}) ) {
+	addHandle( booleans, function( elem, name, isXML ) {
+		var val;
+		if ( !isXML ) {
+			return elem[ name ] === true ? name.toLowerCase() :
+					(val = elem.getAttributeNode( name )) && val.specified ?
+					val.value :
+				null;
+		}
+	});
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+
+
+
+var dir = function( elem, dir, until ) {
+	var matched = [],
+		truncate = until !== undefined;
+
+	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+		if ( elem.nodeType === 1 ) {
+			if ( truncate && jQuery( elem ).is( until ) ) {
+				break;
+			}
+			matched.push( elem );
+		}
+	}
+	return matched;
+};
+
+
+var siblings = function( n, elem ) {
+	var matched = [];
+
+	for ( ; n; n = n.nextSibling ) {
+		if ( n.nodeType === 1 && n !== elem ) {
+			matched.push( n );
+		}
+	}
+
+	return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+
+
+function nodeName( elem, name ) {
+
+  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+
+};
+var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+	if ( jQuery.isFunction( qualifier ) ) {
+		return jQuery.grep( elements, function( elem, i ) {
+			return !!qualifier.call( elem, i, elem ) !== not;
+		} );
+	}
+
+	// Single element
+	if ( qualifier.nodeType ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( elem === qualifier ) !== not;
+		} );
+	}
+
+	// Arraylike of elements (jQuery, arguments, Array)
+	if ( typeof qualifier !== "string" ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+		} );
+	}
+
+	// Simple selector that can be filtered directly, removing non-Elements
+	if ( risSimple.test( qualifier ) ) {
+		return jQuery.filter( qualifier, elements, not );
+	}
+
+	// Complex selector, compare the two sets, removing non-Elements
+	qualifier = jQuery.filter( qualifier, elements );
+	return jQuery.grep( elements, function( elem ) {
+		return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
+	} );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+	var elem = elems[ 0 ];
+
+	if ( not ) {
+		expr = ":not(" + expr + ")";
+	}
+
+	if ( elems.length === 1 && elem.nodeType === 1 ) {
+		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
+	}
+
+	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+		return elem.nodeType === 1;
+	} ) );
+};
+
+jQuery.fn.extend( {
+	find: function( selector ) {
+		var i, ret,
+			len = this.length,
+			self = this;
+
+		if ( typeof selector !== "string" ) {
+			return this.pushStack( jQuery( selector ).filter( function() {
+				for ( i = 0; i < len; i++ ) {
+					if ( jQuery.contains( self[ i ], this ) ) {
+						return true;
+					}
+				}
+			} ) );
+		}
+
+		ret = this.pushStack( [] );
+
+		for ( i = 0; i < len; i++ ) {
+			jQuery.find( selector, self[ i ], ret );
+		}
+
+		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+	},
+	filter: function( selector ) {
+		return this.pushStack( winnow( this, selector || [], false ) );
+	},
+	not: function( selector ) {
+		return this.pushStack( winnow( this, selector || [], true ) );
+	},
+	is: function( selector ) {
+		return !!winnow(
+			this,
+
+			// If this is a positional/relative selector, check membership in the returned set
+			// so $("p:first").is("p:last") won't return true for a doc with two "p".
+			typeof selector === "string" && rneedsContext.test( selector ) ?
+				jQuery( selector ) :
+				selector || [],
+			false
+		).length;
+	}
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+	// A simple way to check for HTML strings
+	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+	// Strict HTML recognition (#11290: must start with <)
+	// Shortcut simple #id case for speed
+	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+	init = jQuery.fn.init = function( selector, context, root ) {
+		var match, elem;
+
+		// HANDLE: $(""), $(null), $(undefined), $(false)
+		if ( !selector ) {
+			return this;
+		}
+
+		// Method init() accepts an alternate rootjQuery
+		// so migrate can support jQuery.sub (gh-2101)
+		root = root || rootjQuery;
+
+		// Handle HTML strings
+		if ( typeof selector === "string" ) {
+			if ( selector[ 0 ] === "<" &&
+				selector[ selector.length - 1 ] === ">" &&
+				selector.length >= 3 ) {
+
+				// Assume that strings that start and end with <> are HTML and skip the regex check
+				match = [ null, selector, null ];
+
+			} else {
+				match = rquickExpr.exec( selector );
+			}
+
+			// Match html or make sure no context is specified for #id
+			if ( match && ( match[ 1 ] || !context ) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[ 1 ] ) {
+					context = context instanceof jQuery ? context[ 0 ] : context;
+
+					// Option to run scripts is true for back-compat
+					// Intentionally let the error be thrown if parseHTML is not present
+					jQuery.merge( this, jQuery.parseHTML(
+						match[ 1 ],
+						context && context.nodeType ? context.ownerDocument || context : document,
+						true
+					) );
+
+					// HANDLE: $(html, props)
+					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+						for ( match in context ) {
+
+							// Properties of context are called as methods if possible
+							if ( jQuery.isFunction( this[ match ] ) ) {
+								this[ match ]( context[ match ] );
+
+							// ...and otherwise set as attributes
+							} else {
+								this.attr( match, context[ match ] );
+							}
+						}
+					}
+
+					return this;
+
+				// HANDLE: $(#id)
+				} else {
+					elem = document.getElementById( match[ 2 ] );
+
+					if ( elem ) {
+
+						// Inject the element directly into the jQuery object
+						this[ 0 ] = elem;
+						this.length = 1;
+					}
+					return this;
+				}
+
+			// HANDLE: $(expr, $(...))
+			} else if ( !context || context.jquery ) {
+				return ( context || root ).find( selector );
+
+			// HANDLE: $(expr, context)
+			// (which is just equivalent to: $(context).find(expr)
+			} else {
+				return this.constructor( context ).find( selector );
+			}
+
+		// HANDLE: $(DOMElement)
+		} else if ( selector.nodeType ) {
+			this[ 0 ] = selector;
+			this.length = 1;
+			return this;
+
+		// HANDLE: $(function)
+		// Shortcut for document ready
+		} else if ( jQuery.isFunction( selector ) ) {
+			return root.ready !== undefined ?
+				root.ready( selector ) :
+
+				// Execute immediately if ready is not present
+				selector( jQuery );
+		}
+
+		return jQuery.makeArray( selector, this );
+	};
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+	// Methods guaranteed to produce a unique set when starting from a unique set
+	guaranteedUnique = {
+		children: true,
+		contents: true,
+		next: true,
+		prev: true
+	};
+
+jQuery.fn.extend( {
+	has: function( target ) {
+		var targets = jQuery( target, this ),
+			l = targets.length;
+
+		return this.filter( function() {
+			var i = 0;
+			for ( ; i < l; i++ ) {
+				if ( jQuery.contains( this, targets[ i ] ) ) {
+					return true;
+				}
+			}
+		} );
+	},
+
+	closest: function( selectors, context ) {
+		var cur,
+			i = 0,
+			l = this.length,
+			matched = [],
+			targets = typeof selectors !== "string" && jQuery( selectors );
+
+		// Positional selectors never match, since there's no _selection_ context
+		if ( !rneedsContext.test( selectors ) ) {
+			for ( ; i < l; i++ ) {
+				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+					// Always skip document fragments
+					if ( cur.nodeType < 11 && ( targets ?
+						targets.index( cur ) > -1 :
+
+						// Don't pass non-elements to Sizzle
+						cur.nodeType === 1 &&
+							jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+						matched.push( cur );
+						break;
+					}
+				}
+			}
+		}
+
+		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+	},
+
+	// Determine the position of an element within the set
+	index: function( elem ) {
+
+		// No argument, return index in parent
+		if ( !elem ) {
+			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+		}
+
+		// Index in selector
+		if ( typeof elem === "string" ) {
+			return indexOf.call( jQuery( elem ), this[ 0 ] );
+		}
+
+		// Locate the position of the desired element
+		return indexOf.call( this,
+
+			// If it receives a jQuery object, the first element is used
+			elem.jquery ? elem[ 0 ] : elem
+		);
+	},
+
+	add: function( selector, context ) {
+		return this.pushStack(
+			jQuery.uniqueSort(
+				jQuery.merge( this.get(), jQuery( selector, context ) )
+			)
+		);
+	},
+
+	addBack: function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	}
+} );
+
+function sibling( cur, dir ) {
+	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+	return cur;
+}
+
+jQuery.each( {
+	parent: function( elem ) {
+		var parent = elem.parentNode;
+		return parent && parent.nodeType !== 11 ? parent : null;
+	},
+	parents: function( elem ) {
+		return dir( elem, "parentNode" );
+	},
+	parentsUntil: function( elem, i, until ) {
+		return dir( elem, "parentNode", until );
+	},
+	next: function( elem ) {
+		return sibling( elem, "nextSibling" );
+	},
+	prev: function( elem ) {
+		return sibling( elem, "previousSibling" );
+	},
+	nextAll: function( elem ) {
+		return dir( elem, "nextSibling" );
+	},
+	prevAll: function( elem ) {
+		return dir( elem, "previousSibling" );
+	},
+	nextUntil: function( elem, i, until ) {
+		return dir( elem, "nextSibling", until );
+	},
+	prevUntil: function( elem, i, until ) {
+		return dir( elem, "previousSibling", until );
+	},
+	siblings: function( elem ) {
+		return siblings( ( elem.parentNode || {} ).firstChild, elem );
+	},
+	children: function( elem ) {
+		return siblings( elem.firstChild );
+	},
+	contents: function( elem ) {
+        if ( nodeName( elem, "iframe" ) ) {
+            return elem.contentDocument;
+        }
+
+        // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
+        // Treat the template element as a regular one in browsers that
+        // don't support it.
+        if ( nodeName( elem, "template" ) ) {
+            elem = elem.content || elem;
+        }
+
+        return jQuery.merge( [], elem.childNodes );
+	}
+}, function( name, fn ) {
+	jQuery.fn[ name ] = function( until, selector ) {
+		var matched = jQuery.map( this, fn, until );
+
+		if ( name.slice( -5 ) !== "Until" ) {
+			selector = until;
+		}
+
+		if ( selector && typeof selector === "string" ) {
+			matched = jQuery.filter( selector, matched );
+		}
+
+		if ( this.length > 1 ) {
+
+			// Remove duplicates
+			if ( !guaranteedUnique[ name ] ) {
+				jQuery.uniqueSort( matched );
+			}
+
+			// Reverse order for parents* and prev-derivatives
+			if ( rparentsprev.test( name ) ) {
+				matched.reverse();
+			}
+		}
+
+		return this.pushStack( matched );
+	};
+} );
+var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+	var object = {};
+	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
+		object[ flag ] = true;
+	} );
+	return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *	options: an optional list of space-separated options that will change how
+ *			the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *	once:			will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *	memory:			will keep track of previous values and will call any callback added
+ *					after the list has been fired right away with the latest "memorized"
+ *					values (like a Deferred)
+ *
+ *	unique:			will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *	stopOnFalse:	interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+	// Convert options from String-formatted to Object-formatted if needed
+	// (we check in cache first)
+	options = typeof options === "string" ?
+		createOptions( options ) :
+		jQuery.extend( {}, options );
+
+	var // Flag to know if list is currently firing
+		firing,
+
+		// Last fire value for non-forgettable lists
+		memory,
+
+		// Flag to know if list was already fired
+		fired,
+
+		// Flag to prevent firing
+		locked,
+
+		// Actual callback list
+		list = [],
+
+		// Queue of execution data for repeatable lists
+		queue = [],
+
+		// Index of currently firing callback (modified by add/remove as needed)
+		firingIndex = -1,
+
+		// Fire callbacks
+		fire = function() {
+
+			// Enforce single-firing
+			locked = locked || options.once;
+
+			// Execute callbacks for all pending executions,
+			// respecting firingIndex overrides and runtime changes
+			fired = firing = true;
+			for ( ; queue.length; firingIndex = -1 ) {
+				memory = queue.shift();
+				while ( ++firingIndex < list.length ) {
+
+					// Run callback and check for early termination
+					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+						options.stopOnFalse ) {
+
+						// Jump to end and forget the data so .add doesn't re-fire
+						firingIndex = list.length;
+						memory = false;
+					}
+				}
+			}
+
+			// Forget the data if we're done with it
+			if ( !options.memory ) {
+				memory = false;
+			}
+
+			firing = false;
+
+			// Clean up if we're done firing for good
+			if ( locked ) {
+
+				// Keep an empty list if we have data for future add calls
+				if ( memory ) {
+					list = [];
+
+				// Otherwise, this object is spent
+				} else {
+					list = "";
+				}
+			}
+		},
+
+		// Actual Callbacks object
+		self = {
+
+			// Add a callback or a collection of callbacks to the list
+			add: function() {
+				if ( list ) {
+
+					// If we have memory from a past run, we should fire after adding
+					if ( memory && !firing ) {
+						firingIndex = list.length - 1;
+						queue.push( memory );
+					}
+
+					( function add( args ) {
+						jQuery.each( args, function( _, arg ) {
+							if ( jQuery.isFunction( arg ) ) {
+								if ( !options.unique || !self.has( arg ) ) {
+									list.push( arg );
+								}
+							} else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
+
+								// Inspect recursively
+								add( arg );
+							}
+						} );
+					} )( arguments );
+
+					if ( memory && !firing ) {
+						fire();
+					}
+				}
+				return this;
+			},
+
+			// Remove a callback from the list
+			remove: function() {
+				jQuery.each( arguments, function( _, arg ) {
+					var index;
+					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+						list.splice( index, 1 );
+
+						// Handle firing indexes
+						if ( index <= firingIndex ) {
+							firingIndex--;
+						}
+					}
+				} );
+				return this;
+			},
+
+			// Check if a given callback is in the list.
+			// If no argument is given, return whether or not list has callbacks attached.
+			has: function( fn ) {
+				return fn ?
+					jQuery.inArray( fn, list ) > -1 :
+					list.length > 0;
+			},
+
+			// Remove all callbacks from the list
+			empty: function() {
+				if ( list ) {
+					list = [];
+				}
+				return this;
+			},
+
+			// Disable .fire and .add
+			// Abort any current/pending executions
+			// Clear all callbacks and values
+			disable: function() {
+				locked = queue = [];
+				list = memory = "";
+				return this;
+			},
+			disabled: function() {
+				return !list;
+			},
+
+			// Disable .fire
+			// Also disable .add unless we have memory (since it would have no effect)
+			// Abort any pending executions
+			lock: function() {
+				locked = queue = [];
+				if ( !memory && !firing ) {
+					list = memory = "";
+				}
+				return this;
+			},
+			locked: function() {
+				return !!locked;
+			},
+
+			// Call all callbacks with the given context and arguments
+			fireWith: function( context, args ) {
+				if ( !locked ) {
+					args = args || [];
+					args = [ context, args.slice ? args.slice() : args ];
+					queue.push( args );
+					if ( !firing ) {
+						fire();
+					}
+				}
+				return this;
+			},
+
+			// Call all the callbacks with the given arguments
+			fire: function() {
+				self.fireWith( this, arguments );
+				return this;
+			},
+
+			// To know if the callbacks have already been called at least once
+			fired: function() {
+				return !!fired;
+			}
+		};
+
+	return self;
+};
+
+
+function Identity( v ) {
+	return v;
+}
+function Thrower( ex ) {
+	throw ex;
+}
+
+function adoptValue( value, resolve, reject, noValue ) {
+	var method;
+
+	try {
+
+		// Check for promise aspect first to privilege synchronous behavior
+		if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
+			method.call( value ).done( resolve ).fail( reject );
+
+		// Other thenables
+		} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
+			method.call( value, resolve, reject );
+
+		// Other non-thenables
+		} else {
+
+			// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
+			// * false: [ value ].slice( 0 ) => resolve( value )
+			// * true: [ value ].slice( 1 ) => resolve()
+			resolve.apply( undefined, [ value ].slice( noValue ) );
+		}
+
+	// For Promises/A+, convert exceptions into rejections
+	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+	// Deferred#then to conditionally suppress rejection.
+	} catch ( value ) {
+
+		// Support: Android 4.0 only
+		// Strict mode functions invoked without .call/.apply get global-object context
+		reject.apply( undefined, [ value ] );
+	}
+}
+
+jQuery.extend( {
+
+	Deferred: function( func ) {
+		var tuples = [
+
+				// action, add listener, callbacks,
+				// ... .then handlers, argument index, [final state]
+				[ "notify", "progress", jQuery.Callbacks( "memory" ),
+					jQuery.Callbacks( "memory" ), 2 ],
+				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
+					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
+					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+			],
+			state = "pending",
+			promise = {
+				state: function() {
+					return state;
+				},
+				always: function() {
+					deferred.done( arguments ).fail( arguments );
+					return this;
+				},
+				"catch": function( fn ) {
+					return promise.then( null, fn );
+				},
+
+				// Keep pipe for back-compat
+				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+					var fns = arguments;
+
+					return jQuery.Deferred( function( newDefer ) {
+						jQuery.each( tuples, function( i, tuple ) {
+
+							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
+							var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+							// deferred.progress(function() { bind to newDefer or newDefer.notify })
+							// deferred.done(function() { bind to newDefer or newDefer.resolve })
+							// deferred.fail(function() { bind to newDefer or newDefer.reject })
+							deferred[ tuple[ 1 ] ]( function() {
+								var returned = fn && fn.apply( this, arguments );
+								if ( returned && jQuery.isFunction( returned.promise ) ) {
+									returned.promise()
+										.progress( newDefer.notify )
+										.done( newDefer.resolve )
+										.fail( newDefer.reject );
+								} else {
+									newDefer[ tuple[ 0 ] + "With" ](
+										this,
+										fn ? [ returned ] : arguments
+									);
+								}
+							} );
+						} );
+						fns = null;
+					} ).promise();
+				},
+				then: function( onFulfilled, onRejected, onProgress ) {
+					var maxDepth = 0;
+					function resolve( depth, deferred, handler, special ) {
+						return function() {
+							var that = this,
+								args = arguments,
+								mightThrow = function() {
+									var returned, then;
+
+									// Support: Promises/A+ section 2.3.3.3.3
+									// https://promisesaplus.com/#point-59
+									// Ignore double-resolution attempts
+									if ( depth < maxDepth ) {
+										return;
+									}
+
+									returned = handler.apply( that, args );
+
+									// Support: Promises/A+ section 2.3.1
+									// https://promisesaplus.com/#point-48
+									if ( returned === deferred.promise() ) {
+										throw new TypeError( "Thenable self-resolution" );
+									}
+
+									// Support: Promises/A+ sections 2.3.3.1, 3.5
+									// https://promisesaplus.com/#point-54
+									// https://promisesaplus.com/#point-75
+									// Retrieve `then` only once
+									then = returned &&
+
+										// Support: Promises/A+ section 2.3.4
+										// https://promisesaplus.com/#point-64
+										// Only check objects and functions for thenability
+										( typeof returned === "object" ||
+											typeof returned === "function" ) &&
+										returned.then;
+
+									// Handle a returned thenable
+									if ( jQuery.isFunction( then ) ) {
+
+										// Special processors (notify) just wait for resolution
+										if ( special ) {
+											then.call(
+												returned,
+												resolve( maxDepth, deferred, Identity, special ),
+												resolve( maxDepth, deferred, Thrower, special )
+											);
+
+										// Normal processors (resolve) also hook into progress
+										} else {
+
+											// ...and disregard older resolution values
+											maxDepth++;
+
+											then.call(
+												returned,
+												resolve( maxDepth, deferred, Identity, special ),
+												resolve( maxDepth, deferred, Thrower, special ),
+												resolve( maxDepth, deferred, Identity,
+													deferred.notifyWith )
+											);
+										}
+
+									// Handle all other returned values
+									} else {
+
+										// Only substitute handlers pass on context
+										// and multiple values (non-spec behavior)
+										if ( handler !== Identity ) {
+											that = undefined;
+											args = [ returned ];
+										}
+
+										// Process the value(s)
+										// Default process is resolve
+										( special || deferred.resolveWith )( that, args );
+									}
+								},
+
+								// Only normal processors (resolve) catch and reject exceptions
+								process = special ?
+									mightThrow :
+									function() {
+										try {
+											mightThrow();
+										} catch ( e ) {
+
+											if ( jQuery.Deferred.exceptionHook ) {
+												jQuery.Deferred.exceptionHook( e,
+													process.stackTrace );
+											}
+
+											// Support: Promises/A+ section 2.3.3.3.4.1
+											// https://promisesaplus.com/#point-61
+											// Ignore post-resolution exceptions
+											if ( depth + 1 >= maxDepth ) {
+
+												// Only substitute handlers pass on context
+												// and multiple values (non-spec behavior)
+												if ( handler !== Thrower ) {
+													that = undefined;
+													args = [ e ];
+												}
+
+												deferred.rejectWith( that, args );
+											}
+										}
+									};
+
+							// Support: Promises/A+ section 2.3.3.3.1
+							// https://promisesaplus.com/#point-57
+							// Re-resolve promises immediately to dodge false rejection from
+							// subsequent errors
+							if ( depth ) {
+								process();
+							} else {
+
+								// Call an optional hook to record the stack, in case of exception
+								// since it's otherwise lost when execution goes async
+								if ( jQuery.Deferred.getStackHook ) {
+									process.stackTrace = jQuery.Deferred.getStackHook();
+								}
+								window.setTimeout( process );
+							}
+						};
+					}
+
+					return jQuery.Deferred( function( newDefer ) {
+
+						// progress_handlers.add( ... )
+						tuples[ 0 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								jQuery.isFunction( onProgress ) ?
+									onProgress :
+									Identity,
+								newDefer.notifyWith
+							)
+						);
+
+						// fulfilled_handlers.add( ... )
+						tuples[ 1 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								jQuery.isFunction( onFulfilled ) ?
+									onFulfilled :
+									Identity
+							)
+						);
+
+						// rejected_handlers.add( ... )
+						tuples[ 2 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								jQuery.isFunction( onRejected ) ?
+									onRejected :
+									Thrower
+							)
+						);
+					} ).promise();
+				},
+
+				// Get a promise for this deferred
+				// If obj is provided, the promise aspect is added to the object
+				promise: function( obj ) {
+					return obj != null ? jQuery.extend( obj, promise ) : promise;
+				}
+			},
+			deferred = {};
+
+		// Add list-specific methods
+		jQuery.each( tuples, function( i, tuple ) {
+			var list = tuple[ 2 ],
+				stateString = tuple[ 5 ];
+
+			// promise.progress = list.add
+			// promise.done = list.add
+			// promise.fail = list.add
+			promise[ tuple[ 1 ] ] = list.add;
+
+			// Handle state
+			if ( stateString ) {
+				list.add(
+					function() {
+
+						// state = "resolved" (i.e., fulfilled)
+						// state = "rejected"
+						state = stateString;
+					},
+
+					// rejected_callbacks.disable
+					// fulfilled_callbacks.disable
+					tuples[ 3 - i ][ 2 ].disable,
+
+					// progress_callbacks.lock
+					tuples[ 0 ][ 2 ].lock
+				);
+			}
+
+			// progress_handlers.fire
+			// fulfilled_handlers.fire
+			// rejected_handlers.fire
+			list.add( tuple[ 3 ].fire );
+
+			// deferred.notify = function() { deferred.notifyWith(...) }
+			// deferred.resolve = function() { deferred.resolveWith(...) }
+			// deferred.reject = function() { deferred.rejectWith(...) }
+			deferred[ tuple[ 0 ] ] = function() {
+				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+				return this;
+			};
+
+			// deferred.notifyWith = list.fireWith
+			// deferred.resolveWith = list.fireWith
+			// deferred.rejectWith = list.fireWith
+			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+		} );
+
+		// Make the deferred a promise
+		promise.promise( deferred );
+
+		// Call given func if any
+		if ( func ) {
+			func.call( deferred, deferred );
+		}
+
+		// All done!
+		return deferred;
+	},
+
+	// Deferred helper
+	when: function( singleValue ) {
+		var
+
+			// count of uncompleted subordinates
+			remaining = arguments.length,
+
+			// count of unprocessed arguments
+			i = remaining,
+
+			// subordinate fulfillment data
+			resolveContexts = Array( i ),
+			resolveValues = slice.call( arguments ),
+
+			// the master Deferred
+			master = jQuery.Deferred(),
+
+			// subordinate callback factory
+			updateFunc = function( i ) {
+				return function( value ) {
+					resolveContexts[ i ] = this;
+					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+					if ( !( --remaining ) ) {
+						master.resolveWith( resolveContexts, resolveValues );
+					}
+				};
+			};
+
+		// Single- and empty arguments are adopted like Promise.resolve
+		if ( remaining <= 1 ) {
+			adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
+				!remaining );
+
+			// Use .then() to unwrap secondary thenables (cf. gh-3000)
+			if ( master.state() === "pending" ||
+				jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+				return master.then();
+			}
+		}
+
+		// Multiple arguments are aggregated like Promise.all array elements
+		while ( i-- ) {
+			adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+		}
+
+		return master.promise();
+	}
+} );
+
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+	// Support: IE 8 - 9 only
+	// Console exists when dev tools are open, which can happen at any time
+	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+	}
+};
+
+
+
+
+jQuery.readyException = function( error ) {
+	window.setTimeout( function() {
+		throw error;
+	} );
+};
+
+
+
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+	readyList
+		.then( fn )
+
+		// Wrap jQuery.readyException in a function so that the lookup
+		// happens at the time of error handling instead of callback
+		// registration.
+		.catch( function( error ) {
+			jQuery.readyException( error );
+		} );
+
+	return this;
+};
+
+jQuery.extend( {
+
+	// Is the DOM ready to be used? Set to true once it occurs.
+	isReady: false,
+
+	// A counter to track how many items to wait for before
+	// the ready event fires. See #6781
+	readyWait: 1,
+
+	// Handle when the DOM is ready
+	ready: function( wait ) {
+
+		// Abort if there are pending holds or we're already ready
+		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+			return;
+		}
+
+		// Remember that the DOM is ready
+		jQuery.isReady = true;
+
+		// If a normal DOM Ready event fired, decrement, and wait if need be
+		if ( wait !== true && --jQuery.readyWait > 0 ) {
+			return;
+		}
+
+		// If there are functions bound, to execute
+		readyList.resolveWith( document, [ jQuery ] );
+	}
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+	document.removeEventListener( "DOMContentLoaded", completed );
+	window.removeEventListener( "load", completed );
+	jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+	// Handle it asynchronously to allow scripts the opportunity to delay ready
+	window.setTimeout( jQuery.ready );
+
+} else {
+
+	// Use the handy event callback
+	document.addEventListener( "DOMContentLoaded", completed );
+
+	// A fallback to window.onload, that will always work
+	window.addEventListener( "load", completed );
+}
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+	var i = 0,
+		len = elems.length,
+		bulk = key == null;
+
+	// Sets many values
+	if ( jQuery.type( key ) === "object" ) {
+		chainable = true;
+		for ( i in key ) {
+			access( elems, fn, i, key[ i ], true, emptyGet, raw );
+		}
+
+	// Sets one value
+	} else if ( value !== undefined ) {
+		chainable = true;
+
+		if ( !jQuery.isFunction( value ) ) {
+			raw = true;
+		}
+
+		if ( bulk ) {
+
+			// Bulk operations run against the entire set
+			if ( raw ) {
+				fn.call( elems, value );
+				fn = null;
+
+			// ...except when executing function values
+			} else {
+				bulk = fn;
+				fn = function( elem, key, value ) {
+					return bulk.call( jQuery( elem ), value );
+				};
+			}
+		}
+
+		if ( fn ) {
+			for ( ; i < len; i++ ) {
+				fn(
+					elems[ i ], key, raw ?
+					value :
+					value.call( elems[ i ], i, fn( elems[ i ], key ) )
+				);
+			}
+		}
+	}
+
+	if ( chainable ) {
+		return elems;
+	}
+
+	// Gets
+	if ( bulk ) {
+		return fn.call( elems );
+	}
+
+	return len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+var acceptData = function( owner ) {
+
+	// Accepts only:
+	//  - Node
+	//    - Node.ELEMENT_NODE
+	//    - Node.DOCUMENT_NODE
+	//  - Object
+	//    - Any
+	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+	this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+	cache: function( owner ) {
+
+		// Check if the owner object already has a cache
+		var value = owner[ this.expando ];
+
+		// If not, create one
+		if ( !value ) {
+			value = {};
+
+			// We can accept data for non-element nodes in modern browsers,
+			// but we should not, see #8335.
+			// Always return an empty object.
+			if ( acceptData( owner ) ) {
+
+				// If it is a node unlikely to be stringify-ed or looped over
+				// use plain assignment
+				if ( owner.nodeType ) {
+					owner[ this.expando ] = value;
+
+				// Otherwise secure it in a non-enumerable property
+				// configurable must be true to allow the property to be
+				// deleted when data is removed
+				} else {
+					Object.defineProperty( owner, this.expando, {
+						value: value,
+						configurable: true
+					} );
+				}
+			}
+		}
+
+		return value;
+	},
+	set: function( owner, data, value ) {
+		var prop,
+			cache = this.cache( owner );
+
+		// Handle: [ owner, key, value ] args
+		// Always use camelCase key (gh-2257)
+		if ( typeof data === "string" ) {
+			cache[ jQuery.camelCase( data ) ] = value;
+
+		// Handle: [ owner, { properties } ] args
+		} else {
+
+			// Copy the properties one-by-one to the cache object
+			for ( prop in data ) {
+				cache[ jQuery.camelCase( prop ) ] = data[ prop ];
+			}
+		}
+		return cache;
+	},
+	get: function( owner, key ) {
+		return key === undefined ?
+			this.cache( owner ) :
+
+			// Always use camelCase key (gh-2257)
+			owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
+	},
+	access: function( owner, key, value ) {
+
+		// In cases where either:
+		//
+		//   1. No key was specified
+		//   2. A string key was specified, but no value provided
+		//
+		// Take the "read" path and allow the get method to determine
+		// which value to return, respectively either:
+		//
+		//   1. The entire cache object
+		//   2. The data stored at the key
+		//
+		if ( key === undefined ||
+				( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+			return this.get( owner, key );
+		}
+
+		// When the key is not a string, or both a key and value
+		// are specified, set or extend (existing objects) with either:
+		//
+		//   1. An object of properties
+		//   2. A key and value
+		//
+		this.set( owner, key, value );
+
+		// Since the "set" path can have two possible entry points
+		// return the expected data based on which path was taken[*]
+		return value !== undefined ? value : key;
+	},
+	remove: function( owner, key ) {
+		var i,
+			cache = owner[ this.expando ];
+
+		if ( cache === undefined ) {
+			return;
+		}
+
+		if ( key !== undefined ) {
+
+			// Support array or space separated string of keys
+			if ( Array.isArray( key ) ) {
+
+				// If key is an array of keys...
+				// We always set camelCase keys, so remove that.
+				key = key.map( jQuery.camelCase );
+			} else {
+				key = jQuery.camelCase( key );
+
+				// If a key with the spaces exists, use it.
+				// Otherwise, create an array by matching non-whitespace
+				key = key in cache ?
+					[ key ] :
+					( key.match( rnothtmlwhite ) || [] );
+			}
+
+			i = key.length;
+
+			while ( i-- ) {
+				delete cache[ key[ i ] ];
+			}
+		}
+
+		// Remove the expando if there's no more data
+		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+			// Support: Chrome <=35 - 45
+			// Webkit & Blink performance suffers when deleting properties
+			// from DOM nodes, so set to undefined instead
+			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+			if ( owner.nodeType ) {
+				owner[ this.expando ] = undefined;
+			} else {
+				delete owner[ this.expando ];
+			}
+		}
+	},
+	hasData: function( owner ) {
+		var cache = owner[ this.expando ];
+		return cache !== undefined && !jQuery.isEmptyObject( cache );
+	}
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+//	Implementation Summary
+//
+//	1. Enforce API surface and semantic compatibility with 1.9.x branch
+//	2. Improve the module's maintainability by reducing the storage
+//		paths to a single mechanism.
+//	3. Use the same single mechanism to support "private" and "user" data.
+//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+//	5. Avoid exposing implementation details on user objects (eg. expando properties)
+//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+	rmultiDash = /[A-Z]/g;
+
+function getData( data ) {
+	if ( data === "true" ) {
+		return true;
+	}
+
+	if ( data === "false" ) {
+		return false;
+	}
+
+	if ( data === "null" ) {
+		return null;
+	}
+
+	// Only convert to a number if it doesn't change the string
+	if ( data === +data + "" ) {
+		return +data;
+	}
+
+	if ( rbrace.test( data ) ) {
+		return JSON.parse( data );
+	}
+
+	return data;
+}
+
+function dataAttr( elem, key, data ) {
+	var name;
+
+	// If nothing was found internally, try to fetch any
+	// data from the HTML5 data-* attribute
+	if ( data === undefined && elem.nodeType === 1 ) {
+		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+		data = elem.getAttribute( name );
+
+		if ( typeof data === "string" ) {
+			try {
+				data = getData( data );
+			} catch ( e ) {}
+
+			// Make sure we set the data so it isn't changed later
+			dataUser.set( elem, key, data );
+		} else {
+			data = undefined;
+		}
+	}
+	return data;
+}
+
+jQuery.extend( {
+	hasData: function( elem ) {
+		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+	},
+
+	data: function( elem, name, data ) {
+		return dataUser.access( elem, name, data );
+	},
+
+	removeData: function( elem, name ) {
+		dataUser.remove( elem, name );
+	},
+
+	// TODO: Now that all calls to _data and _removeData have been replaced
+	// with direct calls to dataPriv methods, these can be deprecated.
+	_data: function( elem, name, data ) {
+		return dataPriv.access( elem, name, data );
+	},
+
+	_removeData: function( elem, name ) {
+		dataPriv.remove( elem, name );
+	}
+} );
+
+jQuery.fn.extend( {
+	data: function( key, value ) {
+		var i, name, data,
+			elem = this[ 0 ],
+			attrs = elem && elem.attributes;
+
+		// Gets all values
+		if ( key === undefined ) {
+			if ( this.length ) {
+				data = dataUser.get( elem );
+
+				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+					i = attrs.length;
+					while ( i-- ) {
+
+						// Support: IE 11 only
+						// The attrs elements can be null (#14894)
+						if ( attrs[ i ] ) {
+							name = attrs[ i ].name;
+							if ( name.indexOf( "data-" ) === 0 ) {
+								name = jQuery.camelCase( name.slice( 5 ) );
+								dataAttr( elem, name, data[ name ] );
+							}
+						}
+					}
+					dataPriv.set( elem, "hasDataAttrs", true );
+				}
+			}
+
+			return data;
+		}
+
+		// Sets multiple values
+		if ( typeof key === "object" ) {
+			return this.each( function() {
+				dataUser.set( this, key );
+			} );
+		}
+
+		return access( this, function( value ) {
+			var data;
+
+			// The calling jQuery object (element matches) is not empty
+			// (and therefore has an element appears at this[ 0 ]) and the
+			// `value` parameter was not undefined. An empty jQuery object
+			// will result in `undefined` for elem = this[ 0 ] which will
+			// throw an exception if an attempt to read a data cache is made.
+			if ( elem && value === undefined ) {
+
+				// Attempt to get data from the cache
+				// The key will always be camelCased in Data
+				data = dataUser.get( elem, key );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// Attempt to "discover" the data in
+				// HTML5 custom data-* attrs
+				data = dataAttr( elem, key );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// We tried really hard, but the data doesn't exist.
+				return;
+			}
+
+			// Set the data...
+			this.each( function() {
+
+				// We always store the camelCased key
+				dataUser.set( this, key, value );
+			} );
+		}, null, value, arguments.length > 1, null, true );
+	},
+
+	removeData: function( key ) {
+		return this.each( function() {
+			dataUser.remove( this, key );
+		} );
+	}
+} );
+
+
+jQuery.extend( {
+	queue: function( elem, type, data ) {
+		var queue;
+
+		if ( elem ) {
+			type = ( type || "fx" ) + "queue";
+			queue = dataPriv.get( elem, type );
+
+			// Speed up dequeue by getting out quickly if this is just a lookup
+			if ( data ) {
+				if ( !queue || Array.isArray( data ) ) {
+					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+				} else {
+					queue.push( data );
+				}
+			}
+			return queue || [];
+		}
+	},
+
+	dequeue: function( elem, type ) {
+		type = type || "fx";
+
+		var queue = jQuery.queue( elem, type ),
+			startLength = queue.length,
+			fn = queue.shift(),
+			hooks = jQuery._queueHooks( elem, type ),
+			next = function() {
+				jQuery.dequeue( elem, type );
+			};
+
+		// If the fx queue is dequeued, always remove the progress sentinel
+		if ( fn === "inprogress" ) {
+			fn = queue.shift();
+			startLength--;
+		}
+
+		if ( fn ) {
+
+			// Add a progress sentinel to prevent the fx queue from being
+			// automatically dequeued
+			if ( type === "fx" ) {
+				queue.unshift( "inprogress" );
+			}
+
+			// Clear up the last queue stop function
+			delete hooks.stop;
+			fn.call( elem, next, hooks );
+		}
+
+		if ( !startLength && hooks ) {
+			hooks.empty.fire();
+		}
+	},
+
+	// Not public - generate a queueHooks object, or return the current one
+	_queueHooks: function( elem, type ) {
+		var key = type + "queueHooks";
+		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+			empty: jQuery.Callbacks( "once memory" ).add( function() {
+				dataPriv.remove( elem, [ type + "queue", key ] );
+			} )
+		} );
+	}
+} );
+
+jQuery.fn.extend( {
+	queue: function( type, data ) {
+		var setter = 2;
+
+		if ( typeof type !== "string" ) {
+			data = type;
+			type = "fx";
+			setter--;
+		}
+
+		if ( arguments.length < setter ) {
+			return jQuery.queue( this[ 0 ], type );
+		}
+
+		return data === undefined ?
+			this :
+			this.each( function() {
+				var queue = jQuery.queue( this, type, data );
+
+				// Ensure a hooks for this queue
+				jQuery._queueHooks( this, type );
+
+				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+					jQuery.dequeue( this, type );
+				}
+			} );
+	},
+	dequeue: function( type ) {
+		return this.each( function() {
+			jQuery.dequeue( this, type );
+		} );
+	},
+	clearQueue: function( type ) {
+		return this.queue( type || "fx", [] );
+	},
+
+	// Get a promise resolved when queues of a certain type
+	// are emptied (fx is the type by default)
+	promise: function( type, obj ) {
+		var tmp,
+			count = 1,
+			defer = jQuery.Deferred(),
+			elements = this,
+			i = this.length,
+			resolve = function() {
+				if ( !( --count ) ) {
+					defer.resolveWith( elements, [ elements ] );
+				}
+			};
+
+		if ( typeof type !== "string" ) {
+			obj = type;
+			type = undefined;
+		}
+		type = type || "fx";
+
+		while ( i-- ) {
+			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+			if ( tmp && tmp.empty ) {
+				count++;
+				tmp.empty.add( resolve );
+			}
+		}
+		resolve();
+		return defer.promise( obj );
+	}
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHiddenWithinTree = function( elem, el ) {
+
+		// isHiddenWithinTree might be called from jQuery#filter function;
+		// in that case, element will be second argument
+		elem = el || elem;
+
+		// Inline style trumps all
+		return elem.style.display === "none" ||
+			elem.style.display === "" &&
+
+			// Otherwise, check computed style
+			// Support: Firefox <=43 - 45
+			// Disconnected elements can have computed display: none, so first confirm that elem is
+			// in the document.
+			jQuery.contains( elem.ownerDocument, elem ) &&
+
+			jQuery.css( elem, "display" ) === "none";
+	};
+
+var swap = function( elem, options, callback, args ) {
+	var ret, name,
+		old = {};
+
+	// Remember the old values, and insert the new ones
+	for ( name in options ) {
+		old[ name ] = elem.style[ name ];
+		elem.style[ name ] = options[ name ];
+	}
+
+	ret = callback.apply( elem, args || [] );
+
+	// Revert the old values
+	for ( name in options ) {
+		elem.style[ name ] = old[ name ];
+	}
+
+	return ret;
+};
+
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+	var adjusted,
+		scale = 1,
+		maxIterations = 20,
+		currentValue = tween ?
+			function() {
+				return tween.cur();
+			} :
+			function() {
+				return jQuery.css( elem, prop, "" );
+			},
+		initial = currentValue(),
+		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+		// Starting value computation is required for potential unit mismatches
+		initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+			rcssNum.exec( jQuery.css( elem, prop ) );
+
+	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+		// Trust units reported by jQuery.css
+		unit = unit || initialInUnit[ 3 ];
+
+		// Make sure we update the tween properties later on
+		valueParts = valueParts || [];
+
+		// Iteratively approximate from a nonzero starting point
+		initialInUnit = +initial || 1;
+
+		do {
+
+			// If previous iteration zeroed out, double until we get *something*.
+			// Use string for doubling so we don't accidentally see scale as unchanged below
+			scale = scale || ".5";
+
+			// Adjust and apply
+			initialInUnit = initialInUnit / scale;
+			jQuery.style( elem, prop, initialInUnit + unit );
+
+		// Update scale, tolerating zero or NaN from tween.cur()
+		// Break the loop if scale is unchanged or perfect, or if we've just had enough.
+		} while (
+			scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
+		);
+	}
+
+	if ( valueParts ) {
+		initialInUnit = +initialInUnit || +initial || 0;
+
+		// Apply relative offset (+=/-=) if specified
+		adjusted = valueParts[ 1 ] ?
+			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+			+valueParts[ 2 ];
+		if ( tween ) {
+			tween.unit = unit;
+			tween.start = initialInUnit;
+			tween.end = adjusted;
+		}
+	}
+	return adjusted;
+}
+
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+	var temp,
+		doc = elem.ownerDocument,
+		nodeName = elem.nodeName,
+		display = defaultDisplayMap[ nodeName ];
+
+	if ( display ) {
+		return display;
+	}
+
+	temp = doc.body.appendChild( doc.createElement( nodeName ) );
+	display = jQuery.css( temp, "display" );
+
+	temp.parentNode.removeChild( temp );
+
+	if ( display === "none" ) {
+		display = "block";
+	}
+	defaultDisplayMap[ nodeName ] = display;
+
+	return display;
+}
+
+function showHide( elements, show ) {
+	var display, elem,
+		values = [],
+		index = 0,
+		length = elements.length;
+
+	// Determine new display value for elements that need to change
+	for ( ; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+
+		display = elem.style.display;
+		if ( show ) {
+
+			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+			// check is required in this first loop unless we have a nonempty display value (either
+			// inline or about-to-be-restored)
+			if ( display === "none" ) {
+				values[ index ] = dataPriv.get( elem, "display" ) || null;
+				if ( !values[ index ] ) {
+					elem.style.display = "";
+				}
+			}
+			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+				values[ index ] = getDefaultDisplay( elem );
+			}
+		} else {
+			if ( display !== "none" ) {
+				values[ index ] = "none";
+
+				// Remember what we're overwriting
+				dataPriv.set( elem, "display", display );
+			}
+		}
+	}
+
+	// Set the display of the elements in a second loop to avoid constant reflow
+	for ( index = 0; index < length; index++ ) {
+		if ( values[ index ] != null ) {
+			elements[ index ].style.display = values[ index ];
+		}
+	}
+
+	return elements;
+}
+
+jQuery.fn.extend( {
+	show: function() {
+		return showHide( this, true );
+	},
+	hide: function() {
+		return showHide( this );
+	},
+	toggle: function( state ) {
+		if ( typeof state === "boolean" ) {
+			return state ? this.show() : this.hide();
+		}
+
+		return this.each( function() {
+			if ( isHiddenWithinTree( this ) ) {
+				jQuery( this ).show();
+			} else {
+				jQuery( this ).hide();
+			}
+		} );
+	}
+} );
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
+
+var rscriptType = ( /^$|\/(?:java|ecma)script/i );
+
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+	// Support: IE <=9 only
+	option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+	// XHTML parsers do not magically insert elements in the
+	// same way that tag soup parsers do. So we cannot shorten
+	// this by omitting <tbody> or other required elements.
+	thead: [ 1, "<table>", "</table>" ],
+	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+	_default: [ 0, "", "" ]
+};
+
+// Support: IE <=9 only
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function getAll( context, tag ) {
+
+	// Support: IE <=9 - 11 only
+	// Use typeof to avoid zero-argument method invocation on host objects (#15151)
+	var ret;
+
+	if ( typeof context.getElementsByTagName !== "undefined" ) {
+		ret = context.getElementsByTagName( tag || "*" );
+
+	} else if ( typeof context.querySelectorAll !== "undefined" ) {
+		ret = context.querySelectorAll( tag || "*" );
+
+	} else {
+		ret = [];
+	}
+
+	if ( tag === undefined || tag && nodeName( context, tag ) ) {
+		return jQuery.merge( [ context ], ret );
+	}
+
+	return ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+	var i = 0,
+		l = elems.length;
+
+	for ( ; i < l; i++ ) {
+		dataPriv.set(
+			elems[ i ],
+			"globalEval",
+			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
+		);
+	}
+}
+
+
+var rhtml = /<|&#?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+	var elem, tmp, tag, wrap, contains, j,
+		fragment = context.createDocumentFragment(),
+		nodes = [],
+		i = 0,
+		l = elems.length;
+
+	for ( ; i < l; i++ ) {
+		elem = elems[ i ];
+
+		if ( elem || elem === 0 ) {
+
+			// Add nodes directly
+			if ( jQuery.type( elem ) === "object" ) {
+
+				// Support: Android <=4.0 only, PhantomJS 1 only
+				// push.apply(_, arraylike) throws on ancient WebKit
+				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+			// Convert non-html into a text node
+			} else if ( !rhtml.test( elem ) ) {
+				nodes.push( context.createTextNode( elem ) );
+
+			// Convert html into DOM nodes
+			} else {
+				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+				// Deserialize a standard representation
+				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+				wrap = wrapMap[ tag ] || wrapMap._default;
+				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+				// Descend through wrappers to the right content
+				j = wrap[ 0 ];
+				while ( j-- ) {
+					tmp = tmp.lastChild;
+				}
+
+				// Support: Android <=4.0 only, PhantomJS 1 only
+				// push.apply(_, arraylike) throws on ancient WebKit
+				jQuery.merge( nodes, tmp.childNodes );
+
+				// Remember the top-level container
+				tmp = fragment.firstChild;
+
+				// Ensure the created nodes are orphaned (#12392)
+				tmp.textContent = "";
+			}
+		}
+	}
+
+	// Remove wrapper from fragment
+	fragment.textContent = "";
+
+	i = 0;
+	while ( ( elem = nodes[ i++ ] ) ) {
+
+		// Skip elements already in the context collection (trac-4087)
+		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+			if ( ignored ) {
+				ignored.push( elem );
+			}
+			continue;
+		}
+
+		contains = jQuery.contains( elem.ownerDocument, elem );
+
+		// Append to fragment
+		tmp = getAll( fragment.appendChild( elem ), "script" );
+
+		// Preserve script evaluation history
+		if ( contains ) {
+			setGlobalEval( tmp );
+		}
+
+		// Capture executables
+		if ( scripts ) {
+			j = 0;
+			while ( ( elem = tmp[ j++ ] ) ) {
+				if ( rscriptType.test( elem.type || "" ) ) {
+					scripts.push( elem );
+				}
+			}
+		}
+	}
+
+	return fragment;
+}
+
+
+( function() {
+	var fragment = document.createDocumentFragment(),
+		div = fragment.appendChild( document.createElement( "div" ) ),
+		input = document.createElement( "input" );
+
+	// Support: Android 4.0 - 4.3 only
+	// Check state lost if the name is set (#11217)
+	// Support: Windows Web Apps (WWA)
+	// `name` and `type` must use .setAttribute for WWA (#14901)
+	input.setAttribute( "type", "radio" );
+	input.setAttribute( "checked", "checked" );
+	input.setAttribute( "name", "t" );
+
+	div.appendChild( input );
+
+	// Support: Android <=4.1 only
+	// Older WebKit doesn't clone checked state correctly in fragments
+	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+	// Support: IE <=11 only
+	// Make sure textarea (and checkbox) defaultValue is properly cloned
+	div.innerHTML = "<textarea>x</textarea>";
+	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+var documentElement = document.documentElement;
+
+
+
+var
+	rkeyEvent = /^key/,
+	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+	rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+	return true;
+}
+
+function returnFalse() {
+	return false;
+}
+
+// Support: IE <=9 only
+// See #13393 for more info
+function safeActiveElement() {
+	try {
+		return document.activeElement;
+	} catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+	var origFn, type;
+
+	// Types can be a map of types/handlers
+	if ( typeof types === "object" ) {
+
+		// ( types-Object, selector, data )
+		if ( typeof selector !== "string" ) {
+
+			// ( types-Object, data )
+			data = data || selector;
+			selector = undefined;
+		}
+		for ( type in types ) {
+			on( elem, type, selector, data, types[ type ], one );
+		}
+		return elem;
+	}
+
+	if ( data == null && fn == null ) {
+
+		// ( types, fn )
+		fn = selector;
+		data = selector = undefined;
+	} else if ( fn == null ) {
+		if ( typeof selector === "string" ) {
+
+			// ( types, selector, fn )
+			fn = data;
+			data = undefined;
+		} else {
+
+			// ( types, data, fn )
+			fn = data;
+			data = selector;
+			selector = undefined;
+		}
+	}
+	if ( fn === false ) {
+		fn = returnFalse;
+	} else if ( !fn ) {
+		return elem;
+	}
+
+	if ( one === 1 ) {
+		origFn = fn;
+		fn = function( event ) {
+
+			// Can use an empty set, since event contains the info
+			jQuery().off( event );
+			return origFn.apply( this, arguments );
+		};
+
+		// Use same guid so caller can remove using origFn
+		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+	}
+	return elem.each( function() {
+		jQuery.event.add( this, types, fn, data, selector );
+	} );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+	global: {},
+
+	add: function( elem, types, handler, data, selector ) {
+
+		var handleObjIn, eventHandle, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = dataPriv.get( elem );
+
+		// Don't attach events to noData or text/comment nodes (but allow plain objects)
+		if ( !elemData ) {
+			return;
+		}
+
+		// Caller can pass in an object of custom data in lieu of the handler
+		if ( handler.handler ) {
+			handleObjIn = handler;
+			handler = handleObjIn.handler;
+			selector = handleObjIn.selector;
+		}
+
+		// Ensure that invalid selectors throw exceptions at attach time
+		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
+		if ( selector ) {
+			jQuery.find.matchesSelector( documentElement, selector );
+		}
+
+		// Make sure that the handler has a unique ID, used to find/remove it later
+		if ( !handler.guid ) {
+			handler.guid = jQuery.guid++;
+		}
+
+		// Init the element's event structure and main handler, if this is the first
+		if ( !( events = elemData.events ) ) {
+			events = elemData.events = {};
+		}
+		if ( !( eventHandle = elemData.handle ) ) {
+			eventHandle = elemData.handle = function( e ) {
+
+				// Discard the second event of a jQuery.event.trigger() and
+				// when an event is called after a page has unloaded
+				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+			};
+		}
+
+		// Handle multiple events separated by a space
+		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[ t ] ) || [];
+			type = origType = tmp[ 1 ];
+			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+			// There *must* be a type, no attaching namespace-only handlers
+			if ( !type ) {
+				continue;
+			}
+
+			// If event changes its type, use the special event handlers for the changed type
+			special = jQuery.event.special[ type ] || {};
+
+			// If selector defined, determine special event api type, otherwise given type
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+
+			// Update special based on newly reset type
+			special = jQuery.event.special[ type ] || {};
+
+			// handleObj is passed to all event handlers
+			handleObj = jQuery.extend( {
+				type: type,
+				origType: origType,
+				data: data,
+				handler: handler,
+				guid: handler.guid,
+				selector: selector,
+				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+				namespace: namespaces.join( "." )
+			}, handleObjIn );
+
+			// Init the event handler queue if we're the first
+			if ( !( handlers = events[ type ] ) ) {
+				handlers = events[ type ] = [];
+				handlers.delegateCount = 0;
+
+				// Only use addEventListener if the special events handler returns false
+				if ( !special.setup ||
+					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+					if ( elem.addEventListener ) {
+						elem.addEventListener( type, eventHandle );
+					}
+				}
+			}
+
+			if ( special.add ) {
+				special.add.call( elem, handleObj );
+
+				if ( !handleObj.handler.guid ) {
+					handleObj.handler.guid = handler.guid;
+				}
+			}
+
+			// Add to the element's handler list, delegates in front
+			if ( selector ) {
+				handlers.splice( handlers.delegateCount++, 0, handleObj );
+			} else {
+				handlers.push( handleObj );
+			}
+
+			// Keep track of which events have ever been used, for event optimization
+			jQuery.event.global[ type ] = true;
+		}
+
+	},
+
+	// Detach an event or set of events from an element
+	remove: function( elem, types, handler, selector, mappedTypes ) {
+
+		var j, origCount, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+		if ( !elemData || !( events = elemData.events ) ) {
+			return;
+		}
+
+		// Once for each type.namespace in types; type may be omitted
+		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[ t ] ) || [];
+			type = origType = tmp[ 1 ];
+			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+			// Unbind all events (on this namespace, if provided) for the element
+			if ( !type ) {
+				for ( type in events ) {
+					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+				}
+				continue;
+			}
+
+			special = jQuery.event.special[ type ] || {};
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+			handlers = events[ type ] || [];
+			tmp = tmp[ 2 ] &&
+				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+			// Remove matching events
+			origCount = j = handlers.length;
+			while ( j-- ) {
+				handleObj = handlers[ j ];
+
+				if ( ( mappedTypes || origType === handleObj.origType ) &&
+					( !handler || handler.guid === handleObj.guid ) &&
+					( !tmp || tmp.test( handleObj.namespace ) ) &&
+					( !selector || selector === handleObj.selector ||
+						selector === "**" && handleObj.selector ) ) {
+					handlers.splice( j, 1 );
+
+					if ( handleObj.selector ) {
+						handlers.delegateCount--;
+					}
+					if ( special.remove ) {
+						special.remove.call( elem, handleObj );
+					}
+				}
+			}
+
+			// Remove generic event handler if we removed something and no more handlers exist
+			// (avoids potential for endless recursion during removal of special event handlers)
+			if ( origCount && !handlers.length ) {
+				if ( !special.teardown ||
+					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+					jQuery.removeEvent( elem, type, elemData.handle );
+				}
+
+				delete events[ type ];
+			}
+		}
+
+		// Remove data and the expando if it's no longer used
+		if ( jQuery.isEmptyObject( events ) ) {
+			dataPriv.remove( elem, "handle events" );
+		}
+	},
+
+	dispatch: function( nativeEvent ) {
+
+		// Make a writable jQuery.Event from the native event object
+		var event = jQuery.event.fix( nativeEvent );
+
+		var i, j, ret, matched, handleObj, handlerQueue,
+			args = new Array( arguments.length ),
+			handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+			special = jQuery.event.special[ event.type ] || {};
+
+		// Use the fix-ed jQuery.Event rather than the (read-only) native event
+		args[ 0 ] = event;
+
+		for ( i = 1; i < arguments.length; i++ ) {
+			args[ i ] = arguments[ i ];
+		}
+
+		event.delegateTarget = this;
+
+		// Call the preDispatch hook for the mapped type, and let it bail if desired
+		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+			return;
+		}
+
+		// Determine handlers
+		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+		// Run delegates first; they may want to stop propagation beneath us
+		i = 0;
+		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+			event.currentTarget = matched.elem;
+
+			j = 0;
+			while ( ( handleObj = matched.handlers[ j++ ] ) &&
+				!event.isImmediatePropagationStopped() ) {
+
+				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
+				// a subset or equal to those in the bound event (both can have no namespace).
+				if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+					event.handleObj = handleObj;
+					event.data = handleObj.data;
+
+					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+						handleObj.handler ).apply( matched.elem, args );
+
+					if ( ret !== undefined ) {
+						if ( ( event.result = ret ) === false ) {
+							event.preventDefault();
+							event.stopPropagation();
+						}
+					}
+				}
+			}
+		}
+
+		// Call the postDispatch hook for the mapped type
+		if ( special.postDispatch ) {
+			special.postDispatch.call( this, event );
+		}
+
+		return event.result;
+	},
+
+	handlers: function( event, handlers ) {
+		var i, handleObj, sel, matchedHandlers, matchedSelectors,
+			handlerQueue = [],
+			delegateCount = handlers.delegateCount,
+			cur = event.target;
+
+		// Find delegate handlers
+		if ( delegateCount &&
+
+			// Support: IE <=9
+			// Black-hole SVG <use> instance trees (trac-13180)
+			cur.nodeType &&
+
+			// Support: Firefox <=42
+			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
+			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
+			// Support: IE 11 only
+			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
+			!( event.type === "click" && event.button >= 1 ) ) {
+
+			for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+				// Don't check non-elements (#13208)
+				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
+					matchedHandlers = [];
+					matchedSelectors = {};
+					for ( i = 0; i < delegateCount; i++ ) {
+						handleObj = handlers[ i ];
+
+						// Don't conflict with Object.prototype properties (#13203)
+						sel = handleObj.selector + " ";
+
+						if ( matchedSelectors[ sel ] === undefined ) {
+							matchedSelectors[ sel ] = handleObj.needsContext ?
+								jQuery( sel, this ).index( cur ) > -1 :
+								jQuery.find( sel, this, null, [ cur ] ).length;
+						}
+						if ( matchedSelectors[ sel ] ) {
+							matchedHandlers.push( handleObj );
+						}
+					}
+					if ( matchedHandlers.length ) {
+						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
+					}
+				}
+			}
+		}
+
+		// Add the remaining (directly-bound) handlers
+		cur = this;
+		if ( delegateCount < handlers.length ) {
+			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
+		}
+
+		return handlerQueue;
+	},
+
+	addProp: function( name, hook ) {
+		Object.defineProperty( jQuery.Event.prototype, name, {
+			enumerable: true,
+			configurable: true,
+
+			get: jQuery.isFunction( hook ) ?
+				function() {
+					if ( this.originalEvent ) {
+							return hook( this.originalEvent );
+					}
+				} :
+				function() {
+					if ( this.originalEvent ) {
+							return this.originalEvent[ name ];
+					}
+				},
+
+			set: function( value ) {
+				Object.defineProperty( this, name, {
+					enumerable: true,
+					configurable: true,
+					writable: true,
+					value: value
+				} );
+			}
+		} );
+	},
+
+	fix: function( originalEvent ) {
+		return originalEvent[ jQuery.expando ] ?
+			originalEvent :
+			new jQuery.Event( originalEvent );
+	},
+
+	special: {
+		load: {
+
+			// Prevent triggered image.load events from bubbling to window.load
+			noBubble: true
+		},
+		focus: {
+
+			// Fire native event if possible so blur/focus sequence is correct
+			trigger: function() {
+				if ( this !== safeActiveElement() && this.focus ) {
+					this.focus();
+					return false;
+				}
+			},
+			delegateType: "focusin"
+		},
+		blur: {
+			trigger: function() {
+				if ( this === safeActiveElement() && this.blur ) {
+					this.blur();
+					return false;
+				}
+			},
+			delegateType: "focusout"
+		},
+		click: {
+
+			// For checkbox, fire native event so checked state will be right
+			trigger: function() {
+				if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {
+					this.click();
+					return false;
+				}
+			},
+
+			// For cross-browser consistency, don't fire native .click() on links
+			_default: function( event ) {
+				return nodeName( event.target, "a" );
+			}
+		},
+
+		beforeunload: {
+			postDispatch: function( event ) {
+
+				// Support: Firefox 20+
+				// Firefox doesn't alert if the returnValue field is not set.
+				if ( event.result !== undefined && event.originalEvent ) {
+					event.originalEvent.returnValue = event.result;
+				}
+			}
+		}
+	}
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+	// This "if" is needed for plain objects
+	if ( elem.removeEventListener ) {
+		elem.removeEventListener( type, handle );
+	}
+};
+
+jQuery.Event = function( src, props ) {
+
+	// Allow instantiation without the 'new' keyword
+	if ( !( this instanceof jQuery.Event ) ) {
+		return new jQuery.Event( src, props );
+	}
+
+	// Event object
+	if ( src && src.type ) {
+		this.originalEvent = src;
+		this.type = src.type;
+
+		// Events bubbling up the document may have been marked as prevented
+		// by a handler lower down the tree; reflect the correct value.
+		this.isDefaultPrevented = src.defaultPrevented ||
+				src.defaultPrevented === undefined &&
+
+				// Support: Android <=2.3 only
+				src.returnValue === false ?
+			returnTrue :
+			returnFalse;
+
+		// Create target properties
+		// Support: Safari <=6 - 7 only
+		// Target should not be a text node (#504, #13143)
+		this.target = ( src.target && src.target.nodeType === 3 ) ?
+			src.target.parentNode :
+			src.target;
+
+		this.currentTarget = src.currentTarget;
+		this.relatedTarget = src.relatedTarget;
+
+	// Event type
+	} else {
+		this.type = src;
+	}
+
+	// Put explicitly provided properties onto the event object
+	if ( props ) {
+		jQuery.extend( this, props );
+	}
+
+	// Create a timestamp if incoming event doesn't have one
+	this.timeStamp = src && src.timeStamp || jQuery.now();
+
+	// Mark it as fixed
+	this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+	constructor: jQuery.Event,
+	isDefaultPrevented: returnFalse,
+	isPropagationStopped: returnFalse,
+	isImmediatePropagationStopped: returnFalse,
+	isSimulated: false,
+
+	preventDefault: function() {
+		var e = this.originalEvent;
+
+		this.isDefaultPrevented = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.preventDefault();
+		}
+	},
+	stopPropagation: function() {
+		var e = this.originalEvent;
+
+		this.isPropagationStopped = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.stopPropagation();
+		}
+	},
+	stopImmediatePropagation: function() {
+		var e = this.originalEvent;
+
+		this.isImmediatePropagationStopped = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.stopImmediatePropagation();
+		}
+
+		this.stopPropagation();
+	}
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+	altKey: true,
+	bubbles: true,
+	cancelable: true,
+	changedTouches: true,
+	ctrlKey: true,
+	detail: true,
+	eventPhase: true,
+	metaKey: true,
+	pageX: true,
+	pageY: true,
+	shiftKey: true,
+	view: true,
+	"char": true,
+	charCode: true,
+	key: true,
+	keyCode: true,
+	button: true,
+	buttons: true,
+	clientX: true,
+	clientY: true,
+	offsetX: true,
+	offsetY: true,
+	pointerId: true,
+	pointerType: true,
+	screenX: true,
+	screenY: true,
+	targetTouches: true,
+	toElement: true,
+	touches: true,
+
+	which: function( event ) {
+		var button = event.button;
+
+		// Add which for key events
+		if ( event.which == null && rkeyEvent.test( event.type ) ) {
+			return event.charCode != null ? event.charCode : event.keyCode;
+		}
+
+		// Add which for click: 1 === left; 2 === middle; 3 === right
+		if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+			if ( button & 1 ) {
+				return 1;
+			}
+
+			if ( button & 2 ) {
+				return 3;
+			}
+
+			if ( button & 4 ) {
+				return 2;
+			}
+
+			return 0;
+		}
+
+		return event.which;
+	}
+}, jQuery.event.addProp );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+	mouseenter: "mouseover",
+	mouseleave: "mouseout",
+	pointerenter: "pointerover",
+	pointerleave: "pointerout"
+}, function( orig, fix ) {
+	jQuery.event.special[ orig ] = {
+		delegateType: fix,
+		bindType: fix,
+
+		handle: function( event ) {
+			var ret,
+				target = this,
+				related = event.relatedTarget,
+				handleObj = event.handleObj;
+
+			// For mouseenter/leave call the handler if related is outside the target.
+			// NB: No relatedTarget if the mouse left/entered the browser window
+			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+				event.type = handleObj.origType;
+				ret = handleObj.handler.apply( this, arguments );
+				event.type = fix;
+			}
+			return ret;
+		}
+	};
+} );
+
+jQuery.fn.extend( {
+
+	on: function( types, selector, data, fn ) {
+		return on( this, types, selector, data, fn );
+	},
+	one: function( types, selector, data, fn ) {
+		return on( this, types, selector, data, fn, 1 );
+	},
+	off: function( types, selector, fn ) {
+		var handleObj, type;
+		if ( types && types.preventDefault && types.handleObj ) {
+
+			// ( event )  dispatched jQuery.Event
+			handleObj = types.handleObj;
+			jQuery( types.delegateTarget ).off(
+				handleObj.namespace ?
+					handleObj.origType + "." + handleObj.namespace :
+					handleObj.origType,
+				handleObj.selector,
+				handleObj.handler
+			);
+			return this;
+		}
+		if ( typeof types === "object" ) {
+
+			// ( types-object [, selector] )
+			for ( type in types ) {
+				this.off( type, selector, types[ type ] );
+			}
+			return this;
+		}
+		if ( selector === false || typeof selector === "function" ) {
+
+			// ( types [, fn] )
+			fn = selector;
+			selector = undefined;
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		}
+		return this.each( function() {
+			jQuery.event.remove( this, types, fn, selector );
+		} );
+	}
+} );
+
+
+var
+
+	/* eslint-disable max-len */
+
+	// See https://github.com/eslint/eslint/issues/3229
+	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
+
+	/* eslint-enable */
+
+	// Support: IE <=10 - 11, Edge 12 - 13
+	// In IE/Edge using regex groups here causes severe slowdowns.
+	// See https://connect.microsoft.com/IE/feedback/details/1736512/
+	rnoInnerhtml = /<script|<style|<link/i,
+
+	// checked="checked" or checked
+	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+	rscriptTypeMasked = /^true\/(.*)/,
+	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
+
+// Prefer a tbody over its parent table for containing new rows
+function manipulationTarget( elem, content ) {
+	if ( nodeName( elem, "table" ) &&
+		nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
+
+		return jQuery( ">tbody", elem )[ 0 ] || elem;
+	}
+
+	return elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
+	return elem;
+}
+function restoreScript( elem ) {
+	var match = rscriptTypeMasked.exec( elem.type );
+
+	if ( match ) {
+		elem.type = match[ 1 ];
+	} else {
+		elem.removeAttribute( "type" );
+	}
+
+	return elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+	if ( dest.nodeType !== 1 ) {
+		return;
+	}
+
+	// 1. Copy private data: events, handlers, etc.
+	if ( dataPriv.hasData( src ) ) {
+		pdataOld = dataPriv.access( src );
+		pdataCur = dataPriv.set( dest, pdataOld );
+		events = pdataOld.events;
+
+		if ( events ) {
+			delete pdataCur.handle;
+			pdataCur.events = {};
+
+			for ( type in events ) {
+				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+					jQuery.event.add( dest, type, events[ type ][ i ] );
+				}
+			}
+		}
+	}
+
+	// 2. Copy user data
+	if ( dataUser.hasData( src ) ) {
+		udataOld = dataUser.access( src );
+		udataCur = jQuery.extend( {}, udataOld );
+
+		dataUser.set( dest, udataCur );
+	}
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+	var nodeName = dest.nodeName.toLowerCase();
+
+	// Fails to persist the checked state of a cloned checkbox or radio button.
+	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+		dest.checked = src.checked;
+
+	// Fails to return the selected option to the default selected state when cloning options
+	} else if ( nodeName === "input" || nodeName === "textarea" ) {
+		dest.defaultValue = src.defaultValue;
+	}
+}
+
+function domManip( collection, args, callback, ignored ) {
+
+	// Flatten any nested arrays
+	args = concat.apply( [], args );
+
+	var fragment, first, scripts, hasScripts, node, doc,
+		i = 0,
+		l = collection.length,
+		iNoClone = l - 1,
+		value = args[ 0 ],
+		isFunction = jQuery.isFunction( value );
+
+	// We can't cloneNode fragments that contain checked, in WebKit
+	if ( isFunction ||
+			( l > 1 && typeof value === "string" &&
+				!support.checkClone && rchecked.test( value ) ) ) {
+		return collection.each( function( index ) {
+			var self = collection.eq( index );
+			if ( isFunction ) {
+				args[ 0 ] = value.call( this, index, self.html() );
+			}
+			domManip( self, args, callback, ignored );
+		} );
+	}
+
+	if ( l ) {
+		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
+		first = fragment.firstChild;
+
+		if ( fragment.childNodes.length === 1 ) {
+			fragment = first;
+		}
+
+		// Require either new content or an interest in ignored elements to invoke the callback
+		if ( first || ignored ) {
+			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+			hasScripts = scripts.length;
+
+			// Use the original fragment for the last item
+			// instead of the first because it can end up
+			// being emptied incorrectly in certain situations (#8070).
+			for ( ; i < l; i++ ) {
+				node = fragment;
+
+				if ( i !== iNoClone ) {
+					node = jQuery.clone( node, true, true );
+
+					// Keep references to cloned scripts for later restoration
+					if ( hasScripts ) {
+
+						// Support: Android <=4.0 only, PhantomJS 1 only
+						// push.apply(_, arraylike) throws on ancient WebKit
+						jQuery.merge( scripts, getAll( node, "script" ) );
+					}
+				}
+
+				callback.call( collection[ i ], node, i );
+			}
+
+			if ( hasScripts ) {
+				doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+				// Reenable scripts
+				jQuery.map( scripts, restoreScript );
+
+				// Evaluate executable scripts on first document insertion
+				for ( i = 0; i < hasScripts; i++ ) {
+					node = scripts[ i ];
+					if ( rscriptType.test( node.type || "" ) &&
+						!dataPriv.access( node, "globalEval" ) &&
+						jQuery.contains( doc, node ) ) {
+
+						if ( node.src ) {
+
+							// Optional AJAX dependency, but won't run scripts if not present
+							if ( jQuery._evalUrl ) {
+								jQuery._evalUrl( node.src );
+							}
+						} else {
+							DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return collection;
+}
+
+function remove( elem, selector, keepData ) {
+	var node,
+		nodes = selector ? jQuery.filter( selector, elem ) : elem,
+		i = 0;
+
+	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
+		if ( !keepData && node.nodeType === 1 ) {
+			jQuery.cleanData( getAll( node ) );
+		}
+
+		if ( node.parentNode ) {
+			if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
+				setGlobalEval( getAll( node, "script" ) );
+			}
+			node.parentNode.removeChild( node );
+		}
+	}
+
+	return elem;
+}
+
+jQuery.extend( {
+	htmlPrefilter: function( html ) {
+		return html.replace( rxhtmlTag, "<$1></$2>" );
+	},
+
+	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+		var i, l, srcElements, destElements,
+			clone = elem.cloneNode( true ),
+			inPage = jQuery.contains( elem.ownerDocument, elem );
+
+		// Fix IE cloning issues
+		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+				!jQuery.isXMLDoc( elem ) ) {
+
+			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
+			destElements = getAll( clone );
+			srcElements = getAll( elem );
+
+			for ( i = 0, l = srcElements.length; i < l; i++ ) {
+				fixInput( srcElements[ i ], destElements[ i ] );
+			}
+		}
+
+		// Copy the events from the original to the clone
+		if ( dataAndEvents ) {
+			if ( deepDataAndEvents ) {
+				srcElements = srcElements || getAll( elem );
+				destElements = destElements || getAll( clone );
+
+				for ( i = 0, l = srcElements.length; i < l; i++ ) {
+					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+				}
+			} else {
+				cloneCopyEvent( elem, clone );
+			}
+		}
+
+		// Preserve script evaluation history
+		destElements = getAll( clone, "script" );
+		if ( destElements.length > 0 ) {
+			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+		}
+
+		// Return the cloned set
+		return clone;
+	},
+
+	cleanData: function( elems ) {
+		var data, elem, type,
+			special = jQuery.event.special,
+			i = 0;
+
+		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
+			if ( acceptData( elem ) ) {
+				if ( ( data = elem[ dataPriv.expando ] ) ) {
+					if ( data.events ) {
+						for ( type in data.events ) {
+							if ( special[ type ] ) {
+								jQuery.event.remove( elem, type );
+
+							// This is a shortcut to avoid jQuery.event.remove's overhead
+							} else {
+								jQuery.removeEvent( elem, type, data.handle );
+							}
+						}
+					}
+
+					// Support: Chrome <=35 - 45+
+					// Assign undefined instead of using delete, see Data#remove
+					elem[ dataPriv.expando ] = undefined;
+				}
+				if ( elem[ dataUser.expando ] ) {
+
+					// Support: Chrome <=35 - 45+
+					// Assign undefined instead of using delete, see Data#remove
+					elem[ dataUser.expando ] = undefined;
+				}
+			}
+		}
+	}
+} );
+
+jQuery.fn.extend( {
+	detach: function( selector ) {
+		return remove( this, selector, true );
+	},
+
+	remove: function( selector ) {
+		return remove( this, selector );
+	},
+
+	text: function( value ) {
+		return access( this, function( value ) {
+			return value === undefined ?
+				jQuery.text( this ) :
+				this.empty().each( function() {
+					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+						this.textContent = value;
+					}
+				} );
+		}, null, value, arguments.length );
+	},
+
+	append: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.appendChild( elem );
+			}
+		} );
+	},
+
+	prepend: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.insertBefore( elem, target.firstChild );
+			}
+		} );
+	},
+
+	before: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this );
+			}
+		} );
+	},
+
+	after: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this.nextSibling );
+			}
+		} );
+	},
+
+	empty: function() {
+		var elem,
+			i = 0;
+
+		for ( ; ( elem = this[ i ] ) != null; i++ ) {
+			if ( elem.nodeType === 1 ) {
+
+				// Prevent memory leaks
+				jQuery.cleanData( getAll( elem, false ) );
+
+				// Remove any remaining nodes
+				elem.textContent = "";
+			}
+		}
+
+		return this;
+	},
+
+	clone: function( dataAndEvents, deepDataAndEvents ) {
+		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+		return this.map( function() {
+			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+		} );
+	},
+
+	html: function( value ) {
+		return access( this, function( value ) {
+			var elem = this[ 0 ] || {},
+				i = 0,
+				l = this.length;
+
+			if ( value === undefined && elem.nodeType === 1 ) {
+				return elem.innerHTML;
+			}
+
+			// See if we can take a shortcut and just use innerHTML
+			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+				value = jQuery.htmlPrefilter( value );
+
+				try {
+					for ( ; i < l; i++ ) {
+						elem = this[ i ] || {};
+
+						// Remove element nodes and prevent memory leaks
+						if ( elem.nodeType === 1 ) {
+							jQuery.cleanData( getAll( elem, false ) );
+							elem.innerHTML = value;
+						}
+					}
+
+					elem = 0;
+
+				// If using innerHTML throws an exception, use the fallback method
+				} catch ( e ) {}
+			}
+
+			if ( elem ) {
+				this.empty().append( value );
+			}
+		}, null, value, arguments.length );
+	},
+
+	replaceWith: function() {
+		var ignored = [];
+
+		// Make the changes, replacing each non-ignored context element with the new content
+		return domManip( this, arguments, function( elem ) {
+			var parent = this.parentNode;
+
+			if ( jQuery.inArray( this, ignored ) < 0 ) {
+				jQuery.cleanData( getAll( this ) );
+				if ( parent ) {
+					parent.replaceChild( elem, this );
+				}
+			}
+
+		// Force callback invocation
+		}, ignored );
+	}
+} );
+
+jQuery.each( {
+	appendTo: "append",
+	prependTo: "prepend",
+	insertBefore: "before",
+	insertAfter: "after",
+	replaceAll: "replaceWith"
+}, function( name, original ) {
+	jQuery.fn[ name ] = function( selector ) {
+		var elems,
+			ret = [],
+			insert = jQuery( selector ),
+			last = insert.length - 1,
+			i = 0;
+
+		for ( ; i <= last; i++ ) {
+			elems = i === last ? this : this.clone( true );
+			jQuery( insert[ i ] )[ original ]( elems );
+
+			// Support: Android <=4.0 only, PhantomJS 1 only
+			// .get() because push.apply(_, arraylike) throws on ancient WebKit
+			push.apply( ret, elems.get() );
+		}
+
+		return this.pushStack( ret );
+	};
+} );
+var rmargin = ( /^margin/ );
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+
+		// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
+		// IE throws on elements created in popups
+		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+		var view = elem.ownerDocument.defaultView;
+
+		if ( !view || !view.opener ) {
+			view = window;
+		}
+
+		return view.getComputedStyle( elem );
+	};
+
+
+
+( function() {
+
+	// Executing both pixelPosition & boxSizingReliable tests require only one layout
+	// so they're executed at the same time to save the second computation.
+	function computeStyleTests() {
+
+		// This is a singleton, we need to execute it only once
+		if ( !div ) {
+			return;
+		}
+
+		div.style.cssText =
+			"box-sizing:border-box;" +
+			"position:relative;display:block;" +
+			"margin:auto;border:1px;padding:1px;" +
+			"top:1%;width:50%";
+		div.innerHTML = "";
+		documentElement.appendChild( container );
+
+		var divStyle = window.getComputedStyle( div );
+		pixelPositionVal = divStyle.top !== "1%";
+
+		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
+		reliableMarginLeftVal = divStyle.marginLeft === "2px";
+		boxSizingReliableVal = divStyle.width === "4px";
+
+		// Support: Android 4.0 - 4.3 only
+		// Some styles come back with percentage values, even though they shouldn't
+		div.style.marginRight = "50%";
+		pixelMarginRightVal = divStyle.marginRight === "4px";
+
+		documentElement.removeChild( container );
+
+		// Nullify the div so it wouldn't be stored in the memory and
+		// it will also be a sign that checks already performed
+		div = null;
+	}
+
+	var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
+		container = document.createElement( "div" ),
+		div = document.createElement( "div" );
+
+	// Finish early in limited (non-browser) environments
+	if ( !div.style ) {
+		return;
+	}
+
+	// Support: IE <=9 - 11 only
+	// Style of cloned element affects source element cloned (#8908)
+	div.style.backgroundClip = "content-box";
+	div.cloneNode( true ).style.backgroundClip = "";
+	support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+	container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
+		"padding:0;margin-top:1px;position:absolute";
+	container.appendChild( div );
+
+	jQuery.extend( support, {
+		pixelPosition: function() {
+			computeStyleTests();
+			return pixelPositionVal;
+		},
+		boxSizingReliable: function() {
+			computeStyleTests();
+			return boxSizingReliableVal;
+		},
+		pixelMarginRight: function() {
+			computeStyleTests();
+			return pixelMarginRightVal;
+		},
+		reliableMarginLeft: function() {
+			computeStyleTests();
+			return reliableMarginLeftVal;
+		}
+	} );
+} )();
+
+
+function curCSS( elem, name, computed ) {
+	var width, minWidth, maxWidth, ret,
+
+		// Support: Firefox 51+
+		// Retrieving style before computed somehow
+		// fixes an issue with getting wrong values
+		// on detached elements
+		style = elem.style;
+
+	computed = computed || getStyles( elem );
+
+	// getPropertyValue is needed for:
+	//   .css('filter') (IE 9 only, #12537)
+	//   .css('--customProperty) (#3144)
+	if ( computed ) {
+		ret = computed.getPropertyValue( name ) || computed[ name ];
+
+		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+			ret = jQuery.style( elem, name );
+		}
+
+		// A tribute to the "awesome hack by Dean Edwards"
+		// Android Browser returns percentage for some values,
+		// but width seems to be reliably pixels.
+		// This is against the CSSOM draft spec:
+		// https://drafts.csswg.org/cssom/#resolved-values
+		if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+			// Remember the original values
+			width = style.width;
+			minWidth = style.minWidth;
+			maxWidth = style.maxWidth;
+
+			// Put in the new values to get a computed value out
+			style.minWidth = style.maxWidth = style.width = ret;
+			ret = computed.width;
+
+			// Revert the changed values
+			style.width = width;
+			style.minWidth = minWidth;
+			style.maxWidth = maxWidth;
+		}
+	}
+
+	return ret !== undefined ?
+
+		// Support: IE <=9 - 11 only
+		// IE returns zIndex value as an integer.
+		ret + "" :
+		ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+
+	// Define the hook, we'll check on the first run if it's really needed.
+	return {
+		get: function() {
+			if ( conditionFn() ) {
+
+				// Hook not needed (or it's not possible to use it due
+				// to missing dependency), remove it.
+				delete this.get;
+				return;
+			}
+
+			// Hook needed; redefine it so that the support test is not executed again.
+			return ( this.get = hookFn ).apply( this, arguments );
+		}
+	};
+}
+
+
+var
+
+	// Swappable if display is none or starts with table
+	// except "table", "table-cell", or "table-caption"
+	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+	rcustomProp = /^--/,
+	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+	cssNormalTransform = {
+		letterSpacing: "0",
+		fontWeight: "400"
+	},
+
+	cssPrefixes = [ "Webkit", "Moz", "ms" ],
+	emptyStyle = document.createElement( "div" ).style;
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( name ) {
+
+	// Shortcut for names that are not vendor prefixed
+	if ( name in emptyStyle ) {
+		return name;
+	}
+
+	// Check for vendor prefixed names
+	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
+		i = cssPrefixes.length;
+
+	while ( i-- ) {
+		name = cssPrefixes[ i ] + capName;
+		if ( name in emptyStyle ) {
+			return name;
+		}
+	}
+}
+
+// Return a property mapped along what jQuery.cssProps suggests or to
+// a vendor prefixed property.
+function finalPropName( name ) {
+	var ret = jQuery.cssProps[ name ];
+	if ( !ret ) {
+		ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;
+	}
+	return ret;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+
+	// Any relative (+/-) values have already been
+	// normalized at this point
+	var matches = rcssNum.exec( value );
+	return matches ?
+
+		// Guard against undefined "subtract", e.g., when used as in cssHooks
+		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
+		value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+	var i,
+		val = 0;
+
+	// If we already have the right measurement, avoid augmentation
+	if ( extra === ( isBorderBox ? "border" : "content" ) ) {
+		i = 4;
+
+	// Otherwise initialize for horizontal or vertical properties
+	} else {
+		i = name === "width" ? 1 : 0;
+	}
+
+	for ( ; i < 4; i += 2 ) {
+
+		// Both box models exclude margin, so add it if we want it
+		if ( extra === "margin" ) {
+			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+		}
+
+		if ( isBorderBox ) {
+
+			// border-box includes padding, so remove it if we want content
+			if ( extra === "content" ) {
+				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+			}
+
+			// At this point, extra isn't border nor margin, so remove border
+			if ( extra !== "margin" ) {
+				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		} else {
+
+			// At this point, extra isn't content, so add padding
+			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+			// At this point, extra isn't content nor padding, so add border
+			if ( extra !== "padding" ) {
+				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		}
+	}
+
+	return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+	// Start with computed style
+	var valueIsBorderBox,
+		styles = getStyles( elem ),
+		val = curCSS( elem, name, styles ),
+		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+	// Computed unit is not pixels. Stop here and return.
+	if ( rnumnonpx.test( val ) ) {
+		return val;
+	}
+
+	// Check for style in case a browser which returns unreliable values
+	// for getComputedStyle silently falls back to the reliable elem.style
+	valueIsBorderBox = isBorderBox &&
+		( support.boxSizingReliable() || val === elem.style[ name ] );
+
+	// Fall back to offsetWidth/Height when value is "auto"
+	// This happens for inline elements with no explicit setting (gh-3571)
+	if ( val === "auto" ) {
+		val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ];
+	}
+
+	// Normalize "", auto, and prepare for extra
+	val = parseFloat( val ) || 0;
+
+	// Use the active box-sizing model to add/subtract irrelevant styles
+	return ( val +
+		augmentWidthOrHeight(
+			elem,
+			name,
+			extra || ( isBorderBox ? "border" : "content" ),
+			valueIsBorderBox,
+			styles
+		)
+	) + "px";
+}
+
+jQuery.extend( {
+
+	// Add in style property hooks for overriding the default
+	// behavior of getting and setting a style property
+	cssHooks: {
+		opacity: {
+			get: function( elem, computed ) {
+				if ( computed ) {
+
+					// We should always get a number back from opacity
+					var ret = curCSS( elem, "opacity" );
+					return ret === "" ? "1" : ret;
+				}
+			}
+		}
+	},
+
+	// Don't automatically add "px" to these possibly-unitless properties
+	cssNumber: {
+		"animationIterationCount": true,
+		"columnCount": true,
+		"fillOpacity": true,
+		"flexGrow": true,
+		"flexShrink": true,
+		"fontWeight": true,
+		"lineHeight": true,
+		"opacity": true,
+		"order": true,
+		"orphans": true,
+		"widows": true,
+		"zIndex": true,
+		"zoom": true
+	},
+
+	// Add in properties whose names you wish to fix before
+	// setting or getting the value
+	cssProps: {
+		"float": "cssFloat"
+	},
+
+	// Get and set the style property on a DOM Node
+	style: function( elem, name, value, extra ) {
+
+		// Don't set styles on text and comment nodes
+		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+			return;
+		}
+
+		// Make sure that we're working with the right name
+		var ret, type, hooks,
+			origName = jQuery.camelCase( name ),
+			isCustomProp = rcustomProp.test( name ),
+			style = elem.style;
+
+		// Make sure that we're working with the right name. We don't
+		// want to query the value if it is a CSS custom property
+		// since they are user-defined.
+		if ( !isCustomProp ) {
+			name = finalPropName( origName );
+		}
+
+		// Gets hook for the prefixed version, then unprefixed version
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// Check if we're setting a value
+		if ( value !== undefined ) {
+			type = typeof value;
+
+			// Convert "+=" or "-=" to relative numbers (#7345)
+			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
+				value = adjustCSS( elem, name, ret );
+
+				// Fixes bug #9237
+				type = "number";
+			}
+
+			// Make sure that null and NaN values aren't set (#7116)
+			if ( value == null || value !== value ) {
+				return;
+			}
+
+			// If a number was passed in, add the unit (except for certain CSS properties)
+			if ( type === "number" ) {
+				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
+			}
+
+			// background-* props affect original clone's values
+			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+				style[ name ] = "inherit";
+			}
+
+			// If a hook was provided, use that value, otherwise just set the specified value
+			if ( !hooks || !( "set" in hooks ) ||
+				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
+
+				if ( isCustomProp ) {
+					style.setProperty( name, value );
+				} else {
+					style[ name ] = value;
+				}
+			}
+
+		} else {
+
+			// If a hook was provided get the non-computed value from there
+			if ( hooks && "get" in hooks &&
+				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
+
+				return ret;
+			}
+
+			// Otherwise just get the value from the style object
+			return style[ name ];
+		}
+	},
+
+	css: function( elem, name, extra, styles ) {
+		var val, num, hooks,
+			origName = jQuery.camelCase( name ),
+			isCustomProp = rcustomProp.test( name );
+
+		// Make sure that we're working with the right name. We don't
+		// want to modify the value if it is a CSS custom property
+		// since they are user-defined.
+		if ( !isCustomProp ) {
+			name = finalPropName( origName );
+		}
+
+		// Try prefixed name followed by the unprefixed name
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// If a hook was provided get the computed value from there
+		if ( hooks && "get" in hooks ) {
+			val = hooks.get( elem, true, extra );
+		}
+
+		// Otherwise, if a way to get the computed value exists, use that
+		if ( val === undefined ) {
+			val = curCSS( elem, name, styles );
+		}
+
+		// Convert "normal" to computed value
+		if ( val === "normal" && name in cssNormalTransform ) {
+			val = cssNormalTransform[ name ];
+		}
+
+		// Make numeric if forced or a qualifier was provided and val looks numeric
+		if ( extra === "" || extra ) {
+			num = parseFloat( val );
+			return extra === true || isFinite( num ) ? num || 0 : val;
+		}
+
+		return val;
+	}
+} );
+
+jQuery.each( [ "height", "width" ], function( i, name ) {
+	jQuery.cssHooks[ name ] = {
+		get: function( elem, computed, extra ) {
+			if ( computed ) {
+
+				// Certain elements can have dimension info if we invisibly show them
+				// but it must have a current display style that would benefit
+				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
+
+					// Support: Safari 8+
+					// Table columns in Safari have non-zero offsetWidth & zero
+					// getBoundingClientRect().width unless display is changed.
+					// Support: IE <=11 only
+					// Running getBoundingClientRect on a disconnected node
+					// in IE throws an error.
+					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
+						swap( elem, cssShow, function() {
+							return getWidthOrHeight( elem, name, extra );
+						} ) :
+						getWidthOrHeight( elem, name, extra );
+			}
+		},
+
+		set: function( elem, value, extra ) {
+			var matches,
+				styles = extra && getStyles( elem ),
+				subtract = extra && augmentWidthOrHeight(
+					elem,
+					name,
+					extra,
+					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+					styles
+				);
+
+			// Convert to pixels if value adjustment is needed
+			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
+				( matches[ 3 ] || "px" ) !== "px" ) {
+
+				elem.style[ name ] = value;
+				value = jQuery.css( elem, name );
+			}
+
+			return setPositiveNumber( elem, value, subtract );
+		}
+	};
+} );
+
+jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
+	function( elem, computed ) {
+		if ( computed ) {
+			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
+				elem.getBoundingClientRect().left -
+					swap( elem, { marginLeft: 0 }, function() {
+						return elem.getBoundingClientRect().left;
+					} )
+				) + "px";
+		}
+	}
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each( {
+	margin: "",
+	padding: "",
+	border: "Width"
+}, function( prefix, suffix ) {
+	jQuery.cssHooks[ prefix + suffix ] = {
+		expand: function( value ) {
+			var i = 0,
+				expanded = {},
+
+				// Assumes a single number if not a string
+				parts = typeof value === "string" ? value.split( " " ) : [ value ];
+
+			for ( ; i < 4; i++ ) {
+				expanded[ prefix + cssExpand[ i ] + suffix ] =
+					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+			}
+
+			return expanded;
+		}
+	};
+
+	if ( !rmargin.test( prefix ) ) {
+		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+	}
+} );
+
+jQuery.fn.extend( {
+	css: function( name, value ) {
+		return access( this, function( elem, name, value ) {
+			var styles, len,
+				map = {},
+				i = 0;
+
+			if ( Array.isArray( name ) ) {
+				styles = getStyles( elem );
+				len = name.length;
+
+				for ( ; i < len; i++ ) {
+					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+				}
+
+				return map;
+			}
+
+			return value !== undefined ?
+				jQuery.style( elem, name, value ) :
+				jQuery.css( elem, name );
+		}, name, value, arguments.length > 1 );
+	}
+} );
+
+
+function Tween( elem, options, prop, end, easing ) {
+	return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+	constructor: Tween,
+	init: function( elem, options, prop, end, easing, unit ) {
+		this.elem = elem;
+		this.prop = prop;
+		this.easing = easing || jQuery.easing._default;
+		this.options = options;
+		this.start = this.now = this.cur();
+		this.end = end;
+		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+	},
+	cur: function() {
+		var hooks = Tween.propHooks[ this.prop ];
+
+		return hooks && hooks.get ?
+			hooks.get( this ) :
+			Tween.propHooks._default.get( this );
+	},
+	run: function( percent ) {
+		var eased,
+			hooks = Tween.propHooks[ this.prop ];
+
+		if ( this.options.duration ) {
+			this.pos = eased = jQuery.easing[ this.easing ](
+				percent, this.options.duration * percent, 0, 1, this.options.duration
+			);
+		} else {
+			this.pos = eased = percent;
+		}
+		this.now = ( this.end - this.start ) * eased + this.start;
+
+		if ( this.options.step ) {
+			this.options.step.call( this.elem, this.now, this );
+		}
+
+		if ( hooks && hooks.set ) {
+			hooks.set( this );
+		} else {
+			Tween.propHooks._default.set( this );
+		}
+		return this;
+	}
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+	_default: {
+		get: function( tween ) {
+			var result;
+
+			// Use a property on the element directly when it is not a DOM element,
+			// or when there is no matching style property that exists.
+			if ( tween.elem.nodeType !== 1 ||
+				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
+				return tween.elem[ tween.prop ];
+			}
+
+			// Passing an empty string as a 3rd parameter to .css will automatically
+			// attempt a parseFloat and fallback to a string if the parse fails.
+			// Simple values such as "10px" are parsed to Float;
+			// complex values such as "rotate(1rad)" are returned as-is.
+			result = jQuery.css( tween.elem, tween.prop, "" );
+
+			// Empty strings, null, undefined and "auto" are converted to 0.
+			return !result || result === "auto" ? 0 : result;
+		},
+		set: function( tween ) {
+
+			// Use step hook for back compat.
+			// Use cssHook if its there.
+			// Use .style if available and use plain properties where available.
+			if ( jQuery.fx.step[ tween.prop ] ) {
+				jQuery.fx.step[ tween.prop ]( tween );
+			} else if ( tween.elem.nodeType === 1 &&
+				( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
+					jQuery.cssHooks[ tween.prop ] ) ) {
+				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+			} else {
+				tween.elem[ tween.prop ] = tween.now;
+			}
+		}
+	}
+};
+
+// Support: IE <=9 only
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+	set: function( tween ) {
+		if ( tween.elem.nodeType && tween.elem.parentNode ) {
+			tween.elem[ tween.prop ] = tween.now;
+		}
+	}
+};
+
+jQuery.easing = {
+	linear: function( p ) {
+		return p;
+	},
+	swing: function( p ) {
+		return 0.5 - Math.cos( p * Math.PI ) / 2;
+	},
+	_default: "swing"
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+	fxNow, inProgress,
+	rfxtypes = /^(?:toggle|show|hide)$/,
+	rrun = /queueHooks$/;
+
+function schedule() {
+	if ( inProgress ) {
+		if ( document.hidden === false && window.requestAnimationFrame ) {
+			window.requestAnimationFrame( schedule );
+		} else {
+			window.setTimeout( schedule, jQuery.fx.interval );
+		}
+
+		jQuery.fx.tick();
+	}
+}
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+	window.setTimeout( function() {
+		fxNow = undefined;
+	} );
+	return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+	var which,
+		i = 0,
+		attrs = { height: type };
+
+	// If we include width, step value is 1 to do all cssExpand values,
+	// otherwise step value is 2 to skip over Left and Right
+	includeWidth = includeWidth ? 1 : 0;
+	for ( ; i < 4; i += 2 - includeWidth ) {
+		which = cssExpand[ i ];
+		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+	}
+
+	if ( includeWidth ) {
+		attrs.opacity = attrs.width = type;
+	}
+
+	return attrs;
+}
+
+function createTween( value, prop, animation ) {
+	var tween,
+		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
+		index = 0,
+		length = collection.length;
+	for ( ; index < length; index++ ) {
+		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
+
+			// We're done with this property
+			return tween;
+		}
+	}
+}
+
+function defaultPrefilter( elem, props, opts ) {
+	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
+		isBox = "width" in props || "height" in props,
+		anim = this,
+		orig = {},
+		style = elem.style,
+		hidden = elem.nodeType && isHiddenWithinTree( elem ),
+		dataShow = dataPriv.get( elem, "fxshow" );
+
+	// Queue-skipping animations hijack the fx hooks
+	if ( !opts.queue ) {
+		hooks = jQuery._queueHooks( elem, "fx" );
+		if ( hooks.unqueued == null ) {
+			hooks.unqueued = 0;
+			oldfire = hooks.empty.fire;
+			hooks.empty.fire = function() {
+				if ( !hooks.unqueued ) {
+					oldfire();
+				}
+			};
+		}
+		hooks.unqueued++;
+
+		anim.always( function() {
+
+			// Ensure the complete handler is called before this completes
+			anim.always( function() {
+				hooks.unqueued--;
+				if ( !jQuery.queue( elem, "fx" ).length ) {
+					hooks.empty.fire();
+				}
+			} );
+		} );
+	}
+
+	// Detect show/hide animations
+	for ( prop in props ) {
+		value = props[ prop ];
+		if ( rfxtypes.test( value ) ) {
+			delete props[ prop ];
+			toggle = toggle || value === "toggle";
+			if ( value === ( hidden ? "hide" : "show" ) ) {
+
+				// Pretend to be hidden if this is a "show" and
+				// there is still data from a stopped show/hide
+				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+					hidden = true;
+
+				// Ignore all other no-op show/hide data
+				} else {
+					continue;
+				}
+			}
+			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+		}
+	}
+
+	// Bail out if this is a no-op like .hide().hide()
+	propTween = !jQuery.isEmptyObject( props );
+	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
+		return;
+	}
+
+	// Restrict "overflow" and "display" styles during box animations
+	if ( isBox && elem.nodeType === 1 ) {
+
+		// Support: IE <=9 - 11, Edge 12 - 13
+		// Record all 3 overflow attributes because IE does not infer the shorthand
+		// from identically-valued overflowX and overflowY
+		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+		// Identify a display type, preferring old show/hide data over the CSS cascade
+		restoreDisplay = dataShow && dataShow.display;
+		if ( restoreDisplay == null ) {
+			restoreDisplay = dataPriv.get( elem, "display" );
+		}
+		display = jQuery.css( elem, "display" );
+		if ( display === "none" ) {
+			if ( restoreDisplay ) {
+				display = restoreDisplay;
+			} else {
+
+				// Get nonempty value(s) by temporarily forcing visibility
+				showHide( [ elem ], true );
+				restoreDisplay = elem.style.display || restoreDisplay;
+				display = jQuery.css( elem, "display" );
+				showHide( [ elem ] );
+			}
+		}
+
+		// Animate inline elements as inline-block
+		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
+			if ( jQuery.css( elem, "float" ) === "none" ) {
+
+				// Restore the original display value at the end of pure show/hide animations
+				if ( !propTween ) {
+					anim.done( function() {
+						style.display = restoreDisplay;
+					} );
+					if ( restoreDisplay == null ) {
+						display = style.display;
+						restoreDisplay = display === "none" ? "" : display;
+					}
+				}
+				style.display = "inline-block";
+			}
+		}
+	}
+
+	if ( opts.overflow ) {
+		style.overflow = "hidden";
+		anim.always( function() {
+			style.overflow = opts.overflow[ 0 ];
+			style.overflowX = opts.overflow[ 1 ];
+			style.overflowY = opts.overflow[ 2 ];
+		} );
+	}
+
+	// Implement show/hide animations
+	propTween = false;
+	for ( prop in orig ) {
+
+		// General show/hide setup for this element animation
+		if ( !propTween ) {
+			if ( dataShow ) {
+				if ( "hidden" in dataShow ) {
+					hidden = dataShow.hidden;
+				}
+			} else {
+				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
+			}
+
+			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
+			if ( toggle ) {
+				dataShow.hidden = !hidden;
+			}
+
+			// Show elements before animating them
+			if ( hidden ) {
+				showHide( [ elem ], true );
+			}
+
+			/* eslint-disable no-loop-func */
+
+			anim.done( function() {
+
+			/* eslint-enable no-loop-func */
+
+				// The final step of a "hide" animation is actually hiding the element
+				if ( !hidden ) {
+					showHide( [ elem ] );
+				}
+				dataPriv.remove( elem, "fxshow" );
+				for ( prop in orig ) {
+					jQuery.style( elem, prop, orig[ prop ] );
+				}
+			} );
+		}
+
+		// Per-property setup
+		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+		if ( !( prop in dataShow ) ) {
+			dataShow[ prop ] = propTween.start;
+			if ( hidden ) {
+				propTween.end = propTween.start;
+				propTween.start = 0;
+			}
+		}
+	}
+}
+
+function propFilter( props, specialEasing ) {
+	var index, name, easing, value, hooks;
+
+	// camelCase, specialEasing and expand cssHook pass
+	for ( index in props ) {
+		name = jQuery.camelCase( index );
+		easing = specialEasing[ name ];
+		value = props[ index ];
+		if ( Array.isArray( value ) ) {
+			easing = value[ 1 ];
+			value = props[ index ] = value[ 0 ];
+		}
+
+		if ( index !== name ) {
+			props[ name ] = value;
+			delete props[ index ];
+		}
+
+		hooks = jQuery.cssHooks[ name ];
+		if ( hooks && "expand" in hooks ) {
+			value = hooks.expand( value );
+			delete props[ name ];
+
+			// Not quite $.extend, this won't overwrite existing keys.
+			// Reusing 'index' because we have the correct "name"
+			for ( index in value ) {
+				if ( !( index in props ) ) {
+					props[ index ] = value[ index ];
+					specialEasing[ index ] = easing;
+				}
+			}
+		} else {
+			specialEasing[ name ] = easing;
+		}
+	}
+}
+
+function Animation( elem, properties, options ) {
+	var result,
+		stopped,
+		index = 0,
+		length = Animation.prefilters.length,
+		deferred = jQuery.Deferred().always( function() {
+
+			// Don't match elem in the :animated selector
+			delete tick.elem;
+		} ),
+		tick = function() {
+			if ( stopped ) {
+				return false;
+			}
+			var currentTime = fxNow || createFxNow(),
+				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+
+				// Support: Android 2.3 only
+				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+				temp = remaining / animation.duration || 0,
+				percent = 1 - temp,
+				index = 0,
+				length = animation.tweens.length;
+
+			for ( ; index < length; index++ ) {
+				animation.tweens[ index ].run( percent );
+			}
+
+			deferred.notifyWith( elem, [ animation, percent, remaining ] );
+
+			// If there's more to do, yield
+			if ( percent < 1 && length ) {
+				return remaining;
+			}
+
+			// If this was an empty animation, synthesize a final progress notification
+			if ( !length ) {
+				deferred.notifyWith( elem, [ animation, 1, 0 ] );
+			}
+
+			// Resolve the animation and report its conclusion
+			deferred.resolveWith( elem, [ animation ] );
+			return false;
+		},
+		animation = deferred.promise( {
+			elem: elem,
+			props: jQuery.extend( {}, properties ),
+			opts: jQuery.extend( true, {
+				specialEasing: {},
+				easing: jQuery.easing._default
+			}, options ),
+			originalProperties: properties,
+			originalOptions: options,
+			startTime: fxNow || createFxNow(),
+			duration: options.duration,
+			tweens: [],
+			createTween: function( prop, end ) {
+				var tween = jQuery.Tween( elem, animation.opts, prop, end,
+						animation.opts.specialEasing[ prop ] || animation.opts.easing );
+				animation.tweens.push( tween );
+				return tween;
+			},
+			stop: function( gotoEnd ) {
+				var index = 0,
+
+					// If we are going to the end, we want to run all the tweens
+					// otherwise we skip this part
+					length = gotoEnd ? animation.tweens.length : 0;
+				if ( stopped ) {
+					return this;
+				}
+				stopped = true;
+				for ( ; index < length; index++ ) {
+					animation.tweens[ index ].run( 1 );
+				}
+
+				// Resolve when we played the last frame; otherwise, reject
+				if ( gotoEnd ) {
+					deferred.notifyWith( elem, [ animation, 1, 0 ] );
+					deferred.resolveWith( elem, [ animation, gotoEnd ] );
+				} else {
+					deferred.rejectWith( elem, [ animation, gotoEnd ] );
+				}
+				return this;
+			}
+		} ),
+		props = animation.props;
+
+	propFilter( props, animation.opts.specialEasing );
+
+	for ( ; index < length; index++ ) {
+		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
+		if ( result ) {
+			if ( jQuery.isFunction( result.stop ) ) {
+				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
+					jQuery.proxy( result.stop, result );
+			}
+			return result;
+		}
+	}
+
+	jQuery.map( props, createTween, animation );
+
+	if ( jQuery.isFunction( animation.opts.start ) ) {
+		animation.opts.start.call( elem, animation );
+	}
+
+	// Attach callbacks from options
+	animation
+		.progress( animation.opts.progress )
+		.done( animation.opts.done, animation.opts.complete )
+		.fail( animation.opts.fail )
+		.always( animation.opts.always );
+
+	jQuery.fx.timer(
+		jQuery.extend( tick, {
+			elem: elem,
+			anim: animation,
+			queue: animation.opts.queue
+		} )
+	);
+
+	return animation;
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+	tweeners: {
+		"*": [ function( prop, value ) {
+			var tween = this.createTween( prop, value );
+			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
+			return tween;
+		} ]
+	},
+
+	tweener: function( props, callback ) {
+		if ( jQuery.isFunction( props ) ) {
+			callback = props;
+			props = [ "*" ];
+		} else {
+			props = props.match( rnothtmlwhite );
+		}
+
+		var prop,
+			index = 0,
+			length = props.length;
+
+		for ( ; index < length; index++ ) {
+			prop = props[ index ];
+			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
+			Animation.tweeners[ prop ].unshift( callback );
+		}
+	},
+
+	prefilters: [ defaultPrefilter ],
+
+	prefilter: function( callback, prepend ) {
+		if ( prepend ) {
+			Animation.prefilters.unshift( callback );
+		} else {
+			Animation.prefilters.push( callback );
+		}
+	}
+} );
+
+jQuery.speed = function( speed, easing, fn ) {
+	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+		complete: fn || !fn && easing ||
+			jQuery.isFunction( speed ) && speed,
+		duration: speed,
+		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+	};
+
+	// Go to the end state if fx are off
+	if ( jQuery.fx.off ) {
+		opt.duration = 0;
+
+	} else {
+		if ( typeof opt.duration !== "number" ) {
+			if ( opt.duration in jQuery.fx.speeds ) {
+				opt.duration = jQuery.fx.speeds[ opt.duration ];
+
+			} else {
+				opt.duration = jQuery.fx.speeds._default;
+			}
+		}
+	}
+
+	// Normalize opt.queue - true/undefined/null -> "fx"
+	if ( opt.queue == null || opt.queue === true ) {
+		opt.queue = "fx";
+	}
+
+	// Queueing
+	opt.old = opt.complete;
+
+	opt.complete = function() {
+		if ( jQuery.isFunction( opt.old ) ) {
+			opt.old.call( this );
+		}
+
+		if ( opt.queue ) {
+			jQuery.dequeue( this, opt.queue );
+		}
+	};
+
+	return opt;
+};
+
+jQuery.fn.extend( {
+	fadeTo: function( speed, to, easing, callback ) {
+
+		// Show any hidden elements after setting opacity to 0
+		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
+
+			// Animate to the value specified
+			.end().animate( { opacity: to }, speed, easing, callback );
+	},
+	animate: function( prop, speed, easing, callback ) {
+		var empty = jQuery.isEmptyObject( prop ),
+			optall = jQuery.speed( speed, easing, callback ),
+			doAnimation = function() {
+
+				// Operate on a copy of prop so per-property easing won't be lost
+				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+				// Empty animations, or finishing resolves immediately
+				if ( empty || dataPriv.get( this, "finish" ) ) {
+					anim.stop( true );
+				}
+			};
+			doAnimation.finish = doAnimation;
+
+		return empty || optall.queue === false ?
+			this.each( doAnimation ) :
+			this.queue( optall.queue, doAnimation );
+	},
+	stop: function( type, clearQueue, gotoEnd ) {
+		var stopQueue = function( hooks ) {
+			var stop = hooks.stop;
+			delete hooks.stop;
+			stop( gotoEnd );
+		};
+
+		if ( typeof type !== "string" ) {
+			gotoEnd = clearQueue;
+			clearQueue = type;
+			type = undefined;
+		}
+		if ( clearQueue && type !== false ) {
+			this.queue( type || "fx", [] );
+		}
+
+		return this.each( function() {
+			var dequeue = true,
+				index = type != null && type + "queueHooks",
+				timers = jQuery.timers,
+				data = dataPriv.get( this );
+
+			if ( index ) {
+				if ( data[ index ] && data[ index ].stop ) {
+					stopQueue( data[ index ] );
+				}
+			} else {
+				for ( index in data ) {
+					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+						stopQueue( data[ index ] );
+					}
+				}
+			}
+
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this &&
+					( type == null || timers[ index ].queue === type ) ) {
+
+					timers[ index ].anim.stop( gotoEnd );
+					dequeue = false;
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Start the next in the queue if the last step wasn't forced.
+			// Timers currently will call their complete callbacks, which
+			// will dequeue but only if they were gotoEnd.
+			if ( dequeue || !gotoEnd ) {
+				jQuery.dequeue( this, type );
+			}
+		} );
+	},
+	finish: function( type ) {
+		if ( type !== false ) {
+			type = type || "fx";
+		}
+		return this.each( function() {
+			var index,
+				data = dataPriv.get( this ),
+				queue = data[ type + "queue" ],
+				hooks = data[ type + "queueHooks" ],
+				timers = jQuery.timers,
+				length = queue ? queue.length : 0;
+
+			// Enable finishing flag on private data
+			data.finish = true;
+
+			// Empty the queue first
+			jQuery.queue( this, type, [] );
+
+			if ( hooks && hooks.stop ) {
+				hooks.stop.call( this, true );
+			}
+
+			// Look for any active animations, and finish them
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+					timers[ index ].anim.stop( true );
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Look for any animations in the old queue and finish them
+			for ( index = 0; index < length; index++ ) {
+				if ( queue[ index ] && queue[ index ].finish ) {
+					queue[ index ].finish.call( this );
+				}
+			}
+
+			// Turn off finishing flag
+			delete data.finish;
+		} );
+	}
+} );
+
+jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
+	var cssFn = jQuery.fn[ name ];
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return speed == null || typeof speed === "boolean" ?
+			cssFn.apply( this, arguments ) :
+			this.animate( genFx( name, true ), speed, easing, callback );
+	};
+} );
+
+// Generate shortcuts for custom animations
+jQuery.each( {
+	slideDown: genFx( "show" ),
+	slideUp: genFx( "hide" ),
+	slideToggle: genFx( "toggle" ),
+	fadeIn: { opacity: "show" },
+	fadeOut: { opacity: "hide" },
+	fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return this.animate( props, speed, easing, callback );
+	};
+} );
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+	var timer,
+		i = 0,
+		timers = jQuery.timers;
+
+	fxNow = jQuery.now();
+
+	for ( ; i < timers.length; i++ ) {
+		timer = timers[ i ];
+
+		// Run the timer and safely remove it when done (allowing for external removal)
+		if ( !timer() && timers[ i ] === timer ) {
+			timers.splice( i--, 1 );
+		}
+	}
+
+	if ( !timers.length ) {
+		jQuery.fx.stop();
+	}
+	fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+	jQuery.timers.push( timer );
+	jQuery.fx.start();
+};
+
+jQuery.fx.interval = 13;
+jQuery.fx.start = function() {
+	if ( inProgress ) {
+		return;
+	}
+
+	inProgress = true;
+	schedule();
+};
+
+jQuery.fx.stop = function() {
+	inProgress = null;
+};
+
+jQuery.fx.speeds = {
+	slow: 600,
+	fast: 200,
+
+	// Default speed
+	_default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+	type = type || "fx";
+
+	return this.queue( type, function( next, hooks ) {
+		var timeout = window.setTimeout( next, time );
+		hooks.stop = function() {
+			window.clearTimeout( timeout );
+		};
+	} );
+};
+
+
+( function() {
+	var input = document.createElement( "input" ),
+		select = document.createElement( "select" ),
+		opt = select.appendChild( document.createElement( "option" ) );
+
+	input.type = "checkbox";
+
+	// Support: Android <=4.3 only
+	// Default value for a checkbox should be "on"
+	support.checkOn = input.value !== "";
+
+	// Support: IE <=11 only
+	// Must access selectedIndex to make default options select
+	support.optSelected = opt.selected;
+
+	// Support: IE <=11 only
+	// An input loses its value after becoming a radio
+	input = document.createElement( "input" );
+	input.value = "t";
+	input.type = "radio";
+	support.radioValue = input.value === "t";
+} )();
+
+
+var boolHook,
+	attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend( {
+	attr: function( name, value ) {
+		return access( this, jQuery.attr, name, value, arguments.length > 1 );
+	},
+
+	removeAttr: function( name ) {
+		return this.each( function() {
+			jQuery.removeAttr( this, name );
+		} );
+	}
+} );
+
+jQuery.extend( {
+	attr: function( elem, name, value ) {
+		var ret, hooks,
+			nType = elem.nodeType;
+
+		// Don't get/set attributes on text, comment and attribute nodes
+		if ( nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		// Fallback to prop when attributes are not supported
+		if ( typeof elem.getAttribute === "undefined" ) {
+			return jQuery.prop( elem, name, value );
+		}
+
+		// Attribute hooks are determined by the lowercase version
+		// Grab necessary hook if one is defined
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
+				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
+		}
+
+		if ( value !== undefined ) {
+			if ( value === null ) {
+				jQuery.removeAttr( elem, name );
+				return;
+			}
+
+			if ( hooks && "set" in hooks &&
+				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+				return ret;
+			}
+
+			elem.setAttribute( name, value + "" );
+			return value;
+		}
+
+		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+			return ret;
+		}
+
+		ret = jQuery.find.attr( elem, name );
+
+		// Non-existent attributes return null, we normalize to undefined
+		return ret == null ? undefined : ret;
+	},
+
+	attrHooks: {
+		type: {
+			set: function( elem, value ) {
+				if ( !support.radioValue && value === "radio" &&
+					nodeName( elem, "input" ) ) {
+					var val = elem.value;
+					elem.setAttribute( "type", value );
+					if ( val ) {
+						elem.value = val;
+					}
+					return value;
+				}
+			}
+		}
+	},
+
+	removeAttr: function( elem, value ) {
+		var name,
+			i = 0,
+
+			// Attribute names can contain non-HTML whitespace characters
+			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
+			attrNames = value && value.match( rnothtmlwhite );
+
+		if ( attrNames && elem.nodeType === 1 ) {
+			while ( ( name = attrNames[ i++ ] ) ) {
+				elem.removeAttribute( name );
+			}
+		}
+	}
+} );
+
+// Hooks for boolean attributes
+boolHook = {
+	set: function( elem, value, name ) {
+		if ( value === false ) {
+
+			// Remove boolean attributes when set to false
+			jQuery.removeAttr( elem, name );
+		} else {
+			elem.setAttribute( name, name );
+		}
+		return name;
+	}
+};
+
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+	var getter = attrHandle[ name ] || jQuery.find.attr;
+
+	attrHandle[ name ] = function( elem, name, isXML ) {
+		var ret, handle,
+			lowercaseName = name.toLowerCase();
+
+		if ( !isXML ) {
+
+			// Avoid an infinite loop by temporarily removing this function from the getter
+			handle = attrHandle[ lowercaseName ];
+			attrHandle[ lowercaseName ] = ret;
+			ret = getter( elem, name, isXML ) != null ?
+				lowercaseName :
+				null;
+			attrHandle[ lowercaseName ] = handle;
+		}
+		return ret;
+	};
+} );
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i,
+	rclickable = /^(?:a|area)$/i;
+
+jQuery.fn.extend( {
+	prop: function( name, value ) {
+		return access( this, jQuery.prop, name, value, arguments.length > 1 );
+	},
+
+	removeProp: function( name ) {
+		return this.each( function() {
+			delete this[ jQuery.propFix[ name ] || name ];
+		} );
+	}
+} );
+
+jQuery.extend( {
+	prop: function( elem, name, value ) {
+		var ret, hooks,
+			nType = elem.nodeType;
+
+		// Don't get/set properties on text, comment and attribute nodes
+		if ( nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+
+			// Fix name and attach hooks
+			name = jQuery.propFix[ name ] || name;
+			hooks = jQuery.propHooks[ name ];
+		}
+
+		if ( value !== undefined ) {
+			if ( hooks && "set" in hooks &&
+				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+				return ret;
+			}
+
+			return ( elem[ name ] = value );
+		}
+
+		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+			return ret;
+		}
+
+		return elem[ name ];
+	},
+
+	propHooks: {
+		tabIndex: {
+			get: function( elem ) {
+
+				// Support: IE <=9 - 11 only
+				// elem.tabIndex doesn't always return the
+				// correct value when it hasn't been explicitly set
+				// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+				// Use proper attribute retrieval(#12072)
+				var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+				if ( tabindex ) {
+					return parseInt( tabindex, 10 );
+				}
+
+				if (
+					rfocusable.test( elem.nodeName ) ||
+					rclickable.test( elem.nodeName ) &&
+					elem.href
+				) {
+					return 0;
+				}
+
+				return -1;
+			}
+		}
+	},
+
+	propFix: {
+		"for": "htmlFor",
+		"class": "className"
+	}
+} );
+
+// Support: IE <=11 only
+// Accessing the selectedIndex property
+// forces the browser to respect setting selected
+// on the option
+// The getter ensures a default option is selected
+// when in an optgroup
+// eslint rule "no-unused-expressions" is disabled for this code
+// since it considers such accessions noop
+if ( !support.optSelected ) {
+	jQuery.propHooks.selected = {
+		get: function( elem ) {
+
+			/* eslint no-unused-expressions: "off" */
+
+			var parent = elem.parentNode;
+			if ( parent && parent.parentNode ) {
+				parent.parentNode.selectedIndex;
+			}
+			return null;
+		},
+		set: function( elem ) {
+
+			/* eslint no-unused-expressions: "off" */
+
+			var parent = elem.parentNode;
+			if ( parent ) {
+				parent.selectedIndex;
+
+				if ( parent.parentNode ) {
+					parent.parentNode.selectedIndex;
+				}
+			}
+		}
+	};
+}
+
+jQuery.each( [
+	"tabIndex",
+	"readOnly",
+	"maxLength",
+	"cellSpacing",
+	"cellPadding",
+	"rowSpan",
+	"colSpan",
+	"useMap",
+	"frameBorder",
+	"contentEditable"
+], function() {
+	jQuery.propFix[ this.toLowerCase() ] = this;
+} );
+
+
+
+
+	// Strip and collapse whitespace according to HTML spec
+	// https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
+	function stripAndCollapse( value ) {
+		var tokens = value.match( rnothtmlwhite ) || [];
+		return tokens.join( " " );
+	}
+
+
+function getClass( elem ) {
+	return elem.getAttribute && elem.getAttribute( "class" ) || "";
+}
+
+jQuery.fn.extend( {
+	addClass: function( value ) {
+		var classes, elem, cur, curValue, clazz, j, finalValue,
+			i = 0;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each( function( j ) {
+				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
+			} );
+		}
+
+		if ( typeof value === "string" && value ) {
+			classes = value.match( rnothtmlwhite ) || [];
+
+			while ( ( elem = this[ i++ ] ) ) {
+				curValue = getClass( elem );
+				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+				if ( cur ) {
+					j = 0;
+					while ( ( clazz = classes[ j++ ] ) ) {
+						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+							cur += clazz + " ";
+						}
+					}
+
+					// Only assign if different to avoid unneeded rendering.
+					finalValue = stripAndCollapse( cur );
+					if ( curValue !== finalValue ) {
+						elem.setAttribute( "class", finalValue );
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	removeClass: function( value ) {
+		var classes, elem, cur, curValue, clazz, j, finalValue,
+			i = 0;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each( function( j ) {
+				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
+			} );
+		}
+
+		if ( !arguments.length ) {
+			return this.attr( "class", "" );
+		}
+
+		if ( typeof value === "string" && value ) {
+			classes = value.match( rnothtmlwhite ) || [];
+
+			while ( ( elem = this[ i++ ] ) ) {
+				curValue = getClass( elem );
+
+				// This expression is here for better compressibility (see addClass)
+				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+				if ( cur ) {
+					j = 0;
+					while ( ( clazz = classes[ j++ ] ) ) {
+
+						// Remove *all* instances
+						while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
+							cur = cur.replace( " " + clazz + " ", " " );
+						}
+					}
+
+					// Only assign if different to avoid unneeded rendering.
+					finalValue = stripAndCollapse( cur );
+					if ( curValue !== finalValue ) {
+						elem.setAttribute( "class", finalValue );
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	toggleClass: function( value, stateVal ) {
+		var type = typeof value;
+
+		if ( typeof stateVal === "boolean" && type === "string" ) {
+			return stateVal ? this.addClass( value ) : this.removeClass( value );
+		}
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each( function( i ) {
+				jQuery( this ).toggleClass(
+					value.call( this, i, getClass( this ), stateVal ),
+					stateVal
+				);
+			} );
+		}
+
+		return this.each( function() {
+			var className, i, self, classNames;
+
+			if ( type === "string" ) {
+
+				// Toggle individual class names
+				i = 0;
+				self = jQuery( this );
+				classNames = value.match( rnothtmlwhite ) || [];
+
+				while ( ( className = classNames[ i++ ] ) ) {
+
+					// Check each className given, space separated list
+					if ( self.hasClass( className ) ) {
+						self.removeClass( className );
+					} else {
+						self.addClass( className );
+					}
+				}
+
+			// Toggle whole class name
+			} else if ( value === undefined || type === "boolean" ) {
+				className = getClass( this );
+				if ( className ) {
+
+					// Store className if set
+					dataPriv.set( this, "__className__", className );
+				}
+
+				// If the element has a class name or if we're passed `false`,
+				// then remove the whole classname (if there was one, the above saved it).
+				// Otherwise bring back whatever was previously saved (if anything),
+				// falling back to the empty string if nothing was stored.
+				if ( this.setAttribute ) {
+					this.setAttribute( "class",
+						className || value === false ?
+						"" :
+						dataPriv.get( this, "__className__" ) || ""
+					);
+				}
+			}
+		} );
+	},
+
+	hasClass: function( selector ) {
+		var className, elem,
+			i = 0;
+
+		className = " " + selector + " ";
+		while ( ( elem = this[ i++ ] ) ) {
+			if ( elem.nodeType === 1 &&
+				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
+					return true;
+			}
+		}
+
+		return false;
+	}
+} );
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend( {
+	val: function( value ) {
+		var hooks, ret, isFunction,
+			elem = this[ 0 ];
+
+		if ( !arguments.length ) {
+			if ( elem ) {
+				hooks = jQuery.valHooks[ elem.type ] ||
+					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+				if ( hooks &&
+					"get" in hooks &&
+					( ret = hooks.get( elem, "value" ) ) !== undefined
+				) {
+					return ret;
+				}
+
+				ret = elem.value;
+
+				// Handle most common string cases
+				if ( typeof ret === "string" ) {
+					return ret.replace( rreturn, "" );
+				}
+
+				// Handle cases where value is null/undef or number
+				return ret == null ? "" : ret;
+			}
+
+			return;
+		}
+
+		isFunction = jQuery.isFunction( value );
+
+		return this.each( function( i ) {
+			var val;
+
+			if ( this.nodeType !== 1 ) {
+				return;
+			}
+
+			if ( isFunction ) {
+				val = value.call( this, i, jQuery( this ).val() );
+			} else {
+				val = value;
+			}
+
+			// Treat null/undefined as ""; convert numbers to string
+			if ( val == null ) {
+				val = "";
+
+			} else if ( typeof val === "number" ) {
+				val += "";
+
+			} else if ( Array.isArray( val ) ) {
+				val = jQuery.map( val, function( value ) {
+					return value == null ? "" : value + "";
+				} );
+			}
+
+			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+			// If set returns undefined, fall back to normal setting
+			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
+				this.value = val;
+			}
+		} );
+	}
+} );
+
+jQuery.extend( {
+	valHooks: {
+		option: {
+			get: function( elem ) {
+
+				var val = jQuery.find.attr( elem, "value" );
+				return val != null ?
+					val :
+
+					// Support: IE <=10 - 11 only
+					// option.text throws exceptions (#14686, #14858)
+					// Strip and collapse whitespace
+					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+					stripAndCollapse( jQuery.text( elem ) );
+			}
+		},
+		select: {
+			get: function( elem ) {
+				var value, option, i,
+					options = elem.options,
+					index = elem.selectedIndex,
+					one = elem.type === "select-one",
+					values = one ? null : [],
+					max = one ? index + 1 : options.length;
+
+				if ( index < 0 ) {
+					i = max;
+
+				} else {
+					i = one ? index : 0;
+				}
+
+				// Loop through all the selected options
+				for ( ; i < max; i++ ) {
+					option = options[ i ];
+
+					// Support: IE <=9 only
+					// IE8-9 doesn't update selected after form reset (#2551)
+					if ( ( option.selected || i === index ) &&
+
+							// Don't return options that are disabled or in a disabled optgroup
+							!option.disabled &&
+							( !option.parentNode.disabled ||
+								!nodeName( option.parentNode, "optgroup" ) ) ) {
+
+						// Get the specific value for the option
+						value = jQuery( option ).val();
+
+						// We don't need an array for one selects
+						if ( one ) {
+							return value;
+						}
+
+						// Multi-Selects return an array
+						values.push( value );
+					}
+				}
+
+				return values;
+			},
+
+			set: function( elem, value ) {
+				var optionSet, option,
+					options = elem.options,
+					values = jQuery.makeArray( value ),
+					i = options.length;
+
+				while ( i-- ) {
+					option = options[ i ];
+
+					/* eslint-disable no-cond-assign */
+
+					if ( option.selected =
+						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
+					) {
+						optionSet = true;
+					}
+
+					/* eslint-enable no-cond-assign */
+				}
+
+				// Force browsers to behave consistently when non-matching value is set
+				if ( !optionSet ) {
+					elem.selectedIndex = -1;
+				}
+				return values;
+			}
+		}
+	}
+} );
+
+// Radios and checkboxes getter/setter
+jQuery.each( [ "radio", "checkbox" ], function() {
+	jQuery.valHooks[ this ] = {
+		set: function( elem, value ) {
+			if ( Array.isArray( value ) ) {
+				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
+			}
+		}
+	};
+	if ( !support.checkOn ) {
+		jQuery.valHooks[ this ].get = function( elem ) {
+			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
+		};
+	}
+} );
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
+
+jQuery.extend( jQuery.event, {
+
+	trigger: function( event, data, elem, onlyHandlers ) {
+
+		var i, cur, tmp, bubbleType, ontype, handle, special,
+			eventPath = [ elem || document ],
+			type = hasOwn.call( event, "type" ) ? event.type : event,
+			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
+
+		cur = tmp = elem = elem || document;
+
+		// Don't do events on text and comment nodes
+		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+			return;
+		}
+
+		// focus/blur morphs to focusin/out; ensure we're not firing them right now
+		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+			return;
+		}
+
+		if ( type.indexOf( "." ) > -1 ) {
+
+			// Namespaced trigger; create a regexp to match event type in handle()
+			namespaces = type.split( "." );
+			type = namespaces.shift();
+			namespaces.sort();
+		}
+		ontype = type.indexOf( ":" ) < 0 && "on" + type;
+
+		// Caller can pass in a jQuery.Event object, Object, or just an event type string
+		event = event[ jQuery.expando ] ?
+			event :
+			new jQuery.Event( type, typeof event === "object" && event );
+
+		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+		event.isTrigger = onlyHandlers ? 2 : 3;
+		event.namespace = namespaces.join( "." );
+		event.rnamespace = event.namespace ?
+			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
+			null;
+
+		// Clean up the event in case it is being reused
+		event.result = undefined;
+		if ( !event.target ) {
+			event.target = elem;
+		}
+
+		// Clone any incoming data and prepend the event, creating the handler arg list
+		data = data == null ?
+			[ event ] :
+			jQuery.makeArray( data, [ event ] );
+
+		// Allow special events to draw outside the lines
+		special = jQuery.event.special[ type ] || {};
+		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+			return;
+		}
+
+		// Determine event propagation path in advance, per W3C events spec (#9951)
+		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+			bubbleType = special.delegateType || type;
+			if ( !rfocusMorph.test( bubbleType + type ) ) {
+				cur = cur.parentNode;
+			}
+			for ( ; cur; cur = cur.parentNode ) {
+				eventPath.push( cur );
+				tmp = cur;
+			}
+
+			// Only add window if we got to document (e.g., not plain obj or detached DOM)
+			if ( tmp === ( elem.ownerDocument || document ) ) {
+				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+			}
+		}
+
+		// Fire handlers on the event path
+		i = 0;
+		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
+
+			event.type = i > 1 ?
+				bubbleType :
+				special.bindType || type;
+
+			// jQuery handler
+			handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
+				dataPriv.get( cur, "handle" );
+			if ( handle ) {
+				handle.apply( cur, data );
+			}
+
+			// Native handler
+			handle = ontype && cur[ ontype ];
+			if ( handle && handle.apply && acceptData( cur ) ) {
+				event.result = handle.apply( cur, data );
+				if ( event.result === false ) {
+					event.preventDefault();
+				}
+			}
+		}
+		event.type = type;
+
+		// If nobody prevented the default action, do it now
+		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+			if ( ( !special._default ||
+				special._default.apply( eventPath.pop(), data ) === false ) &&
+				acceptData( elem ) ) {
+
+				// Call a native DOM method on the target with the same name as the event.
+				// Don't do default actions on window, that's where global variables be (#6170)
+				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+					// Don't re-trigger an onFOO event when we call its FOO() method
+					tmp = elem[ ontype ];
+
+					if ( tmp ) {
+						elem[ ontype ] = null;
+					}
+
+					// Prevent re-triggering of the same event, since we already bubbled it above
+					jQuery.event.triggered = type;
+					elem[ type ]();
+					jQuery.event.triggered = undefined;
+
+					if ( tmp ) {
+						elem[ ontype ] = tmp;
+					}
+				}
+			}
+		}
+
+		return event.result;
+	},
+
+	// Piggyback on a donor event to simulate a different one
+	// Used only for `focus(in | out)` events
+	simulate: function( type, elem, event ) {
+		var e = jQuery.extend(
+			new jQuery.Event(),
+			event,
+			{
+				type: type,
+				isSimulated: true
+			}
+		);
+
+		jQuery.event.trigger( e, null, elem );
+	}
+
+} );
+
+jQuery.fn.extend( {
+
+	trigger: function( type, data ) {
+		return this.each( function() {
+			jQuery.event.trigger( type, data, this );
+		} );
+	},
+	triggerHandler: function( type, data ) {
+		var elem = this[ 0 ];
+		if ( elem ) {
+			return jQuery.event.trigger( type, data, elem, true );
+		}
+	}
+} );
+
+
+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
+	function( i, name ) {
+
+	// Handle event binding
+	jQuery.fn[ name ] = function( data, fn ) {
+		return arguments.length > 0 ?
+			this.on( name, null, data, fn ) :
+			this.trigger( name );
+	};
+} );
+
+jQuery.fn.extend( {
+	hover: function( fnOver, fnOut ) {
+		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+	}
+} );
+
+
+
+
+support.focusin = "onfocusin" in window;
+
+
+// Support: Firefox <=44
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
+	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+		// Attach a single capturing handler on the document while someone wants focusin/focusout
+		var handler = function( event ) {
+			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
+		};
+
+		jQuery.event.special[ fix ] = {
+			setup: function() {
+				var doc = this.ownerDocument || this,
+					attaches = dataPriv.access( doc, fix );
+
+				if ( !attaches ) {
+					doc.addEventListener( orig, handler, true );
+				}
+				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
+			},
+			teardown: function() {
+				var doc = this.ownerDocument || this,
+					attaches = dataPriv.access( doc, fix ) - 1;
+
+				if ( !attaches ) {
+					doc.removeEventListener( orig, handler, true );
+					dataPriv.remove( doc, fix );
+
+				} else {
+					dataPriv.access( doc, fix, attaches );
+				}
+			}
+		};
+	} );
+}
+var location = window.location;
+
+var nonce = jQuery.now();
+
+var rquery = ( /\?/ );
+
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+	var xml;
+	if ( !data || typeof data !== "string" ) {
+		return null;
+	}
+
+	// Support: IE 9 - 11 only
+	// IE throws on parseFromString with invalid input.
+	try {
+		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
+	} catch ( e ) {
+		xml = undefined;
+	}
+
+	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+		jQuery.error( "Invalid XML: " + data );
+	}
+	return xml;
+};
+
+
+var
+	rbracket = /\[\]$/,
+	rCRLF = /\r?\n/g,
+	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+	rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+	var name;
+
+	if ( Array.isArray( obj ) ) {
+
+		// Serialize array item.
+		jQuery.each( obj, function( i, v ) {
+			if ( traditional || rbracket.test( prefix ) ) {
+
+				// Treat each array item as a scalar.
+				add( prefix, v );
+
+			} else {
+
+				// Item is non-scalar (array or object), encode its numeric index.
+				buildParams(
+					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
+					v,
+					traditional,
+					add
+				);
+			}
+		} );
+
+	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
+
+		// Serialize object item.
+		for ( name in obj ) {
+			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+		}
+
+	} else {
+
+		// Serialize scalar item.
+		add( prefix, obj );
+	}
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+	var prefix,
+		s = [],
+		add = function( key, valueOrFunction ) {
+
+			// If value is a function, invoke it and use its return value
+			var value = jQuery.isFunction( valueOrFunction ) ?
+				valueOrFunction() :
+				valueOrFunction;
+
+			s[ s.length ] = encodeURIComponent( key ) + "=" +
+				encodeURIComponent( value == null ? "" : value );
+		};
+
+	// If an array was passed in, assume that it is an array of form elements.
+	if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+
+		// Serialize the form elements
+		jQuery.each( a, function() {
+			add( this.name, this.value );
+		} );
+
+	} else {
+
+		// If traditional, encode the "old" way (the way 1.3.2 or older
+		// did it), otherwise encode params recursively.
+		for ( prefix in a ) {
+			buildParams( prefix, a[ prefix ], traditional, add );
+		}
+	}
+
+	// Return the resulting serialization
+	return s.join( "&" );
+};
+
+jQuery.fn.extend( {
+	serialize: function() {
+		return jQuery.param( this.serializeArray() );
+	},
+	serializeArray: function() {
+		return this.map( function() {
+
+			// Can add propHook for "elements" to filter or add form elements
+			var elements = jQuery.prop( this, "elements" );
+			return elements ? jQuery.makeArray( elements ) : this;
+		} )
+		.filter( function() {
+			var type = this.type;
+
+			// Use .is( ":disabled" ) so that fieldset[disabled] works
+			return this.name && !jQuery( this ).is( ":disabled" ) &&
+				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+				( this.checked || !rcheckableType.test( type ) );
+		} )
+		.map( function( i, elem ) {
+			var val = jQuery( this ).val();
+
+			if ( val == null ) {
+				return null;
+			}
+
+			if ( Array.isArray( val ) ) {
+				return jQuery.map( val, function( val ) {
+					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+				} );
+			}
+
+			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+		} ).get();
+	}
+} );
+
+
+var
+	r20 = /%20/g,
+	rhash = /#.*$/,
+	rantiCache = /([?&])_=[^&]*/,
+	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+
+	// #7653, #8125, #8152: local protocol detection
+	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+	rnoContent = /^(?:GET|HEAD)$/,
+	rprotocol = /^\/\//,
+
+	/* Prefilters
+	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+	 * 2) These are called:
+	 *    - BEFORE asking for a transport
+	 *    - AFTER param serialization (s.data is a string if s.processData is true)
+	 * 3) key is the dataType
+	 * 4) the catchall symbol "*" can be used
+	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+	 */
+	prefilters = {},
+
+	/* Transports bindings
+	 * 1) key is the dataType
+	 * 2) the catchall symbol "*" can be used
+	 * 3) selection will start with transport dataType and THEN go to "*" if needed
+	 */
+	transports = {},
+
+	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+	allTypes = "*/".concat( "*" ),
+
+	// Anchor tag for parsing the document origin
+	originAnchor = document.createElement( "a" );
+	originAnchor.href = location.href;
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+	// dataTypeExpression is optional and defaults to "*"
+	return function( dataTypeExpression, func ) {
+
+		if ( typeof dataTypeExpression !== "string" ) {
+			func = dataTypeExpression;
+			dataTypeExpression = "*";
+		}
+
+		var dataType,
+			i = 0,
+			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
+
+		if ( jQuery.isFunction( func ) ) {
+
+			// For each dataType in the dataTypeExpression
+			while ( ( dataType = dataTypes[ i++ ] ) ) {
+
+				// Prepend if requested
+				if ( dataType[ 0 ] === "+" ) {
+					dataType = dataType.slice( 1 ) || "*";
+					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
+
+				// Otherwise append
+				} else {
+					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
+				}
+			}
+		}
+	};
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+	var inspected = {},
+		seekingTransport = ( structure === transports );
+
+	function inspect( dataType ) {
+		var selected;
+		inspected[ dataType ] = true;
+		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+			if ( typeof dataTypeOrTransport === "string" &&
+				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+
+				options.dataTypes.unshift( dataTypeOrTransport );
+				inspect( dataTypeOrTransport );
+				return false;
+			} else if ( seekingTransport ) {
+				return !( selected = dataTypeOrTransport );
+			}
+		} );
+		return selected;
+	}
+
+	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+	var key, deep,
+		flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+	for ( key in src ) {
+		if ( src[ key ] !== undefined ) {
+			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+		}
+	}
+	if ( deep ) {
+		jQuery.extend( true, target, deep );
+	}
+
+	return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+	var ct, type, finalDataType, firstDataType,
+		contents = s.contents,
+		dataTypes = s.dataTypes;
+
+	// Remove auto dataType and get content-type in the process
+	while ( dataTypes[ 0 ] === "*" ) {
+		dataTypes.shift();
+		if ( ct === undefined ) {
+			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
+		}
+	}
+
+	// Check if we're dealing with a known content-type
+	if ( ct ) {
+		for ( type in contents ) {
+			if ( contents[ type ] && contents[ type ].test( ct ) ) {
+				dataTypes.unshift( type );
+				break;
+			}
+		}
+	}
+
+	// Check to see if we have a response for the expected dataType
+	if ( dataTypes[ 0 ] in responses ) {
+		finalDataType = dataTypes[ 0 ];
+	} else {
+
+		// Try convertible dataTypes
+		for ( type in responses ) {
+			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
+				finalDataType = type;
+				break;
+			}
+			if ( !firstDataType ) {
+				firstDataType = type;
+			}
+		}
+
+		// Or just use first one
+		finalDataType = finalDataType || firstDataType;
+	}
+
+	// If we found a dataType
+	// We add the dataType to the list if needed
+	// and return the corresponding response
+	if ( finalDataType ) {
+		if ( finalDataType !== dataTypes[ 0 ] ) {
+			dataTypes.unshift( finalDataType );
+		}
+		return responses[ finalDataType ];
+	}
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+	var conv2, current, conv, tmp, prev,
+		converters = {},
+
+		// Work with a copy of dataTypes in case we need to modify it for conversion
+		dataTypes = s.dataTypes.slice();
+
+	// Create converters map with lowercased keys
+	if ( dataTypes[ 1 ] ) {
+		for ( conv in s.converters ) {
+			converters[ conv.toLowerCase() ] = s.converters[ conv ];
+		}
+	}
+
+	current = dataTypes.shift();
+
+	// Convert to each sequential dataType
+	while ( current ) {
+
+		if ( s.responseFields[ current ] ) {
+			jqXHR[ s.responseFields[ current ] ] = response;
+		}
+
+		// Apply the dataFilter if provided
+		if ( !prev && isSuccess && s.dataFilter ) {
+			response = s.dataFilter( response, s.dataType );
+		}
+
+		prev = current;
+		current = dataTypes.shift();
+
+		if ( current ) {
+
+			// There's only work to do if current dataType is non-auto
+			if ( current === "*" ) {
+
+				current = prev;
+
+			// Convert response if prev dataType is non-auto and differs from current
+			} else if ( prev !== "*" && prev !== current ) {
+
+				// Seek a direct converter
+				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+				// If none found, seek a pair
+				if ( !conv ) {
+					for ( conv2 in converters ) {
+
+						// If conv2 outputs current
+						tmp = conv2.split( " " );
+						if ( tmp[ 1 ] === current ) {
+
+							// If prev can be converted to accepted input
+							conv = converters[ prev + " " + tmp[ 0 ] ] ||
+								converters[ "* " + tmp[ 0 ] ];
+							if ( conv ) {
+
+								// Condense equivalence converters
+								if ( conv === true ) {
+									conv = converters[ conv2 ];
+
+								// Otherwise, insert the intermediate dataType
+								} else if ( converters[ conv2 ] !== true ) {
+									current = tmp[ 0 ];
+									dataTypes.unshift( tmp[ 1 ] );
+								}
+								break;
+							}
+						}
+					}
+				}
+
+				// Apply converter (if not an equivalence)
+				if ( conv !== true ) {
+
+					// Unless errors are allowed to bubble, catch and return them
+					if ( conv && s.throws ) {
+						response = conv( response );
+					} else {
+						try {
+							response = conv( response );
+						} catch ( e ) {
+							return {
+								state: "parsererror",
+								error: conv ? e : "No conversion from " + prev + " to " + current
+							};
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return { state: "success", data: response };
+}
+
+jQuery.extend( {
+
+	// Counter for holding the number of active queries
+	active: 0,
+
+	// Last-Modified header cache for next request
+	lastModified: {},
+	etag: {},
+
+	ajaxSettings: {
+		url: location.href,
+		type: "GET",
+		isLocal: rlocalProtocol.test( location.protocol ),
+		global: true,
+		processData: true,
+		async: true,
+		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+
+		/*
+		timeout: 0,
+		data: null,
+		dataType: null,
+		username: null,
+		password: null,
+		cache: null,
+		throws: false,
+		traditional: false,
+		headers: {},
+		*/
+
+		accepts: {
+			"*": allTypes,
+			text: "text/plain",
+			html: "text/html",
+			xml: "application/xml, text/xml",
+			json: "application/json, text/javascript"
+		},
+
+		contents: {
+			xml: /\bxml\b/,
+			html: /\bhtml/,
+			json: /\bjson\b/
+		},
+
+		responseFields: {
+			xml: "responseXML",
+			text: "responseText",
+			json: "responseJSON"
+		},
+
+		// Data converters
+		// Keys separate source (or catchall "*") and destination types with a single space
+		converters: {
+
+			// Convert anything to text
+			"* text": String,
+
+			// Text to html (true = no transformation)
+			"text html": true,
+
+			// Evaluate text as a json expression
+			"text json": JSON.parse,
+
+			// Parse text as xml
+			"text xml": jQuery.parseXML
+		},
+
+		// For options that shouldn't be deep extended:
+		// you can add your own custom options here if
+		// and when you create one that shouldn't be
+		// deep extended (see ajaxExtend)
+		flatOptions: {
+			url: true,
+			context: true
+		}
+	},
+
+	// Creates a full fledged settings object into target
+	// with both ajaxSettings and settings fields.
+	// If target is omitted, writes into ajaxSettings.
+	ajaxSetup: function( target, settings ) {
+		return settings ?
+
+			// Building a settings object
+			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+			// Extending ajaxSettings
+			ajaxExtend( jQuery.ajaxSettings, target );
+	},
+
+	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+	ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+	// Main method
+	ajax: function( url, options ) {
+
+		// If url is an object, simulate pre-1.5 signature
+		if ( typeof url === "object" ) {
+			options = url;
+			url = undefined;
+		}
+
+		// Force options to be an object
+		options = options || {};
+
+		var transport,
+
+			// URL without anti-cache param
+			cacheURL,
+
+			// Response headers
+			responseHeadersString,
+			responseHeaders,
+
+			// timeout handle
+			timeoutTimer,
+
+			// Url cleanup var
+			urlAnchor,
+
+			// Request state (becomes false upon send and true upon completion)
+			completed,
+
+			// To know if global events are to be dispatched
+			fireGlobals,
+
+			// Loop variable
+			i,
+
+			// uncached part of the url
+			uncached,
+
+			// Create the final options object
+			s = jQuery.ajaxSetup( {}, options ),
+
+			// Callbacks context
+			callbackContext = s.context || s,
+
+			// Context for global events is callbackContext if it is a DOM node or jQuery collection
+			globalEventContext = s.context &&
+				( callbackContext.nodeType || callbackContext.jquery ) ?
+					jQuery( callbackContext ) :
+					jQuery.event,
+
+			// Deferreds
+			deferred = jQuery.Deferred(),
+			completeDeferred = jQuery.Callbacks( "once memory" ),
+
+			// Status-dependent callbacks
+			statusCode = s.statusCode || {},
+
+			// Headers (they are sent all at once)
+			requestHeaders = {},
+			requestHeadersNames = {},
+
+			// Default abort message
+			strAbort = "canceled",
+
+			// Fake xhr
+			jqXHR = {
+				readyState: 0,
+
+				// Builds headers hashtable if needed
+				getResponseHeader: function( key ) {
+					var match;
+					if ( completed ) {
+						if ( !responseHeaders ) {
+							responseHeaders = {};
+							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
+								responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
+							}
+						}
+						match = responseHeaders[ key.toLowerCase() ];
+					}
+					return match == null ? null : match;
+				},
+
+				// Raw string
+				getAllResponseHeaders: function() {
+					return completed ? responseHeadersString : null;
+				},
+
+				// Caches the header
+				setRequestHeader: function( name, value ) {
+					if ( completed == null ) {
+						name = requestHeadersNames[ name.toLowerCase() ] =
+							requestHeadersNames[ name.toLowerCase() ] || name;
+						requestHeaders[ name ] = value;
+					}
+					return this;
+				},
+
+				// Overrides response content-type header
+				overrideMimeType: function( type ) {
+					if ( completed == null ) {
+						s.mimeType = type;
+					}
+					return this;
+				},
+
+				// Status-dependent callbacks
+				statusCode: function( map ) {
+					var code;
+					if ( map ) {
+						if ( completed ) {
+
+							// Execute the appropriate callbacks
+							jqXHR.always( map[ jqXHR.status ] );
+						} else {
+
+							// Lazy-add the new callbacks in a way that preserves old ones
+							for ( code in map ) {
+								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+							}
+						}
+					}
+					return this;
+				},
+
+				// Cancel the request
+				abort: function( statusText ) {
+					var finalText = statusText || strAbort;
+					if ( transport ) {
+						transport.abort( finalText );
+					}
+					done( 0, finalText );
+					return this;
+				}
+			};
+
+		// Attach deferreds
+		deferred.promise( jqXHR );
+
+		// Add protocol if not provided (prefilters might expect it)
+		// Handle falsy url in the settings object (#10093: consistency with old signature)
+		// We also use the url parameter if available
+		s.url = ( ( url || s.url || location.href ) + "" )
+			.replace( rprotocol, location.protocol + "//" );
+
+		// Alias method option to type as per ticket #12004
+		s.type = options.method || options.type || s.method || s.type;
+
+		// Extract dataTypes list
+		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
+
+		// A cross-domain request is in order when the origin doesn't match the current origin.
+		if ( s.crossDomain == null ) {
+			urlAnchor = document.createElement( "a" );
+
+			// Support: IE <=8 - 11, Edge 12 - 13
+			// IE throws exception on accessing the href property if url is malformed,
+			// e.g. http://example.com:80x/
+			try {
+				urlAnchor.href = s.url;
+
+				// Support: IE <=8 - 11 only
+				// Anchor's host property isn't correctly set when s.url is relative
+				urlAnchor.href = urlAnchor.href;
+				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
+					urlAnchor.protocol + "//" + urlAnchor.host;
+			} catch ( e ) {
+
+				// If there is an error parsing the URL, assume it is crossDomain,
+				// it can be rejected by the transport if it is invalid
+				s.crossDomain = true;
+			}
+		}
+
+		// Convert data if not already a string
+		if ( s.data && s.processData && typeof s.data !== "string" ) {
+			s.data = jQuery.param( s.data, s.traditional );
+		}
+
+		// Apply prefilters
+		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+		// If request was aborted inside a prefilter, stop there
+		if ( completed ) {
+			return jqXHR;
+		}
+
+		// We can fire global events as of now if asked to
+		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+		fireGlobals = jQuery.event && s.global;
+
+		// Watch for a new set of requests
+		if ( fireGlobals && jQuery.active++ === 0 ) {
+			jQuery.event.trigger( "ajaxStart" );
+		}
+
+		// Uppercase the type
+		s.type = s.type.toUpperCase();
+
+		// Determine if request has content
+		s.hasContent = !rnoContent.test( s.type );
+
+		// Save the URL in case we're toying with the If-Modified-Since
+		// and/or If-None-Match header later on
+		// Remove hash to simplify url manipulation
+		cacheURL = s.url.replace( rhash, "" );
+
+		// More options handling for requests with no content
+		if ( !s.hasContent ) {
+
+			// Remember the hash so we can put it back
+			uncached = s.url.slice( cacheURL.length );
+
+			// If data is available, append data to url
+			if ( s.data ) {
+				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
+
+				// #9682: remove data so that it's not used in an eventual retry
+				delete s.data;
+			}
+
+			// Add or update anti-cache param if needed
+			if ( s.cache === false ) {
+				cacheURL = cacheURL.replace( rantiCache, "$1" );
+				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
+			}
+
+			// Put hash and anti-cache on the URL that will be requested (gh-1732)
+			s.url = cacheURL + uncached;
+
+		// Change '%20' to '+' if this is encoded form body content (gh-2658)
+		} else if ( s.data && s.processData &&
+			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
+			s.data = s.data.replace( r20, "+" );
+		}
+
+		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+		if ( s.ifModified ) {
+			if ( jQuery.lastModified[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+			}
+			if ( jQuery.etag[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+			}
+		}
+
+		// Set the correct header, if data is being sent
+		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+			jqXHR.setRequestHeader( "Content-Type", s.contentType );
+		}
+
+		// Set the Accepts header for the server, depending on the dataType
+		jqXHR.setRequestHeader(
+			"Accept",
+			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
+				s.accepts[ s.dataTypes[ 0 ] ] +
+					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+				s.accepts[ "*" ]
+		);
+
+		// Check for headers option
+		for ( i in s.headers ) {
+			jqXHR.setRequestHeader( i, s.headers[ i ] );
+		}
+
+		// Allow custom headers/mimetypes and early abort
+		if ( s.beforeSend &&
+			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
+
+			// Abort if not done already and return
+			return jqXHR.abort();
+		}
+
+		// Aborting is no longer a cancellation
+		strAbort = "abort";
+
+		// Install callbacks on deferreds
+		completeDeferred.add( s.complete );
+		jqXHR.done( s.success );
+		jqXHR.fail( s.error );
+
+		// Get transport
+		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+		// If no transport, we auto-abort
+		if ( !transport ) {
+			done( -1, "No Transport" );
+		} else {
+			jqXHR.readyState = 1;
+
+			// Send global event
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+			}
+
+			// If request was aborted inside ajaxSend, stop there
+			if ( completed ) {
+				return jqXHR;
+			}
+
+			// Timeout
+			if ( s.async && s.timeout > 0 ) {
+				timeoutTimer = window.setTimeout( function() {
+					jqXHR.abort( "timeout" );
+				}, s.timeout );
+			}
+
+			try {
+				completed = false;
+				transport.send( requestHeaders, done );
+			} catch ( e ) {
+
+				// Rethrow post-completion exceptions
+				if ( completed ) {
+					throw e;
+				}
+
+				// Propagate others as results
+				done( -1, e );
+			}
+		}
+
+		// Callback for when everything is done
+		function done( status, nativeStatusText, responses, headers ) {
+			var isSuccess, success, error, response, modified,
+				statusText = nativeStatusText;
+
+			// Ignore repeat invocations
+			if ( completed ) {
+				return;
+			}
+
+			completed = true;
+
+			// Clear timeout if it exists
+			if ( timeoutTimer ) {
+				window.clearTimeout( timeoutTimer );
+			}
+
+			// Dereference transport for early garbage collection
+			// (no matter how long the jqXHR object will be used)
+			transport = undefined;
+
+			// Cache response headers
+			responseHeadersString = headers || "";
+
+			// Set readyState
+			jqXHR.readyState = status > 0 ? 4 : 0;
+
+			// Determine if successful
+			isSuccess = status >= 200 && status < 300 || status === 304;
+
+			// Get response data
+			if ( responses ) {
+				response = ajaxHandleResponses( s, jqXHR, responses );
+			}
+
+			// Convert no matter what (that way responseXXX fields are always set)
+			response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+			// If successful, handle type chaining
+			if ( isSuccess ) {
+
+				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+				if ( s.ifModified ) {
+					modified = jqXHR.getResponseHeader( "Last-Modified" );
+					if ( modified ) {
+						jQuery.lastModified[ cacheURL ] = modified;
+					}
+					modified = jqXHR.getResponseHeader( "etag" );
+					if ( modified ) {
+						jQuery.etag[ cacheURL ] = modified;
+					}
+				}
+
+				// if no content
+				if ( status === 204 || s.type === "HEAD" ) {
+					statusText = "nocontent";
+
+				// if not modified
+				} else if ( status === 304 ) {
+					statusText = "notmodified";
+
+				// If we have data, let's convert it
+				} else {
+					statusText = response.state;
+					success = response.data;
+					error = response.error;
+					isSuccess = !error;
+				}
+			} else {
+
+				// Extract error from statusText and normalize for non-aborts
+				error = statusText;
+				if ( status || !statusText ) {
+					statusText = "error";
+					if ( status < 0 ) {
+						status = 0;
+					}
+				}
+			}
+
+			// Set data for the fake xhr object
+			jqXHR.status = status;
+			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+			// Success/Error
+			if ( isSuccess ) {
+				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+			} else {
+				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+			}
+
+			// Status-dependent callbacks
+			jqXHR.statusCode( statusCode );
+			statusCode = undefined;
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+					[ jqXHR, s, isSuccess ? success : error ] );
+			}
+
+			// Complete
+			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+
+				// Handle the global AJAX counter
+				if ( !( --jQuery.active ) ) {
+					jQuery.event.trigger( "ajaxStop" );
+				}
+			}
+		}
+
+		return jqXHR;
+	},
+
+	getJSON: function( url, data, callback ) {
+		return jQuery.get( url, data, callback, "json" );
+	},
+
+	getScript: function( url, callback ) {
+		return jQuery.get( url, undefined, callback, "script" );
+	}
+} );
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+	jQuery[ method ] = function( url, data, callback, type ) {
+
+		// Shift arguments if data argument was omitted
+		if ( jQuery.isFunction( data ) ) {
+			type = type || callback;
+			callback = data;
+			data = undefined;
+		}
+
+		// The url can be an options object (which then must have .url)
+		return jQuery.ajax( jQuery.extend( {
+			url: url,
+			type: method,
+			dataType: type,
+			data: data,
+			success: callback
+		}, jQuery.isPlainObject( url ) && url ) );
+	};
+} );
+
+
+jQuery._evalUrl = function( url ) {
+	return jQuery.ajax( {
+		url: url,
+
+		// Make this explicit, since user can override this through ajaxSetup (#11264)
+		type: "GET",
+		dataType: "script",
+		cache: true,
+		async: false,
+		global: false,
+		"throws": true
+	} );
+};
+
+
+jQuery.fn.extend( {
+	wrapAll: function( html ) {
+		var wrap;
+
+		if ( this[ 0 ] ) {
+			if ( jQuery.isFunction( html ) ) {
+				html = html.call( this[ 0 ] );
+			}
+
+			// The elements to wrap the target around
+			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+			if ( this[ 0 ].parentNode ) {
+				wrap.insertBefore( this[ 0 ] );
+			}
+
+			wrap.map( function() {
+				var elem = this;
+
+				while ( elem.firstElementChild ) {
+					elem = elem.firstElementChild;
+				}
+
+				return elem;
+			} ).append( this );
+		}
+
+		return this;
+	},
+
+	wrapInner: function( html ) {
+		if ( jQuery.isFunction( html ) ) {
+			return this.each( function( i ) {
+				jQuery( this ).wrapInner( html.call( this, i ) );
+			} );
+		}
+
+		return this.each( function() {
+			var self = jQuery( this ),
+				contents = self.contents();
+
+			if ( contents.length ) {
+				contents.wrapAll( html );
+
+			} else {
+				self.append( html );
+			}
+		} );
+	},
+
+	wrap: function( html ) {
+		var isFunction = jQuery.isFunction( html );
+
+		return this.each( function( i ) {
+			jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
+		} );
+	},
+
+	unwrap: function( selector ) {
+		this.parent( selector ).not( "body" ).each( function() {
+			jQuery( this ).replaceWith( this.childNodes );
+		} );
+		return this;
+	}
+} );
+
+
+jQuery.expr.pseudos.hidden = function( elem ) {
+	return !jQuery.expr.pseudos.visible( elem );
+};
+jQuery.expr.pseudos.visible = function( elem ) {
+	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
+};
+
+
+
+
+jQuery.ajaxSettings.xhr = function() {
+	try {
+		return new window.XMLHttpRequest();
+	} catch ( e ) {}
+};
+
+var xhrSuccessStatus = {
+
+		// File protocol always yields status code 0, assume 200
+		0: 200,
+
+		// Support: IE <=9 only
+		// #1450: sometimes IE returns 1223 when it should be 204
+		1223: 204
+	},
+	xhrSupported = jQuery.ajaxSettings.xhr();
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport( function( options ) {
+	var callback, errorCallback;
+
+	// Cross domain only allowed if supported through XMLHttpRequest
+	if ( support.cors || xhrSupported && !options.crossDomain ) {
+		return {
+			send: function( headers, complete ) {
+				var i,
+					xhr = options.xhr();
+
+				xhr.open(
+					options.type,
+					options.url,
+					options.async,
+					options.username,
+					options.password
+				);
+
+				// Apply custom fields if provided
+				if ( options.xhrFields ) {
+					for ( i in options.xhrFields ) {
+						xhr[ i ] = options.xhrFields[ i ];
+					}
+				}
+
+				// Override mime type if needed
+				if ( options.mimeType && xhr.overrideMimeType ) {
+					xhr.overrideMimeType( options.mimeType );
+				}
+
+				// X-Requested-With header
+				// For cross-domain requests, seeing as conditions for a preflight are
+				// akin to a jigsaw puzzle, we simply never set it to be sure.
+				// (it can always be set on a per-request basis or even using ajaxSetup)
+				// For same-domain requests, won't change header if already provided.
+				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
+					headers[ "X-Requested-With" ] = "XMLHttpRequest";
+				}
+
+				// Set headers
+				for ( i in headers ) {
+					xhr.setRequestHeader( i, headers[ i ] );
+				}
+
+				// Callback
+				callback = function( type ) {
+					return function() {
+						if ( callback ) {
+							callback = errorCallback = xhr.onload =
+								xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
+
+							if ( type === "abort" ) {
+								xhr.abort();
+							} else if ( type === "error" ) {
+
+								// Support: IE <=9 only
+								// On a manual native abort, IE9 throws
+								// errors on any property access that is not readyState
+								if ( typeof xhr.status !== "number" ) {
+									complete( 0, "error" );
+								} else {
+									complete(
+
+										// File: protocol always yields status 0; see #8605, #14207
+										xhr.status,
+										xhr.statusText
+									);
+								}
+							} else {
+								complete(
+									xhrSuccessStatus[ xhr.status ] || xhr.status,
+									xhr.statusText,
+
+									// Support: IE <=9 only
+									// IE9 has no XHR2 but throws on binary (trac-11426)
+									// For XHR2 non-text, let the caller handle it (gh-2498)
+									( xhr.responseType || "text" ) !== "text"  ||
+									typeof xhr.responseText !== "string" ?
+										{ binary: xhr.response } :
+										{ text: xhr.responseText },
+									xhr.getAllResponseHeaders()
+								);
+							}
+						}
+					};
+				};
+
+				// Listen to events
+				xhr.onload = callback();
+				errorCallback = xhr.onerror = callback( "error" );
+
+				// Support: IE 9 only
+				// Use onreadystatechange to replace onabort
+				// to handle uncaught aborts
+				if ( xhr.onabort !== undefined ) {
+					xhr.onabort = errorCallback;
+				} else {
+					xhr.onreadystatechange = function() {
+
+						// Check readyState before timeout as it changes
+						if ( xhr.readyState === 4 ) {
+
+							// Allow onerror to be called first,
+							// but that will not handle a native abort
+							// Also, save errorCallback to a variable
+							// as xhr.onerror cannot be accessed
+							window.setTimeout( function() {
+								if ( callback ) {
+									errorCallback();
+								}
+							} );
+						}
+					};
+				}
+
+				// Create the abort callback
+				callback = callback( "abort" );
+
+				try {
+
+					// Do send the request (this may raise an exception)
+					xhr.send( options.hasContent && options.data || null );
+				} catch ( e ) {
+
+					// #14683: Only rethrow if this hasn't been notified as an error yet
+					if ( callback ) {
+						throw e;
+					}
+				}
+			},
+
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+} );
+
+
+
+
+// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
+jQuery.ajaxPrefilter( function( s ) {
+	if ( s.crossDomain ) {
+		s.contents.script = false;
+	}
+} );
+
+// Install script dataType
+jQuery.ajaxSetup( {
+	accepts: {
+		script: "text/javascript, application/javascript, " +
+			"application/ecmascript, application/x-ecmascript"
+	},
+	contents: {
+		script: /\b(?:java|ecma)script\b/
+	},
+	converters: {
+		"text script": function( text ) {
+			jQuery.globalEval( text );
+			return text;
+		}
+	}
+} );
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+	if ( s.cache === undefined ) {
+		s.cache = false;
+	}
+	if ( s.crossDomain ) {
+		s.type = "GET";
+	}
+} );
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+
+	// This transport only deals with cross domain requests
+	if ( s.crossDomain ) {
+		var script, callback;
+		return {
+			send: function( _, complete ) {
+				script = jQuery( "<script>" ).prop( {
+					charset: s.scriptCharset,
+					src: s.url
+				} ).on(
+					"load error",
+					callback = function( evt ) {
+						script.remove();
+						callback = null;
+						if ( evt ) {
+							complete( evt.type === "error" ? 404 : 200, evt.type );
+						}
+					}
+				);
+
+				// Use native DOM manipulation to avoid our domManip AJAX trickery
+				document.head.appendChild( script[ 0 ] );
+			},
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+} );
+
+
+
+
+var oldCallbacks = [],
+	rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup( {
+	jsonp: "callback",
+	jsonpCallback: function() {
+		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+		this[ callback ] = true;
+		return callback;
+	}
+} );
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+	var callbackName, overwritten, responseContainer,
+		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+			"url" :
+			typeof s.data === "string" &&
+				( s.contentType || "" )
+					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+				rjsonp.test( s.data ) && "data"
+		);
+
+	// Handle iff the expected data type is "jsonp" or we have a parameter to set
+	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+		// Get callback name, remembering preexisting value associated with it
+		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+			s.jsonpCallback() :
+			s.jsonpCallback;
+
+		// Insert callback into url or form data
+		if ( jsonProp ) {
+			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+		} else if ( s.jsonp !== false ) {
+			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+		}
+
+		// Use data converter to retrieve json after script execution
+		s.converters[ "script json" ] = function() {
+			if ( !responseContainer ) {
+				jQuery.error( callbackName + " was not called" );
+			}
+			return responseContainer[ 0 ];
+		};
+
+		// Force json dataType
+		s.dataTypes[ 0 ] = "json";
+
+		// Install callback
+		overwritten = window[ callbackName ];
+		window[ callbackName ] = function() {
+			responseContainer = arguments;
+		};
+
+		// Clean-up function (fires after converters)
+		jqXHR.always( function() {
+
+			// If previous value didn't exist - remove it
+			if ( overwritten === undefined ) {
+				jQuery( window ).removeProp( callbackName );
+
+			// Otherwise restore preexisting value
+			} else {
+				window[ callbackName ] = overwritten;
+			}
+
+			// Save back as free
+			if ( s[ callbackName ] ) {
+
+				// Make sure that re-using the options doesn't screw things around
+				s.jsonpCallback = originalSettings.jsonpCallback;
+
+				// Save the callback name for future use
+				oldCallbacks.push( callbackName );
+			}
+
+			// Call if it was a function and we have a response
+			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+				overwritten( responseContainer[ 0 ] );
+			}
+
+			responseContainer = overwritten = undefined;
+		} );
+
+		// Delegate to script
+		return "script";
+	}
+} );
+
+
+
+
+// Support: Safari 8 only
+// In Safari 8 documents created via document.implementation.createHTMLDocument
+// collapse sibling forms: the second one becomes a child of the first one.
+// Because of that, this security measure has to be disabled in Safari 8.
+// https://bugs.webkit.org/show_bug.cgi?id=137337
+support.createHTMLDocument = ( function() {
+	var body = document.implementation.createHTMLDocument( "" ).body;
+	body.innerHTML = "<form></form><form></form>";
+	return body.childNodes.length === 2;
+} )();
+
+
+// Argument "data" should be string of html
+// context (optional): If specified, the fragment will be created in this context,
+// defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+	if ( typeof data !== "string" ) {
+		return [];
+	}
+	if ( typeof context === "boolean" ) {
+		keepScripts = context;
+		context = false;
+	}
+
+	var base, parsed, scripts;
+
+	if ( !context ) {
+
+		// Stop scripts or inline event handlers from being executed immediately
+		// by using document.implementation
+		if ( support.createHTMLDocument ) {
+			context = document.implementation.createHTMLDocument( "" );
+
+			// Set the base href for the created document
+			// so any parsed elements with URLs
+			// are based on the document's URL (gh-2965)
+			base = context.createElement( "base" );
+			base.href = document.location.href;
+			context.head.appendChild( base );
+		} else {
+			context = document;
+		}
+	}
+
+	parsed = rsingleTag.exec( data );
+	scripts = !keepScripts && [];
+
+	// Single tag
+	if ( parsed ) {
+		return [ context.createElement( parsed[ 1 ] ) ];
+	}
+
+	parsed = buildFragment( [ data ], context, scripts );
+
+	if ( scripts && scripts.length ) {
+		jQuery( scripts ).remove();
+	}
+
+	return jQuery.merge( [], parsed.childNodes );
+};
+
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+	var selector, type, response,
+		self = this,
+		off = url.indexOf( " " );
+
+	if ( off > -1 ) {
+		selector = stripAndCollapse( url.slice( off ) );
+		url = url.slice( 0, off );
+	}
+
+	// If it's a function
+	if ( jQuery.isFunction( params ) ) {
+
+		// We assume that it's the callback
+		callback = params;
+		params = undefined;
+
+	// Otherwise, build a param string
+	} else if ( params && typeof params === "object" ) {
+		type = "POST";
+	}
+
+	// If we have elements to modify, make the request
+	if ( self.length > 0 ) {
+		jQuery.ajax( {
+			url: url,
+
+			// If "type" variable is undefined, then "GET" method will be used.
+			// Make value of this field explicit since
+			// user can override it through ajaxSetup method
+			type: type || "GET",
+			dataType: "html",
+			data: params
+		} ).done( function( responseText ) {
+
+			// Save response for use in complete callback
+			response = arguments;
+
+			self.html( selector ?
+
+				// If a selector was specified, locate the right elements in a dummy div
+				// Exclude scripts to avoid IE 'Permission Denied' errors
+				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+				// Otherwise use the full result
+				responseText );
+
+		// If the request succeeds, this function gets "data", "status", "jqXHR"
+		// but they are ignored because response was set above.
+		// If it fails, this function gets "jqXHR", "status", "error"
+		} ).always( callback && function( jqXHR, status ) {
+			self.each( function() {
+				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
+			} );
+		} );
+	}
+
+	return this;
+};
+
+
+
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [
+	"ajaxStart",
+	"ajaxStop",
+	"ajaxComplete",
+	"ajaxError",
+	"ajaxSuccess",
+	"ajaxSend"
+], function( i, type ) {
+	jQuery.fn[ type ] = function( fn ) {
+		return this.on( type, fn );
+	};
+} );
+
+
+
+
+jQuery.expr.pseudos.animated = function( elem ) {
+	return jQuery.grep( jQuery.timers, function( fn ) {
+		return elem === fn.elem;
+	} ).length;
+};
+
+
+
+
+jQuery.offset = {
+	setOffset: function( elem, options, i ) {
+		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+			position = jQuery.css( elem, "position" ),
+			curElem = jQuery( elem ),
+			props = {};
+
+		// Set position first, in-case top/left are set even on static elem
+		if ( position === "static" ) {
+			elem.style.position = "relative";
+		}
+
+		curOffset = curElem.offset();
+		curCSSTop = jQuery.css( elem, "top" );
+		curCSSLeft = jQuery.css( elem, "left" );
+		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
+
+		// Need to be able to calculate position if either
+		// top or left is auto and position is either absolute or fixed
+		if ( calculatePosition ) {
+			curPosition = curElem.position();
+			curTop = curPosition.top;
+			curLeft = curPosition.left;
+
+		} else {
+			curTop = parseFloat( curCSSTop ) || 0;
+			curLeft = parseFloat( curCSSLeft ) || 0;
+		}
+
+		if ( jQuery.isFunction( options ) ) {
+
+			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
+		}
+
+		if ( options.top != null ) {
+			props.top = ( options.top - curOffset.top ) + curTop;
+		}
+		if ( options.left != null ) {
+			props.left = ( options.left - curOffset.left ) + curLeft;
+		}
+
+		if ( "using" in options ) {
+			options.using.call( elem, props );
+
+		} else {
+			curElem.css( props );
+		}
+	}
+};
+
+jQuery.fn.extend( {
+	offset: function( options ) {
+
+		// Preserve chaining for setter
+		if ( arguments.length ) {
+			return options === undefined ?
+				this :
+				this.each( function( i ) {
+					jQuery.offset.setOffset( this, options, i );
+				} );
+		}
+
+		var doc, docElem, rect, win,
+			elem = this[ 0 ];
+
+		if ( !elem ) {
+			return;
+		}
+
+		// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
+		// Support: IE <=11 only
+		// Running getBoundingClientRect on a
+		// disconnected node in IE throws an error
+		if ( !elem.getClientRects().length ) {
+			return { top: 0, left: 0 };
+		}
+
+		rect = elem.getBoundingClientRect();
+
+		doc = elem.ownerDocument;
+		docElem = doc.documentElement;
+		win = doc.defaultView;
+
+		return {
+			top: rect.top + win.pageYOffset - docElem.clientTop,
+			left: rect.left + win.pageXOffset - docElem.clientLeft
+		};
+	},
+
+	position: function() {
+		if ( !this[ 0 ] ) {
+			return;
+		}
+
+		var offsetParent, offset,
+			elem = this[ 0 ],
+			parentOffset = { top: 0, left: 0 };
+
+		// Fixed elements are offset from window (parentOffset = {top:0, left: 0},
+		// because it is its only offset parent
+		if ( jQuery.css( elem, "position" ) === "fixed" ) {
+
+			// Assume getBoundingClientRect is there when computed position is fixed
+			offset = elem.getBoundingClientRect();
+
+		} else {
+
+			// Get *real* offsetParent
+			offsetParent = this.offsetParent();
+
+			// Get correct offsets
+			offset = this.offset();
+			if ( !nodeName( offsetParent[ 0 ], "html" ) ) {
+				parentOffset = offsetParent.offset();
+			}
+
+			// Add offsetParent borders
+			parentOffset = {
+				top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
+				left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
+			};
+		}
+
+		// Subtract parent offsets and element margins
+		return {
+			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+		};
+	},
+
+	// This method will return documentElement in the following cases:
+	// 1) For the element inside the iframe without offsetParent, this method will return
+	//    documentElement of the parent window
+	// 2) For the hidden or detached element
+	// 3) For body or html element, i.e. in case of the html node - it will return itself
+	//
+	// but those exceptions were never presented as a real life use-cases
+	// and might be considered as more preferable results.
+	//
+	// This logic, however, is not guaranteed and can change at any point in the future
+	offsetParent: function() {
+		return this.map( function() {
+			var offsetParent = this.offsetParent;
+
+			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
+				offsetParent = offsetParent.offsetParent;
+			}
+
+			return offsetParent || documentElement;
+		} );
+	}
+} );
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+	var top = "pageYOffset" === prop;
+
+	jQuery.fn[ method ] = function( val ) {
+		return access( this, function( elem, method, val ) {
+
+			// Coalesce documents and windows
+			var win;
+			if ( jQuery.isWindow( elem ) ) {
+				win = elem;
+			} else if ( elem.nodeType === 9 ) {
+				win = elem.defaultView;
+			}
+
+			if ( val === undefined ) {
+				return win ? win[ prop ] : elem[ method ];
+			}
+
+			if ( win ) {
+				win.scrollTo(
+					!top ? val : win.pageXOffset,
+					top ? val : win.pageYOffset
+				);
+
+			} else {
+				elem[ method ] = val;
+			}
+		}, method, val, arguments.length );
+	};
+} );
+
+// Support: Safari <=7 - 9.1, Chrome <=37 - 49
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+		function( elem, computed ) {
+			if ( computed ) {
+				computed = curCSS( elem, prop );
+
+				// If curCSS returns percentage, fallback to offset
+				return rnumnonpx.test( computed ) ?
+					jQuery( elem ).position()[ prop ] + "px" :
+					computed;
+			}
+		}
+	);
+} );
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
+		function( defaultExtra, funcName ) {
+
+		// Margin is only for outerHeight, outerWidth
+		jQuery.fn[ funcName ] = function( margin, value ) {
+			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+			return access( this, function( elem, type, value ) {
+				var doc;
+
+				if ( jQuery.isWindow( elem ) ) {
+
+					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
+					return funcName.indexOf( "outer" ) === 0 ?
+						elem[ "inner" + name ] :
+						elem.document.documentElement[ "client" + name ];
+				}
+
+				// Get document width or height
+				if ( elem.nodeType === 9 ) {
+					doc = elem.documentElement;
+
+					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+					// whichever is greatest
+					return Math.max(
+						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+						elem.body[ "offset" + name ], doc[ "offset" + name ],
+						doc[ "client" + name ]
+					);
+				}
+
+				return value === undefined ?
+
+					// Get width or height on the element, requesting but not forcing parseFloat
+					jQuery.css( elem, type, extra ) :
+
+					// Set width or height on the element
+					jQuery.style( elem, type, value, extra );
+			}, type, chainable ? margin : undefined, chainable );
+		};
+	} );
+} );
+
+
+jQuery.fn.extend( {
+
+	bind: function( types, data, fn ) {
+		return this.on( types, null, data, fn );
+	},
+	unbind: function( types, fn ) {
+		return this.off( types, null, fn );
+	},
+
+	delegate: function( selector, types, data, fn ) {
+		return this.on( types, selector, data, fn );
+	},
+	undelegate: function( selector, types, fn ) {
+
+		// ( namespace ) or ( selector, types [, fn] )
+		return arguments.length === 1 ?
+			this.off( selector, "**" ) :
+			this.off( types, selector || "**", fn );
+	}
+} );
+
+jQuery.holdReady = function( hold ) {
+	if ( hold ) {
+		jQuery.readyWait++;
+	} else {
+		jQuery.ready( true );
+	}
+};
+jQuery.isArray = Array.isArray;
+jQuery.parseJSON = JSON.parse;
+jQuery.nodeName = nodeName;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+	define( "jquery", [], function() {
+		return jQuery;
+	} );
+}
+
+
+
+
+var
+
+	// Map over jQuery in case of overwrite
+	_jQuery = window.jQuery,
+
+	// Map over the $ in case of overwrite
+	_$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+	if ( window.$ === jQuery ) {
+		window.$ = _$;
+	}
+
+	if ( deep && window.jQuery === jQuery ) {
+		window.jQuery = _jQuery;
+	}
+
+	return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( !noGlobal ) {
+	window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+return jQuery;
+} );
diff --git a/src/doc/4.0-rc1/_static/jquery.js b/src/doc/4.0-rc1/_static/jquery.js
new file mode 100644
index 0000000..644d35e
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/jquery.js
@@ -0,0 +1,4 @@
+/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),
+a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function $(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Z,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=W.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ba=new RegExp("^(?:([+-])=|)("+aa+")([a-z%]*)$","i"),ca=["Top","Right","Bottom","Left"],da=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ea=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=W.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&da(d)&&(e[f]=ha(d))):"none"!==c&&(e[f]="none",W.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],"globalEval",!b||W.get(b[c],"globalEval"))}var pa=/<|&#?\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ka.exec(f)||["",""])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&B(this,"input"))return this.click(),!1},_default:function(a){return B(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,Ca=/^true\/(.*)/,Da=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ja.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||"")&&!W.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,""),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,"script"),g.length>0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp("^("+aa+")(?!px)[a-z%]+$","i"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",ra.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:"absolute",visibility:"hidden",display:"block"},Ta={letterSpacing:"0",fontWeight:"400"},Ua=["Webkit","Moz","ms"],Va=d.createElement("div").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ca[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ca[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ca[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ca[f]+"Width",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g="border-box"===r.css(a,"boxSizing",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),"auto"===f&&(f=a["offset"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?"border":"content"),d,e)+"px")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,"string"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(j[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),"normal"===e&&b in Ta&&(e=Ta[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=ba.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,"marginLeft"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&da(a),q=W.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],cb.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=W.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ia([a],!0),j=a.style.display||j,k=r.css(a,"display"),ia([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=W.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ia([a],!0),m.done(function(){p||ia([a]),W.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=hb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],Array.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=kb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=ab||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(i||h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:ab||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);f<g;f++)if(d=kb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,hb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j}r.Animation=r.extend(kb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return fa(c.elem,a,ba.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(L);for(var c,d=0,e=a.length;d<e;d++)c=a[d],kb.tweeners[c]=kb.tweeners[c]||[],kb.tweeners[c].unshift(b)},prefilters:[ib],prefilter:function(a,b){b?kb.prefilters.unshift(a):kb.prefilters.push(a)}}),r.speed=function(a,b,c){var d=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off?d.duration=0:"number"!=typeof d.duration&&(d.duration in r.fx.speeds?d.duration=r.fx.speeds[d.duration]:d.duration=r.fx.speeds._default),null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){r.isFunction(d.old)&&d.old.call(this),d.queue&&r.dequeue(this,d.queue)},d},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(da).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=kb(this,r.extend({},a),f);(e||W.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=W.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&db.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=W.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),r.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(ab=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),ab=void 0},r.fx.timer=function(a){r.timers.push(a),r.fx.start()},r.fx.interval=13,r.fx.start=function(){bb||(bb=!0,eb())},r.fx.stop=function(){bb=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var lb,mb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),
+null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Tb=[],Ub=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Tb.pop()||r.expando+"_"+ub++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Ub.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ub.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Ub,"$1"+e):b.jsonp!==!1&&(b.url+=(vb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Tb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=pb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Vb=a.jQuery,Wb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Wb),b&&a.jQuery===r&&(a.jQuery=Vb),r},b||(a.jQuery=a.$=r),r});
diff --git a/src/doc/4.0-rc1/_static/language_data.js b/src/doc/4.0-rc1/_static/language_data.js
new file mode 100644
index 0000000..5266fb1
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/language_data.js
@@ -0,0 +1,297 @@
+/*
+ * language_data.js
+ * ~~~~~~~~~~~~~~~~
+ *
+ * This script contains the language-specific data used by searchtools.js,
+ * namely the list of stopwords, stemmer, scorer and splitter.
+ *
+ * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
+
+
+/* Non-minified version JS is _stemmer.js if file is provided */ 
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+  var step2list = {
+    ational: 'ate',
+    tional: 'tion',
+    enci: 'ence',
+    anci: 'ance',
+    izer: 'ize',
+    bli: 'ble',
+    alli: 'al',
+    entli: 'ent',
+    eli: 'e',
+    ousli: 'ous',
+    ization: 'ize',
+    ation: 'ate',
+    ator: 'ate',
+    alism: 'al',
+    iveness: 'ive',
+    fulness: 'ful',
+    ousness: 'ous',
+    aliti: 'al',
+    iviti: 'ive',
+    biliti: 'ble',
+    logi: 'log'
+  };
+
+  var step3list = {
+    icate: 'ic',
+    ative: '',
+    alize: 'al',
+    iciti: 'ic',
+    ical: 'ic',
+    ful: '',
+    ness: ''
+  };
+
+  var c = "[^aeiou]";          // consonant
+  var v = "[aeiouy]";          // vowel
+  var C = c + "[^aeiouy]*";    // consonant sequence
+  var V = v + "[aeiou]*";      // vowel sequence
+
+  var mgr0 = "^(" + C + ")?" + V + C;                      // [C]VC... is m>0
+  var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$";    // [C]VC[V] is m=1
+  var mgr1 = "^(" + C + ")?" + V + C + V + C;              // [C]VCVC... is m>1
+  var s_v   = "^(" + C + ")?" + v;                         // vowel in stem
+
+  this.stemWord = function (w) {
+    var stem;
+    var suffix;
+    var firstch;
+    var origword = w;
+
+    if (w.length < 3)
+      return w;
+
+    var re;
+    var re2;
+    var re3;
+    var re4;
+
+    firstch = w.substr(0,1);
+    if (firstch == "y")
+      w = firstch.toUpperCase() + w.substr(1);
+
+    // Step 1a
+    re = /^(.+?)(ss|i)es$/;
+    re2 = /^(.+?)([^s])s$/;
+
+    if (re.test(w))
+      w = w.replace(re,"$1$2");
+    else if (re2.test(w))
+      w = w.replace(re2,"$1$2");
+
+    // Step 1b
+    re = /^(.+?)eed$/;
+    re2 = /^(.+?)(ed|ing)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      re = new RegExp(mgr0);
+      if (re.test(fp[1])) {
+        re = /.$/;
+        w = w.replace(re,"");
+      }
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1];
+      re2 = new RegExp(s_v);
+      if (re2.test(stem)) {
+        w = stem;
+        re2 = /(at|bl|iz)$/;
+        re3 = new RegExp("([^aeiouylsz])\\1$");
+        re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+        if (re2.test(w))
+          w = w + "e";
+        else if (re3.test(w)) {
+          re = /.$/;
+          w = w.replace(re,"");
+        }
+        else if (re4.test(w))
+          w = w + "e";
+      }
+    }
+
+    // Step 1c
+    re = /^(.+?)y$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(s_v);
+      if (re.test(stem))
+        w = stem + "i";
+    }
+
+    // Step 2
+    re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step2list[suffix];
+    }
+
+    // Step 3
+    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step3list[suffix];
+    }
+
+    // Step 4
+    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+    re2 = /^(.+?)(s|t)(ion)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      if (re.test(stem))
+        w = stem;
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1] + fp[2];
+      re2 = new RegExp(mgr1);
+      if (re2.test(stem))
+        w = stem;
+    }
+
+    // Step 5
+    re = /^(.+?)e$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      re2 = new RegExp(meq1);
+      re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+        w = stem;
+    }
+    re = /ll$/;
+    re2 = new RegExp(mgr1);
+    if (re.test(w) && re2.test(w)) {
+      re = /.$/;
+      w = w.replace(re,"");
+    }
+
+    // and turn initial Y back to y
+    if (firstch == "y")
+      w = firstch.toLowerCase() + w.substr(1);
+    return w;
+  }
+}
+
+
+
+
+
+var splitChars = (function() {
+    var result = {};
+    var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
+         1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
+         2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
+         2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
+         3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
+         3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
+         4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
+         8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
+         11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
+         43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
+    var i, j, start, end;
+    for (i = 0; i < singles.length; i++) {
+        result[singles[i]] = true;
+    }
+    var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
+         [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
+         [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
+         [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
+         [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
+         [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
+         [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
+         [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
+         [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
+         [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
+         [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
+         [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
+         [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
+         [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
+         [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
+         [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
+         [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
+         [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
+         [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
+         [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
+         [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
+         [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
+         [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
+         [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
+         [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
+         [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
+         [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
+         [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
+         [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
+         [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
+         [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
+         [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
+         [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
+         [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
+         [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
+         [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
+         [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
+         [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
+         [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
+         [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
+         [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
+         [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
+         [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
+         [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
+         [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
+         [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
+         [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
+         [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
+         [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
+    for (i = 0; i < ranges.length; i++) {
+        start = ranges[i][0];
+        end = ranges[i][1];
+        for (j = start; j <= end; j++) {
+            result[j] = true;
+        }
+    }
+    return result;
+})();
+
+function splitQuery(query) {
+    var result = [];
+    var start = -1;
+    for (var i = 0; i < query.length; i++) {
+        if (splitChars[query.charCodeAt(i)]) {
+            if (start !== -1) {
+                result.push(query.slice(start, i));
+                start = -1;
+            }
+        } else if (start === -1) {
+            start = i;
+        }
+    }
+    if (start !== -1) {
+        result.push(query.slice(start));
+    }
+    return result;
+}
+
+
diff --git a/src/doc/4.0-rc1/_static/minus.png b/src/doc/4.0-rc1/_static/minus.png
new file mode 100644
index 0000000..d96755f
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/minus.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_static/plus.png b/src/doc/4.0-rc1/_static/plus.png
new file mode 100644
index 0000000..7107cec
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/plus.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_static/pygments.css b/src/doc/4.0-rc1/_static/pygments.css
new file mode 100644
index 0000000..20c4814
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/pygments.css
@@ -0,0 +1,69 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #eeffcc; }
+.highlight .c { color: #408090; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #333333 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #208050 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #208050 } /* Literal.Number.Bin */
+.highlight .mf { color: #208050 } /* Literal.Number.Float */
+.highlight .mh { color: #208050 } /* Literal.Number.Hex */
+.highlight .mi { color: #208050 } /* Literal.Number.Integer */
+.highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #06287e } /* Name.Function.Magic */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
+.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/_static/searchtools.js b/src/doc/4.0-rc1/_static/searchtools.js
new file mode 100644
index 0000000..5ff3180
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/searchtools.js
@@ -0,0 +1,481 @@
+/*
+ * searchtools.js
+ * ~~~~~~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for the full-text search.
+ *
+ * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+if (!Scorer) {
+  /**
+   * Simple result scoring code.
+   */
+  var Scorer = {
+    // Implement the following function to further tweak the score for each result
+    // The function takes a result array [filename, title, anchor, descr, score]
+    // and returns the new score.
+    /*
+    score: function(result) {
+      return result[4];
+    },
+    */
+
+    // query matches the full name of an object
+    objNameMatch: 11,
+    // or matches in the last dotted part of the object name
+    objPartialMatch: 6,
+    // Additive scores depending on the priority of the object
+    objPrio: {0:  15,   // used to be importantResults
+              1:  5,   // used to be objectResults
+              2: -5},  // used to be unimportantResults
+    //  Used when the priority is not in the mapping.
+    objPrioDefault: 0,
+
+    // query found in title
+    title: 15,
+    // query found in terms
+    term: 5
+  };
+}
+
+if (!splitQuery) {
+  function splitQuery(query) {
+    return query.split(/\s+/);
+  }
+}
+
+/**
+ * Search Module
+ */
+var Search = {
+
+  _index : null,
+  _queued_query : null,
+  _pulse_status : -1,
+
+  init : function() {
+      var params = $.getQueryParameters();
+      if (params.q) {
+          var query = params.q[0];
+          $('input[name="q"]')[0].value = query;
+          this.performSearch(query);
+      }
+  },
+
+  loadIndex : function(url) {
+    $.ajax({type: "GET", url: url, data: null,
+            dataType: "script", cache: true,
+            complete: function(jqxhr, textstatus) {
+              if (textstatus != "success") {
+                document.getElementById("searchindexloader").src = url;
+              }
+            }});
+  },
+
+  setIndex : function(index) {
+    var q;
+    this._index = index;
+    if ((q = this._queued_query) !== null) {
+      this._queued_query = null;
+      Search.query(q);
+    }
+  },
+
+  hasIndex : function() {
+      return this._index !== null;
+  },
+
+  deferQuery : function(query) {
+      this._queued_query = query;
+  },
+
+  stopPulse : function() {
+      this._pulse_status = 0;
+  },
+
+  startPulse : function() {
+    if (this._pulse_status >= 0)
+        return;
+    function pulse() {
+      var i;
+      Search._pulse_status = (Search._pulse_status + 1) % 4;
+      var dotString = '';
+      for (i = 0; i < Search._pulse_status; i++)
+        dotString += '.';
+      Search.dots.text(dotString);
+      if (Search._pulse_status > -1)
+        window.setTimeout(pulse, 500);
+    }
+    pulse();
+  },
+
+  /**
+   * perform a search for something (or wait until index is loaded)
+   */
+  performSearch : function(query) {
+    // create the required interface elements
+    this.out = $('#search-results');
+    this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
+    this.dots = $('<span></span>').appendTo(this.title);
+    this.status = $('<p style="display: none"></p>').appendTo(this.out);
+    this.output = $('<ul class="search"/>').appendTo(this.out);
+
+    $('#search-progress').text(_('Preparing search...'));
+    this.startPulse();
+
+    // index already loaded, the browser was quick!
+    if (this.hasIndex())
+      this.query(query);
+    else
+      this.deferQuery(query);
+  },
+
+  /**
+   * execute search (requires search index to be loaded)
+   */
+  query : function(query) {
+    var i;
+
+    // stem the searchterms and add them to the correct list
+    var stemmer = new Stemmer();
+    var searchterms = [];
+    var excluded = [];
+    var hlterms = [];
+    var tmp = splitQuery(query);
+    var objectterms = [];
+    for (i = 0; i < tmp.length; i++) {
+      if (tmp[i] !== "") {
+          objectterms.push(tmp[i].toLowerCase());
+      }
+
+      if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
+          tmp[i] === "") {
+        // skip this "word"
+        continue;
+      }
+      // stem the word
+      var word = stemmer.stemWord(tmp[i].toLowerCase());
+      // prevent stemmer from cutting word smaller than two chars
+      if(word.length < 3 && tmp[i].length >= 3) {
+        word = tmp[i];
+      }
+      var toAppend;
+      // select the correct list
+      if (word[0] == '-') {
+        toAppend = excluded;
+        word = word.substr(1);
+      }
+      else {
+        toAppend = searchterms;
+        hlterms.push(tmp[i].toLowerCase());
+      }
+      // only add if not already in the list
+      if (!$u.contains(toAppend, word))
+        toAppend.push(word);
+    }
+    var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
+
+    // console.debug('SEARCH: searching for:');
+    // console.info('required: ', searchterms);
+    // console.info('excluded: ', excluded);
+
+    // prepare search
+    var terms = this._index.terms;
+    var titleterms = this._index.titleterms;
+
+    // array of [filename, title, anchor, descr, score]
+    var results = [];
+    $('#search-progress').empty();
+
+    // lookup as object
+    for (i = 0; i < objectterms.length; i++) {
+      var others = [].concat(objectterms.slice(0, i),
+                             objectterms.slice(i+1, objectterms.length));
+      results = results.concat(this.performObjectSearch(objectterms[i], others));
+    }
+
+    // lookup as search terms in fulltext
+    results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
+
+    // let the scorer override scores with a custom scoring function
+    if (Scorer.score) {
+      for (i = 0; i < results.length; i++)
+        results[i][4] = Scorer.score(results[i]);
+    }
+
+    // now sort the results by score (in opposite order of appearance, since the
+    // display function below uses pop() to retrieve items) and then
+    // alphabetically
+    results.sort(function(a, b) {
+      var left = a[4];
+      var right = b[4];
+      if (left > right) {
+        return 1;
+      } else if (left < right) {
+        return -1;
+      } else {
+        // same score: sort alphabetically
+        left = a[1].toLowerCase();
+        right = b[1].toLowerCase();
+        return (left > right) ? -1 : ((left < right) ? 1 : 0);
+      }
+    });
+
+    // for debugging
+    //Search.lastresults = results.slice();  // a copy
+    //console.info('search results:', Search.lastresults);
+
+    // print the results
+    var resultCount = results.length;
+    function displayNextItem() {
+      // results left, load the summary and display it
+      if (results.length) {
+        var item = results.pop();
+        var listItem = $('<li style="display:none"></li>');
+        if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
+          // dirhtml builder
+          var dirname = item[0] + '/';
+          if (dirname.match(/\/index\/$/)) {
+            dirname = dirname.substring(0, dirname.length-6);
+          } else if (dirname == 'index/') {
+            dirname = '';
+          }
+          listItem.append($('<a/>').attr('href',
+            DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
+            highlightstring + item[2]).html(item[1]));
+        } else {
+          // normal html builders
+          listItem.append($('<a/>').attr('href',
+            item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
+            highlightstring + item[2]).html(item[1]));
+        }
+        if (item[3]) {
+          listItem.append($('<span> (' + item[3] + ')</span>'));
+          Search.output.append(listItem);
+          listItem.slideDown(5, function() {
+            displayNextItem();
+          });
+        } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
+          var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
+          if (suffix === undefined) {
+            suffix = '.txt';
+          }
+          $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
+                  dataType: "text",
+                  complete: function(jqxhr, textstatus) {
+                    var data = jqxhr.responseText;
+                    if (data !== '' && data !== undefined) {
+                      listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
+                    }
+                    Search.output.append(listItem);
+                    listItem.slideDown(5, function() {
+                      displayNextItem();
+                    });
+                  }});
+        } else {
+          // no source available, just display title
+          Search.output.append(listItem);
+          listItem.slideDown(5, function() {
+            displayNextItem();
+          });
+        }
+      }
+      // search finished, update title and status message
+      else {
+        Search.stopPulse();
+        Search.title.text(_('Search Results'));
+        if (!resultCount)
+          Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
+        else
+            Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
+        Search.status.fadeIn(500);
+      }
+    }
+    displayNextItem();
+  },
+
+  /**
+   * search for object names
+   */
+  performObjectSearch : function(object, otherterms) {
+    var filenames = this._index.filenames;
+    var docnames = this._index.docnames;
+    var objects = this._index.objects;
+    var objnames = this._index.objnames;
+    var titles = this._index.titles;
+
+    var i;
+    var results = [];
+
+    for (var prefix in objects) {
+      for (var name in objects[prefix]) {
+        var fullname = (prefix ? prefix + '.' : '') + name;
+        if (fullname.toLowerCase().indexOf(object) > -1) {
+          var score = 0;
+          var parts = fullname.split('.');
+          // check for different match types: exact matches of full name or
+          // "last name" (i.e. last dotted part)
+          if (fullname == object || parts[parts.length - 1] == object) {
+            score += Scorer.objNameMatch;
+          // matches in last name
+          } else if (parts[parts.length - 1].indexOf(object) > -1) {
+            score += Scorer.objPartialMatch;
+          }
+          var match = objects[prefix][name];
+          var objname = objnames[match[1]][2];
+          var title = titles[match[0]];
+          // If more than one term searched for, we require other words to be
+          // found in the name/title/description
+          if (otherterms.length > 0) {
+            var haystack = (prefix + ' ' + name + ' ' +
+                            objname + ' ' + title).toLowerCase();
+            var allfound = true;
+            for (i = 0; i < otherterms.length; i++) {
+              if (haystack.indexOf(otherterms[i]) == -1) {
+                allfound = false;
+                break;
+              }
+            }
+            if (!allfound) {
+              continue;
+            }
+          }
+          var descr = objname + _(', in ') + title;
+
+          var anchor = match[3];
+          if (anchor === '')
+            anchor = fullname;
+          else if (anchor == '-')
+            anchor = objnames[match[1]][1] + '-' + fullname;
+          // add custom score for some objects according to scorer
+          if (Scorer.objPrio.hasOwnProperty(match[2])) {
+            score += Scorer.objPrio[match[2]];
+          } else {
+            score += Scorer.objPrioDefault;
+          }
+          results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
+        }
+      }
+    }
+
+    return results;
+  },
+
+  /**
+   * search for full-text terms in the index
+   */
+  performTermsSearch : function(searchterms, excluded, terms, titleterms) {
+    var docnames = this._index.docnames;
+    var filenames = this._index.filenames;
+    var titles = this._index.titles;
+
+    var i, j, file;
+    var fileMap = {};
+    var scoreMap = {};
+    var results = [];
+
+    // perform the search on the required terms
+    for (i = 0; i < searchterms.length; i++) {
+      var word = searchterms[i];
+      var files = [];
+      var _o = [
+        {files: terms[word], score: Scorer.term},
+        {files: titleterms[word], score: Scorer.title}
+      ];
+
+      // no match but word was a required one
+      if ($u.every(_o, function(o){return o.files === undefined;})) {
+        break;
+      }
+      // found search word in contents
+      $u.each(_o, function(o) {
+        var _files = o.files;
+        if (_files === undefined)
+          return
+
+        if (_files.length === undefined)
+          _files = [_files];
+        files = files.concat(_files);
+
+        // set score for the word in each file to Scorer.term
+        for (j = 0; j < _files.length; j++) {
+          file = _files[j];
+          if (!(file in scoreMap))
+            scoreMap[file] = {}
+          scoreMap[file][word] = o.score;
+        }
+      });
+
+      // create the mapping
+      for (j = 0; j < files.length; j++) {
+        file = files[j];
+        if (file in fileMap)
+          fileMap[file].push(word);
+        else
+          fileMap[file] = [word];
+      }
+    }
+
+    // now check if the files don't contain excluded terms
+    for (file in fileMap) {
+      var valid = true;
+
+      // check if all requirements are matched
+      if (fileMap[file].length != searchterms.length)
+          continue;
+
+      // ensure that none of the excluded terms is in the search result
+      for (i = 0; i < excluded.length; i++) {
+        if (terms[excluded[i]] == file ||
+            titleterms[excluded[i]] == file ||
+            $u.contains(terms[excluded[i]] || [], file) ||
+            $u.contains(titleterms[excluded[i]] || [], file)) {
+          valid = false;
+          break;
+        }
+      }
+
+      // if we have still a valid result we can add it to the result list
+      if (valid) {
+        // select one (max) score for the file.
+        // for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
+        var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
+        results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
+      }
+    }
+    return results;
+  },
+
+  /**
+   * helper function to return a node containing the
+   * search summary for a given text. keywords is a list
+   * of stemmed words, hlwords is the list of normal, unstemmed
+   * words. the first one is used to find the occurrence, the
+   * latter for highlighting it.
+   */
+  makeSearchSummary : function(text, keywords, hlwords) {
+    var textLower = text.toLowerCase();
+    var start = 0;
+    $.each(keywords, function() {
+      var i = textLower.indexOf(this.toLowerCase());
+      if (i > -1)
+        start = i;
+    });
+    start = Math.max(start - 120, 0);
+    var excerpt = ((start > 0) ? '...' : '') +
+      $.trim(text.substr(start, 240)) +
+      ((start + 240 - text.length) ? '...' : '');
+    var rv = $('<div class="context"></div>').text(excerpt);
+    $.each(hlwords, function() {
+      rv = rv.highlightText(this, 'highlighted');
+    });
+    return rv;
+  }
+};
+
+$(document).ready(function() {
+  Search.init();
+});
diff --git a/src/doc/4.0-rc1/_static/underscore-1.3.1.js b/src/doc/4.0-rc1/_static/underscore-1.3.1.js
new file mode 100644
index 0000000..208d4cd
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/underscore-1.3.1.js
@@ -0,0 +1,999 @@
+//     Underscore.js 1.3.1
+//     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+//     Underscore is freely distributable under the MIT license.
+//     Portions of Underscore are inspired or borrowed from Prototype,
+//     Oliver Steele's Functional, and John Resig's Micro-Templating.
+//     For all details and documentation:
+//     http://documentcloud.github.com/underscore
+
+(function() {
+
+  // Baseline setup
+  // --------------
+
+  // Establish the root object, `window` in the browser, or `global` on the server.
+  var root = this;
+
+  // Save the previous value of the `_` variable.
+  var previousUnderscore = root._;
+
+  // Establish the object that gets returned to break out of a loop iteration.
+  var breaker = {};
+
+  // Save bytes in the minified (but not gzipped) version:
+  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
+  // Create quick reference variables for speed access to core prototypes.
+  var slice            = ArrayProto.slice,
+      unshift          = ArrayProto.unshift,
+      toString         = ObjProto.toString,
+      hasOwnProperty   = ObjProto.hasOwnProperty;
+
+  // All **ECMAScript 5** native function implementations that we hope to use
+  // are declared here.
+  var
+    nativeForEach      = ArrayProto.forEach,
+    nativeMap          = ArrayProto.map,
+    nativeReduce       = ArrayProto.reduce,
+    nativeReduceRight  = ArrayProto.reduceRight,
+    nativeFilter       = ArrayProto.filter,
+    nativeEvery        = ArrayProto.every,
+    nativeSome         = ArrayProto.some,
+    nativeIndexOf      = ArrayProto.indexOf,
+    nativeLastIndexOf  = ArrayProto.lastIndexOf,
+    nativeIsArray      = Array.isArray,
+    nativeKeys         = Object.keys,
+    nativeBind         = FuncProto.bind;
+
+  // Create a safe reference to the Underscore object for use below.
+  var _ = function(obj) { return new wrapper(obj); };
+
+  // Export the Underscore object for **Node.js**, with
+  // backwards-compatibility for the old `require()` API. If we're in
+  // the browser, add `_` as a global object via a string identifier,
+  // for Closure Compiler "advanced" mode.
+  if (typeof exports !== 'undefined') {
+    if (typeof module !== 'undefined' && module.exports) {
+      exports = module.exports = _;
+    }
+    exports._ = _;
+  } else {
+    root['_'] = _;
+  }
+
+  // Current version.
+  _.VERSION = '1.3.1';
+
+  // Collection Functions
+  // --------------------
+
+  // The cornerstone, an `each` implementation, aka `forEach`.
+  // Handles objects with the built-in `forEach`, arrays, and raw objects.
+  // Delegates to **ECMAScript 5**'s native `forEach` if available.
+  var each = _.each = _.forEach = function(obj, iterator, context) {
+    if (obj == null) return;
+    if (nativeForEach && obj.forEach === nativeForEach) {
+      obj.forEach(iterator, context);
+    } else if (obj.length === +obj.length) {
+      for (var i = 0, l = obj.length; i < l; i++) {
+        if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
+      }
+    } else {
+      for (var key in obj) {
+        if (_.has(obj, key)) {
+          if (iterator.call(context, obj[key], key, obj) === breaker) return;
+        }
+      }
+    }
+  };
+
+  // Return the results of applying the iterator to each element.
+  // Delegates to **ECMAScript 5**'s native `map` if available.
+  _.map = _.collect = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
+    each(obj, function(value, index, list) {
+      results[results.length] = iterator.call(context, value, index, list);
+    });
+    if (obj.length === +obj.length) results.length = obj.length;
+    return results;
+  };
+
+  // **Reduce** builds up a single result from a list of values, aka `inject`,
+  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
+  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduce && obj.reduce === nativeReduce) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
+    }
+    each(obj, function(value, index, list) {
+      if (!initial) {
+        memo = value;
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, value, index, list);
+      }
+    });
+    if (!initial) throw new TypeError('Reduce of empty array with no initial value');
+    return memo;
+  };
+
+  // The right-associative version of reduce, also known as `foldr`.
+  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
+  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
+    }
+    var reversed = _.toArray(obj).reverse();
+    if (context && !initial) iterator = _.bind(iterator, context);
+    return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);
+  };
+
+  // Return the first value which passes a truth test. Aliased as `detect`.
+  _.find = _.detect = function(obj, iterator, context) {
+    var result;
+    any(obj, function(value, index, list) {
+      if (iterator.call(context, value, index, list)) {
+        result = value;
+        return true;
+      }
+    });
+    return result;
+  };
+
+  // Return all the elements that pass a truth test.
+  // Delegates to **ECMAScript 5**'s native `filter` if available.
+  // Aliased as `select`.
+  _.filter = _.select = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
+    each(obj, function(value, index, list) {
+      if (iterator.call(context, value, index, list)) results[results.length] = value;
+    });
+    return results;
+  };
+
+  // Return all the elements for which a truth test fails.
+  _.reject = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    each(obj, function(value, index, list) {
+      if (!iterator.call(context, value, index, list)) results[results.length] = value;
+    });
+    return results;
+  };
+
+  // Determine whether all of the elements match a truth test.
+  // Delegates to **ECMAScript 5**'s native `every` if available.
+  // Aliased as `all`.
+  _.every = _.all = function(obj, iterator, context) {
+    var result = true;
+    if (obj == null) return result;
+    if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
+    each(obj, function(value, index, list) {
+      if (!(result = result && iterator.call(context, value, index, list))) return breaker;
+    });
+    return result;
+  };
+
+  // Determine if at least one element in the object matches a truth test.
+  // Delegates to **ECMAScript 5**'s native `some` if available.
+  // Aliased as `any`.
+  var any = _.some = _.any = function(obj, iterator, context) {
+    iterator || (iterator = _.identity);
+    var result = false;
+    if (obj == null) return result;
+    if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
+    each(obj, function(value, index, list) {
+      if (result || (result = iterator.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if a given value is included in the array or object using `===`.
+  // Aliased as `contains`.
+  _.include = _.contains = function(obj, target) {
+    var found = false;
+    if (obj == null) return found;
+    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
+    found = any(obj, function(value) {
+      return value === target;
+    });
+    return found;
+  };
+
+  // Invoke a method (with arguments) on every item in a collection.
+  _.invoke = function(obj, method) {
+    var args = slice.call(arguments, 2);
+    return _.map(obj, function(value) {
+      return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
+    });
+  };
+
+  // Convenience version of a common use case of `map`: fetching a property.
+  _.pluck = function(obj, key) {
+    return _.map(obj, function(value){ return value[key]; });
+  };
+
+  // Return the maximum element or (element-based computation).
+  _.max = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj);
+    if (!iterator && _.isEmpty(obj)) return -Infinity;
+    var result = {computed : -Infinity};
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      computed >= result.computed && (result = {value : value, computed : computed});
+    });
+    return result.value;
+  };
+
+  // Return the minimum element (or element-based computation).
+  _.min = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj);
+    if (!iterator && _.isEmpty(obj)) return Infinity;
+    var result = {computed : Infinity};
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      computed < result.computed && (result = {value : value, computed : computed});
+    });
+    return result.value;
+  };
+
+  // Shuffle an array.
+  _.shuffle = function(obj) {
+    var shuffled = [], rand;
+    each(obj, function(value, index, list) {
+      if (index == 0) {
+        shuffled[0] = value;
+      } else {
+        rand = Math.floor(Math.random() * (index + 1));
+        shuffled[index] = shuffled[rand];
+        shuffled[rand] = value;
+      }
+    });
+    return shuffled;
+  };
+
+  // Sort the object's values by a criterion produced by an iterator.
+  _.sortBy = function(obj, iterator, context) {
+    return _.pluck(_.map(obj, function(value, index, list) {
+      return {
+        value : value,
+        criteria : iterator.call(context, value, index, list)
+      };
+    }).sort(function(left, right) {
+      var a = left.criteria, b = right.criteria;
+      return a < b ? -1 : a > b ? 1 : 0;
+    }), 'value');
+  };
+
+  // Groups the object's values by a criterion. Pass either a string attribute
+  // to group by, or a function that returns the criterion.
+  _.groupBy = function(obj, val) {
+    var result = {};
+    var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
+    each(obj, function(value, index) {
+      var key = iterator(value, index);
+      (result[key] || (result[key] = [])).push(value);
+    });
+    return result;
+  };
+
+  // Use a comparator function to figure out at what index an object should
+  // be inserted so as to maintain order. Uses binary search.
+  _.sortedIndex = function(array, obj, iterator) {
+    iterator || (iterator = _.identity);
+    var low = 0, high = array.length;
+    while (low < high) {
+      var mid = (low + high) >> 1;
+      iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
+    }
+    return low;
+  };
+
+  // Safely convert anything iterable into a real, live array.
+  _.toArray = function(iterable) {
+    if (!iterable)                return [];
+    if (iterable.toArray)         return iterable.toArray();
+    if (_.isArray(iterable))      return slice.call(iterable);
+    if (_.isArguments(iterable))  return slice.call(iterable);
+    return _.values(iterable);
+  };
+
+  // Return the number of elements in an object.
+  _.size = function(obj) {
+    return _.toArray(obj).length;
+  };
+
+  // Array Functions
+  // ---------------
+
+  // Get the first element of an array. Passing **n** will return the first N
+  // values in the array. Aliased as `head`. The **guard** check allows it to work
+  // with `_.map`.
+  _.first = _.head = function(array, n, guard) {
+    return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
+  };
+
+  // Returns everything but the last entry of the array. Especcialy useful on
+  // the arguments object. Passing **n** will return all the values in
+  // the array, excluding the last N. The **guard** check allows it to work with
+  // `_.map`.
+  _.initial = function(array, n, guard) {
+    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
+  };
+
+  // Get the last element of an array. Passing **n** will return the last N
+  // values in the array. The **guard** check allows it to work with `_.map`.
+  _.last = function(array, n, guard) {
+    if ((n != null) && !guard) {
+      return slice.call(array, Math.max(array.length - n, 0));
+    } else {
+      return array[array.length - 1];
+    }
+  };
+
+  // Returns everything but the first entry of the array. Aliased as `tail`.
+  // Especially useful on the arguments object. Passing an **index** will return
+  // the rest of the values in the array from that index onward. The **guard**
+  // check allows it to work with `_.map`.
+  _.rest = _.tail = function(array, index, guard) {
+    return slice.call(array, (index == null) || guard ? 1 : index);
+  };
+
+  // Trim out all falsy values from an array.
+  _.compact = function(array) {
+    return _.filter(array, function(value){ return !!value; });
+  };
+
+  // Return a completely flattened version of an array.
+  _.flatten = function(array, shallow) {
+    return _.reduce(array, function(memo, value) {
+      if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));
+      memo[memo.length] = value;
+      return memo;
+    }, []);
+  };
+
+  // Return a version of the array that does not contain the specified value(s).
+  _.without = function(array) {
+    return _.difference(array, slice.call(arguments, 1));
+  };
+
+  // Produce a duplicate-free version of the array. If the array has already
+  // been sorted, you have the option of using a faster algorithm.
+  // Aliased as `unique`.
+  _.uniq = _.unique = function(array, isSorted, iterator) {
+    var initial = iterator ? _.map(array, iterator) : array;
+    var result = [];
+    _.reduce(initial, function(memo, el, i) {
+      if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) {
+        memo[memo.length] = el;
+        result[result.length] = array[i];
+      }
+      return memo;
+    }, []);
+    return result;
+  };
+
+  // Produce an array that contains the union: each distinct element from all of
+  // the passed-in arrays.
+  _.union = function() {
+    return _.uniq(_.flatten(arguments, true));
+  };
+
+  // Produce an array that contains every item shared between all the
+  // passed-in arrays. (Aliased as "intersect" for back-compat.)
+  _.intersection = _.intersect = function(array) {
+    var rest = slice.call(arguments, 1);
+    return _.filter(_.uniq(array), function(item) {
+      return _.every(rest, function(other) {
+        return _.indexOf(other, item) >= 0;
+      });
+    });
+  };
+
+  // Take the difference between one array and a number of other arrays.
+  // Only the elements present in just the first array will remain.
+  _.difference = function(array) {
+    var rest = _.flatten(slice.call(arguments, 1));
+    return _.filter(array, function(value){ return !_.include(rest, value); });
+  };
+
+  // Zip together multiple lists into a single array -- elements that share
+  // an index go together.
+  _.zip = function() {
+    var args = slice.call(arguments);
+    var length = _.max(_.pluck(args, 'length'));
+    var results = new Array(length);
+    for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
+    return results;
+  };
+
+  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
+  // we need this function. Return the position of the first occurrence of an
+  // item in an array, or -1 if the item is not included in the array.
+  // Delegates to **ECMAScript 5**'s native `indexOf` if available.
+  // If the array is large and already in sort order, pass `true`
+  // for **isSorted** to use binary search.
+  _.indexOf = function(array, item, isSorted) {
+    if (array == null) return -1;
+    var i, l;
+    if (isSorted) {
+      i = _.sortedIndex(array, item);
+      return array[i] === item ? i : -1;
+    }
+    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
+    for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;
+    return -1;
+  };
+
+  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
+  _.lastIndexOf = function(array, item) {
+    if (array == null) return -1;
+    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
+    var i = array.length;
+    while (i--) if (i in array && array[i] === item) return i;
+    return -1;
+  };
+
+  // Generate an integer Array containing an arithmetic progression. A port of
+  // the native Python `range()` function. See
+  // [the Python documentation](http://docs.python.org/library/functions.html#range).
+  _.range = function(start, stop, step) {
+    if (arguments.length <= 1) {
+      stop = start || 0;
+      start = 0;
+    }
+    step = arguments[2] || 1;
+
+    var len = Math.max(Math.ceil((stop - start) / step), 0);
+    var idx = 0;
+    var range = new Array(len);
+
+    while(idx < len) {
+      range[idx++] = start;
+      start += step;
+    }
+
+    return range;
+  };
+
+  // Function (ahem) Functions
+  // ------------------
+
+  // Reusable constructor function for prototype setting.
+  var ctor = function(){};
+
+  // Create a function bound to a given object (assigning `this`, and arguments,
+  // optionally). Binding with arguments is also known as `curry`.
+  // Delegates to **ECMAScript 5**'s native `Function.bind` if available.
+  // We check for `func.bind` first, to fail fast when `func` is undefined.
+  _.bind = function bind(func, context) {
+    var bound, args;
+    if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+    if (!_.isFunction(func)) throw new TypeError;
+    args = slice.call(arguments, 2);
+    return bound = function() {
+      if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
+      ctor.prototype = func.prototype;
+      var self = new ctor;
+      var result = func.apply(self, args.concat(slice.call(arguments)));
+      if (Object(result) === result) return result;
+      return self;
+    };
+  };
+
+  // Bind all of an object's methods to that object. Useful for ensuring that
+  // all callbacks defined on an object belong to it.
+  _.bindAll = function(obj) {
+    var funcs = slice.call(arguments, 1);
+    if (funcs.length == 0) funcs = _.functions(obj);
+    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
+    return obj;
+  };
+
+  // Memoize an expensive function by storing its results.
+  _.memoize = function(func, hasher) {
+    var memo = {};
+    hasher || (hasher = _.identity);
+    return function() {
+      var key = hasher.apply(this, arguments);
+      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
+    };
+  };
+
+  // Delays a function for the given number of milliseconds, and then calls
+  // it with the arguments supplied.
+  _.delay = function(func, wait) {
+    var args = slice.call(arguments, 2);
+    return setTimeout(function(){ return func.apply(func, args); }, wait);
+  };
+
+  // Defers a function, scheduling it to run after the current call stack has
+  // cleared.
+  _.defer = function(func) {
+    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
+  };
+
+  // Returns a function, that, when invoked, will only be triggered at most once
+  // during a given window of time.
+  _.throttle = function(func, wait) {
+    var context, args, timeout, throttling, more;
+    var whenDone = _.debounce(function(){ more = throttling = false; }, wait);
+    return function() {
+      context = this; args = arguments;
+      var later = function() {
+        timeout = null;
+        if (more) func.apply(context, args);
+        whenDone();
+      };
+      if (!timeout) timeout = setTimeout(later, wait);
+      if (throttling) {
+        more = true;
+      } else {
+        func.apply(context, args);
+      }
+      whenDone();
+      throttling = true;
+    };
+  };
+
+  // Returns a function, that, as long as it continues to be invoked, will not
+  // be triggered. The function will be called after it stops being called for
+  // N milliseconds.
+  _.debounce = function(func, wait) {
+    var timeout;
+    return function() {
+      var context = this, args = arguments;
+      var later = function() {
+        timeout = null;
+        func.apply(context, args);
+      };
+      clearTimeout(timeout);
+      timeout = setTimeout(later, wait);
+    };
+  };
+
+  // Returns a function that will be executed at most one time, no matter how
+  // often you call it. Useful for lazy initialization.
+  _.once = function(func) {
+    var ran = false, memo;
+    return function() {
+      if (ran) return memo;
+      ran = true;
+      return memo = func.apply(this, arguments);
+    };
+  };
+
+  // Returns the first function passed as an argument to the second,
+  // allowing you to adjust arguments, run code before and after, and
+  // conditionally execute the original function.
+  _.wrap = function(func, wrapper) {
+    return function() {
+      var args = [func].concat(slice.call(arguments, 0));
+      return wrapper.apply(this, args);
+    };
+  };
+
+  // Returns a function that is the composition of a list of functions, each
+  // consuming the return value of the function that follows.
+  _.compose = function() {
+    var funcs = arguments;
+    return function() {
+      var args = arguments;
+      for (var i = funcs.length - 1; i >= 0; i--) {
+        args = [funcs[i].apply(this, args)];
+      }
+      return args[0];
+    };
+  };
+
+  // Returns a function that will only be executed after being called N times.
+  _.after = function(times, func) {
+    if (times <= 0) return func();
+    return function() {
+      if (--times < 1) { return func.apply(this, arguments); }
+    };
+  };
+
+  // Object Functions
+  // ----------------
+
+  // Retrieve the names of an object's properties.
+  // Delegates to **ECMAScript 5**'s native `Object.keys`
+  _.keys = nativeKeys || function(obj) {
+    if (obj !== Object(obj)) throw new TypeError('Invalid object');
+    var keys = [];
+    for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
+    return keys;
+  };
+
+  // Retrieve the values of an object's properties.
+  _.values = function(obj) {
+    return _.map(obj, _.identity);
+  };
+
+  // Return a sorted list of the function names available on the object.
+  // Aliased as `methods`
+  _.functions = _.methods = function(obj) {
+    var names = [];
+    for (var key in obj) {
+      if (_.isFunction(obj[key])) names.push(key);
+    }
+    return names.sort();
+  };
+
+  // Extend a given object with all the properties in passed-in object(s).
+  _.extend = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      for (var prop in source) {
+        obj[prop] = source[prop];
+      }
+    });
+    return obj;
+  };
+
+  // Fill in a given object with default properties.
+  _.defaults = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      for (var prop in source) {
+        if (obj[prop] == null) obj[prop] = source[prop];
+      }
+    });
+    return obj;
+  };
+
+  // Create a (shallow-cloned) duplicate of an object.
+  _.clone = function(obj) {
+    if (!_.isObject(obj)) return obj;
+    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+  };
+
+  // Invokes interceptor with the obj, and then returns obj.
+  // The primary purpose of this method is to "tap into" a method chain, in
+  // order to perform operations on intermediate results within the chain.
+  _.tap = function(obj, interceptor) {
+    interceptor(obj);
+    return obj;
+  };
+
+  // Internal recursive comparison function.
+  function eq(a, b, stack) {
+    // Identical objects are equal. `0 === -0`, but they aren't identical.
+    // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
+    if (a === b) return a !== 0 || 1 / a == 1 / b;
+    // A strict comparison is necessary because `null == undefined`.
+    if (a == null || b == null) return a === b;
+    // Unwrap any wrapped objects.
+    if (a._chain) a = a._wrapped;
+    if (b._chain) b = b._wrapped;
+    // Invoke a custom `isEqual` method if one is provided.
+    if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);
+    if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);
+    // Compare `[[Class]]` names.
+    var className = toString.call(a);
+    if (className != toString.call(b)) return false;
+    switch (className) {
+      // Strings, numbers, dates, and booleans are compared by value.
+      case '[object String]':
+        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+        // equivalent to `new String("5")`.
+        return a == String(b);
+      case '[object Number]':
+        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
+        // other numeric values.
+        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
+      case '[object Date]':
+      case '[object Boolean]':
+        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+        // millisecond representations. Note that invalid dates with millisecond representations
+        // of `NaN` are not equivalent.
+        return +a == +b;
+      // RegExps are compared by their source patterns and flags.
+      case '[object RegExp]':
+        return a.source == b.source &&
+               a.global == b.global &&
+               a.multiline == b.multiline &&
+               a.ignoreCase == b.ignoreCase;
+    }
+    if (typeof a != 'object' || typeof b != 'object') return false;
+    // Assume equality for cyclic structures. The algorithm for detecting cyclic
+    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+    var length = stack.length;
+    while (length--) {
+      // Linear search. Performance is inversely proportional to the number of
+      // unique nested structures.
+      if (stack[length] == a) return true;
+    }
+    // Add the first object to the stack of traversed objects.
+    stack.push(a);
+    var size = 0, result = true;
+    // Recursively compare objects and arrays.
+    if (className == '[object Array]') {
+      // Compare array lengths to determine if a deep comparison is necessary.
+      size = a.length;
+      result = size == b.length;
+      if (result) {
+        // Deep compare the contents, ignoring non-numeric properties.
+        while (size--) {
+          // Ensure commutative equality for sparse arrays.
+          if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;
+        }
+      }
+    } else {
+      // Objects with different constructors are not equivalent.
+      if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;
+      // Deep compare objects.
+      for (var key in a) {
+        if (_.has(a, key)) {
+          // Count the expected number of properties.
+          size++;
+          // Deep compare each member.
+          if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;
+        }
+      }
+      // Ensure that both objects contain the same number of properties.
+      if (result) {
+        for (key in b) {
+          if (_.has(b, key) && !(size--)) break;
+        }
+        result = !size;
+      }
+    }
+    // Remove the first object from the stack of traversed objects.
+    stack.pop();
+    return result;
+  }
+
+  // Perform a deep comparison to check if two objects are equal.
+  _.isEqual = function(a, b) {
+    return eq(a, b, []);
+  };
+
+  // Is a given array, string, or object empty?
+  // An "empty" object has no enumerable own-properties.
+  _.isEmpty = function(obj) {
+    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
+    for (var key in obj) if (_.has(obj, key)) return false;
+    return true;
+  };
+
+  // Is a given value a DOM element?
+  _.isElement = function(obj) {
+    return !!(obj && obj.nodeType == 1);
+  };
+
+  // Is a given value an array?
+  // Delegates to ECMA5's native Array.isArray
+  _.isArray = nativeIsArray || function(obj) {
+    return toString.call(obj) == '[object Array]';
+  };
+
+  // Is a given variable an object?
+  _.isObject = function(obj) {
+    return obj === Object(obj);
+  };
+
+  // Is a given variable an arguments object?
+  _.isArguments = function(obj) {
+    return toString.call(obj) == '[object Arguments]';
+  };
+  if (!_.isArguments(arguments)) {
+    _.isArguments = function(obj) {
+      return !!(obj && _.has(obj, 'callee'));
+    };
+  }
+
+  // Is a given value a function?
+  _.isFunction = function(obj) {
+    return toString.call(obj) == '[object Function]';
+  };
+
+  // Is a given value a string?
+  _.isString = function(obj) {
+    return toString.call(obj) == '[object String]';
+  };
+
+  // Is a given value a number?
+  _.isNumber = function(obj) {
+    return toString.call(obj) == '[object Number]';
+  };
+
+  // Is the given value `NaN`?
+  _.isNaN = function(obj) {
+    // `NaN` is the only value for which `===` is not reflexive.
+    return obj !== obj;
+  };
+
+  // Is a given value a boolean?
+  _.isBoolean = function(obj) {
+    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
+  };
+
+  // Is a given value a date?
+  _.isDate = function(obj) {
+    return toString.call(obj) == '[object Date]';
+  };
+
+  // Is the given value a regular expression?
+  _.isRegExp = function(obj) {
+    return toString.call(obj) == '[object RegExp]';
+  };
+
+  // Is a given value equal to null?
+  _.isNull = function(obj) {
+    return obj === null;
+  };
+
+  // Is a given variable undefined?
+  _.isUndefined = function(obj) {
+    return obj === void 0;
+  };
+
+  // Has own property?
+  _.has = function(obj, key) {
+    return hasOwnProperty.call(obj, key);
+  };
+
+  // Utility Functions
+  // -----------------
+
+  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+  // previous owner. Returns a reference to the Underscore object.
+  _.noConflict = function() {
+    root._ = previousUnderscore;
+    return this;
+  };
+
+  // Keep the identity function around for default iterators.
+  _.identity = function(value) {
+    return value;
+  };
+
+  // Run a function **n** times.
+  _.times = function (n, iterator, context) {
+    for (var i = 0; i < n; i++) iterator.call(context, i);
+  };
+
+  // Escape a string for HTML interpolation.
+  _.escape = function(string) {
+    return (''+string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g,'&#x2F;');
+  };
+
+  // Add your own custom functions to the Underscore object, ensuring that
+  // they're correctly added to the OOP wrapper as well.
+  _.mixin = function(obj) {
+    each(_.functions(obj), function(name){
+      addToWrapper(name, _[name] = obj[name]);
+    });
+  };
+
+  // Generate a unique integer id (unique within the entire client session).
+  // Useful for temporary DOM ids.
+  var idCounter = 0;
+  _.uniqueId = function(prefix) {
+    var id = idCounter++;
+    return prefix ? prefix + id : id;
+  };
+
+  // By default, Underscore uses ERB-style template delimiters, change the
+  // following template settings to use alternative delimiters.
+  _.templateSettings = {
+    evaluate    : /<%([\s\S]+?)%>/g,
+    interpolate : /<%=([\s\S]+?)%>/g,
+    escape      : /<%-([\s\S]+?)%>/g
+  };
+
+  // When customizing `templateSettings`, if you don't want to define an
+  // interpolation, evaluation or escaping regex, we need one that is
+  // guaranteed not to match.
+  var noMatch = /.^/;
+
+  // Within an interpolation, evaluation, or escaping, remove HTML escaping
+  // that had been previously added.
+  var unescape = function(code) {
+    return code.replace(/\\\\/g, '\\').replace(/\\'/g, "'");
+  };
+
+  // JavaScript micro-templating, similar to John Resig's implementation.
+  // Underscore templating handles arbitrary delimiters, preserves whitespace,
+  // and correctly escapes quotes within interpolated code.
+  _.template = function(str, data) {
+    var c  = _.templateSettings;
+    var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
+      'with(obj||{}){__p.push(\'' +
+      str.replace(/\\/g, '\\\\')
+         .replace(/'/g, "\\'")
+         .replace(c.escape || noMatch, function(match, code) {
+           return "',_.escape(" + unescape(code) + "),'";
+         })
+         .replace(c.interpolate || noMatch, function(match, code) {
+           return "'," + unescape(code) + ",'";
+         })
+         .replace(c.evaluate || noMatch, function(match, code) {
+           return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('";
+         })
+         .replace(/\r/g, '\\r')
+         .replace(/\n/g, '\\n')
+         .replace(/\t/g, '\\t')
+         + "');}return __p.join('');";
+    var func = new Function('obj', '_', tmpl);
+    if (data) return func(data, _);
+    return function(data) {
+      return func.call(this, data, _);
+    };
+  };
+
+  // Add a "chain" function, which will delegate to the wrapper.
+  _.chain = function(obj) {
+    return _(obj).chain();
+  };
+
+  // The OOP Wrapper
+  // ---------------
+
+  // If Underscore is called as a function, it returns a wrapped object that
+  // can be used OO-style. This wrapper holds altered versions of all the
+  // underscore functions. Wrapped objects may be chained.
+  var wrapper = function(obj) { this._wrapped = obj; };
+
+  // Expose `wrapper.prototype` as `_.prototype`
+  _.prototype = wrapper.prototype;
+
+  // Helper function to continue chaining intermediate results.
+  var result = function(obj, chain) {
+    return chain ? _(obj).chain() : obj;
+  };
+
+  // A method to easily add functions to the OOP wrapper.
+  var addToWrapper = function(name, func) {
+    wrapper.prototype[name] = function() {
+      var args = slice.call(arguments);
+      unshift.call(args, this._wrapped);
+      return result(func.apply(_, args), this._chain);
+    };
+  };
+
+  // Add all of the Underscore functions to the wrapper object.
+  _.mixin(_);
+
+  // Add all mutator Array functions to the wrapper.
+  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+    var method = ArrayProto[name];
+    wrapper.prototype[name] = function() {
+      var wrapped = this._wrapped;
+      method.apply(wrapped, arguments);
+      var length = wrapped.length;
+      if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];
+      return result(wrapped, this._chain);
+    };
+  });
+
+  // Add all accessor Array functions to the wrapper.
+  each(['concat', 'join', 'slice'], function(name) {
+    var method = ArrayProto[name];
+    wrapper.prototype[name] = function() {
+      return result(method.apply(this._wrapped, arguments), this._chain);
+    };
+  });
+
+  // Start chaining a wrapped Underscore object.
+  wrapper.prototype.chain = function() {
+    this._chain = true;
+    return this;
+  };
+
+  // Extracts the result from a wrapped and chained object.
+  wrapper.prototype.value = function() {
+    return this._wrapped;
+  };
+
+}).call(this);
diff --git a/src/doc/4.0-rc1/_static/underscore.js b/src/doc/4.0-rc1/_static/underscore.js
new file mode 100644
index 0000000..5b55f32
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/underscore.js
@@ -0,0 +1,31 @@
+// Underscore.js 1.3.1
+// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore is freely distributable under the MIT license.
+// Portions of Underscore are inspired or borrowed from Prototype,
+// Oliver Steele's Functional, and John Resig's Micro-Templating.
+// For all details and documentation:
+// http://documentcloud.github.com/underscore
+(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
+c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
+h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
+b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
+null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
+function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
+e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
+function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
+return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
+c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
+b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
+return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
+d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
+var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
+c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
+a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
+b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
+1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
+b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
+b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),
+function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
+u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
+function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
+true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
diff --git a/src/doc/4.0-rc1/_static/up-pressed.png b/src/doc/4.0-rc1/_static/up-pressed.png
new file mode 100644
index 0000000..acee3b6
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/up-pressed.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_static/up.png b/src/doc/4.0-rc1/_static/up.png
new file mode 100644
index 0000000..2a940a7
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/up.png
Binary files differ
diff --git a/src/doc/4.0-rc1/_static/websupport.js b/src/doc/4.0-rc1/_static/websupport.js
new file mode 100644
index 0000000..3b4999e
--- /dev/null
+++ b/src/doc/4.0-rc1/_static/websupport.js
@@ -0,0 +1,808 @@
+/*
+ * websupport.js
+ * ~~~~~~~~~~~~~
+ *
+ * sphinx.websupport utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+(function($) {
+  $.fn.autogrow = function() {
+    return this.each(function() {
+    var textarea = this;
+
+    $.fn.autogrow.resize(textarea);
+
+    $(textarea)
+      .focus(function() {
+        textarea.interval = setInterval(function() {
+          $.fn.autogrow.resize(textarea);
+        }, 500);
+      })
+      .blur(function() {
+        clearInterval(textarea.interval);
+      });
+    });
+  };
+
+  $.fn.autogrow.resize = function(textarea) {
+    var lineHeight = parseInt($(textarea).css('line-height'), 10);
+    var lines = textarea.value.split('\n');
+    var columns = textarea.cols;
+    var lineCount = 0;
+    $.each(lines, function() {
+      lineCount += Math.ceil(this.length / columns) || 1;
+    });
+    var height = lineHeight * (lineCount + 1);
+    $(textarea).css('height', height);
+  };
+})(jQuery);
+
+(function($) {
+  var comp, by;
+
+  function init() {
+    initEvents();
+    initComparator();
+  }
+
+  function initEvents() {
+    $(document).on("click", 'a.comment-close', function(event) {
+      event.preventDefault();
+      hide($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.vote', function(event) {
+      event.preventDefault();
+      handleVote($(this));
+    });
+    $(document).on("click", 'a.reply', function(event) {
+      event.preventDefault();
+      openReply($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.close-reply', function(event) {
+      event.preventDefault();
+      closeReply($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.sort-option', function(event) {
+      event.preventDefault();
+      handleReSort($(this));
+    });
+    $(document).on("click", 'a.show-proposal', function(event) {
+      event.preventDefault();
+      showProposal($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.hide-proposal', function(event) {
+      event.preventDefault();
+      hideProposal($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.show-propose-change', function(event) {
+      event.preventDefault();
+      showProposeChange($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.hide-propose-change', function(event) {
+      event.preventDefault();
+      hideProposeChange($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.accept-comment', function(event) {
+      event.preventDefault();
+      acceptComment($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.delete-comment', function(event) {
+      event.preventDefault();
+      deleteComment($(this).attr('id').substring(2));
+    });
+    $(document).on("click", 'a.comment-markup', function(event) {
+      event.preventDefault();
+      toggleCommentMarkupBox($(this).attr('id').substring(2));
+    });
+  }
+
+  /**
+   * Set comp, which is a comparator function used for sorting and
+   * inserting comments into the list.
+   */
+  function setComparator() {
+    // If the first three letters are "asc", sort in ascending order
+    // and remove the prefix.
+    if (by.substring(0,3) == 'asc') {
+      var i = by.substring(3);
+      comp = function(a, b) { return a[i] - b[i]; };
+    } else {
+      // Otherwise sort in descending order.
+      comp = function(a, b) { return b[by] - a[by]; };
+    }
+
+    // Reset link styles and format the selected sort option.
+    $('a.sel').attr('href', '#').removeClass('sel');
+    $('a.by' + by).removeAttr('href').addClass('sel');
+  }
+
+  /**
+   * Create a comp function. If the user has preferences stored in
+   * the sortBy cookie, use those, otherwise use the default.
+   */
+  function initComparator() {
+    by = 'rating'; // Default to sort by rating.
+    // If the sortBy cookie is set, use that instead.
+    if (document.cookie.length > 0) {
+      var start = document.cookie.indexOf('sortBy=');
+      if (start != -1) {
+        start = start + 7;
+        var end = document.cookie.indexOf(";", start);
+        if (end == -1) {
+          end = document.cookie.length;
+          by = unescape(document.cookie.substring(start, end));
+        }
+      }
+    }
+    setComparator();
+  }
+
+  /**
+   * Show a comment div.
+   */
+  function show(id) {
+    $('#ao' + id).hide();
+    $('#ah' + id).show();
+    var context = $.extend({id: id}, opts);
+    var popup = $(renderTemplate(popupTemplate, context)).hide();
+    popup.find('textarea[name="proposal"]').hide();
+    popup.find('a.by' + by).addClass('sel');
+    var form = popup.find('#cf' + id);
+    form.submit(function(event) {
+      event.preventDefault();
+      addComment(form);
+    });
+    $('#s' + id).after(popup);
+    popup.slideDown('fast', function() {
+      getComments(id);
+    });
+  }
+
+  /**
+   * Hide a comment div.
+   */
+  function hide(id) {
+    $('#ah' + id).hide();
+    $('#ao' + id).show();
+    var div = $('#sc' + id);
+    div.slideUp('fast', function() {
+      div.remove();
+    });
+  }
+
+  /**
+   * Perform an ajax request to get comments for a node
+   * and insert the comments into the comments tree.
+   */
+  function getComments(id) {
+    $.ajax({
+     type: 'GET',
+     url: opts.getCommentsURL,
+     data: {node: id},
+     success: function(data, textStatus, request) {
+       var ul = $('#cl' + id);
+       var speed = 100;
+       $('#cf' + id)
+         .find('textarea[name="proposal"]')
+         .data('source', data.source);
+
+       if (data.comments.length === 0) {
+         ul.html('<li>No comments yet.</li>');
+         ul.data('empty', true);
+       } else {
+         // If there are comments, sort them and put them in the list.
+         var comments = sortComments(data.comments);
+         speed = data.comments.length * 100;
+         appendComments(comments, ul);
+         ul.data('empty', false);
+       }
+       $('#cn' + id).slideUp(speed + 200);
+       ul.slideDown(speed);
+     },
+     error: function(request, textStatus, error) {
+       showError('Oops, there was a problem retrieving the comments.');
+     },
+     dataType: 'json'
+    });
+  }
+
+  /**
+   * Add a comment via ajax and insert the comment into the comment tree.
+   */
+  function addComment(form) {
+    var node_id = form.find('input[name="node"]').val();
+    var parent_id = form.find('input[name="parent"]').val();
+    var text = form.find('textarea[name="comment"]').val();
+    var proposal = form.find('textarea[name="proposal"]').val();
+
+    if (text == '') {
+      showError('Please enter a comment.');
+      return;
+    }
+
+    // Disable the form that is being submitted.
+    form.find('textarea,input').attr('disabled', 'disabled');
+
+    // Send the comment to the server.
+    $.ajax({
+      type: "POST",
+      url: opts.addCommentURL,
+      dataType: 'json',
+      data: {
+        node: node_id,
+        parent: parent_id,
+        text: text,
+        proposal: proposal
+      },
+      success: function(data, textStatus, error) {
+        // Reset the form.
+        if (node_id) {
+          hideProposeChange(node_id);
+        }
+        form.find('textarea')
+          .val('')
+          .add(form.find('input'))
+          .removeAttr('disabled');
+	var ul = $('#cl' + (node_id || parent_id));
+        if (ul.data('empty')) {
+          $(ul).empty();
+          ul.data('empty', false);
+        }
+        insertComment(data.comment);
+        var ao = $('#ao' + node_id);
+        ao.find('img').attr({'src': opts.commentBrightImage});
+        if (node_id) {
+          // if this was a "root" comment, remove the commenting box
+          // (the user can get it back by reopening the comment popup)
+          $('#ca' + node_id).slideUp();
+        }
+      },
+      error: function(request, textStatus, error) {
+        form.find('textarea,input').removeAttr('disabled');
+        showError('Oops, there was a problem adding the comment.');
+      }
+    });
+  }
+
+  /**
+   * Recursively append comments to the main comment list and children
+   * lists, creating the comment tree.
+   */
+  function appendComments(comments, ul) {
+    $.each(comments, function() {
+      var div = createCommentDiv(this);
+      ul.append($(document.createElement('li')).html(div));
+      appendComments(this.children, div.find('ul.comment-children'));
+      // To avoid stagnating data, don't store the comments children in data.
+      this.children = null;
+      div.data('comment', this);
+    });
+  }
+
+  /**
+   * After adding a new comment, it must be inserted in the correct
+   * location in the comment tree.
+   */
+  function insertComment(comment) {
+    var div = createCommentDiv(comment);
+
+    // To avoid stagnating data, don't store the comments children in data.
+    comment.children = null;
+    div.data('comment', comment);
+
+    var ul = $('#cl' + (comment.node || comment.parent));
+    var siblings = getChildren(ul);
+
+    var li = $(document.createElement('li'));
+    li.hide();
+
+    // Determine where in the parents children list to insert this comment.
+    for(var i=0; i < siblings.length; i++) {
+      if (comp(comment, siblings[i]) <= 0) {
+        $('#cd' + siblings[i].id)
+          .parent()
+          .before(li.html(div));
+        li.slideDown('fast');
+        return;
+      }
+    }
+
+    // If we get here, this comment rates lower than all the others,
+    // or it is the only comment in the list.
+    ul.append(li.html(div));
+    li.slideDown('fast');
+  }
+
+  function acceptComment(id) {
+    $.ajax({
+      type: 'POST',
+      url: opts.acceptCommentURL,
+      data: {id: id},
+      success: function(data, textStatus, request) {
+        $('#cm' + id).fadeOut('fast');
+        $('#cd' + id).removeClass('moderate');
+      },
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem accepting the comment.');
+      }
+    });
+  }
+
+  function deleteComment(id) {
+    $.ajax({
+      type: 'POST',
+      url: opts.deleteCommentURL,
+      data: {id: id},
+      success: function(data, textStatus, request) {
+        var div = $('#cd' + id);
+        if (data == 'delete') {
+          // Moderator mode: remove the comment and all children immediately
+          div.slideUp('fast', function() {
+            div.remove();
+          });
+          return;
+        }
+        // User mode: only mark the comment as deleted
+        div
+          .find('span.user-id:first')
+          .text('[deleted]').end()
+          .find('div.comment-text:first')
+          .text('[deleted]').end()
+          .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
+                ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
+          .remove();
+        var comment = div.data('comment');
+        comment.username = '[deleted]';
+        comment.text = '[deleted]';
+        div.data('comment', comment);
+      },
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem deleting the comment.');
+      }
+    });
+  }
+
+  function showProposal(id) {
+    $('#sp' + id).hide();
+    $('#hp' + id).show();
+    $('#pr' + id).slideDown('fast');
+  }
+
+  function hideProposal(id) {
+    $('#hp' + id).hide();
+    $('#sp' + id).show();
+    $('#pr' + id).slideUp('fast');
+  }
+
+  function showProposeChange(id) {
+    $('#pc' + id).hide();
+    $('#hc' + id).show();
+    var textarea = $('#pt' + id);
+    textarea.val(textarea.data('source'));
+    $.fn.autogrow.resize(textarea[0]);
+    textarea.slideDown('fast');
+  }
+
+  function hideProposeChange(id) {
+    $('#hc' + id).hide();
+    $('#pc' + id).show();
+    var textarea = $('#pt' + id);
+    textarea.val('').removeAttr('disabled');
+    textarea.slideUp('fast');
+  }
+
+  function toggleCommentMarkupBox(id) {
+    $('#mb' + id).toggle();
+  }
+
+  /** Handle when the user clicks on a sort by link. */
+  function handleReSort(link) {
+    var classes = link.attr('class').split(/\s+/);
+    for (var i=0; i<classes.length; i++) {
+      if (classes[i] != 'sort-option') {
+	by = classes[i].substring(2);
+      }
+    }
+    setComparator();
+    // Save/update the sortBy cookie.
+    var expiration = new Date();
+    expiration.setDate(expiration.getDate() + 365);
+    document.cookie= 'sortBy=' + escape(by) +
+                     ';expires=' + expiration.toUTCString();
+    $('ul.comment-ul').each(function(index, ul) {
+      var comments = getChildren($(ul), true);
+      comments = sortComments(comments);
+      appendComments(comments, $(ul).empty());
+    });
+  }
+
+  /**
+   * Function to process a vote when a user clicks an arrow.
+   */
+  function handleVote(link) {
+    if (!opts.voting) {
+      showError("You'll need to login to vote.");
+      return;
+    }
+
+    var id = link.attr('id');
+    if (!id) {
+      // Didn't click on one of the voting arrows.
+      return;
+    }
+    // If it is an unvote, the new vote value is 0,
+    // Otherwise it's 1 for an upvote, or -1 for a downvote.
+    var value = 0;
+    if (id.charAt(1) != 'u') {
+      value = id.charAt(0) == 'u' ? 1 : -1;
+    }
+    // The data to be sent to the server.
+    var d = {
+      comment_id: id.substring(2),
+      value: value
+    };
+
+    // Swap the vote and unvote links.
+    link.hide();
+    $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
+      .show();
+
+    // The div the comment is displayed in.
+    var div = $('div#cd' + d.comment_id);
+    var data = div.data('comment');
+
+    // If this is not an unvote, and the other vote arrow has
+    // already been pressed, unpress it.
+    if ((d.value !== 0) && (data.vote === d.value * -1)) {
+      $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
+      $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
+    }
+
+    // Update the comments rating in the local data.
+    data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
+    data.vote = d.value;
+    div.data('comment', data);
+
+    // Change the rating text.
+    div.find('.rating:first')
+      .text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
+
+    // Send the vote information to the server.
+    $.ajax({
+      type: "POST",
+      url: opts.processVoteURL,
+      data: d,
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem casting that vote.');
+      }
+    });
+  }
+
+  /**
+   * Open a reply form used to reply to an existing comment.
+   */
+  function openReply(id) {
+    // Swap out the reply link for the hide link
+    $('#rl' + id).hide();
+    $('#cr' + id).show();
+
+    // Add the reply li to the children ul.
+    var div = $(renderTemplate(replyTemplate, {id: id})).hide();
+    $('#cl' + id)
+      .prepend(div)
+      // Setup the submit handler for the reply form.
+      .find('#rf' + id)
+      .submit(function(event) {
+        event.preventDefault();
+        addComment($('#rf' + id));
+        closeReply(id);
+      })
+      .find('input[type=button]')
+      .click(function() {
+        closeReply(id);
+      });
+    div.slideDown('fast', function() {
+      $('#rf' + id).find('textarea').focus();
+    });
+  }
+
+  /**
+   * Close the reply form opened with openReply.
+   */
+  function closeReply(id) {
+    // Remove the reply div from the DOM.
+    $('#rd' + id).slideUp('fast', function() {
+      $(this).remove();
+    });
+
+    // Swap out the hide link for the reply link
+    $('#cr' + id).hide();
+    $('#rl' + id).show();
+  }
+
+  /**
+   * Recursively sort a tree of comments using the comp comparator.
+   */
+  function sortComments(comments) {
+    comments.sort(comp);
+    $.each(comments, function() {
+      this.children = sortComments(this.children);
+    });
+    return comments;
+  }
+
+  /**
+   * Get the children comments from a ul. If recursive is true,
+   * recursively include childrens' children.
+   */
+  function getChildren(ul, recursive) {
+    var children = [];
+    ul.children().children("[id^='cd']")
+      .each(function() {
+        var comment = $(this).data('comment');
+        if (recursive)
+          comment.children = getChildren($(this).find('#cl' + comment.id), true);
+        children.push(comment);
+      });
+    return children;
+  }
+
+  /** Create a div to display a comment in. */
+  function createCommentDiv(comment) {
+    if (!comment.displayed && !opts.moderator) {
+      return $('<div class="moderate">Thank you!  Your comment will show up '
+               + 'once it is has been approved by a moderator.</div>');
+    }
+    // Prettify the comment rating.
+    comment.pretty_rating = comment.rating + ' point' +
+      (comment.rating == 1 ? '' : 's');
+    // Make a class (for displaying not yet moderated comments differently)
+    comment.css_class = comment.displayed ? '' : ' moderate';
+    // Create a div for this comment.
+    var context = $.extend({}, opts, comment);
+    var div = $(renderTemplate(commentTemplate, context));
+
+    // If the user has voted on this comment, highlight the correct arrow.
+    if (comment.vote) {
+      var direction = (comment.vote == 1) ? 'u' : 'd';
+      div.find('#' + direction + 'v' + comment.id).hide();
+      div.find('#' + direction + 'u' + comment.id).show();
+    }
+
+    if (opts.moderator || comment.text != '[deleted]') {
+      div.find('a.reply').show();
+      if (comment.proposal_diff)
+        div.find('#sp' + comment.id).show();
+      if (opts.moderator && !comment.displayed)
+        div.find('#cm' + comment.id).show();
+      if (opts.moderator || (opts.username == comment.username))
+        div.find('#dc' + comment.id).show();
+    }
+    return div;
+  }
+
+  /**
+   * A simple template renderer. Placeholders such as <%id%> are replaced
+   * by context['id'] with items being escaped. Placeholders such as <#id#>
+   * are not escaped.
+   */
+  function renderTemplate(template, context) {
+    var esc = $(document.createElement('div'));
+
+    function handle(ph, escape) {
+      var cur = context;
+      $.each(ph.split('.'), function() {
+        cur = cur[this];
+      });
+      return escape ? esc.text(cur || "").html() : cur;
+    }
+
+    return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
+      return handle(arguments[2], arguments[1] == '%' ? true : false);
+    });
+  }
+
+  /** Flash an error message briefly. */
+  function showError(message) {
+    $(document.createElement('div')).attr({'class': 'popup-error'})
+      .append($(document.createElement('div'))
+               .attr({'class': 'error-message'}).text(message))
+      .appendTo('body')
+      .fadeIn("slow")
+      .delay(2000)
+      .fadeOut("slow");
+  }
+
+  /** Add a link the user uses to open the comments popup. */
+  $.fn.comment = function() {
+    return this.each(function() {
+      var id = $(this).attr('id').substring(1);
+      var count = COMMENT_METADATA[id];
+      var title = count + ' comment' + (count == 1 ? '' : 's');
+      var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
+      var addcls = count == 0 ? ' nocomment' : '';
+      $(this)
+        .append(
+          $(document.createElement('a')).attr({
+            href: '#',
+            'class': 'sphinx-comment-open' + addcls,
+            id: 'ao' + id
+          })
+            .append($(document.createElement('img')).attr({
+              src: image,
+              alt: 'comment',
+              title: title
+            }))
+            .click(function(event) {
+              event.preventDefault();
+              show($(this).attr('id').substring(2));
+            })
+        )
+        .append(
+          $(document.createElement('a')).attr({
+            href: '#',
+            'class': 'sphinx-comment-close hidden',
+            id: 'ah' + id
+          })
+            .append($(document.createElement('img')).attr({
+              src: opts.closeCommentImage,
+              alt: 'close',
+              title: 'close'
+            }))
+            .click(function(event) {
+              event.preventDefault();
+              hide($(this).attr('id').substring(2));
+            })
+        );
+    });
+  };
+
+  var opts = {
+    processVoteURL: '/_process_vote',
+    addCommentURL: '/_add_comment',
+    getCommentsURL: '/_get_comments',
+    acceptCommentURL: '/_accept_comment',
+    deleteCommentURL: '/_delete_comment',
+    commentImage: '/static/_static/comment.png',
+    closeCommentImage: '/static/_static/comment-close.png',
+    loadingImage: '/static/_static/ajax-loader.gif',
+    commentBrightImage: '/static/_static/comment-bright.png',
+    upArrow: '/static/_static/up.png',
+    downArrow: '/static/_static/down.png',
+    upArrowPressed: '/static/_static/up-pressed.png',
+    downArrowPressed: '/static/_static/down-pressed.png',
+    voting: false,
+    moderator: false
+  };
+
+  if (typeof COMMENT_OPTIONS != "undefined") {
+    opts = jQuery.extend(opts, COMMENT_OPTIONS);
+  }
+
+  var popupTemplate = '\
+    <div class="sphinx-comments" id="sc<%id%>">\
+      <p class="sort-options">\
+        Sort by:\
+        <a href="#" class="sort-option byrating">best rated</a>\
+        <a href="#" class="sort-option byascage">newest</a>\
+        <a href="#" class="sort-option byage">oldest</a>\
+      </p>\
+      <div class="comment-header">Comments</div>\
+      <div class="comment-loading" id="cn<%id%>">\
+        loading comments... <img src="<%loadingImage%>" alt="" /></div>\
+      <ul id="cl<%id%>" class="comment-ul"></ul>\
+      <div id="ca<%id%>">\
+      <p class="add-a-comment">Add a comment\
+        (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
+      <div class="comment-markup-box" id="mb<%id%>">\
+        reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
+        <code>``code``</code>, \
+        code blocks: <code>::</code> and an indented block after blank line</div>\
+      <form method="post" id="cf<%id%>" class="comment-form" action="">\
+        <textarea name="comment" cols="80"></textarea>\
+        <p class="propose-button">\
+          <a href="#" id="pc<%id%>" class="show-propose-change">\
+            Propose a change &#9657;\
+          </a>\
+          <a href="#" id="hc<%id%>" class="hide-propose-change">\
+            Propose a change &#9663;\
+          </a>\
+        </p>\
+        <textarea name="proposal" id="pt<%id%>" cols="80"\
+                  spellcheck="false"></textarea>\
+        <input type="submit" value="Add comment" />\
+        <input type="hidden" name="node" value="<%id%>" />\
+        <input type="hidden" name="parent" value="" />\
+      </form>\
+      </div>\
+    </div>';
+
+  var commentTemplate = '\
+    <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
+      <div class="vote">\
+        <div class="arrow">\
+          <a href="#" id="uv<%id%>" class="vote" title="vote up">\
+            <img src="<%upArrow%>" />\
+          </a>\
+          <a href="#" id="uu<%id%>" class="un vote" title="vote up">\
+            <img src="<%upArrowPressed%>" />\
+          </a>\
+        </div>\
+        <div class="arrow">\
+          <a href="#" id="dv<%id%>" class="vote" title="vote down">\
+            <img src="<%downArrow%>" id="da<%id%>" />\
+          </a>\
+          <a href="#" id="du<%id%>" class="un vote" title="vote down">\
+            <img src="<%downArrowPressed%>" />\
+          </a>\
+        </div>\
+      </div>\
+      <div class="comment-content">\
+        <p class="tagline comment">\
+          <span class="user-id"><%username%></span>\
+          <span class="rating"><%pretty_rating%></span>\
+          <span class="delta"><%time.delta%></span>\
+        </p>\
+        <div class="comment-text comment"><#text#></div>\
+        <p class="comment-opts comment">\
+          <a href="#" class="reply hidden" id="rl<%id%>">reply &#9657;</a>\
+          <a href="#" class="close-reply" id="cr<%id%>">reply &#9663;</a>\
+          <a href="#" id="sp<%id%>" class="show-proposal">proposal &#9657;</a>\
+          <a href="#" id="hp<%id%>" class="hide-proposal">proposal &#9663;</a>\
+          <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
+          <span id="cm<%id%>" class="moderation hidden">\
+            <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
+          </span>\
+        </p>\
+        <pre class="proposal" id="pr<%id%>">\
+<#proposal_diff#>\
+        </pre>\
+          <ul class="comment-children" id="cl<%id%>"></ul>\
+        </div>\
+        <div class="clearleft"></div>\
+      </div>\
+    </div>';
+
+  var replyTemplate = '\
+    <li>\
+      <div class="reply-div" id="rd<%id%>">\
+        <form id="rf<%id%>">\
+          <textarea name="comment" cols="80"></textarea>\
+          <input type="submit" value="Add reply" />\
+          <input type="button" value="Cancel" />\
+          <input type="hidden" name="parent" value="<%id%>" />\
+          <input type="hidden" name="node" value="" />\
+        </form>\
+      </div>\
+    </li>';
+
+  $(document).ready(function() {
+    init();
+  });
+})(jQuery);
+
+$(document).ready(function() {
+  // add comment anchors for all paragraphs that are commentable
+  $('.sphinx-has-comment').comment();
+
+  // highlight search words in search results
+  $("div.context").each(function() {
+    var params = $.getQueryParameters();
+    var terms = (params.q) ? params.q[0].split(/\s+/) : [];
+    var result = $(this);
+    $.each(terms, function() {
+      result.highlightText(this.toLowerCase(), 'highlighted');
+    });
+  });
+
+  // directly open comment window if requested
+  var anchor = document.location.hash;
+  if (anchor.substring(0, 9) == '#comment-') {
+    $('#ao' + anchor.substring(9)).click();
+    document.location.hash = '#s' + anchor.substring(9);
+  }
+});
diff --git a/src/doc/4.0-rc1/architecture/dynamo.html b/src/doc/4.0-rc1/architecture/dynamo.html
new file mode 100644
index 0000000..56d24b6
--- /dev/null
+++ b/src/doc/4.0-rc1/architecture/dynamo.html
@@ -0,0 +1,563 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Architecture"
+
+doc-title: "Dynamo"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Architecture" href="index.html"/>
+      <link rel="next" title="Storage Engine" href="storage_engine.html"/>
+      <link rel="prev" title="Overview" href="overview.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Architecture</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="overview.html">Overview</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Dynamo</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#dataset-partitioning-consistent-hashing">Dataset Partitioning: Consistent Hashing</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#multi-master-replication-versioned-data-and-tunable-consistency">Multi-master Replication: Versioned Data and Tunable Consistency</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#distributed-cluster-membership-and-failure-detection">Distributed Cluster Membership and Failure Detection</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#incremental-scale-out-on-commodity-hardware">Incremental Scale-out on Commodity Hardware</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html">Storage Engine</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="dynamo">
+<h1>Dynamo<a class="headerlink" href="#dynamo" title="Permalink to this headline">¶</a></h1>
+<p>Apache Cassandra relies on a number of techniques from Amazon’s <a class="reference external" href="http://courses.cse.tamu.edu/caverlee/csce438/readings/dynamo-paper.pdf">Dynamo</a>
+distributed storage key-value system. Each node in the Dynamo system has three
+main components:</p>
+<ul class="simple">
+<li>Request coordination over a partitioned dataset</li>
+<li>Ring membership and failure detection</li>
+<li>A local persistence (storage) engine</li>
+</ul>
+<p>Cassandra primarily draws from the first two clustering components,
+while using a storage engine based on a Log Structured Merge Tree
+(<a class="reference external" href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.44.2782&amp;rep=rep1&amp;type=pdf">LSM</a>).
+In particular, Cassandra relies on Dynamo style:</p>
+<ul class="simple">
+<li>Dataset partitioning using consistent hashing</li>
+<li>Multi-master replication using versioned data and tunable consistency</li>
+<li>Distributed cluster membership and failure detection via a gossip protocol</li>
+<li>Incremental scale-out on commodity hardware</li>
+</ul>
+<p>Cassandra was designed this way to meet large-scale (PiB+) business-critical
+storage requirements. In particular, as applications demanded full global
+replication of petabyte scale datasets along with always available low-latency
+reads and writes, it became imperative to design a new kind of database model
+as the relational database systems of the time struggled to meet the new
+requirements of global scale applications.</p>
+<div class="section" id="dataset-partitioning-consistent-hashing">
+<h2>Dataset Partitioning: Consistent Hashing<a class="headerlink" href="#dataset-partitioning-consistent-hashing" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra achieves horizontal scalability by
+<a class="reference external" href="https://en.wikipedia.org/wiki/Partition_(database)">partitioning</a>
+all data stored in the system using a hash function. Each partition is replicated
+to multiple physical nodes, often across failure domains such as racks and even
+datacenters. As every replica can independently accept mutations to every key
+that it owns, every key must be versioned. Unlike in the original Dynamo paper
+where deterministic versions and vector clocks were used to reconcile concurrent
+updates to a key, Cassandra uses a simpler last write wins model where every
+mutation is timestamped (including deletes) and then the latest version of data
+is the “winning” value. Formally speaking, Cassandra uses a Last-Write-Wins Element-Set
+conflict-free replicated data type for each CQL row (a.k.a <a class="reference external" href="https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type#LWW-Element-Set_(Last-Write-Wins-Element-Set)">LWW-Element-Set CRDT</a>)
+to resolve conflicting mutations on replica sets.</p>
+<blockquote>
+<div></div></blockquote>
+<div class="section" id="consistent-hashing-using-a-token-ring">
+<span id="consistent-hashing-token-ring"></span><h3>Consistent Hashing using a Token Ring<a class="headerlink" href="#consistent-hashing-using-a-token-ring" title="Permalink to this headline">¶</a></h3>
+<p>Cassandra partitions data over storage nodes using a special form of hashing
+called <a class="reference external" href="https://en.wikipedia.org/wiki/Consistent_hashing">consistent hashing</a>.
+In naive data hashing, you typically allocate keys to buckets by taking a hash
+of the key modulo the number of buckets. For example, if you want to distribute
+data to 100 nodes using naive hashing you might assign every node to a bucket
+between 0 and 100, hash the input key modulo 100, and store the data on the
+associated bucket. In this naive scheme, however, adding a single node might
+invalidate almost all of the mappings.</p>
+<p>Cassandra instead maps every node to one or more tokens on a continuous hash
+ring, and defines ownership by hashing a key onto the ring and then “walking”
+the ring in one direction, similar to the <a class="reference external" href="https://pdos.csail.mit.edu/papers/chord:sigcomm01/chord_sigcomm.pdf">Chord</a>
+algorithm. The main difference of consistent hashing to naive data hashing is
+that when the number of nodes (buckets) to hash into changes, consistent
+hashing only has to move a small fraction of the keys.</p>
+<p>For example, if we have an eight node cluster with evenly spaced tokens, and
+a replication factor (RF) of 3, then to find the owning nodes for a key we
+first hash that key to generate a token (which is just the hash of the key),
+and then we “walk” the ring in a clockwise fashion until we encounter three
+distinct nodes, at which point we have found all the replicas of that key.
+This example of an eight node cluster with <cite>RF=3</cite> can be visualized as follows:</p>
+<div class="figure">
+<a class="reference internal image-reference" href="../_images/ring.svg"><img alt="Dynamo Ring" src="../_images/ring.svg" /></a>
+</div>
+<p>You can see that in a Dynamo like system, ranges of keys, also known as <strong>token
+ranges</strong>, map to the same physical set of nodes. In this example, all keys that
+fall in the token range excluding token 1 and including token 2 (<cite>range(t1, t2]</cite>)
+are stored on nodes 2, 3 and 4.</p>
+</div>
+<div class="section" id="multiple-tokens-per-physical-node-a-k-a-vnodes">
+<h3>Multiple Tokens per Physical Node (a.k.a. <cite>vnodes</cite>)<a class="headerlink" href="#multiple-tokens-per-physical-node-a-k-a-vnodes" title="Permalink to this headline">¶</a></h3>
+<p>Simple single token consistent hashing works well if you have many physical
+nodes to spread data over, but with evenly spaced tokens and a small number of
+physical nodes, incremental scaling (adding just a few nodes of capacity) is
+difficult because there are no token selections for new nodes that can leave
+the ring balanced. Cassandra seeks to avoid token imbalance because uneven
+token ranges lead to uneven request load. For example, in the previous example
+there is no way to add a ninth token without causing imbalance; instead we
+would have to insert <code class="docutils literal notranslate"><span class="pre">8</span></code> tokens in the midpoints of the existing ranges.</p>
+<p>The Dynamo paper advocates for the use of “virtual nodes” to solve this
+imbalance problem. Virtual nodes solve the problem by assigning multiple
+tokens in the token ring to each physical node. By allowing a single physical
+node to take multiple positions in the ring, we can make small clusters look
+larger and therefore even with a single physical node addition we can make it
+look like we added many more nodes, effectively taking many smaller pieces of
+data from more ring neighbors when we add even a single node.</p>
+<p>Cassandra introduces some nomenclature to handle these concepts:</p>
+<ul class="simple">
+<li><strong>Token</strong>: A single position on the <cite>dynamo</cite> style hash ring.</li>
+<li><strong>Endpoint</strong>: A single physical IP and port on the network.</li>
+<li><strong>Host ID</strong>: A unique identifier for a single “physical” node, usually
+present at one <cite>Endpoint</cite> and containing one or more <cite>Tokens</cite>.</li>
+<li><strong>Virtual Node</strong> (or <strong>vnode</strong>): A <cite>Token</cite> on the hash ring owned by the same
+physical node, one with the same <cite>Host ID</cite>.</li>
+</ul>
+<p>The mapping of <strong>Tokens</strong> to <strong>Endpoints</strong> gives rise to the <strong>Token Map</strong>
+where Cassandra keeps track of what ring positions map to which physical
+endpoints.  For example, in the following figure we can represent an eight node
+cluster using only four physical nodes by assigning two tokens to every node:</p>
+<div class="figure">
+<a class="reference internal image-reference" href="../_images/vnodes.svg"><img alt="Virtual Tokens Ring" src="../_images/vnodes.svg" /></a>
+</div>
+<p>Multiple tokens per physical node provide the following benefits:</p>
+<ol class="arabic simple">
+<li>When a new node is added it accepts approximately equal amounts of data from
+other nodes in the ring, resulting in equal distribution of data across the
+cluster.</li>
+<li>When a node is decommissioned, it loses data roughly equally to other members
+of the ring, again keeping equal distribution of data across the cluster.</li>
+<li>If a node becomes unavailable, query load (especially token aware query load),
+is evenly distributed across many other nodes.</li>
+</ol>
+<p>Multiple tokens, however, can also have disadvantages:</p>
+<ol class="arabic simple">
+<li>Every token introduces up to <code class="docutils literal notranslate"><span class="pre">2</span> <span class="pre">*</span> <span class="pre">(RF</span> <span class="pre">-</span> <span class="pre">1)</span></code> additional neighbors on the
+token ring, which means that there are more combinations of node failures
+where we lose availability for a portion of the token ring. The more tokens
+you have, <a class="reference external" href="https://jolynch.github.io/pdf/cassandra-availability-virtual.pdf">the higher the probability of an outage</a>.</li>
+<li>Cluster-wide maintenance operations are often slowed. For example, as the
+number of tokens per node is increased, the number of discrete repair
+operations the cluster must do also increases.</li>
+<li>Performance of operations that span token ranges could be affected.</li>
+</ol>
+<p>Note that in Cassandra <code class="docutils literal notranslate"><span class="pre">2.x</span></code>, the only token allocation algorithm available
+was picking random tokens, which meant that to keep balance the default number
+of tokens per node had to be quite high, at <code class="docutils literal notranslate"><span class="pre">256</span></code>. This had the effect of
+coupling many physical endpoints together, increasing the risk of
+unavailability. That is why in <code class="docutils literal notranslate"><span class="pre">3.x</span> <span class="pre">+</span></code> the new deterministic token allocator
+was added which intelligently picks tokens such that the ring is optimally
+balanced while requiring a much lower number of tokens per physical node.</p>
+</div>
+</div>
+<div class="section" id="multi-master-replication-versioned-data-and-tunable-consistency">
+<h2>Multi-master Replication: Versioned Data and Tunable Consistency<a class="headerlink" href="#multi-master-replication-versioned-data-and-tunable-consistency" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra replicates every partition of data to many nodes across the cluster
+to maintain high availability and durability. When a mutation occurs, the
+coordinator hashes the partition key to determine the token range the data
+belongs to and then replicates the mutation to the replicas of that data
+according to the <a class="reference internal" href="../cql/ddl.html#replication-strategy"><span class="std std-ref">Replication Strategy</span></a>.</p>
+<p>All replication strategies have the notion of a <strong>replication factor</strong> (<code class="docutils literal notranslate"><span class="pre">RF</span></code>),
+which indicates to Cassandra how many copies of the partition should exist.
+For example with a <code class="docutils literal notranslate"><span class="pre">RF=3</span></code> keyspace, the data will be written to three
+distinct <strong>replicas</strong>. Replicas are always chosen such that they are distinct
+physical nodes which is achieved by skipping virtual nodes if needed.
+Replication strategies may also choose to skip nodes present in the same failure
+domain such as racks or datacenters so that Cassandra clusters can tolerate
+failures of whole racks and even datacenters of nodes.</p>
+<div class="section" id="replication-strategy">
+<span id="id2"></span><h3>Replication Strategy<a class="headerlink" href="#replication-strategy" title="Permalink to this headline">¶</a></h3>
+<p>Cassandra supports pluggable <strong>replication strategies</strong>, which determine which
+physical nodes act as replicas for a given token range. Every keyspace of
+data has its own replication strategy. All production deployments should use
+the <a class="reference internal" href="#network-topology-strategy"><span class="std std-ref">NetworkTopologyStrategy</span></a> while the <a class="reference internal" href="#simple-strategy"><span class="std std-ref">SimpleStrategy</span></a> replication
+strategy is useful only for testing clusters where you do not yet know the
+datacenter layout of the cluster.</p>
+<div class="section" id="networktopologystrategy">
+<span id="network-topology-strategy"></span><h4><code class="docutils literal notranslate"><span class="pre">NetworkTopologyStrategy</span></code><a class="headerlink" href="#networktopologystrategy" title="Permalink to this headline">¶</a></h4>
+<p><code class="docutils literal notranslate"><span class="pre">NetworkTopologyStrategy</span></code> allows a replication factor to be specified for each
+datacenter in the cluster. Even if your cluster only uses a single datacenter,
+<code class="docutils literal notranslate"><span class="pre">NetworkTopologyStrategy</span></code> should be preferred over <code class="docutils literal notranslate"><span class="pre">SimpleStrategy</span></code> to make it
+easier to add new physical or virtual datacenters to the cluster later.</p>
+<p>In addition to allowing the replication factor to be specified individually by
+datacenter, <code class="docutils literal notranslate"><span class="pre">NetworkTopologyStrategy</span></code> also attempts to choose replicas within a
+datacenter from different racks as specified by the <a class="reference internal" href="../operating/snitch.html#snitch"><span class="std std-ref">Snitch</span></a>. If
+the number of racks is greater than or equal to the replication factor for the
+datacenter, each replica is guaranteed to be chosen from a different rack.
+Otherwise, each rack will hold at least one replica, but some racks may hold
+more than one. Note that this rack-aware behavior has some potentially
+<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-3810">surprising implications</a>.  For example, if
+there are not an even number of nodes in each rack, the data load on the
+smallest rack may be much higher.  Similarly, if a single node is bootstrapped
+into a brand new rack, it will be considered a replica for the entire ring.
+For this reason, many operators choose to configure all nodes in a single
+availability zone or similar failure domain as a single “rack”.</p>
+</div>
+<div class="section" id="simplestrategy">
+<span id="simple-strategy"></span><h4><code class="docutils literal notranslate"><span class="pre">SimpleStrategy</span></code><a class="headerlink" href="#simplestrategy" title="Permalink to this headline">¶</a></h4>
+<p><code class="docutils literal notranslate"><span class="pre">SimpleStrategy</span></code> allows a single integer <code class="docutils literal notranslate"><span class="pre">replication_factor</span></code> to be defined. This determines the number of nodes that
+should contain a copy of each row.  For example, if <code class="docutils literal notranslate"><span class="pre">replication_factor</span></code> is 3, then three different nodes should store
+a copy of each row.</p>
+<p><code class="docutils literal notranslate"><span class="pre">SimpleStrategy</span></code> treats all nodes identically, ignoring any configured datacenters or racks.  To determine the replicas
+for a token range, Cassandra iterates through the tokens in the ring, starting with the token range of interest.  For
+each token, it checks whether the owning node has been added to the set of replicas, and if it has not, it is added to
+the set.  This process continues until <code class="docutils literal notranslate"><span class="pre">replication_factor</span></code> distinct nodes have been added to the set of replicas.</p>
+</div>
+<div class="section" id="transient-replication">
+<span id="id3"></span><h4>Transient Replication<a class="headerlink" href="#transient-replication" title="Permalink to this headline">¶</a></h4>
+<p>Transient replication is an experimental feature in Cassandra 4.0 not present
+in the original Dynamo paper. It allows you to configure a subset of replicas
+to only replicate data that hasn’t been incrementally repaired. This allows you
+to decouple data redundancy from availability. For instance, if you have a
+keyspace replicated at rf 3, and alter it to rf 5 with 2 transient replicas,
+you go from being able to tolerate one failed replica to being able to tolerate
+two, without corresponding increase in storage usage. This is because 3 nodes
+will replicate all the data for a given token range, and the other 2 will only
+replicate data that hasn’t been incrementally repaired.</p>
+<p>To use transient replication, you first need to enable it in
+<code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>. Once enabled, both <code class="docutils literal notranslate"><span class="pre">SimpleStrategy</span></code> and
+<code class="docutils literal notranslate"><span class="pre">NetworkTopologyStrategy</span></code> can be configured to transiently replicate data.
+You configure it by specifying replication factor as
+<code class="docutils literal notranslate"><span class="pre">&lt;total_replicas&gt;/&lt;transient_replicas</span></code> Both <code class="docutils literal notranslate"><span class="pre">SimpleStrategy</span></code> and
+<code class="docutils literal notranslate"><span class="pre">NetworkTopologyStrategy</span></code> support configuring transient replication.</p>
+<p>Transiently replicated keyspaces only support tables created with read_repair
+set to <code class="docutils literal notranslate"><span class="pre">NONE</span></code> and monotonic reads are not currently supported.  You also
+can’t use <code class="docutils literal notranslate"><span class="pre">LWT</span></code>, logged batches, or counters in 4.0. You will possibly never be
+able to use materialized views with transiently replicated keyspaces and
+probably never be able to use secondary indices with them.</p>
+<p>Transient replication is an experimental feature that may not be ready for
+production use. The expected audience is experienced users of Cassandra
+capable of fully validating a deployment of their particular application. That
+means being able check that operations like reads, writes, decommission,
+remove, rebuild, repair, and replace all work with your queries, data,
+configuration, operational practices, and availability requirements.</p>
+<p>It is anticipated that <code class="docutils literal notranslate"><span class="pre">4.next</span></code> will support monotonic reads with transient
+replication as well as LWT, logged batches, and counters.</p>
+</div>
+</div>
+<div class="section" id="data-versioning">
+<h3>Data Versioning<a class="headerlink" href="#data-versioning" title="Permalink to this headline">¶</a></h3>
+<p>Cassandra uses mutation timestamp versioning to guarantee eventual consistency of
+data. Specifically all mutations that enter the system do so with a timestamp
+provided either from a client clock or, absent a client provided timestamp,
+from the coordinator node’s clock. Updates resolve according to the conflict
+resolution rule of last write wins. Cassandra’s correctness does depend on
+these clocks, so make sure a proper time synchronization process is running
+such as NTP.</p>
+<p>Cassandra applies separate mutation timestamps to every column of every row
+within a CQL partition. Rows are guaranteed to be unique by primary key, and
+each column in a row resolve concurrent mutations according to last-write-wins
+conflict resolution. This means that updates to different primary keys within a
+partition can actually resolve without conflict! Furthermore the CQL collection
+types such as maps and sets use this same conflict free mechanism, meaning
+that concurrent updates to maps and sets are guaranteed to resolve as well.</p>
+<div class="section" id="replica-synchronization">
+<h4>Replica Synchronization<a class="headerlink" href="#replica-synchronization" title="Permalink to this headline">¶</a></h4>
+<p>As replicas in Cassandra can accept mutations independently, it is possible
+for some replicas to have newer data than others. Cassandra has many best-effort
+techniques to drive convergence of replicas including
+<cite>Replica read repair &lt;read-repair&gt;</cite> in the read path and
+<cite>Hinted handoff &lt;hints&gt;</cite> in the write path.</p>
+<p>These techniques are only best-effort, however, and to guarantee eventual
+consistency Cassandra implements <cite>anti-entropy repair &lt;repair&gt;</cite> where replicas
+calculate hierarchical hash-trees over their datasets called <a class="reference external" href="https://en.wikipedia.org/wiki/Merkle_tree">Merkle Trees</a> that can then be compared across
+replicas to identify mismatched data. Like the original Dynamo paper Cassandra
+supports “full” repairs where replicas hash their entire dataset, create Merkle
+trees, send them to each other and sync any ranges that don’t match.</p>
+<p>Unlike the original Dynamo paper, Cassandra also implements sub-range repair
+and incremental repair. Sub-range repair allows Cassandra to increase the
+resolution of the hash trees (potentially down to the single partition level)
+by creating a larger number of trees that span only a portion of the data
+range.  Incremental repair allows Cassandra to only repair the partitions that
+have changed since the last repair.</p>
+</div>
+</div>
+<div class="section" id="tunable-consistency">
+<h3>Tunable Consistency<a class="headerlink" href="#tunable-consistency" title="Permalink to this headline">¶</a></h3>
+<p>Cassandra supports a per-operation tradeoff between consistency and
+availability through <strong>Consistency Levels</strong>. Cassandra’s consistency levels
+are a version of Dynamo’s <code class="docutils literal notranslate"><span class="pre">R</span> <span class="pre">+</span> <span class="pre">W</span> <span class="pre">&gt;</span> <span class="pre">N</span></code> consistency mechanism where operators
+could configure the number of nodes that must participate in reads (<code class="docutils literal notranslate"><span class="pre">R</span></code>)
+and writes (<code class="docutils literal notranslate"><span class="pre">W</span></code>) to be larger than the replication factor (<code class="docutils literal notranslate"><span class="pre">N</span></code>). In
+Cassandra, you instead choose from a menu of common consistency levels which
+allow the operator to pick <code class="docutils literal notranslate"><span class="pre">R</span></code> and <code class="docutils literal notranslate"><span class="pre">W</span></code> behavior without knowing the
+replication factor. Generally writes will be visible to subsequent reads when
+the read consistency level contains enough nodes to guarantee a quorum intersection
+with the write consistency level.</p>
+<p>The following consistency levels are available:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">ONE</span></code></dt>
+<dd>Only a single replica must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">TWO</span></code></dt>
+<dd>Two replicas must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">THREE</span></code></dt>
+<dd>Three replicas must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">QUORUM</span></code></dt>
+<dd>A majority (n/2 + 1) of the replicas must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">ALL</span></code></dt>
+<dd>All of the replicas must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">LOCAL_QUORUM</span></code></dt>
+<dd>A majority of the replicas in the local datacenter (whichever datacenter the coordinator is in) must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">EACH_QUORUM</span></code></dt>
+<dd>A majority of the replicas in each datacenter must respond.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">LOCAL_ONE</span></code></dt>
+<dd>Only a single replica must respond.  In a multi-datacenter cluster, this also gaurantees that read requests are not
+sent to replicas in a remote datacenter.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">ANY</span></code></dt>
+<dd>A single replica may respond, or the coordinator may store a hint. If a hint is stored, the coordinator will later
+attempt to replay the hint and deliver the mutation to the replicas.  This consistency level is only accepted for
+write operations.</dd>
+</dl>
+<p>Write operations <strong>are always sent to all replicas</strong>, regardless of consistency
+level. The consistency level simply controls how many responses the coordinator
+waits for before responding to the client.</p>
+<p>For read operations, the coordinator generally only issues read commands to
+enough replicas to satisfy the consistency level. The one exception to this is
+when speculative retry may issue a redundant read request to an extra replica
+if the original replicas have not responded within a specified time window.</p>
+<div class="section" id="picking-consistency-levels">
+<h4>Picking Consistency Levels<a class="headerlink" href="#picking-consistency-levels" title="Permalink to this headline">¶</a></h4>
+<p>It is common to pick read and write consistency levels such that the replica
+sets overlap, resulting in all acknowledged writes being visible to subsequent
+reads. This is typically expressed in the same terms Dynamo does, in that <code class="docutils literal notranslate"><span class="pre">W</span> <span class="pre">+</span>
+<span class="pre">R</span> <span class="pre">&gt;</span> <span class="pre">RF</span></code>, where <code class="docutils literal notranslate"><span class="pre">W</span></code> is the write consistency level, <code class="docutils literal notranslate"><span class="pre">R</span></code> is the read
+consistency level, and <code class="docutils literal notranslate"><span class="pre">RF</span></code> is the replication factor.  For example, if <code class="docutils literal notranslate"><span class="pre">RF</span>
+<span class="pre">=</span> <span class="pre">3</span></code>, a <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code> request will require responses from at least <code class="docutils literal notranslate"><span class="pre">2/3</span></code>
+replicas.  If <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code> is used for both writes and reads, at least one of the
+replicas is guaranteed to participate in <em>both</em> the write and the read request,
+which in turn guarantees that the quorums will overlap and the write will be
+visible to the read.</p>
+<p>In a multi-datacenter environment, <code class="docutils literal notranslate"><span class="pre">LOCAL_QUORUM</span></code> can be used to provide a
+weaker but still useful guarantee: reads are guaranteed to see the latest write
+from within the same datacenter. This is often sufficient as clients homed to
+a single datacenter will read their own writes.</p>
+<p>If this type of strong consistency isn’t required, lower consistency levels
+like <code class="docutils literal notranslate"><span class="pre">LOCAL_ONE</span></code> or <code class="docutils literal notranslate"><span class="pre">ONE</span></code> may be used to improve throughput, latency, and
+availability. With replication spanning multiple datacenters, <code class="docutils literal notranslate"><span class="pre">LOCAL_ONE</span></code> is
+typically less available than <code class="docutils literal notranslate"><span class="pre">ONE</span></code> but is faster as a rule. Indeed <code class="docutils literal notranslate"><span class="pre">ONE</span></code>
+will succeed if a single replica is available in any datacenter.</p>
+</div>
+</div>
+</div>
+<div class="section" id="distributed-cluster-membership-and-failure-detection">
+<h2>Distributed Cluster Membership and Failure Detection<a class="headerlink" href="#distributed-cluster-membership-and-failure-detection" title="Permalink to this headline">¶</a></h2>
+<p>The replication protocols and dataset partitioning rely on knowing which nodes
+are alive and dead in the cluster so that write and read operations can be
+optimally routed. In Cassandra liveness information is shared in a distributed
+fashion through a failure detection mechanism based on a gossip protocol.</p>
+<div class="section" id="gossip">
+<span id="id4"></span><h3>Gossip<a class="headerlink" href="#gossip" title="Permalink to this headline">¶</a></h3>
+<p>Gossip is how Cassandra propagates basic cluster bootstrapping information such
+as endpoint membership and internode network protocol versions. In Cassandra’s
+gossip system, nodes exchange state information not only about themselves but
+also about other nodes they know about. This information is versioned with a
+vector clock of <code class="docutils literal notranslate"><span class="pre">(generation,</span> <span class="pre">version)</span></code> tuples, where the generation is a
+monotonic timestamp and version is a logical clock the increments roughly every
+second. These logical clocks allow Cassandra gossip to ignore old versions of
+cluster state just by inspecting the logical clocks presented with gossip
+messages.</p>
+<p>Every node in the Cassandra cluster runs the gossip task independently and
+periodically. Every second, every node in the cluster:</p>
+<ol class="arabic simple">
+<li>Updates the local node’s heartbeat state (the version) and constructs the
+node’s local view of the cluster gossip endpoint state.</li>
+<li>Picks a random other node in the cluster to exchange gossip endpoint state
+with.</li>
+<li>Probabilistically attempts to gossip with any unreachable nodes (if one exists)</li>
+<li>Gossips with a seed node if that didn’t happen in step 2.</li>
+</ol>
+<p>When an operator first bootstraps a Cassandra cluster they designate certain
+nodes as “seed” nodes. Any node can be a seed node and the only difference
+between seed and non-seed nodes is seed nodes are allowed to bootstrap into the
+ring without seeing any other seed nodes. Furthermore, once a cluster is
+bootstrapped, seed nodes become “hotspots” for gossip due to step 4 above.</p>
+<p>As non-seed nodes must be able to contact at least one seed node in order to
+bootstrap into the cluster, it is common to include multiple seed nodes, often
+one for each rack or datacenter. Seed nodes are often chosen using existing
+off-the-shelf service discovery mechanisms.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Nodes do not have to agree on the seed nodes, and indeed once a cluster is
+bootstrapped, newly launched nodes can be configured to use any existing
+nodes as “seeds”. The only advantage to picking the same nodes as seeds
+is it increases their usefullness as gossip hotspots.</p>
+</div>
+<p>Currently, gossip also propagates token metadata and schema <em>version</em>
+information. This information forms the control plane for scheduling data
+movements and schema pulls. For example, if a node sees a mismatch in schema
+version in gossip state, it will schedule a schema sync task with the other
+nodes. As token information propagates via gossip it is also the control plane
+for teaching nodes which endpoints own what data.</p>
+</div>
+<div class="section" id="ring-membership-and-failure-detection">
+<h3>Ring Membership and Failure Detection<a class="headerlink" href="#ring-membership-and-failure-detection" title="Permalink to this headline">¶</a></h3>
+<p>Gossip forms the basis of ring membership, but the <strong>failure detector</strong>
+ultimately makes decisions about if nodes are <code class="docutils literal notranslate"><span class="pre">UP</span></code> or <code class="docutils literal notranslate"><span class="pre">DOWN</span></code>. Every node in
+Cassandra runs a variant of the <a class="reference external" href="https://www.computer.org/csdl/proceedings-article/srds/2004/22390066/12OmNvT2phv">Phi Accrual Failure Detector</a>,
+in which every node is constantly making an independent decision of if their
+peer nodes are available or not. This decision is primarily based on received
+heartbeat state. For example, if a node does not see an increasing heartbeat
+from a node for a certain amount of time, the failure detector “convicts” that
+node, at which point Cassandra will stop routing reads to it (writes will
+typically be written to hints). If/when the node starts heartbeating again,
+Cassandra will try to reach out and connect, and if it can open communication
+channels it will mark that node as available.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">UP and DOWN state are local node decisions and are not propagated with
+gossip. Heartbeat state is propagated with gossip, but nodes will not
+consider each other as “UP” until they can successfully message each other
+over an actual network channel.</p>
+</div>
+<p>Cassandra will never remove a node from gossip state without explicit
+instruction from an operator via a decommission operation or a new node
+bootstrapping with a <code class="docutils literal notranslate"><span class="pre">replace_address_first_boot</span></code> option. This choice is
+intentional to allow Cassandra nodes to temporarily fail without causing data
+to needlessly re-balance. This also helps to prevent simultaneous range
+movements, where multiple replicas of a token range are moving at the same
+time, which can violate monotonic consistency and can even cause data loss.</p>
+</div>
+</div>
+<div class="section" id="incremental-scale-out-on-commodity-hardware">
+<h2>Incremental Scale-out on Commodity Hardware<a class="headerlink" href="#incremental-scale-out-on-commodity-hardware" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra scales-out to meet the requirements of growth in data size and
+request rates. Scaling-out means adding additional nodes to the ring, and
+every additional node brings linear improvements in compute and storage. In
+contrast, scaling-up implies adding more capacity to the existing database
+nodes. Cassandra is also capable of scale-up, and in certain environments it
+may be preferable depending on the deployment. Cassandra gives operators the
+flexibility to chose either scale-out or scale-up.</p>
+<p>One key aspect of Dynamo that Cassandra follows is to attempt to run on
+commodity hardware, and many engineering choices are made under this
+assumption. For example, Cassandra assumes nodes can fail at any time,
+auto-tunes to make the best use of CPU and memory resources available and makes
+heavy use of advanced compression and caching techniques to get the most
+storage out of limited memory and storage capabilities.</p>
+<div class="section" id="simple-query-model">
+<h3>Simple Query Model<a class="headerlink" href="#simple-query-model" title="Permalink to this headline">¶</a></h3>
+<p>Cassandra, like Dynamo, chooses not to provide cross-partition transactions
+that are common in SQL Relational Database Management Systems (RDBMS). This
+both gives the programmer a simpler read and write API, and allows Cassandra to
+more easily scale horizontally since multi-partition transactions spanning
+multiple nodes are notoriously difficult to implement and typically very
+latent.</p>
+<p>Instead, Cassanda chooses to offer fast, consistent, latency at any scale for
+single partition operations, allowing retrieval of entire partitions or only
+subsets of partitions based on primary key filters. Furthermore, Cassandra does
+support single partition compare and swap functionality via the lightweight
+transaction CQL API.</p>
+</div>
+<div class="section" id="simple-interface-for-storing-records">
+<h3>Simple Interface for Storing Records<a class="headerlink" href="#simple-interface-for-storing-records" title="Permalink to this headline">¶</a></h3>
+<p>Cassandra, in a slight departure from Dynamo, chooses a storage interface that
+is more sophisticated then “simple key value” stores but significantly less
+complex than SQL relational data models.  Cassandra presents a wide-column
+store interface, where partitions of data contain multiple rows, each of which
+contains a flexible set of individually typed columns. Every row is uniquely
+identified by the partition key and one or more clustering keys, and every row
+can have as many columns as needed.</p>
+<p>This allows users to flexibly add new columns to existing datasets as new
+requirements surface. Schema changes involve only metadata changes and run
+fully concurrently with live workloads. Therefore, users can safely add columns
+to existing Cassandra databases while remaining confident that query
+performance will not degrade.</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="storage_engine.html" class="btn btn-default pull-right " role="button" title="Storage Engine" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="overview.html" class="btn btn-default" role="button" title="Overview" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/architecture/guarantees.html b/src/doc/4.0-rc1/architecture/guarantees.html
new file mode 100644
index 0000000..21160f2
--- /dev/null
+++ b/src/doc/4.0-rc1/architecture/guarantees.html
@@ -0,0 +1,175 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Architecture"
+
+doc-title: "Guarantees"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Architecture" href="index.html"/>
+      <link rel="next" title="The Cassandra Query Language (CQL)" href="../cql/index.html"/>
+      <link rel="prev" title="Storage Engine" href="storage_engine.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Architecture</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="overview.html">Overview</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html">Dynamo</a></li>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html">Storage Engine</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Guarantees</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#what-is-cap">What is CAP?</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#high-scalability">High Scalability</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#high-availability">High Availability</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#durability">Durability</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#eventual-consistency">Eventual Consistency</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#lightweight-transactions-with-linearizable-consistency">Lightweight transactions with linearizable consistency</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#batched-writes">Batched Writes</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#secondary-indexes">Secondary Indexes</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="guarantees">
+<span id="id1"></span><h1>Guarantees<a class="headerlink" href="#guarantees" title="Permalink to this headline">¶</a></h1>
+<p>Apache Cassandra is a highly scalable and reliable database.  Cassandra is used in web based applications that serve large number of clients and the quantity of data processed is web-scale  (Petabyte) large.  Cassandra   makes some guarantees about its scalability, availability and reliability. To fully understand the inherent limitations of a storage system in an environment in which a certain level of network partition failure is to be expected and taken into account when designing the system it is important to first briefly  introduce the CAP theorem.</p>
+<div class="section" id="what-is-cap">
+<h2>What is CAP?<a class="headerlink" href="#what-is-cap" title="Permalink to this headline">¶</a></h2>
+<p>According to the CAP theorem it is not possible for a distributed data store to provide more than two of the following guarantees simultaneously.</p>
+<ul class="simple">
+<li>Consistency: Consistency implies that every read receives the most recent write or errors out</li>
+<li>Availability: Availability implies that every request receives a response. It is not guaranteed that the response contains the most recent write or data.</li>
+<li>Partition tolerance: Partition tolerance refers to the tolerance of a storage system to failure of a network partition.  Even if some of the messages are dropped or delayed the system continues to operate.</li>
+</ul>
+<p>CAP theorem implies that when using a network partition, with the inherent risk of partition failure, one has to choose between consistency and availability and both cannot be guaranteed at the same time. CAP theorem is illustrated in Figure 1.</p>
+<div class="figure">
+<img alt="../_images/Figure_1_guarantees.jpg" src="../_images/Figure_1_guarantees.jpg" />
+</div>
+<p>Figure 1. CAP Theorem</p>
+<p>High availability is a priority in web based applications and to this objective Cassandra chooses Availability and Partition Tolerance from the CAP guarantees, compromising on data Consistency to some extent.</p>
+<p>Cassandra makes the following guarantees.</p>
+<ul class="simple">
+<li>High Scalability</li>
+<li>High Availability</li>
+<li>Durability</li>
+<li>Eventual Consistency of writes to a single table</li>
+<li>Lightweight transactions with linearizable consistency</li>
+<li>Batched writes across multiple tables are guaranteed to succeed completely or not at all</li>
+<li>Secondary indexes are guaranteed to be consistent with their local replicas data</li>
+</ul>
+</div>
+<div class="section" id="high-scalability">
+<h2>High Scalability<a class="headerlink" href="#high-scalability" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra is a highly scalable storage system in which nodes may be added/removed as needed. Using gossip-based protocol a unified and consistent membership  list is kept at each node.</p>
+</div>
+<div class="section" id="high-availability">
+<h2>High Availability<a class="headerlink" href="#high-availability" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra guarantees high availability of data by  implementing a fault-tolerant storage system. Failure detection in a node is detected using a gossip-based protocol.</p>
+</div>
+<div class="section" id="durability">
+<h2>Durability<a class="headerlink" href="#durability" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra guarantees data durability by using replicas. Replicas are multiple copies of a data stored on different nodes in a cluster. In a multi-datacenter environment the replicas may be stored on different datacenters. If one replica is lost due to unrecoverable  node/datacenter failure the data is not completely lost as replicas are still available.</p>
+</div>
+<div class="section" id="eventual-consistency">
+<h2>Eventual Consistency<a class="headerlink" href="#eventual-consistency" title="Permalink to this headline">¶</a></h2>
+<p>Meeting the requirements of performance, reliability, scalability and high availability in production Cassandra is an eventually consistent storage system. Eventually consistent implies that all updates reach all replicas eventually. Divergent versions of the same data may exist temporarily but they are eventually reconciled to a consistent state. Eventual consistency is a tradeoff to achieve high availability and it involves some read and write latencies.</p>
+</div>
+<div class="section" id="lightweight-transactions-with-linearizable-consistency">
+<h2>Lightweight transactions with linearizable consistency<a class="headerlink" href="#lightweight-transactions-with-linearizable-consistency" title="Permalink to this headline">¶</a></h2>
+<p>Data must be read and written in a sequential order. Paxos consensus protocol is used to implement lightweight transactions. Paxos protocol implements lightweight transactions that are able to handle concurrent operations using linearizable consistency. Linearizable consistency is sequential consistency with real-time constraints and it ensures transaction isolation with compare and set (CAS) transaction. With CAS replica data is compared and data that is found to be out of date is set to the most consistent value. Reads with linearizable consistency allow reading the current state of the data, which may possibly be uncommitted, without making a new addition or update.</p>
+</div>
+<div class="section" id="batched-writes">
+<h2>Batched Writes<a class="headerlink" href="#batched-writes" title="Permalink to this headline">¶</a></h2>
+<p>The guarantee for batched writes across multiple tables is that they will eventually succeed, or none will.  Batch data is first written to batchlog system data, and when the batch data has been successfully stored in the cluster the batchlog data is removed.  The batch is replicated to another node to ensure the full batch completes in the event the coordinator node fails.</p>
+</div>
+<div class="section" id="secondary-indexes">
+<h2>Secondary Indexes<a class="headerlink" href="#secondary-indexes" title="Permalink to this headline">¶</a></h2>
+<p>A secondary index is an index on a column and is used to query a table that is normally not queryable. Secondary indexes when built are guaranteed to be consistent with their local replicas.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../cql/index.html" class="btn btn-default pull-right " role="button" title="The Cassandra Query Language (CQL)" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="storage_engine.html" class="btn btn-default" role="button" title="Storage Engine" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/architecture/index.html b/src/doc/4.0-rc1/architecture/index.html
new file mode 100644
index 0000000..3a73d9a
--- /dev/null
+++ b/src/doc/4.0-rc1/architecture/index.html
@@ -0,0 +1,143 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Architecture"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="next" title="Overview" href="overview.html"/>
+      <link rel="prev" title="Transient Replication" href="../new/transientreplication.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Architecture</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="overview.html">Overview</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html">Dynamo</a></li>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html">Storage Engine</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="architecture">
+<h1>Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline">¶</a></h1>
+<p>This section describes the general architecture of Apache Cassandra.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="overview.html">Overview</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="overview.html#features">Features</a></li>
+<li class="toctree-l2"><a class="reference internal" href="overview.html#operating">Operating</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="dynamo.html">Dynamo</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html#dataset-partitioning-consistent-hashing">Dataset Partitioning: Consistent Hashing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html#multi-master-replication-versioned-data-and-tunable-consistency">Multi-master Replication: Versioned Data and Tunable Consistency</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html#distributed-cluster-membership-and-failure-detection">Distributed Cluster Membership and Failure Detection</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html#incremental-scale-out-on-commodity-hardware">Incremental Scale-out on Commodity Hardware</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="storage_engine.html">Storage Engine</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html#commitlog">CommitLog</a></li>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html#memtables">Memtables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html#sstables">SSTables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html#sstable-versions">SSTable Versions</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="guarantees.html">Guarantees</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html#what-is-cap">What is CAP?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html#high-scalability">High Scalability</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html#high-availability">High Availability</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html#durability">Durability</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html#eventual-consistency">Eventual Consistency</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html#lightweight-transactions-with-linearizable-consistency">Lightweight transactions with linearizable consistency</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html#batched-writes">Batched Writes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html#secondary-indexes">Secondary Indexes</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="overview.html" class="btn btn-default pull-right " role="button" title="Overview" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../new/transientreplication.html" class="btn btn-default" role="button" title="Transient Replication" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/architecture/overview.html b/src/doc/4.0-rc1/architecture/overview.html
new file mode 100644
index 0000000..af5708b
--- /dev/null
+++ b/src/doc/4.0-rc1/architecture/overview.html
@@ -0,0 +1,198 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Architecture"
+
+doc-title: "Overview"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Architecture" href="index.html"/>
+      <link rel="next" title="Dynamo" href="dynamo.html"/>
+      <link rel="prev" title="Architecture" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Architecture</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Overview</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#features">Features</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#operating">Operating</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html">Dynamo</a></li>
+<li class="toctree-l2"><a class="reference internal" href="storage_engine.html">Storage Engine</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="overview">
+<span id="id1"></span><h1>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h1>
+<p>Apache Cassandra is an open source, distributed, NoSQL database. It presents
+a partitioned wide column storage model with eventually consistent semantics.</p>
+<p>Apache Cassandra was initially designed at <a class="reference external" href="https://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf">Facebook</a>
+using a staged event-driven architecture (<a class="reference external" href="http://www.sosp.org/2001/papers/welsh.pdf">SEDA</a>) to implement a combination of
+Amazon’s <a class="reference external" href="http://courses.cse.tamu.edu/caverlee/csce438/readings/dynamo-paper.pdf">Dynamo</a>
+distributed storage and replication techniques combined with Google’s <a class="reference external" href="https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf">Bigtable</a>
+data and storage engine model. Dynamo and Bigtable were both developed to meet
+emerging requirements for scalable, reliable and highly available storage
+systems, but each had areas that could be improved.</p>
+<p>Cassandra was designed as a best in class combination of both systems to meet
+emerging large scale, both in data footprint and query volume, storage
+requirements. As applications began to require full global replication and
+always available low-latency reads and writes, it became imperative to design a
+new kind of database model as the relational database systems of the time
+struggled to meet the new requirements of global scale applications.</p>
+<p>Systems like Cassandra are designed for these challenges and seek the
+following design objectives:</p>
+<ul class="simple">
+<li>Full multi-master database replication</li>
+<li>Global availability at low latency</li>
+<li>Scaling out on commodity hardware</li>
+<li>Linear throughput increase with each additional processor</li>
+<li>Online load balancing and cluster growth</li>
+<li>Partitioned key-oriented queries</li>
+<li>Flexible schema</li>
+</ul>
+<div class="section" id="features">
+<h2>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra provides the Cassandra Query Language (CQL), an SQL-like language,
+to create and update database schema and access data. CQL allows users to
+organize data within a cluster of Cassandra nodes using:</p>
+<ul class="simple">
+<li><strong>Keyspace</strong>: defines how a dataset is replicated, for example in which
+datacenters and how many copies. Keyspaces contain tables.</li>
+<li><strong>Table</strong>: defines the typed schema for a collection of partitions. Cassandra
+tables have flexible addition of new columns to tables with zero downtime.
+Tables contain partitions, which contain partitions, which contain columns.</li>
+<li><strong>Partition</strong>: defines the mandatory part of the primary key all rows in
+Cassandra must have. All performant queries supply the partition key in
+the query.</li>
+<li><strong>Row</strong>: contains a collection of columns identified by a unique primary key
+made up of the partition key and optionally additional clustering keys.</li>
+<li><strong>Column</strong>: A single datum with a type which belong to a row.</li>
+</ul>
+<p>CQL supports numerous advanced features over a partitioned dataset such as:</p>
+<ul class="simple">
+<li>Single partition lightweight transactions with atomic compare and set
+semantics.</li>
+<li>User-defined types, functions and aggregates</li>
+<li>Collection types including sets, maps, and lists.</li>
+<li>Local secondary indices</li>
+<li>(Experimental) materialized views</li>
+</ul>
+<p>Cassandra explicitly chooses not to implement operations that require cross
+partition coordination as they are typically slow and hard to provide highly
+available global semantics. For example Cassandra does not support:</p>
+<ul class="simple">
+<li>Cross partition transactions</li>
+<li>Distributed joins</li>
+<li>Foreign keys or referential integrity.</li>
+</ul>
+</div>
+<div class="section" id="operating">
+<h2>Operating<a class="headerlink" href="#operating" title="Permalink to this headline">¶</a></h2>
+<p>Apache Cassandra configuration settings are configured in the <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>
+file that can be edited by hand or with the aid of configuration management tools.
+Some settings can be manipulated live using an online interface, but others
+require a restart of the database to take effect.</p>
+<p>Cassandra provides tools for managing a cluster. The <code class="docutils literal notranslate"><span class="pre">nodetool</span></code> command
+interacts with Cassandra’s live control interface, allowing runtime manipulation
+of many settings from <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>. The <code class="docutils literal notranslate"><span class="pre">auditlogviewer</span></code> is used
+to view the audit logs. The  <code class="docutils literal notranslate"><span class="pre">fqltool</span></code> is used to view, replay and compare
+full query logs.  The <code class="docutils literal notranslate"><span class="pre">auditlogviewer</span></code> and <code class="docutils literal notranslate"><span class="pre">fqltool</span></code> are new tools in
+Apache Cassandra 4.0.</p>
+<p>In addition, Cassandra supports out of the box atomic snapshot functionality,
+which presents a point in time snapshot of Cassandra’s data for easy
+integration with many backup tools. Cassandra also supports incremental backups
+where data can be backed up as it is written.</p>
+<p>Apache Cassandra 4.0 has added several new features including virtual tables.
+transient replication, audit logging, full query logging, and support for Java
+11. Two of these features are experimental: transient replication and Java 11
+support.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="dynamo.html" class="btn btn-default pull-right " role="button" title="Dynamo" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Architecture" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/architecture/storage_engine.html b/src/doc/4.0-rc1/architecture/storage_engine.html
new file mode 100644
index 0000000..bb34f8e
--- /dev/null
+++ b/src/doc/4.0-rc1/architecture/storage_engine.html
@@ -0,0 +1,294 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Architecture"
+
+doc-title: "Storage Engine"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Architecture" href="index.html"/>
+      <link rel="next" title="Guarantees" href="guarantees.html"/>
+      <link rel="prev" title="Dynamo" href="dynamo.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Architecture</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="overview.html">Overview</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamo.html">Dynamo</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Storage Engine</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog">CommitLog</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memtables">Memtables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#sstables">SSTables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#sstable-versions">SSTable Versions</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="guarantees.html">Guarantees</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="storage-engine">
+<h1>Storage Engine<a class="headerlink" href="#storage-engine" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="commitlog">
+<span id="commit-log"></span><h2>CommitLog<a class="headerlink" href="#commitlog" title="Permalink to this headline">¶</a></h2>
+<p>Commitlogs are an append only log of all mutations local to a Cassandra node. Any data written to Cassandra will first be written to a commit log before being written to a memtable. This provides durability in the case of unexpected shutdown. On startup, any mutations in the commit log will be applied to memtables.</p>
+<p>All mutations write optimized by storing in commitlog segments, reducing the number of seeks needed to write to disk. Commitlog Segments are limited by the “commitlog_segment_size_in_mb” option, once the size is reached, a new commitlog segment is created. Commitlog segments can be archived, deleted, or recycled once all its data has been flushed to SSTables.  Commitlog segments are truncated when Cassandra has written data older than a certain point to the SSTables. Running “nodetool drain” before stopping Cassandra will write everything in the memtables to SSTables and remove the need to sync with the commitlogs on startup.</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_segment_size_in_mb</span></code>: The default size is 32, which is almost always fine, but if you are archiving commitlog segments (see commitlog_archiving.properties), then you probably want a finer granularity of archiving; 8 or 16 MB is reasonable. Max mutation size is also configurable via max_mutation_size_in_kb setting in cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024.</li>
+</ul>
+<p><strong>*NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must be set to at least twice the size of max_mutation_size_in_kb / 1024*</strong></p>
+<p><em>Default Value:</em> 32</p>
+<p>Commitlogs are an append only log of all mutations local to a Cassandra node. Any data written to Cassandra will first be written to a commit log before being written to a memtable. This provides durability in the case of unexpected shutdown. On startup, any mutations in the commit log will be applied.</p>
+<ul>
+<li><p class="first"><code class="docutils literal notranslate"><span class="pre">commitlog_sync</span></code>: may be either “periodic” or “batch.”</p>
+<ul>
+<li><p class="first"><code class="docutils literal notranslate"><span class="pre">batch</span></code>: In batch mode, Cassandra won’t ack writes until the commit log has been fsynced to disk. It will wait “commitlog_sync_batch_window_in_ms” milliseconds between fsyncs. This window should be kept short because the writer threads will be unable to do extra work while waiting. You may need to increase concurrent_writes for the same reason.</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_sync_batch_window_in_ms</span></code>: Time to wait between “batch” fsyncs</li>
+</ul>
+<p><em>Default Value:</em> 2</p>
+</li>
+<li><p class="first"><code class="docutils literal notranslate"><span class="pre">periodic</span></code>: In periodic mode, writes are immediately ack’ed, and the CommitLog is simply synced every “commitlog_sync_period_in_ms” milliseconds.</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_sync_period_in_ms</span></code>: Time to wait between “periodic” fsyncs</li>
+</ul>
+<p><em>Default Value:</em> 10000</p>
+</li>
+</ul>
+</li>
+</ul>
+<p><em>Default Value:</em> periodic</p>
+<p><strong>* NOTE: In the event of an unexpected shutdown, Cassandra can lose up to the sync period or more if the sync is delayed. If using “batch” mode, it is recommended to store commitlogs in a separate, dedicated device.</strong></p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_directory</span></code>: This option is commented out by default When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $CASSANDRA_HOME/data/commitlog.</li>
+</ul>
+<p><em>Default Value:</em> /var/lib/cassandra/commitlog</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_compression</span></code>: Compression to apply to the commitlog. If omitted, the commit log will be written uncompressed. LZ4, Snappy, Deflate and Zstd compressors are supported.</li>
+</ul>
+<p>(Default Value: (complex option):</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#   - class_name: LZ4Compressor</span>
+<span class="c1">#     parameters:</span>
+<span class="c1">#         -</span>
+</pre></div>
+</div>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_total_space_in_mb</span></code>: Total space to use for commit logs on disk.</li>
+</ul>
+<p>If space gets above this value, Cassandra will flush every dirty CF in the oldest segment and remove it. So a small total commitlog space will tend to cause more flush activity on less-active columnfamilies.</p>
+<p>The default value is the smaller of 8192, and 1/4 of the total space of the commitlog volume.</p>
+<p><em>Default Value:</em> 8192</p>
+</div>
+<div class="section" id="memtables">
+<span id="id1"></span><h2>Memtables<a class="headerlink" href="#memtables" title="Permalink to this headline">¶</a></h2>
+<p>Memtables are in-memory structures where Cassandra buffers writes.  In general, there is one active memtable per table.
+Eventually, memtables are flushed onto disk and become immutable <a class="reference internal" href="#sstables">SSTables</a>.  This can be triggered in several
+ways:</p>
+<ul class="simple">
+<li>The memory usage of the memtables exceeds the configured threshold  (see <code class="docutils literal notranslate"><span class="pre">memtable_cleanup_threshold</span></code>)</li>
+<li>The <a class="reference internal" href="#commit-log"><span class="std std-ref">CommitLog</span></a> approaches its maximum size, and forces memtable flushes in order to allow commitlog segments to
+be freed</li>
+</ul>
+<p>Memtables may be stored entirely on-heap or partially off-heap, depending on <code class="docutils literal notranslate"><span class="pre">memtable_allocation_type</span></code>.</p>
+</div>
+<div class="section" id="sstables">
+<h2>SSTables<a class="headerlink" href="#sstables" title="Permalink to this headline">¶</a></h2>
+<p>SSTables are the immutable data files that Cassandra uses for persisting data on disk.</p>
+<p>As SSTables are flushed to disk from <a class="reference internal" href="#memtables"><span class="std std-ref">Memtables</span></a> or are streamed from other nodes, Cassandra triggers compactions
+which combine multiple SSTables into one.  Once the new SSTable has been written, the old SSTables can be removed.</p>
+<p>Each SSTable is comprised of multiple components stored in separate files:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">Data.db</span></code></dt>
+<dd>The actual data, i.e. the contents of rows.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Index.db</span></code></dt>
+<dd>An index from partition keys to positions in the <code class="docutils literal notranslate"><span class="pre">Data.db</span></code> file.  For wide partitions, this may also include an
+index to rows within a partition.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Summary.db</span></code></dt>
+<dd>A sampling of (by default) every 128th entry in the <code class="docutils literal notranslate"><span class="pre">Index.db</span></code> file.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Filter.db</span></code></dt>
+<dd>A Bloom Filter of the partition keys in the SSTable.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">CompressionInfo.db</span></code></dt>
+<dd>Metadata about the offsets and lengths of compression chunks in the <code class="docutils literal notranslate"><span class="pre">Data.db</span></code> file.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Statistics.db</span></code></dt>
+<dd>Stores metadata about the SSTable, including information about timestamps, tombstones, clustering keys, compaction,
+repair, compression, TTLs, and more.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Digest.crc32</span></code></dt>
+<dd>A CRC-32 digest of the <code class="docutils literal notranslate"><span class="pre">Data.db</span></code> file.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">TOC.txt</span></code></dt>
+<dd>A plain text list of the component files for the SSTable.</dd>
+</dl>
+<p>Within the <code class="docutils literal notranslate"><span class="pre">Data.db</span></code> file, rows are organized by partition.  These partitions are sorted in token order (i.e. by a
+hash of the partition key when the default partitioner, <code class="docutils literal notranslate"><span class="pre">Murmur3Partition</span></code>, is used).  Within a partition, rows are
+stored in the order of their clustering keys.</p>
+<p>SSTables can be optionally compressed using block-based compression.</p>
+</div>
+<div class="section" id="sstable-versions">
+<h2>SSTable Versions<a class="headerlink" href="#sstable-versions" title="Permalink to this headline">¶</a></h2>
+<p>This section was created using the following
+<a class="reference external" href="https://gist.github.com/shyamsalimkumar/49a61e5bc6f403d20c55">gist</a>
+which utilized this original
+<a class="reference external" href="http://www.bajb.net/2013/03/cassandra-sstable-format-version-numbers/">source</a>.</p>
+<p>The version numbers, to date are:</p>
+<div class="section" id="version-0">
+<h3>Version 0<a class="headerlink" href="#version-0" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>b (0.7.0): added version to sstable filenames</li>
+<li>c (0.7.0): bloom filter component computes hashes over raw key bytes instead of strings</li>
+<li>d (0.7.0): row size in data component becomes a long instead of int</li>
+<li>e (0.7.0): stores undecorated keys in data and index components</li>
+<li>f (0.7.0): switched bloom filter implementations in data component</li>
+<li>g (0.8): tracks flushed-at context in metadata component</li>
+</ul>
+</div>
+<div class="section" id="version-1">
+<h3>Version 1<a class="headerlink" href="#version-1" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>h (1.0): tracks max client timestamp in metadata component</li>
+<li>hb (1.0.3): records compression ration in metadata component</li>
+<li>hc (1.0.4): records partitioner in metadata component</li>
+<li>hd (1.0.10): includes row tombstones in maxtimestamp</li>
+<li>he (1.1.3): includes ancestors generation in metadata component</li>
+<li>hf (1.1.6): marker that replay position corresponds to 1.1.5+ millis-based id (see CASSANDRA-4782)</li>
+<li>ia (1.2.0):<ul>
+<li>column indexes are promoted to the index file</li>
+<li>records estimated histogram of deletion times in tombstones</li>
+<li>bloom filter (keys and columns) upgraded to Murmur3</li>
+</ul>
+</li>
+<li>ib (1.2.1): tracks min client timestamp in metadata component</li>
+<li>ic (1.2.5): omits per-row bloom filter of column names</li>
+</ul>
+</div>
+<div class="section" id="version-2">
+<h3>Version 2<a class="headerlink" href="#version-2" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>ja (2.0.0):<ul>
+<li>super columns are serialized as composites (note that there is no real format change, this is mostly a marker to know if we should expect super columns or not. We do need a major version bump however, because we should not allow streaming of super columns into this new format)</li>
+<li>tracks max local deletiontime in sstable metadata</li>
+<li>records bloom_filter_fp_chance in metadata component</li>
+<li>remove data size and column count from data file (CASSANDRA-4180)</li>
+<li>tracks max/min column values (according to comparator)</li>
+</ul>
+</li>
+<li>jb (2.0.1):<ul>
+<li>switch from crc32 to adler32 for compression checksums</li>
+<li>checksum the compressed data</li>
+</ul>
+</li>
+<li>ka (2.1.0):<ul>
+<li>new Statistics.db file format</li>
+<li>index summaries can be downsampled and the sampling level is persisted</li>
+<li>switch uncompressed checksums to adler32</li>
+<li>tracks presense of legacy (local and remote) counter shards</li>
+</ul>
+</li>
+<li>la (2.2.0): new file name format</li>
+<li>lb (2.2.7): commit log lower bound included</li>
+</ul>
+</div>
+<div class="section" id="version-3">
+<h3>Version 3<a class="headerlink" href="#version-3" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>ma (3.0.0):<ul>
+<li>swap bf hash order</li>
+<li>store rows natively</li>
+</ul>
+</li>
+<li>mb (3.0.7, 3.7): commit log lower bound included</li>
+<li>mc (3.0.8, 3.9): commit log intervals included</li>
+</ul>
+</div>
+<div class="section" id="example-code">
+<h3>Example Code<a class="headerlink" href="#example-code" title="Permalink to this headline">¶</a></h3>
+<p>The following example is useful for finding all sstables that do not match the “ib” SSTable version</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>find /var/lib/cassandra/data/ -type f <span class="p">|</span> grep -v -- -ib- <span class="p">|</span> grep -v <span class="s2">&quot;/snapshots&quot;</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="guarantees.html" class="btn btn-default pull-right " role="button" title="Guarantees" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="dynamo.html" class="btn btn-default" role="button" title="Dynamo" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/bugs.html b/src/doc/4.0-rc1/bugs.html
new file mode 100644
index 0000000..9cc5a20
--- /dev/null
+++ b/src/doc/4.0-rc1/bugs.html
@@ -0,0 +1,110 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Reporting Bugs"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="index.html"/>
+      <link rel="next" title="Contact us" href="contactus.html"/>
+      <link rel="prev" title="Third-Party Plugins" href="plugins/index.html"/>
+'
+doc-search-path: "search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="reporting-bugs">
+<h1>Reporting Bugs<a class="headerlink" href="#reporting-bugs" title="Permalink to this headline">¶</a></h1>
+<p>If you encounter a problem with Cassandra, the first places to ask for help are the <a class="reference internal" href="contactus.html#mailing-lists"><span class="std std-ref">user mailing list</span></a> and the <code class="docutils literal notranslate"><span class="pre">cassandra</span></code> <a class="reference internal" href="contactus.html#slack"><span class="std std-ref">Slack room</span></a>.</p>
+<p>If, after having asked for help, you suspect that you have found a bug in Cassandra, you should report it by opening a
+ticket through the <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA">Apache Cassandra JIRA</a>. Please provide as much
+details as you can on your problem, and don’t forget to indicate which version of Cassandra you are running and on which
+environment.</p>
+<p>Further details on how to contribute can be found at our <a class="reference internal" href="development/index.html"><span class="doc">Contributing to Cassandra</span></a> section. Please note that the source of
+this documentation is part of the Cassandra git repository and hence contributions to the documentation should follow the
+same path.</p>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="contactus.html" class="btn btn-default pull-right " role="button" title="Contact us" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="plugins/index.html" class="btn btn-default" role="button" title="Third-Party Plugins" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/configuration/cass_cl_archive_file.html b/src/doc/4.0-rc1/configuration/cass_cl_archive_file.html
new file mode 100644
index 0000000..b63f97f
--- /dev/null
+++ b/src/doc/4.0-rc1/configuration/cass_cl_archive_file.html
@@ -0,0 +1,149 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Configuring Cassandra"
+
+doc-title: "commitlog-archiving.properties file"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Configuring Cassandra" href="index.html"/>
+      <link rel="next" title="logback.xml file" href="cass_logback_xml_file.html"/>
+      <link rel="prev" title="cassandra-topologies.properties file" href="cass_topo_file.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Configuring Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="cass_yaml_file.html">cassandra.yaml file configuration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_rackdc_file.html">cassandra-rackdc.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_env_sh_file.html">cassandra-env.sh file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_topo_file.html">cassandra-topologies.properties file</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">commitlog-archiving.properties file</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#options">Options</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="cass_logback_xml_file.html">logback.xml file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_jvm_options_file.html">jvm-* files</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="commitlog-archiving-properties-file">
+<span id="cassandra-cl-archive"></span><h1>commitlog-archiving.properties file<a class="headerlink" href="#commitlog-archiving-properties-file" title="Permalink to this headline">¶</a></h1>
+<p>The <code class="docutils literal notranslate"><span class="pre">commitlog-archiving.properties</span></code> configuration file can optionally set commands that are executed when archiving or restoring a commitlog segment.</p>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="archive-command-command">
+<h3><code class="docutils literal notranslate"><span class="pre">archive_command=&lt;command&gt;</span></code><a class="headerlink" href="#archive-command-command" title="Permalink to this headline">¶</a></h3>
+<p>One command can be inserted with %path and %name arguments. %path is the fully qualified path of the commitlog segment to archive. %name is the filename of the commitlog. STDOUT, STDIN, or multiple commands cannot be executed. If multiple commands are required, add a pointer to a script in this option.</p>
+<p><strong>Example:</strong> archive_command=/bin/ln %path /backup/%name</p>
+<p><strong>Default value:</strong> blank</p>
+</div>
+<div class="section" id="restore-command-command">
+<h3><code class="docutils literal notranslate"><span class="pre">restore_command=&lt;command&gt;</span></code><a class="headerlink" href="#restore-command-command" title="Permalink to this headline">¶</a></h3>
+<p>One command can be inserted with %from and %to arguments. %from is the fully qualified path to an archived commitlog segment using the specified restore directories. %to defines the directory to the live commitlog location.</p>
+<p><strong>Example:</strong> restore_command=/bin/cp -f %from %to</p>
+<p><strong>Default value:</strong> blank</p>
+</div>
+<div class="section" id="restore-directories-directory">
+<h3><code class="docutils literal notranslate"><span class="pre">restore_directories=&lt;directory&gt;</span></code><a class="headerlink" href="#restore-directories-directory" title="Permalink to this headline">¶</a></h3>
+<p>Defines the directory to scan the recovery files into.</p>
+<p><strong>Default value:</strong> blank</p>
+</div>
+<div class="section" id="restore-point-in-time-timestamp">
+<h3><code class="docutils literal notranslate"><span class="pre">restore_point_in_time=&lt;timestamp&gt;</span></code><a class="headerlink" href="#restore-point-in-time-timestamp" title="Permalink to this headline">¶</a></h3>
+<p>Restore mutations created up to and including this timestamp in GMT in the format <code class="docutils literal notranslate"><span class="pre">yyyy:MM:dd</span> <span class="pre">HH:mm:ss</span></code>.  Recovery will continue through the segment when the first client-supplied timestamp greater than this time is encountered, but only mutations less than or equal to this timestamp will be applied.</p>
+<p><strong>Example:</strong> 2020:04:31 20:43:12</p>
+<p><strong>Default value:</strong> blank</p>
+</div>
+<div class="section" id="precision-timestamp-precision">
+<h3><code class="docutils literal notranslate"><span class="pre">precision=&lt;timestamp_precision&gt;</span></code><a class="headerlink" href="#precision-timestamp-precision" title="Permalink to this headline">¶</a></h3>
+<p>Precision of the timestamp used in the inserts. Choice is generally MILLISECONDS or MICROSECONDS</p>
+<p><strong>Default value:</strong> MICROSECONDS</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="cass_logback_xml_file.html" class="btn btn-default pull-right " role="button" title="logback.xml file" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="cass_topo_file.html" class="btn btn-default" role="button" title="cassandra-topologies.properties file" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/configuration/cass_env_sh_file.html b/src/doc/4.0-rc1/configuration/cass_env_sh_file.html
new file mode 100644
index 0000000..5c6e763
--- /dev/null
+++ b/src/doc/4.0-rc1/configuration/cass_env_sh_file.html
@@ -0,0 +1,246 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Configuring Cassandra"
+
+doc-title: "cassandra-env.sh file"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Configuring Cassandra" href="index.html"/>
+      <link rel="next" title="cassandra-topologies.properties file" href="cass_topo_file.html"/>
+      <link rel="prev" title="cassandra-rackdc.properties file" href="cass_rackdc_file.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Configuring Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="cass_yaml_file.html">cassandra.yaml file configuration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_rackdc_file.html">cassandra-rackdc.properties file</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">cassandra-env.sh file</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-auto-bootstrap-false"><code class="docutils literal notranslate"><span class="pre">cassandra.auto_bootstrap=false</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-available-processors-number-of-processors"><code class="docutils literal notranslate"><span class="pre">cassandra.available_processors=&lt;number_of_processors&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-config-directory"><code class="docutils literal notranslate"><span class="pre">cassandra.config=&lt;directory&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-ignore-dynamic-snitch-severity-true-false"><code class="docutils literal notranslate"><span class="pre">cassandra.ignore_dynamic_snitch_severity=true|false</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-initial-token-token"><code class="docutils literal notranslate"><span class="pre">cassandra.initial_token=&lt;token&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-join-ring-true-false"><code class="docutils literal notranslate"><span class="pre">cassandra.join_ring=true|false</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-load-ring-state-true-false"><code class="docutils literal notranslate"><span class="pre">cassandra.load_ring_state=true|false</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-metricsreporterconfigfile-filename"><code class="docutils literal notranslate"><span class="pre">cassandra.metricsReporterConfigFile=&lt;filename&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-partitioner-partitioner"><code class="docutils literal notranslate"><span class="pre">cassandra.partitioner=&lt;partitioner&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-prepared-statements-cache-size-in-bytes-cache-size"><code class="docutils literal notranslate"><span class="pre">cassandra.prepared_statements_cache_size_in_bytes=&lt;cache_size&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-replace-address-listen-address-of-dead-node-broadcast-address-of-dead-node"><code class="docutils literal notranslate"><span class="pre">cassandra.replace_address=&lt;listen_address</span> <span class="pre">of</span> <span class="pre">dead</span> <span class="pre">node&gt;|&lt;broadcast_address</span> <span class="pre">of</span> <span class="pre">dead</span> <span class="pre">node&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-replaylist-table"><code class="docutils literal notranslate"><span class="pre">cassandra.replayList=&lt;table&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-ring-delay-ms-number-of-ms"><code class="docutils literal notranslate"><span class="pre">cassandra.ring_delay_ms=&lt;number_of_ms&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-native-transport-port-port"><code class="docutils literal notranslate"><span class="pre">cassandra.native_transport_port=&lt;port&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-rpc-port-port"><code class="docutils literal notranslate"><span class="pre">cassandra.rpc_port=&lt;port&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-storage-port-port"><code class="docutils literal notranslate"><span class="pre">cassandra.storage_port=&lt;port&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-ssl-storage-port-port"><code class="docutils literal notranslate"><span class="pre">cassandra.ssl_storage_port=&lt;port&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-start-native-transport-true-false"><code class="docutils literal notranslate"><span class="pre">cassandra.start_native_transport=true|false</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-start-rpc-true-false"><code class="docutils literal notranslate"><span class="pre">cassandra.start_rpc=true|false</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-triggers-dir-directory"><code class="docutils literal notranslate"><span class="pre">cassandra.triggers_dir=&lt;directory&gt;</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cassandra-write-survey-true"><code class="docutils literal notranslate"><span class="pre">cassandra.write_survey=true</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#consistent-rangemovement-true-false"><code class="docutils literal notranslate"><span class="pre">consistent.rangemovement=true|false</span></code></a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="cass_topo_file.html">cassandra-topologies.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_cl_archive_file.html">commitlog-archiving.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_logback_xml_file.html">logback.xml file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_jvm_options_file.html">jvm-* files</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cassandra-env-sh-file">
+<span id="cassandra-envsh"></span><h1>cassandra-env.sh file<a class="headerlink" href="#cassandra-env-sh-file" title="Permalink to this headline">¶</a></h1>
+<p>The <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> bash script file can be used to pass additional options to the Java virtual machine (JVM), such as maximum and minimum heap size, rather than setting them in the environment. If the JVM settings are static and do not need to be computed from the node characteristics, the <a class="reference internal" href="cass_jvm_options_file.html#cassandra-jvm-options"><span class="std std-ref">jvm-* files</span></a> files should be used instead. For example, commonly computed values are the heap sizes, using the system values.</p>
+<p>For example, add <code class="docutils literal notranslate"><span class="pre">JVM_OPTS=&quot;$JVM_OPTS</span> <span class="pre">-Dcassandra.load_ring_state=false&quot;</span></code> to the <code class="docutils literal notranslate"><span class="pre">cassandra_env.sh</span></code> file
+and run the command-line <code class="docutils literal notranslate"><span class="pre">cassandra</span></code> to start. The option is set from the <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> file, and is equivalent to starting Cassandra with the command-line option <code class="docutils literal notranslate"><span class="pre">cassandra</span> <span class="pre">-Dcassandra.load_ring_state=false</span></code>.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">-D</span></code> option specifies the start-up parameters in both the command line and <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> file. The following options are available:</p>
+<div class="section" id="cassandra-auto-bootstrap-false">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.auto_bootstrap=false</span></code><a class="headerlink" href="#cassandra-auto-bootstrap-false" title="Permalink to this headline">¶</a></h2>
+<p>Facilitates setting auto_bootstrap to false on initial set-up of the cluster. The next time you start the cluster, you do not need to change the <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> file on each node to revert to true, the default value.</p>
+</div>
+<div class="section" id="cassandra-available-processors-number-of-processors">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.available_processors=&lt;number_of_processors&gt;</span></code><a class="headerlink" href="#cassandra-available-processors-number-of-processors" title="Permalink to this headline">¶</a></h2>
+<p>In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors.</p>
+</div>
+<div class="section" id="cassandra-config-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.config=&lt;directory&gt;</span></code><a class="headerlink" href="#cassandra-config-directory" title="Permalink to this headline">¶</a></h2>
+<p>The directory location of the <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span> <span class="pre">file</span></code>. The default location depends on the type of installation.</p>
+</div>
+<div class="section" id="cassandra-ignore-dynamic-snitch-severity-true-false">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.ignore_dynamic_snitch_severity=true|false</span></code><a class="headerlink" href="#cassandra-ignore-dynamic-snitch-severity-true-false" title="Permalink to this headline">¶</a></h2>
+<p>Setting this property to true causes the dynamic snitch to ignore the severity indicator from gossip when scoring nodes.  Explore failure detection and recovery and dynamic snitching for more information.</p>
+<p><strong>Default:</strong> false</p>
+</div>
+<div class="section" id="cassandra-initial-token-token">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.initial_token=&lt;token&gt;</span></code><a class="headerlink" href="#cassandra-initial-token-token" title="Permalink to this headline">¶</a></h2>
+<p>Use when virtual nodes (vnodes) are not used. Sets the initial partitioner token for a node the first time the node is started.
+Note: Vnodes are highly recommended as they automatically select tokens.</p>
+<p><strong>Default:</strong> disabled</p>
+</div>
+<div class="section" id="cassandra-join-ring-true-false">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.join_ring=true|false</span></code><a class="headerlink" href="#cassandra-join-ring-true-false" title="Permalink to this headline">¶</a></h2>
+<p>Set to false to start Cassandra on a node but not have the node join the cluster.
+You can use <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">join</span></code> and a JMX call to join the ring afterwards.</p>
+<p><strong>Default:</strong> true</p>
+</div>
+<div class="section" id="cassandra-load-ring-state-true-false">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.load_ring_state=true|false</span></code><a class="headerlink" href="#cassandra-load-ring-state-true-false" title="Permalink to this headline">¶</a></h2>
+<p>Set to false to clear all gossip state for the node on restart.</p>
+<p><strong>Default:</strong> true</p>
+</div>
+<div class="section" id="cassandra-metricsreporterconfigfile-filename">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.metricsReporterConfigFile=&lt;filename&gt;</span></code><a class="headerlink" href="#cassandra-metricsreporterconfigfile-filename" title="Permalink to this headline">¶</a></h2>
+<p>Enable pluggable metrics reporter. Explore pluggable metrics reporting for more information.</p>
+</div>
+<div class="section" id="cassandra-partitioner-partitioner">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.partitioner=&lt;partitioner&gt;</span></code><a class="headerlink" href="#cassandra-partitioner-partitioner" title="Permalink to this headline">¶</a></h2>
+<p>Set the partitioner.</p>
+<p><strong>Default:</strong> org.apache.cassandra.dht.Murmur3Partitioner</p>
+</div>
+<div class="section" id="cassandra-prepared-statements-cache-size-in-bytes-cache-size">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.prepared_statements_cache_size_in_bytes=&lt;cache_size&gt;</span></code><a class="headerlink" href="#cassandra-prepared-statements-cache-size-in-bytes-cache-size" title="Permalink to this headline">¶</a></h2>
+<p>Set the cache size for prepared statements.</p>
+</div>
+<div class="section" id="cassandra-replace-address-listen-address-of-dead-node-broadcast-address-of-dead-node">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.replace_address=&lt;listen_address</span> <span class="pre">of</span> <span class="pre">dead</span> <span class="pre">node&gt;|&lt;broadcast_address</span> <span class="pre">of</span> <span class="pre">dead</span> <span class="pre">node&gt;</span></code><a class="headerlink" href="#cassandra-replace-address-listen-address-of-dead-node-broadcast-address-of-dead-node" title="Permalink to this headline">¶</a></h2>
+<p>To replace a node that has died, restart a new node in its place specifying the <code class="docutils literal notranslate"><span class="pre">listen_address</span></code> or <code class="docutils literal notranslate"><span class="pre">broadcast_address</span></code> that the new node is assuming. The new node must not have any data in its data directory, the same state as before bootstrapping.
+Note: The <code class="docutils literal notranslate"><span class="pre">broadcast_address</span></code> defaults to the <code class="docutils literal notranslate"><span class="pre">listen_address</span></code> except when using the <code class="docutils literal notranslate"><span class="pre">Ec2MultiRegionSnitch</span></code>.</p>
+</div>
+<div class="section" id="cassandra-replaylist-table">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.replayList=&lt;table&gt;</span></code><a class="headerlink" href="#cassandra-replaylist-table" title="Permalink to this headline">¶</a></h2>
+<p>Allow restoring specific tables from an archived commit log.</p>
+</div>
+<div class="section" id="cassandra-ring-delay-ms-number-of-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.ring_delay_ms=&lt;number_of_ms&gt;</span></code><a class="headerlink" href="#cassandra-ring-delay-ms-number-of-ms" title="Permalink to this headline">¶</a></h2>
+<p>Defines the amount of time a node waits to hear from other nodes before formally joining the ring.</p>
+<p><strong>Default:</strong> 1000ms</p>
+</div>
+<div class="section" id="cassandra-native-transport-port-port">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.native_transport_port=&lt;port&gt;</span></code><a class="headerlink" href="#cassandra-native-transport-port-port" title="Permalink to this headline">¶</a></h2>
+<p>Set the port on which the CQL native transport listens for clients.</p>
+<p><strong>Default:</strong> 9042</p>
+</div>
+<div class="section" id="cassandra-rpc-port-port">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.rpc_port=&lt;port&gt;</span></code><a class="headerlink" href="#cassandra-rpc-port-port" title="Permalink to this headline">¶</a></h2>
+<p>Set the port for the Thrift RPC service, which is used for client connections.</p>
+<p><strong>Default:</strong> 9160</p>
+</div>
+<div class="section" id="cassandra-storage-port-port">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.storage_port=&lt;port&gt;</span></code><a class="headerlink" href="#cassandra-storage-port-port" title="Permalink to this headline">¶</a></h2>
+<p>Set the port for inter-node communication.</p>
+<p><strong>Default:</strong> 7000</p>
+</div>
+<div class="section" id="cassandra-ssl-storage-port-port">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.ssl_storage_port=&lt;port&gt;</span></code><a class="headerlink" href="#cassandra-ssl-storage-port-port" title="Permalink to this headline">¶</a></h2>
+<p>Set the SSL port for encrypted communication.</p>
+<p><strong>Default:</strong> 7001</p>
+</div>
+<div class="section" id="cassandra-start-native-transport-true-false">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.start_native_transport=true|false</span></code><a class="headerlink" href="#cassandra-start-native-transport-true-false" title="Permalink to this headline">¶</a></h2>
+<p>Enable or disable the native transport server. See <code class="docutils literal notranslate"><span class="pre">start_native_transport</span></code> in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>.</p>
+<p><strong>Default:</strong> true</p>
+</div>
+<div class="section" id="cassandra-start-rpc-true-false">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.start_rpc=true|false</span></code><a class="headerlink" href="#cassandra-start-rpc-true-false" title="Permalink to this headline">¶</a></h2>
+<p>Enable or disable the Thrift RPC server.</p>
+<p><strong>Default:</strong> true</p>
+</div>
+<div class="section" id="cassandra-triggers-dir-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.triggers_dir=&lt;directory&gt;</span></code><a class="headerlink" href="#cassandra-triggers-dir-directory" title="Permalink to this headline">¶</a></h2>
+<p>Set the default location for the trigger JARs.</p>
+<p><strong>Default:</strong> conf/triggers</p>
+</div>
+<div class="section" id="cassandra-write-survey-true">
+<h2><code class="docutils literal notranslate"><span class="pre">cassandra.write_survey=true</span></code><a class="headerlink" href="#cassandra-write-survey-true" title="Permalink to this headline">¶</a></h2>
+<p>For testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload.</p>
+</div>
+<div class="section" id="consistent-rangemovement-true-false">
+<h2><code class="docutils literal notranslate"><span class="pre">consistent.rangemovement=true|false</span></code><a class="headerlink" href="#consistent-rangemovement-true-false" title="Permalink to this headline">¶</a></h2>
+<p>Set to true makes Cassandra perform bootstrap safely without violating consistency. False disables this.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="cass_topo_file.html" class="btn btn-default pull-right " role="button" title="cassandra-topologies.properties file" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="cass_rackdc_file.html" class="btn btn-default" role="button" title="cassandra-rackdc.properties file" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/configuration/cass_jvm_options_file.html b/src/doc/4.0-rc1/configuration/cass_jvm_options_file.html
new file mode 100644
index 0000000..0a059f1
--- /dev/null
+++ b/src/doc/4.0-rc1/configuration/cass_jvm_options_file.html
@@ -0,0 +1,120 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Configuring Cassandra"
+
+doc-title: "jvm-* files"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Configuring Cassandra" href="index.html"/>
+      <link rel="next" title="Operating Cassandra" href="../operating/index.html"/>
+      <link rel="prev" title="logback.xml file" href="cass_logback_xml_file.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Configuring Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="cass_yaml_file.html">cassandra.yaml file configuration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_rackdc_file.html">cassandra-rackdc.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_env_sh_file.html">cassandra-env.sh file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_topo_file.html">cassandra-topologies.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_cl_archive_file.html">commitlog-archiving.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_logback_xml_file.html">logback.xml file</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">jvm-* files</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="jvm-files">
+<span id="cassandra-jvm-options"></span><h1>jvm-* files<a class="headerlink" href="#jvm-files" title="Permalink to this headline">¶</a></h1>
+<p>Several files for JVM configuration are included in Cassandra. The <code class="docutils literal notranslate"><span class="pre">jvm-server.options</span></code> file, and corresponding files <code class="docutils literal notranslate"><span class="pre">jvm8-server.options</span></code> and <code class="docutils literal notranslate"><span class="pre">jvm11-server.options</span></code> are the main file for settings that affect the operation of the Cassandra JVM on cluster nodes. The file includes startup parameters, general JVM settings such as garbage collection, and heap settings. The <code class="docutils literal notranslate"><span class="pre">jvm-clients.options</span></code> and corresponding <code class="docutils literal notranslate"><span class="pre">jvm8-clients.options</span></code> and <code class="docutils literal notranslate"><span class="pre">jvm11-clients.options</span></code> files can be used to configure JVM settings for clients like <code class="docutils literal notranslate"><span class="pre">nodetool</span></code> and the <code class="docutils literal notranslate"><span class="pre">sstable</span></code> tools.</p>
+<p>See each file for examples of settings.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">The <code class="docutils literal notranslate"><span class="pre">jvm-*</span></code> files replace the <a class="reference internal" href="cass_env_sh_file.html#cassandra-envsh"><span class="std std-ref">cassandra-env.sh file</span></a> file used in Cassandra versions prior to Cassandra 3.0. The <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> bash script file is still useful if JVM settings must be dynamically calculated based on system settings. The <code class="docutils literal notranslate"><span class="pre">jvm-*</span></code> files only store static JVM settings.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../operating/index.html" class="btn btn-default pull-right " role="button" title="Operating Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="cass_logback_xml_file.html" class="btn btn-default" role="button" title="logback.xml file" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/configuration/cass_logback_xml_file.html b/src/doc/4.0-rc1/configuration/cass_logback_xml_file.html
new file mode 100644
index 0000000..7f95556
--- /dev/null
+++ b/src/doc/4.0-rc1/configuration/cass_logback_xml_file.html
@@ -0,0 +1,248 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Configuring Cassandra"
+
+doc-title: "logback.xml file"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Configuring Cassandra" href="index.html"/>
+      <link rel="next" title="jvm-* files" href="cass_jvm_options_file.html"/>
+      <link rel="prev" title="commitlog-archiving.properties file" href="cass_cl_archive_file.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Configuring Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="cass_yaml_file.html">cassandra.yaml file configuration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_rackdc_file.html">cassandra-rackdc.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_env_sh_file.html">cassandra-env.sh file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_topo_file.html">cassandra-topologies.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_cl_archive_file.html">commitlog-archiving.properties file</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">logback.xml file</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#options">Options</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="cass_jvm_options_file.html">jvm-* files</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="logback-xml-file">
+<span id="cassandra-logback-xml"></span><h1>logback.xml file<a class="headerlink" href="#logback-xml-file" title="Permalink to this headline">¶</a></h1>
+<p>The <code class="docutils literal notranslate"><span class="pre">logback.xml</span></code> configuration file can optionally set logging levels for the logs written to <code class="docutils literal notranslate"><span class="pre">system.log</span></code> and <code class="docutils literal notranslate"><span class="pre">debug.log</span></code>. The logging levels can also be set using <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">setlogginglevels</span></code>.</p>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="appender-name-appender-choice-appender">
+<h3><code class="docutils literal notranslate"><span class="pre">appender</span> <span class="pre">name=&quot;&lt;appender_choice&gt;&quot;...&lt;/appender&gt;</span></code><a class="headerlink" href="#appender-name-appender-choice-appender" title="Permalink to this headline">¶</a></h3>
+<p>Specify log type and settings. Possible appender names are: <code class="docutils literal notranslate"><span class="pre">SYSTEMLOG</span></code>, <code class="docutils literal notranslate"><span class="pre">DEBUGLOG</span></code>, <code class="docutils literal notranslate"><span class="pre">ASYNCDEBUGLOG</span></code>, and <code class="docutils literal notranslate"><span class="pre">STDOUT</span></code>. <code class="docutils literal notranslate"><span class="pre">SYSTEMLOG</span></code> ensures that WARN and ERROR message are written synchronously to the specified file. <code class="docutils literal notranslate"><span class="pre">DEBUGLOG</span></code> and  <code class="docutils literal notranslate"><span class="pre">ASYNCDEBUGLOG</span></code> ensure that DEBUG messages are written either synchronously or asynchronously, respectively, to the specified file. <code class="docutils literal notranslate"><span class="pre">STDOUT</span></code> writes all messages to the console in a human-readable format.</p>
+<p><strong>Example:</strong> &lt;appender name=”SYSTEMLOG” class=”ch.qos.logback.core.rolling.RollingFileAppender”&gt;</p>
+</div>
+<div class="section" id="file-filename-file">
+<h3><code class="docutils literal notranslate"><span class="pre">&lt;file&gt;</span> <span class="pre">&lt;filename&gt;</span> <span class="pre">&lt;/file&gt;</span></code><a class="headerlink" href="#file-filename-file" title="Permalink to this headline">¶</a></h3>
+<p>Specify the filename for a log.</p>
+<p><strong>Example:</strong> &lt;file&gt;${cassandra.logdir}/system.log&lt;/file&gt;</p>
+</div>
+<div class="section" id="level-log-level-level">
+<h3><code class="docutils literal notranslate"><span class="pre">&lt;level&gt;</span> <span class="pre">&lt;log_level&gt;</span> <span class="pre">&lt;/level&gt;</span></code><a class="headerlink" href="#level-log-level-level" title="Permalink to this headline">¶</a></h3>
+<p>Specify the level for a log. Part of the filter. Levels are: <code class="docutils literal notranslate"><span class="pre">ALL</span></code>, <code class="docutils literal notranslate"><span class="pre">TRACE</span></code>, <code class="docutils literal notranslate"><span class="pre">DEBUG</span></code>, <code class="docutils literal notranslate"><span class="pre">INFO</span></code>, <code class="docutils literal notranslate"><span class="pre">WARN</span></code>, <code class="docutils literal notranslate"><span class="pre">ERROR</span></code>, <code class="docutils literal notranslate"><span class="pre">OFF</span></code>. <code class="docutils literal notranslate"><span class="pre">TRACE</span></code> creates the most verbose log, <code class="docutils literal notranslate"><span class="pre">ERROR</span></code> the least.</p>
+<p>Note: Increasing logging levels can generate heavy logging output on a moderately trafficked cluster.
+You can use the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">getlogginglevels</span></code> command to see the current logging configuration.</p>
+<p><strong>Default:</strong> INFO</p>
+<p><strong>Example:</strong> &lt;level&gt;INFO&lt;/level&gt;</p>
+</div>
+<div class="section" id="rollingpolicy-class-rolling-policy-choice-filenamepattern-pattern-info-filenamepattern-rollingpolicy">
+<h3><code class="docutils literal notranslate"><span class="pre">&lt;rollingPolicy</span> <span class="pre">class=&quot;&lt;rolling_policy_choice&gt;&quot;</span> <span class="pre">&lt;fileNamePattern&gt;&lt;pattern_info&gt;&lt;/fileNamePattern&gt;</span> <span class="pre">...</span> <span class="pre">&lt;/rollingPolicy&gt;</span></code><a class="headerlink" href="#rollingpolicy-class-rolling-policy-choice-filenamepattern-pattern-info-filenamepattern-rollingpolicy" title="Permalink to this headline">¶</a></h3>
+<p>Specify the policy for rolling logs over to an archive.</p>
+<p><strong>Example:</strong> &lt;rollingPolicy class=”ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy”&gt;</p>
+</div>
+<div class="section" id="filenamepattern-pattern-info-filenamepattern">
+<h3><code class="docutils literal notranslate"><span class="pre">&lt;fileNamePattern&gt;</span> <span class="pre">&lt;pattern_info&gt;</span> <span class="pre">&lt;/fileNamePattern&gt;</span></code><a class="headerlink" href="#filenamepattern-pattern-info-filenamepattern" title="Permalink to this headline">¶</a></h3>
+<p>Specify the pattern information for rolling over the log to archive. Part of the rolling policy.</p>
+<p><strong>Example:</strong> &lt;fileNamePattern&gt;${cassandra.logdir}/system.log.%d{yyyy-MM-dd}.%i.zip&lt;/fileNamePattern&gt;</p>
+</div>
+<div class="section" id="maxfilesize-size-maxfilesize">
+<h3><code class="docutils literal notranslate"><span class="pre">&lt;maxFileSize&gt;</span> <span class="pre">&lt;size&gt;</span> <span class="pre">&lt;/maxFileSize&gt;</span></code><a class="headerlink" href="#maxfilesize-size-maxfilesize" title="Permalink to this headline">¶</a></h3>
+<p>Specify the maximum file size to trigger rolling a log. Part of the rolling policy.</p>
+<p><strong>Example:</strong> &lt;maxFileSize&gt;50MB&lt;/maxFileSize&gt;</p>
+</div>
+<div class="section" id="maxhistory-number-of-days-maxhistory">
+<h3><code class="docutils literal notranslate"><span class="pre">&lt;maxHistory&gt;</span> <span class="pre">&lt;number_of_days&gt;</span> <span class="pre">&lt;/maxHistory&gt;</span></code><a class="headerlink" href="#maxhistory-number-of-days-maxhistory" title="Permalink to this headline">¶</a></h3>
+<p>Specify the maximum history in days to trigger rolling a log. Part of the rolling policy.</p>
+<p><strong>Example:</strong> &lt;maxHistory&gt;7&lt;/maxHistory&gt;</p>
+</div>
+<div class="section" id="encoder-pattern-pattern-encoder">
+<h3><code class="docutils literal notranslate"><span class="pre">&lt;encoder&gt;</span> <span class="pre">&lt;pattern&gt;...&lt;/pattern&gt;</span> <span class="pre">&lt;/encoder&gt;</span></code><a class="headerlink" href="#encoder-pattern-pattern-encoder" title="Permalink to this headline">¶</a></h3>
+<p>Specify the format of the message. Part of the rolling policy.</p>
+<p><strong>Example:</strong> &lt;maxHistory&gt;7&lt;/maxHistory&gt;
+<strong>Example:</strong> &lt;encoder&gt; &lt;pattern&gt;%-5level [%thread] %date{ISO8601} %F:%L - %msg%n&lt;/pattern&gt; &lt;/encoder&gt;</p>
+</div>
+<div class="section" id="contents-of-default-logback-xml">
+<h3>Contents of default <code class="docutils literal notranslate"><span class="pre">logback.xml</span></code><a class="headerlink" href="#contents-of-default-logback-xml" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-XML notranslate"><div class="highlight"><pre><span></span>  <span class="nt">&lt;configuration</span> <span class="na">scan=</span><span class="s">&quot;true&quot;</span> <span class="na">scanPeriod=</span><span class="s">&quot;60 seconds&quot;</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;jmxConfigurator</span> <span class="nt">/&gt;</span>
+
+    <span class="c">&lt;!-- No shutdown hook; we run it ourselves in StorageService after shutdown --&gt;</span>
+
+    <span class="c">&lt;!-- SYSTEMLOG rolling file appender to system.log (INFO level) --&gt;</span>
+
+    <span class="nt">&lt;appender</span> <span class="na">name=</span><span class="s">&quot;SYSTEMLOG&quot;</span> <span class="na">class=</span><span class="s">&quot;ch.qos.logback.core.rolling.RollingFileAppender&quot;</span><span class="nt">&gt;</span>
+      <span class="nt">&lt;filter</span> <span class="na">class=</span><span class="s">&quot;ch.qos.logback.classic.filter.ThresholdFilter&quot;</span><span class="nt">&gt;</span>
+<span class="nt">&lt;level&gt;</span>INFO<span class="nt">&lt;/level&gt;</span>
+      <span class="nt">&lt;/filter&gt;</span>
+      <span class="nt">&lt;file&gt;</span>${cassandra.logdir}/system.log<span class="nt">&lt;/file&gt;</span>
+      <span class="nt">&lt;rollingPolicy</span> <span class="na">class=</span><span class="s">&quot;ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy&quot;</span><span class="nt">&gt;</span>
+        <span class="c">&lt;!-- rollover daily --&gt;</span>
+        <span class="nt">&lt;fileNamePattern&gt;</span>${cassandra.logdir}/system.log.%d{yyyy-MM-dd}.%i.zip<span class="nt">&lt;/fileNamePattern&gt;</span>
+        <span class="c">&lt;!-- each file should be at most 50MB, keep 7 days worth of history, but at most 5GB --&gt;</span>
+        <span class="nt">&lt;maxFileSize&gt;</span>50MB<span class="nt">&lt;/maxFileSize&gt;</span>
+        <span class="nt">&lt;maxHistory&gt;</span>7<span class="nt">&lt;/maxHistory&gt;</span>
+        <span class="nt">&lt;totalSizeCap&gt;</span>5GB<span class="nt">&lt;/totalSizeCap&gt;</span>
+      <span class="nt">&lt;/rollingPolicy&gt;</span>
+      <span class="nt">&lt;encoder&gt;</span>
+        <span class="nt">&lt;pattern&gt;</span>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n<span class="nt">&lt;/pattern&gt;</span>
+      <span class="nt">&lt;/encoder&gt;</span>
+    <span class="nt">&lt;/appender&gt;</span>
+
+    <span class="c">&lt;!-- DEBUGLOG rolling file appender to debug.log (all levels) --&gt;</span>
+
+    <span class="nt">&lt;appender</span> <span class="na">name=</span><span class="s">&quot;DEBUGLOG&quot;</span> <span class="na">class=</span><span class="s">&quot;ch.qos.logback.core.rolling.RollingFileAppender&quot;</span><span class="nt">&gt;</span>
+      <span class="nt">&lt;file&gt;</span>${cassandra.logdir}/debug.log<span class="nt">&lt;/file&gt;</span>
+      <span class="nt">&lt;rollingPolicy</span> <span class="na">class=</span><span class="s">&quot;ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy&quot;</span><span class="nt">&gt;</span>
+        <span class="c">&lt;!-- rollover daily --&gt;</span>
+        <span class="nt">&lt;fileNamePattern&gt;</span>${cassandra.logdir}/debug.log.%d{yyyy-MM-dd}.%i.zip<span class="nt">&lt;/fileNamePattern&gt;</span>
+        <span class="c">&lt;!-- each file should be at most 50MB, keep 7 days worth of history, but at most 5GB --&gt;</span>
+        <span class="nt">&lt;maxFileSize&gt;</span>50MB<span class="nt">&lt;/maxFileSize&gt;</span>
+        <span class="nt">&lt;maxHistory&gt;</span>7<span class="nt">&lt;/maxHistory&gt;</span>
+        <span class="nt">&lt;totalSizeCap&gt;</span>5GB<span class="nt">&lt;/totalSizeCap&gt;</span>
+      <span class="nt">&lt;/rollingPolicy&gt;</span>
+      <span class="nt">&lt;encoder&gt;</span>
+        <span class="nt">&lt;pattern&gt;</span>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n<span class="nt">&lt;/pattern&gt;</span>
+      <span class="nt">&lt;/encoder&gt;</span>
+    <span class="nt">&lt;/appender&gt;</span>
+
+    <span class="c">&lt;!-- ASYNCLOG assynchronous appender to debug.log (all levels) --&gt;</span>
+
+    <span class="nt">&lt;appender</span> <span class="na">name=</span><span class="s">&quot;ASYNCDEBUGLOG&quot;</span> <span class="na">class=</span><span class="s">&quot;ch.qos.logback.classic.AsyncAppender&quot;</span><span class="nt">&gt;</span>
+      <span class="nt">&lt;queueSize&gt;</span>1024<span class="nt">&lt;/queueSize&gt;</span>
+      <span class="nt">&lt;discardingThreshold&gt;</span>0<span class="nt">&lt;/discardingThreshold&gt;</span>
+      <span class="nt">&lt;includeCallerData&gt;</span>true<span class="nt">&lt;/includeCallerData&gt;</span>
+      <span class="nt">&lt;appender-ref</span> <span class="na">ref=</span><span class="s">&quot;DEBUGLOG&quot;</span> <span class="nt">/&gt;</span>
+    <span class="nt">&lt;/appender&gt;</span>
+
+    <span class="c">&lt;!-- STDOUT console appender to stdout (INFO level) --&gt;</span>
+
+    <span class="nt">&lt;appender</span> <span class="na">name=</span><span class="s">&quot;STDOUT&quot;</span> <span class="na">class=</span><span class="s">&quot;ch.qos.logback.core.ConsoleAppender&quot;</span><span class="nt">&gt;</span>
+      <span class="nt">&lt;filter</span> <span class="na">class=</span><span class="s">&quot;ch.qos.logback.classic.filter.ThresholdFilter&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;level&gt;</span>INFO<span class="nt">&lt;/level&gt;</span>
+      <span class="nt">&lt;/filter&gt;</span>
+      <span class="nt">&lt;encoder&gt;</span>
+        <span class="nt">&lt;pattern&gt;</span>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n<span class="nt">&lt;/pattern&gt;</span>
+      <span class="nt">&lt;/encoder&gt;</span>
+    <span class="nt">&lt;/appender&gt;</span>
+
+    <span class="c">&lt;!-- Uncomment bellow and corresponding appender-ref to activate logback metrics</span>
+<span class="c">    &lt;appender name=&quot;LogbackMetrics&quot; class=&quot;com.codahale.metrics.logback.InstrumentedAppender&quot; /&gt;</span>
+<span class="c">     --&gt;</span>
+
+    <span class="nt">&lt;root</span> <span class="na">level=</span><span class="s">&quot;INFO&quot;</span><span class="nt">&gt;</span>
+      <span class="nt">&lt;appender-ref</span> <span class="na">ref=</span><span class="s">&quot;SYSTEMLOG&quot;</span> <span class="nt">/&gt;</span>
+      <span class="nt">&lt;appender-ref</span> <span class="na">ref=</span><span class="s">&quot;STDOUT&quot;</span> <span class="nt">/&gt;</span>
+      <span class="nt">&lt;appender-ref</span> <span class="na">ref=</span><span class="s">&quot;ASYNCDEBUGLOG&quot;</span> <span class="nt">/&gt;</span> <span class="c">&lt;!-- Comment this line to disable debug.log --&gt;</span>
+      <span class="c">&lt;!--</span>
+<span class="c">      &lt;appender-ref ref=&quot;LogbackMetrics&quot; /&gt;</span>
+<span class="c">      --&gt;</span>
+    <span class="nt">&lt;/root&gt;</span>
+
+    <span class="nt">&lt;logger</span> <span class="na">name=</span><span class="s">&quot;org.apache.cassandra&quot;</span> <span class="na">level=</span><span class="s">&quot;DEBUG&quot;</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;logger</span> <span class="na">name=</span><span class="s">&quot;com.thinkaurelius.thrift&quot;</span> <span class="na">level=</span><span class="s">&quot;ERROR&quot;</span><span class="nt">/&gt;</span>
+  <span class="nt">&lt;/configuration&gt;</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="cass_jvm_options_file.html" class="btn btn-default pull-right " role="button" title="jvm-* files" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="cass_cl_archive_file.html" class="btn btn-default" role="button" title="commitlog-archiving.properties file" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/configuration/cass_rackdc_file.html b/src/doc/4.0-rc1/configuration/cass_rackdc_file.html
new file mode 100644
index 0000000..2826b21
--- /dev/null
+++ b/src/doc/4.0-rc1/configuration/cass_rackdc_file.html
@@ -0,0 +1,175 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Configuring Cassandra"
+
+doc-title: "cassandra-rackdc.properties file"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Configuring Cassandra" href="index.html"/>
+      <link rel="next" title="cassandra-env.sh file" href="cass_env_sh_file.html"/>
+      <link rel="prev" title="cassandra.yaml file configuration" href="cass_yaml_file.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Configuring Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="cass_yaml_file.html">cassandra.yaml file configuration</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">cassandra-rackdc.properties file</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#gossipingpropertyfilesnitch">GossipingPropertyFileSnitch</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#aws-ec2-snitch">AWS EC2 snitch</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#either-snitch">Either snitch</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="cass_env_sh_file.html">cassandra-env.sh file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_topo_file.html">cassandra-topologies.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_cl_archive_file.html">commitlog-archiving.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_logback_xml_file.html">logback.xml file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_jvm_options_file.html">jvm-* files</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cassandra-rackdc-properties-file">
+<span id="cassandra-rackdc"></span><h1>cassandra-rackdc.properties file<a class="headerlink" href="#cassandra-rackdc-properties-file" title="Permalink to this headline">¶</a></h1>
+<p>Several <span class="xref std std-term">snitch</span> options use the <code class="docutils literal notranslate"><span class="pre">cassandra-rackdc.properties</span></code> configuration file to determine which <span class="xref std std-term">datacenters</span> and racks cluster nodes belong to. Information about the
+network topology allows requests to be routed efficiently and to distribute replicas evenly. The following snitches can be configured here:</p>
+<ul class="simple">
+<li>GossipingPropertyFileSnitch</li>
+<li>AWS EC2 single-region snitch</li>
+<li>AWS EC2 multi-region snitch</li>
+</ul>
+<p>The GossipingPropertyFileSnitch is recommended for production. This snitch uses the datacenter and rack information configured in a local node’s <code class="docutils literal notranslate"><span class="pre">cassandra-rackdc.properties</span></code>
+file and propagates the information to other nodes using <span class="xref std std-term">gossip</span>. It is the default snitch and the settings in this properties file are enabled.</p>
+<p>The AWS EC2 snitches are configured for clusters in AWS. This snitch uses the <code class="docutils literal notranslate"><span class="pre">cassandra-rackdc.properties</span></code> options to designate one of two AWS EC2 datacenter and rack naming conventions:</p>
+<ul>
+<li><p class="first">legacy: Datacenter name is the part of the availability zone name preceding the last “-” when the zone ends in -1 and includes the number if not -1. Rack name is the portion of the availability zone name following  the last “-“.</p>
+<blockquote>
+<div><p>Examples: us-west-1a =&gt; dc: us-west, rack: 1a; us-west-2b =&gt; dc: us-west-2, rack: 2b;</p>
+</div></blockquote>
+</li>
+<li><p class="first">standard: Datacenter name is the standard AWS region name, including the number. Rack name is the region plus the availability zone letter.</p>
+<blockquote>
+<div><p>Examples: us-west-1a =&gt; dc: us-west-1, rack: us-west-1a; us-west-2b =&gt; dc: us-west-2, rack: us-west-2b;</p>
+</div></blockquote>
+</li>
+</ul>
+<p>Either snitch can set to use the local or internal IP address when multiple datacenters are not communicating.</p>
+<div class="section" id="gossipingpropertyfilesnitch">
+<h2>GossipingPropertyFileSnitch<a class="headerlink" href="#gossipingpropertyfilesnitch" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="dc">
+<h3><code class="docutils literal notranslate"><span class="pre">dc</span></code><a class="headerlink" href="#dc" title="Permalink to this headline">¶</a></h3>
+<p>Name of the datacenter. The value is case-sensitive.</p>
+<p><strong>Default value:</strong> DC1</p>
+</div>
+<div class="section" id="rack">
+<h3><code class="docutils literal notranslate"><span class="pre">rack</span></code><a class="headerlink" href="#rack" title="Permalink to this headline">¶</a></h3>
+<p>Rack designation. The value is case-sensitive.</p>
+<p><strong>Default value:</strong> RAC1</p>
+</div>
+</div>
+<div class="section" id="aws-ec2-snitch">
+<h2>AWS EC2 snitch<a class="headerlink" href="#aws-ec2-snitch" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="ec2-naming-scheme">
+<h3><code class="docutils literal notranslate"><span class="pre">ec2_naming_scheme</span></code><a class="headerlink" href="#ec2-naming-scheme" title="Permalink to this headline">¶</a></h3>
+<p>Datacenter and rack naming convention. Options are <code class="docutils literal notranslate"><span class="pre">legacy</span></code> or <code class="docutils literal notranslate"><span class="pre">standard</span></code> (default). <strong>This option is commented out by default.</strong></p>
+<p><strong>Default value:</strong> standard</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">YOU MUST USE THE <code class="docutils literal notranslate"><span class="pre">legacy</span></code> VALUE IF YOU ARE UPGRADING A PRE-4.0 CLUSTER.</p>
+</div>
+</div>
+</div>
+<div class="section" id="either-snitch">
+<h2>Either snitch<a class="headerlink" href="#either-snitch" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="prefer-local">
+<h3><code class="docutils literal notranslate"><span class="pre">prefer_local</span></code><a class="headerlink" href="#prefer-local" title="Permalink to this headline">¶</a></h3>
+<p>Option to use the local or internal IP address when communication is not across different datacenters. <strong>This option is commented out by default.</strong></p>
+<p><strong>Default value:</strong> true</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="cass_env_sh_file.html" class="btn btn-default pull-right " role="button" title="cassandra-env.sh file" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="cass_yaml_file.html" class="btn btn-default" role="button" title="cassandra.yaml file configuration" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/configuration/cass_topo_file.html b/src/doc/4.0-rc1/configuration/cass_topo_file.html
new file mode 100644
index 0000000..39ce7a0
--- /dev/null
+++ b/src/doc/4.0-rc1/configuration/cass_topo_file.html
@@ -0,0 +1,155 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Configuring Cassandra"
+
+doc-title: "cassandra-topologies.properties file"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Configuring Cassandra" href="index.html"/>
+      <link rel="next" title="commitlog-archiving.properties file" href="cass_cl_archive_file.html"/>
+      <link rel="prev" title="cassandra-env.sh file" href="cass_env_sh_file.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Configuring Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="cass_yaml_file.html">cassandra.yaml file configuration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_rackdc_file.html">cassandra-rackdc.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_env_sh_file.html">cassandra-env.sh file</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">cassandra-topologies.properties file</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#example">Example</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="cass_cl_archive_file.html">commitlog-archiving.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_logback_xml_file.html">logback.xml file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_jvm_options_file.html">jvm-* files</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cassandra-topologies-properties-file">
+<span id="cassandra-topology"></span><h1>cassandra-topologies.properties file<a class="headerlink" href="#cassandra-topologies-properties-file" title="Permalink to this headline">¶</a></h1>
+<p>The <code class="docutils literal notranslate"><span class="pre">PropertyFileSnitch</span></code> <span class="xref std std-term">snitch</span> option uses the <code class="docutils literal notranslate"><span class="pre">cassandra-topologies.properties</span></code> configuration file to determine which <span class="xref std std-term">datacenters</span> and racks cluster nodes belong to. If other snitches are used, the
+:ref:cassandra_rackdc must be used. The snitch determines network topology (proximity by rack and datacenter) so that requests are routed efficiently and allows the database to distribute replicas evenly.</p>
+<p>Include every node in the cluster in the properties file, defining your datacenter names as in the keyspace definition. The datacenter and rack names are case-sensitive.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">cassandra-topologies.properties</span></code> file must be copied identically to every node in the cluster.</p>
+<div class="section" id="example">
+<h2>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2>
+<p>This example uses three datacenters:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># datacenter One</span>
+
+<span class="m">175</span>.56.12.105<span class="o">=</span>DC1:RAC1
+<span class="m">175</span>.50.13.200<span class="o">=</span>DC1:RAC1
+<span class="m">175</span>.54.35.197<span class="o">=</span>DC1:RAC1
+
+<span class="m">120</span>.53.24.101<span class="o">=</span>DC1:RAC2
+<span class="m">120</span>.55.16.200<span class="o">=</span>DC1:RAC2
+<span class="m">120</span>.57.102.103<span class="o">=</span>DC1:RAC2
+
+<span class="c1"># datacenter Two</span>
+
+<span class="m">110</span>.56.12.120<span class="o">=</span>DC2:RAC1
+<span class="m">110</span>.50.13.201<span class="o">=</span>DC2:RAC1
+<span class="m">110</span>.54.35.184<span class="o">=</span>DC2:RAC1
+
+<span class="m">50</span>.33.23.120<span class="o">=</span>DC2:RAC2
+<span class="m">50</span>.45.14.220<span class="o">=</span>DC2:RAC2
+<span class="m">50</span>.17.10.203<span class="o">=</span>DC2:RAC2
+
+<span class="c1"># datacenter Three</span>
+
+<span class="m">172</span>.106.12.120<span class="o">=</span>DC3:RAC1
+<span class="m">172</span>.106.12.121<span class="o">=</span>DC3:RAC1
+<span class="m">172</span>.106.12.122<span class="o">=</span>DC3:RAC1
+
+<span class="c1"># default for unknown nodes</span>
+<span class="nv">default</span> <span class="o">=</span>DC3:RAC1
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="cass_cl_archive_file.html" class="btn btn-default pull-right " role="button" title="commitlog-archiving.properties file" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="cass_env_sh_file.html" class="btn btn-default" role="button" title="cassandra-env.sh file" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/configuration/cass_yaml_file.html b/src/doc/4.0-rc1/configuration/cass_yaml_file.html
new file mode 100644
index 0000000..0b9fa05
--- /dev/null
+++ b/src/doc/4.0-rc1/configuration/cass_yaml_file.html
@@ -0,0 +1,2007 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Configuring Cassandra"
+
+doc-title: "cassandra.yaml file configuration"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Configuring Cassandra" href="index.html"/>
+      <link rel="next" title="cassandra-rackdc.properties file" href="cass_rackdc_file.html"/>
+      <link rel="prev" title="Configuring Cassandra" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Configuring Cassandra</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">cassandra.yaml file configuration</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#cluster-name"><code class="docutils literal notranslate"><span class="pre">cluster_name</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#num-tokens"><code class="docutils literal notranslate"><span class="pre">num_tokens</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#allocate-tokens-for-keyspace"><code class="docutils literal notranslate"><span class="pre">allocate_tokens_for_keyspace</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#allocate-tokens-for-local-replication-factor"><code class="docutils literal notranslate"><span class="pre">allocate_tokens_for_local_replication_factor</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#initial-token"><code class="docutils literal notranslate"><span class="pre">initial_token</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hinted-handoff-enabled"><code class="docutils literal notranslate"><span class="pre">hinted_handoff_enabled</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hinted-handoff-disabled-datacenters"><code class="docutils literal notranslate"><span class="pre">hinted_handoff_disabled_datacenters</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#max-hint-window-in-ms"><code class="docutils literal notranslate"><span class="pre">max_hint_window_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hinted-handoff-throttle-in-kb"><code class="docutils literal notranslate"><span class="pre">hinted_handoff_throttle_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#max-hints-delivery-threads"><code class="docutils literal notranslate"><span class="pre">max_hints_delivery_threads</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hints-directory"><code class="docutils literal notranslate"><span class="pre">hints_directory</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hints-flush-period-in-ms"><code class="docutils literal notranslate"><span class="pre">hints_flush_period_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#max-hints-file-size-in-mb"><code class="docutils literal notranslate"><span class="pre">max_hints_file_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hints-compression"><code class="docutils literal notranslate"><span class="pre">hints_compression</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#batchlog-replay-throttle-in-kb"><code class="docutils literal notranslate"><span class="pre">batchlog_replay_throttle_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#authenticator"><code class="docutils literal notranslate"><span class="pre">authenticator</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#authorizer"><code class="docutils literal notranslate"><span class="pre">authorizer</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#role-manager"><code class="docutils literal notranslate"><span class="pre">role_manager</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#network-authorizer"><code class="docutils literal notranslate"><span class="pre">network_authorizer</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#roles-validity-in-ms"><code class="docutils literal notranslate"><span class="pre">roles_validity_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#roles-update-interval-in-ms"><code class="docutils literal notranslate"><span class="pre">roles_update_interval_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#permissions-validity-in-ms"><code class="docutils literal notranslate"><span class="pre">permissions_validity_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#permissions-update-interval-in-ms"><code class="docutils literal notranslate"><span class="pre">permissions_update_interval_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#credentials-validity-in-ms"><code class="docutils literal notranslate"><span class="pre">credentials_validity_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#credentials-update-interval-in-ms"><code class="docutils literal notranslate"><span class="pre">credentials_update_interval_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#partitioner"><code class="docutils literal notranslate"><span class="pre">partitioner</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#data-file-directories"><code class="docutils literal notranslate"><span class="pre">data_file_directories</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#local-system-data-file-directory"><code class="docutils literal notranslate"><span class="pre">local_system_data_file_directory</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-directory"><code class="docutils literal notranslate"><span class="pre">commitlog_directory</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cdc-enabled"><code class="docutils literal notranslate"><span class="pre">cdc_enabled</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cdc-raw-directory"><code class="docutils literal notranslate"><span class="pre">cdc_raw_directory</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#disk-failure-policy"><code class="docutils literal notranslate"><span class="pre">disk_failure_policy</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commit-failure-policy"><code class="docutils literal notranslate"><span class="pre">commit_failure_policy</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#prepared-statements-cache-size-mb"><code class="docutils literal notranslate"><span class="pre">prepared_statements_cache_size_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#key-cache-size-in-mb"><code class="docutils literal notranslate"><span class="pre">key_cache_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#key-cache-save-period"><code class="docutils literal notranslate"><span class="pre">key_cache_save_period</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#key-cache-keys-to-save"><code class="docutils literal notranslate"><span class="pre">key_cache_keys_to_save</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#row-cache-class-name"><code class="docutils literal notranslate"><span class="pre">row_cache_class_name</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#row-cache-size-in-mb"><code class="docutils literal notranslate"><span class="pre">row_cache_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#row-cache-save-period"><code class="docutils literal notranslate"><span class="pre">row_cache_save_period</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#row-cache-keys-to-save"><code class="docutils literal notranslate"><span class="pre">row_cache_keys_to_save</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#counter-cache-size-in-mb"><code class="docutils literal notranslate"><span class="pre">counter_cache_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#counter-cache-save-period"><code class="docutils literal notranslate"><span class="pre">counter_cache_save_period</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#counter-cache-keys-to-save"><code class="docutils literal notranslate"><span class="pre">counter_cache_keys_to_save</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#saved-caches-directory"><code class="docutils literal notranslate"><span class="pre">saved_caches_directory</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-sync-batch-window-in-ms"><code class="docutils literal notranslate"><span class="pre">commitlog_sync_batch_window_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-sync-group-window-in-ms"><code class="docutils literal notranslate"><span class="pre">commitlog_sync_group_window_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-sync"><code class="docutils literal notranslate"><span class="pre">commitlog_sync</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-sync-period-in-ms"><code class="docutils literal notranslate"><span class="pre">commitlog_sync_period_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#periodic-commitlog-sync-lag-block-in-ms"><code class="docutils literal notranslate"><span class="pre">periodic_commitlog_sync_lag_block_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-segment-size-in-mb"><code class="docutils literal notranslate"><span class="pre">commitlog_segment_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-compression"><code class="docutils literal notranslate"><span class="pre">commitlog_compression</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#table"><code class="docutils literal notranslate"><span class="pre">table</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#flush-compression"><code class="docutils literal notranslate"><span class="pre">flush_compression</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#seed-provider"><code class="docutils literal notranslate"><span class="pre">seed_provider</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#concurrent-reads"><code class="docutils literal notranslate"><span class="pre">concurrent_reads</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#concurrent-writes"><code class="docutils literal notranslate"><span class="pre">concurrent_writes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#concurrent-counter-writes"><code class="docutils literal notranslate"><span class="pre">concurrent_counter_writes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#concurrent-materialized-view-writes"><code class="docutils literal notranslate"><span class="pre">concurrent_materialized_view_writes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#file-cache-size-in-mb"><code class="docutils literal notranslate"><span class="pre">file_cache_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#buffer-pool-use-heap-if-exhausted"><code class="docutils literal notranslate"><span class="pre">buffer_pool_use_heap_if_exhausted</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#disk-optimization-strategy"><code class="docutils literal notranslate"><span class="pre">disk_optimization_strategy</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memtable-heap-space-in-mb"><code class="docutils literal notranslate"><span class="pre">memtable_heap_space_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memtable-offheap-space-in-mb"><code class="docutils literal notranslate"><span class="pre">memtable_offheap_space_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memtable-cleanup-threshold"><code class="docutils literal notranslate"><span class="pre">memtable_cleanup_threshold</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memtable-allocation-type"><code class="docutils literal notranslate"><span class="pre">memtable_allocation_type</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#repair-session-space-in-mb"><code class="docutils literal notranslate"><span class="pre">repair_session_space_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-total-space-in-mb"><code class="docutils literal notranslate"><span class="pre">commitlog_total_space_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memtable-flush-writers"><code class="docutils literal notranslate"><span class="pre">memtable_flush_writers</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cdc-total-space-in-mb"><code class="docutils literal notranslate"><span class="pre">cdc_total_space_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cdc-free-space-check-interval-ms"><code class="docutils literal notranslate"><span class="pre">cdc_free_space_check_interval_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#index-summary-capacity-in-mb"><code class="docutils literal notranslate"><span class="pre">index_summary_capacity_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#index-summary-resize-interval-in-minutes"><code class="docutils literal notranslate"><span class="pre">index_summary_resize_interval_in_minutes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#trickle-fsync"><code class="docutils literal notranslate"><span class="pre">trickle_fsync</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#trickle-fsync-interval-in-kb"><code class="docutils literal notranslate"><span class="pre">trickle_fsync_interval_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#storage-port"><code class="docutils literal notranslate"><span class="pre">storage_port</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#ssl-storage-port"><code class="docutils literal notranslate"><span class="pre">ssl_storage_port</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#listen-address"><code class="docutils literal notranslate"><span class="pre">listen_address</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#listen-interface"><code class="docutils literal notranslate"><span class="pre">listen_interface</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#listen-interface-prefer-ipv6"><code class="docutils literal notranslate"><span class="pre">listen_interface_prefer_ipv6</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#broadcast-address"><code class="docutils literal notranslate"><span class="pre">broadcast_address</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#listen-on-broadcast-address"><code class="docutils literal notranslate"><span class="pre">listen_on_broadcast_address</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-authenticator"><code class="docutils literal notranslate"><span class="pre">internode_authenticator</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#start-native-transport"><code class="docutils literal notranslate"><span class="pre">start_native_transport</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-port"><code class="docutils literal notranslate"><span class="pre">native_transport_port</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-port-ssl"><code class="docutils literal notranslate"><span class="pre">native_transport_port_ssl</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-max-threads"><code class="docutils literal notranslate"><span class="pre">native_transport_max_threads</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-max-frame-size-in-mb"><code class="docutils literal notranslate"><span class="pre">native_transport_max_frame_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-frame-block-size-in-kb"><code class="docutils literal notranslate"><span class="pre">native_transport_frame_block_size_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-max-concurrent-connections"><code class="docutils literal notranslate"><span class="pre">native_transport_max_concurrent_connections</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-max-concurrent-connections-per-ip"><code class="docutils literal notranslate"><span class="pre">native_transport_max_concurrent_connections_per_ip</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-allow-older-protocols"><code class="docutils literal notranslate"><span class="pre">native_transport_allow_older_protocols</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-idle-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">native_transport_idle_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-address"><code class="docutils literal notranslate"><span class="pre">rpc_address</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-interface"><code class="docutils literal notranslate"><span class="pre">rpc_interface</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-interface-prefer-ipv6"><code class="docutils literal notranslate"><span class="pre">rpc_interface_prefer_ipv6</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#broadcast-rpc-address"><code class="docutils literal notranslate"><span class="pre">broadcast_rpc_address</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rpc-keepalive"><code class="docutils literal notranslate"><span class="pre">rpc_keepalive</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-send-buff-size-in-bytes"><code class="docutils literal notranslate"><span class="pre">internode_send_buff_size_in_bytes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-recv-buff-size-in-bytes"><code class="docutils literal notranslate"><span class="pre">internode_recv_buff_size_in_bytes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#incremental-backups"><code class="docutils literal notranslate"><span class="pre">incremental_backups</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#snapshot-before-compaction"><code class="docutils literal notranslate"><span class="pre">snapshot_before_compaction</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#auto-snapshot"><code class="docutils literal notranslate"><span class="pre">auto_snapshot</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#column-index-size-in-kb"><code class="docutils literal notranslate"><span class="pre">column_index_size_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#column-index-cache-size-in-kb"><code class="docutils literal notranslate"><span class="pre">column_index_cache_size_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#concurrent-compactors"><code class="docutils literal notranslate"><span class="pre">concurrent_compactors</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#concurrent-validations"><code class="docutils literal notranslate"><span class="pre">concurrent_validations</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#concurrent-materialized-view-builders"><code class="docutils literal notranslate"><span class="pre">concurrent_materialized_view_builders</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#compaction-throughput-mb-per-sec"><code class="docutils literal notranslate"><span class="pre">compaction_throughput_mb_per_sec</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#sstable-preemptive-open-interval-in-mb"><code class="docutils literal notranslate"><span class="pre">sstable_preemptive_open_interval_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#stream-entire-sstables"><code class="docutils literal notranslate"><span class="pre">stream_entire_sstables</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#stream-throughput-outbound-megabits-per-sec"><code class="docutils literal notranslate"><span class="pre">stream_throughput_outbound_megabits_per_sec</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#inter-dc-stream-throughput-outbound-megabits-per-sec"><code class="docutils literal notranslate"><span class="pre">inter_dc_stream_throughput_outbound_megabits_per_sec</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#read-request-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">read_request_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#range-request-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">range_request_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#write-request-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">write_request_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#counter-write-request-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">counter_write_request_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cas-contention-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">cas_contention_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#truncate-request-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">truncate_request_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#request-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">request_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-application-send-queue-capacity-in-bytes"><code class="docutils literal notranslate"><span class="pre">internode_application_send_queue_capacity_in_bytes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-tcp-connect-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">internode_tcp_connect_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-tcp-user-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">internode_tcp_user_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-streaming-tcp-user-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">internode_streaming_tcp_user_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-application-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">internode_application_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-application-send-queue-reserve-endpoint-capacity-in-bytes"><code class="docutils literal notranslate"><span class="pre">internode_application_send_queue_reserve_endpoint_capacity_in_bytes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-application-send-queue-reserve-global-capacity-in-bytes"><code class="docutils literal notranslate"><span class="pre">internode_application_send_queue_reserve_global_capacity_in_bytes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-application-receive-queue-capacity-in-bytes"><code class="docutils literal notranslate"><span class="pre">internode_application_receive_queue_capacity_in_bytes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-application-receive-queue-reserve-endpoint-capacity-in-bytes"><code class="docutils literal notranslate"><span class="pre">internode_application_receive_queue_reserve_endpoint_capacity_in_bytes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-application-receive-queue-reserve-global-capacity-in-bytes"><code class="docutils literal notranslate"><span class="pre">internode_application_receive_queue_reserve_global_capacity_in_bytes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#slow-query-log-timeout-in-ms"><code class="docutils literal notranslate"><span class="pre">slow_query_log_timeout_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cross-node-timeout"><code class="docutils literal notranslate"><span class="pre">cross_node_timeout</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#streaming-keep-alive-period-in-secs"><code class="docutils literal notranslate"><span class="pre">streaming_keep_alive_period_in_secs</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#streaming-connections-per-host"><code class="docutils literal notranslate"><span class="pre">streaming_connections_per_host</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#phi-convict-threshold"><code class="docutils literal notranslate"><span class="pre">phi_convict_threshold</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#endpoint-snitch"><code class="docutils literal notranslate"><span class="pre">endpoint_snitch</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#dynamic-snitch-update-interval-in-ms"><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_update_interval_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#dynamic-snitch-reset-interval-in-ms"><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_reset_interval_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#dynamic-snitch-badness-threshold"><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_badness_threshold</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#server-encryption-options"><code class="docutils literal notranslate"><span class="pre">server_encryption_options</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#client-encryption-options"><code class="docutils literal notranslate"><span class="pre">client_encryption_options</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-compression"><code class="docutils literal notranslate"><span class="pre">internode_compression</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#inter-dc-tcp-nodelay"><code class="docutils literal notranslate"><span class="pre">inter_dc_tcp_nodelay</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tracetype-query-ttl"><code class="docutils literal notranslate"><span class="pre">tracetype_query_ttl</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tracetype-repair-ttl"><code class="docutils literal notranslate"><span class="pre">tracetype_repair_ttl</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#enable-user-defined-functions"><code class="docutils literal notranslate"><span class="pre">enable_user_defined_functions</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#enable-scripted-user-defined-functions"><code class="docutils literal notranslate"><span class="pre">enable_scripted_user_defined_functions</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#windows-timer-interval"><code class="docutils literal notranslate"><span class="pre">windows_timer_interval</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#transparent-data-encryption-options"><code class="docutils literal notranslate"><span class="pre">transparent_data_encryption_options</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tombstone-warn-threshold"><code class="docutils literal notranslate"><span class="pre">tombstone_warn_threshold</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tombstone-failure-threshold"><code class="docutils literal notranslate"><span class="pre">tombstone_failure_threshold</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#batch-size-warn-threshold-in-kb"><code class="docutils literal notranslate"><span class="pre">batch_size_warn_threshold_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#batch-size-fail-threshold-in-kb"><code class="docutils literal notranslate"><span class="pre">batch_size_fail_threshold_in_kb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#unlogged-batch-across-partitions-warn-threshold"><code class="docutils literal notranslate"><span class="pre">unlogged_batch_across_partitions_warn_threshold</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#compaction-large-partition-warning-threshold-mb"><code class="docutils literal notranslate"><span class="pre">compaction_large_partition_warning_threshold_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#gc-log-threshold-in-ms"><code class="docutils literal notranslate"><span class="pre">gc_log_threshold_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#gc-warn-threshold-in-ms"><code class="docutils literal notranslate"><span class="pre">gc_warn_threshold_in_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#max-value-size-in-mb"><code class="docutils literal notranslate"><span class="pre">max_value_size_in_mb</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#back-pressure-enabled"><code class="docutils literal notranslate"><span class="pre">back_pressure_enabled</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#back-pressure-strategy"><code class="docutils literal notranslate"><span class="pre">back_pressure_strategy</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#otc-coalescing-strategy"><code class="docutils literal notranslate"><span class="pre">otc_coalescing_strategy</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#otc-coalescing-window-us"><code class="docutils literal notranslate"><span class="pre">otc_coalescing_window_us</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#otc-coalescing-enough-coalesced-messages"><code class="docutils literal notranslate"><span class="pre">otc_coalescing_enough_coalesced_messages</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#otc-backlog-expiration-interval-ms"><code class="docutils literal notranslate"><span class="pre">otc_backlog_expiration_interval_ms</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#ideal-consistency-level"><code class="docutils literal notranslate"><span class="pre">ideal_consistency_level</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#automatic-sstable-upgrade"><code class="docutils literal notranslate"><span class="pre">automatic_sstable_upgrade</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#max-concurrent-automatic-sstable-upgrades"><code class="docutils literal notranslate"><span class="pre">max_concurrent_automatic_sstable_upgrades</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#audit-logging-options"><code class="docutils literal notranslate"><span class="pre">audit_logging_options</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#full-query-logging-options"><code class="docutils literal notranslate"><span class="pre">full_query_logging_options</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#corrupted-tombstone-strategy"><code class="docutils literal notranslate"><span class="pre">corrupted_tombstone_strategy</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#diagnostic-events-enabled"><code class="docutils literal notranslate"><span class="pre">diagnostic_events_enabled</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#native-transport-flush-in-batches-legacy"><code class="docutils literal notranslate"><span class="pre">native_transport_flush_in_batches_legacy</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#repaired-data-tracking-for-range-reads-enabled"><code class="docutils literal notranslate"><span class="pre">repaired_data_tracking_for_range_reads_enabled</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#repaired-data-tracking-for-partition-reads-enabled"><code class="docutils literal notranslate"><span class="pre">repaired_data_tracking_for_partition_reads_enabled</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#report-unconfirmed-repaired-data-mismatches"><code class="docutils literal notranslate"><span class="pre">report_unconfirmed_repaired_data_mismatches</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#enable-materialized-views"><code class="docutils literal notranslate"><span class="pre">enable_materialized_views</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#enable-sasi-indexes"><code class="docutils literal notranslate"><span class="pre">enable_sasi_indexes</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#enable-transient-replication"><code class="docutils literal notranslate"><span class="pre">enable_transient_replication</span></code></a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="cass_rackdc_file.html">cassandra-rackdc.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_env_sh_file.html">cassandra-env.sh file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_topo_file.html">cassandra-topologies.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_cl_archive_file.html">commitlog-archiving.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_logback_xml_file.html">logback.xml file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_jvm_options_file.html">jvm-* files</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cassandra-yaml-file-configuration">
+<span id="cassandra-yaml"></span><h1>cassandra.yaml file configuration<a class="headerlink" href="#cassandra-yaml-file-configuration" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="cluster-name">
+<h2><code class="docutils literal notranslate"><span class="pre">cluster_name</span></code><a class="headerlink" href="#cluster-name" title="Permalink to this headline">¶</a></h2>
+<p>The name of the cluster. This is mainly used to prevent machines in
+one logical cluster from joining another.</p>
+<p><em>Default Value:</em> ‘Test Cluster’</p>
+</div>
+<div class="section" id="num-tokens">
+<h2><code class="docutils literal notranslate"><span class="pre">num_tokens</span></code><a class="headerlink" href="#num-tokens" title="Permalink to this headline">¶</a></h2>
+<p>This defines the number of tokens randomly assigned to this node on the ring
+The more tokens, relative to other nodes, the larger the proportion of data
+that this node will store. We recommend all nodes to have the same number
+of tokens assuming they have equal hardware capability.</p>
+<p>If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility,
+and will use the initial_token as described below.</p>
+<p>Specifying initial_token will override this setting on the node’s initial start,
+on subsequent starts, this setting will apply even if initial token is set.</p>
+<p>We recommend setting <code class="docutils literal notranslate"><span class="pre">allocate_tokens_for_local_replication_factor</span></code> in conjunction with this setting to ensure even allocation.</p>
+<p><em>Default Value:</em> 256</p>
+</div>
+<div class="section" id="allocate-tokens-for-keyspace">
+<h2><code class="docutils literal notranslate"><span class="pre">allocate_tokens_for_keyspace</span></code><a class="headerlink" href="#allocate-tokens-for-keyspace" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Triggers automatic allocation of num_tokens tokens for this node. The allocation
+algorithm attempts to choose tokens in a way that optimizes replicated load over
+the nodes in the datacenter for the replica factor.</p>
+<p>The load assigned to each node will be close to proportional to its number of
+vnodes.</p>
+<p>Only supported with the Murmur3Partitioner.</p>
+<p>Replica factor is determined via the replication strategy used by the specified
+keyspace.</p>
+<p>We recommend using the <code class="docutils literal notranslate"><span class="pre">allocate_tokens_for_local_replication_factor</span></code> setting instead for operational simplicity.</p>
+<p><em>Default Value:</em> KEYSPACE</p>
+</div>
+<div class="section" id="allocate-tokens-for-local-replication-factor">
+<h2><code class="docutils literal notranslate"><span class="pre">allocate_tokens_for_local_replication_factor</span></code><a class="headerlink" href="#allocate-tokens-for-local-replication-factor" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Tokens will be allocated based on this replication factor, regardless of keyspace or datacenter.</p>
+<p><em>Default Value:</em> 3</p>
+</div>
+<div class="section" id="initial-token">
+<h2><code class="docutils literal notranslate"><span class="pre">initial_token</span></code><a class="headerlink" href="#initial-token" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>initial_token allows you to specify tokens manually.  While you can use it with
+vnodes (num_tokens &gt; 1, above) – in which case you should provide a
+comma-separated list – it’s primarily used when adding nodes to legacy clusters
+that do not have vnodes enabled.</p>
+</div>
+<div class="section" id="hinted-handoff-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">hinted_handoff_enabled</span></code><a class="headerlink" href="#hinted-handoff-enabled" title="Permalink to this headline">¶</a></h2>
+<p>May either be “true” or “false” to enable globally</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="hinted-handoff-disabled-datacenters">
+<h2><code class="docutils literal notranslate"><span class="pre">hinted_handoff_disabled_datacenters</span></code><a class="headerlink" href="#hinted-handoff-disabled-datacenters" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>When hinted_handoff_enabled is true, a black list of data centers that will not
+perform hinted handoff</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#    - DC1</span>
+<span class="c1">#    - DC2</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="max-hint-window-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">max_hint_window_in_ms</span></code><a class="headerlink" href="#max-hint-window-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>This defines the maximum amount of time a dead host will have hints
+generated.  After it has been dead this long, new hints for it will not be
+created until it has been seen alive and gone down again.</p>
+<p><em>Default Value:</em> 10800000 # 3 hours</p>
+</div>
+<div class="section" id="hinted-handoff-throttle-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">hinted_handoff_throttle_in_kb</span></code><a class="headerlink" href="#hinted-handoff-throttle-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum throttle in KBs per second, per delivery thread.  This will be
+reduced proportionally to the number of nodes in the cluster.  (If there
+are two nodes in the cluster, each delivery thread will use the maximum
+rate; if there are three, each will throttle to half of the maximum,
+since we expect two nodes to be delivering hints simultaneously.)</p>
+<p><em>Default Value:</em> 1024</p>
+</div>
+<div class="section" id="max-hints-delivery-threads">
+<h2><code class="docutils literal notranslate"><span class="pre">max_hints_delivery_threads</span></code><a class="headerlink" href="#max-hints-delivery-threads" title="Permalink to this headline">¶</a></h2>
+<p>Number of threads with which to deliver hints;
+Consider increasing this number when you have multi-dc deployments, since
+cross-dc handoff tends to be slower</p>
+<p><em>Default Value:</em> 2</p>
+</div>
+<div class="section" id="hints-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">hints_directory</span></code><a class="headerlink" href="#hints-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Directory where Cassandra should store hints.
+If not set, the default directory is $CASSANDRA_HOME/data/hints.</p>
+<p><em>Default Value:</em>  /var/lib/cassandra/hints</p>
+</div>
+<div class="section" id="hints-flush-period-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">hints_flush_period_in_ms</span></code><a class="headerlink" href="#hints-flush-period-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How often hints should be flushed from the internal buffers to disk.
+Will <em>not</em> trigger fsync.</p>
+<p><em>Default Value:</em> 10000</p>
+</div>
+<div class="section" id="max-hints-file-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">max_hints_file_size_in_mb</span></code><a class="headerlink" href="#max-hints-file-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size for a single hints file, in megabytes.</p>
+<p><em>Default Value:</em> 128</p>
+</div>
+<div class="section" id="hints-compression">
+<h2><code class="docutils literal notranslate"><span class="pre">hints_compression</span></code><a class="headerlink" href="#hints-compression" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Compression to apply to the hint files. If omitted, hints files
+will be written uncompressed. LZ4, Snappy, and Deflate compressors
+are supported.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#   - class_name: LZ4Compressor</span>
+<span class="c1">#     parameters:</span>
+<span class="c1">#         -</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="batchlog-replay-throttle-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">batchlog_replay_throttle_in_kb</span></code><a class="headerlink" href="#batchlog-replay-throttle-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum throttle in KBs per second, total. This will be
+reduced proportionally to the number of nodes in the cluster.</p>
+<p><em>Default Value:</em> 1024</p>
+</div>
+<div class="section" id="authenticator">
+<h2><code class="docutils literal notranslate"><span class="pre">authenticator</span></code><a class="headerlink" href="#authenticator" title="Permalink to this headline">¶</a></h2>
+<p>Authentication backend, implementing IAuthenticator; used to identify users
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator,
+PasswordAuthenticator}.</p>
+<ul class="simple">
+<li>AllowAllAuthenticator performs no checks - set it to disable authentication.</li>
+<li>PasswordAuthenticator relies on username/password pairs to authenticate
+users. It keeps usernames and hashed passwords in system_auth.roles table.
+Please increase system_auth keyspace replication factor if you use this authenticator.
+If using PasswordAuthenticator, CassandraRoleManager must also be used (see below)</li>
+</ul>
+<p><em>Default Value:</em> AllowAllAuthenticator</p>
+</div>
+<div class="section" id="authorizer">
+<h2><code class="docutils literal notranslate"><span class="pre">authorizer</span></code><a class="headerlink" href="#authorizer" title="Permalink to this headline">¶</a></h2>
+<p>Authorization backend, implementing IAuthorizer; used to limit access/provide permissions
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer,
+CassandraAuthorizer}.</p>
+<ul class="simple">
+<li>AllowAllAuthorizer allows any action to any user - set it to disable authorization.</li>
+<li>CassandraAuthorizer stores permissions in system_auth.role_permissions table. Please
+increase system_auth keyspace replication factor if you use this authorizer.</li>
+</ul>
+<p><em>Default Value:</em> AllowAllAuthorizer</p>
+</div>
+<div class="section" id="role-manager">
+<h2><code class="docutils literal notranslate"><span class="pre">role_manager</span></code><a class="headerlink" href="#role-manager" title="Permalink to this headline">¶</a></h2>
+<p>Part of the Authentication &amp; Authorization backend, implementing IRoleManager; used
+to maintain grants and memberships between roles.
+Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager,
+which stores role information in the system_auth keyspace. Most functions of the
+IRoleManager require an authenticated login, so unless the configured IAuthenticator
+actually implements authentication, most of this functionality will be unavailable.</p>
+<ul class="simple">
+<li>CassandraRoleManager stores role data in the system_auth keyspace. Please
+increase system_auth keyspace replication factor if you use this role manager.</li>
+</ul>
+<p><em>Default Value:</em> CassandraRoleManager</p>
+</div>
+<div class="section" id="network-authorizer">
+<h2><code class="docutils literal notranslate"><span class="pre">network_authorizer</span></code><a class="headerlink" href="#network-authorizer" title="Permalink to this headline">¶</a></h2>
+<p>Network authorization backend, implementing INetworkAuthorizer; used to restrict user
+access to certain DCs
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllNetworkAuthorizer,
+CassandraNetworkAuthorizer}.</p>
+<ul class="simple">
+<li>AllowAllNetworkAuthorizer allows access to any DC to any user - set it to disable authorization.</li>
+<li>CassandraNetworkAuthorizer stores permissions in system_auth.network_permissions table. Please
+increase system_auth keyspace replication factor if you use this authorizer.</li>
+</ul>
+<p><em>Default Value:</em> AllowAllNetworkAuthorizer</p>
+</div>
+<div class="section" id="roles-validity-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">roles_validity_in_ms</span></code><a class="headerlink" href="#roles-validity-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>Validity period for roles cache (fetching granted roles can be an expensive
+operation depending on the role manager, CassandraRoleManager is one example)
+Granted roles are cached for authenticated sessions in AuthenticatedUser and
+after the period specified here, become eligible for (async) reload.
+Defaults to 2000, set to 0 to disable caching entirely.
+Will be disabled automatically for AllowAllAuthenticator.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="roles-update-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">roles_update_interval_in_ms</span></code><a class="headerlink" href="#roles-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Refresh interval for roles cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If roles_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as roles_validity_in_ms.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="permissions-validity-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">permissions_validity_in_ms</span></code><a class="headerlink" href="#permissions-validity-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>Validity period for permissions cache (fetching permissions can be an
+expensive operation depending on the authorizer, CassandraAuthorizer is
+one example). Defaults to 2000, set to 0 to disable.
+Will be disabled automatically for AllowAllAuthorizer.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="permissions-update-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">permissions_update_interval_in_ms</span></code><a class="headerlink" href="#permissions-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Refresh interval for permissions cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If permissions_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as permissions_validity_in_ms.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="credentials-validity-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">credentials_validity_in_ms</span></code><a class="headerlink" href="#credentials-validity-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>Validity period for credentials cache. This cache is tightly coupled to
+the provided PasswordAuthenticator implementation of IAuthenticator. If
+another IAuthenticator implementation is configured, this cache will not
+be automatically used and so the following settings will have no effect.
+Please note, credentials are cached in their encrypted form, so while
+activating this cache may reduce the number of queries made to the
+underlying table, it may not  bring a significant reduction in the
+latency of individual authentication attempts.
+Defaults to 2000, set to 0 to disable credentials caching.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="credentials-update-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">credentials_update_interval_in_ms</span></code><a class="headerlink" href="#credentials-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Refresh interval for credentials cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If credentials_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as credentials_validity_in_ms.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="partitioner">
+<h2><code class="docutils literal notranslate"><span class="pre">partitioner</span></code><a class="headerlink" href="#partitioner" title="Permalink to this headline">¶</a></h2>
+<p>The partitioner is responsible for distributing groups of rows (by
+partition key) across nodes in the cluster. The partitioner can NOT be
+changed without reloading all data.  If you are adding nodes or upgrading,
+you should set this to the same partitioner that you are currently using.</p>
+<p>The default partitioner is the Murmur3Partitioner. Older partitioners
+such as the RandomPartitioner, ByteOrderedPartitioner, and
+OrderPreservingPartitioner have been included for backward compatibility only.
+For new clusters, you should NOT change this value.</p>
+<p><em>Default Value:</em> org.apache.cassandra.dht.Murmur3Partitioner</p>
+</div>
+<div class="section" id="data-file-directories">
+<h2><code class="docutils literal notranslate"><span class="pre">data_file_directories</span></code><a class="headerlink" href="#data-file-directories" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Directories where Cassandra should store data on disk. If multiple
+directories are specified, Cassandra will spread data evenly across
+them by partitioning the token ranges.
+If not set, the default directory is $CASSANDRA_HOME/data/data.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#     - /var/lib/cassandra/data</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="local-system-data-file-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">local_system_data_file_directory</span></code><a class="headerlink" href="#local-system-data-file-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Directory were Cassandra should store the data of the local system keyspaces.
+By default Cassandra will store the data of the local system keyspaces (at the exception of the system.batches,
+system.paxos, system.compaction_history, system.prepared_statements and system.repair tables) in the first of the data
+directories specified by data_file_directories.
+This approach ensures that if one of the other disks is lost Cassandra can continue to operate. For extra security
+this setting allows to store those data on a different directory that provides redundancy.</p>
+</div>
+<div class="section" id="commitlog-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_directory</span></code><a class="headerlink" href="#commitlog-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+commit log.  when running on magnetic HDD, this should be a
+separate spindle than the data directories.
+If not set, the default directory is $CASSANDRA_HOME/data/commitlog.</p>
+<p><em>Default Value:</em>  /var/lib/cassandra/commitlog</p>
+</div>
+<div class="section" id="cdc-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">cdc_enabled</span></code><a class="headerlink" href="#cdc-enabled" title="Permalink to this headline">¶</a></h2>
+<p>Enable / disable CDC functionality on a per-node basis. This modifies the logic used
+for write path allocation rejection (standard: never reject. cdc: reject Mutation
+containing a CDC-enabled table if at space limit in cdc_raw_directory).</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="cdc-raw-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">cdc_raw_directory</span></code><a class="headerlink" href="#cdc-raw-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the
+segment contains mutations for a CDC-enabled table. This should be placed on a
+separate spindle than the data directories. If not set, the default directory is
+$CASSANDRA_HOME/data/cdc_raw.</p>
+<p><em>Default Value:</em>  /var/lib/cassandra/cdc_raw</p>
+</div>
+<div class="section" id="disk-failure-policy">
+<h2><code class="docutils literal notranslate"><span class="pre">disk_failure_policy</span></code><a class="headerlink" href="#disk-failure-policy" title="Permalink to this headline">¶</a></h2>
+<p>Policy for data disk failures:</p>
+<dl class="docutils">
+<dt>die</dt>
+<dd>shut down gossip and client transports and kill the JVM for any fs errors or
+single-sstable errors, so the node can be replaced.</dd>
+<dt>stop_paranoid</dt>
+<dd>shut down gossip and client transports even for single-sstable errors,
+kill the JVM for errors during startup.</dd>
+<dt>stop</dt>
+<dd>shut down gossip and client transports, leaving the node effectively dead, but
+can still be inspected via JMX, kill the JVM for errors during startup.</dd>
+<dt>best_effort</dt>
+<dd>stop using the failed disk and respond to requests based on
+remaining available sstables.  This means you WILL see obsolete
+data at CL.ONE!</dd>
+<dt>ignore</dt>
+<dd>ignore fatal errors and let requests fail, as in pre-1.2 Cassandra</dd>
+</dl>
+<p><em>Default Value:</em> stop</p>
+</div>
+<div class="section" id="commit-failure-policy">
+<h2><code class="docutils literal notranslate"><span class="pre">commit_failure_policy</span></code><a class="headerlink" href="#commit-failure-policy" title="Permalink to this headline">¶</a></h2>
+<p>Policy for commit disk failures:</p>
+<dl class="docutils">
+<dt>die</dt>
+<dd>shut down the node and kill the JVM, so the node can be replaced.</dd>
+<dt>stop</dt>
+<dd>shut down the node, leaving the node effectively dead, but
+can still be inspected via JMX.</dd>
+<dt>stop_commit</dt>
+<dd>shutdown the commit log, letting writes collect but
+continuing to service reads, as in pre-2.0.5 Cassandra</dd>
+<dt>ignore</dt>
+<dd>ignore fatal errors and let the batches fail</dd>
+</dl>
+<p><em>Default Value:</em> stop</p>
+</div>
+<div class="section" id="prepared-statements-cache-size-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">prepared_statements_cache_size_mb</span></code><a class="headerlink" href="#prepared-statements-cache-size-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size of the native protocol prepared statement cache</p>
+<p>Valid values are either “auto” (omitting the value) or a value greater 0.</p>
+<p>Note that specifying a too large value will result in long running GCs and possbily
+out-of-memory errors. Keep the value at a small fraction of the heap.</p>
+<p>If you constantly see “prepared statements discarded in the last minute because
+cache limit reached” messages, the first step is to investigate the root cause
+of these messages and check whether prepared statements are used correctly -
+i.e. use bind markers for variable parts.</p>
+<p>Do only change the default value, if you really have more prepared statements than
+fit in the cache. In most cases it is not neccessary to change this value.
+Constantly re-preparing statements is a performance penalty.</p>
+<p>Default value (“auto”) is 1/256th of the heap or 10MB, whichever is greater</p>
+</div>
+<div class="section" id="key-cache-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">key_cache_size_in_mb</span></code><a class="headerlink" href="#key-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size of the key cache in memory.</p>
+<p>Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
+minimum, sometimes more. The key cache is fairly tiny for the amount of
+time it saves, so it’s worthwhile to use it at large numbers.
+The row cache saves even more time, but must contain the entire row,
+so it is extremely space-intensive. It’s best to only use the
+row cache if you have hot rows or static rows.</p>
+<p>NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.</p>
+<p>Default value is empty to make it “auto” (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache.</p>
+</div>
+<div class="section" id="key-cache-save-period">
+<h2><code class="docutils literal notranslate"><span class="pre">key_cache_save_period</span></code><a class="headerlink" href="#key-cache-save-period" title="Permalink to this headline">¶</a></h2>
+<p>Duration in seconds after which Cassandra should
+save the key cache. Caches are saved to saved_caches_directory as
+specified in this configuration file.</p>
+<p>Saved caches greatly improve cold-start speeds, and is relatively cheap in
+terms of I/O for the key cache. Row cache saving is much more expensive and
+has limited use.</p>
+<p>Default is 14400 or 4 hours.</p>
+<p><em>Default Value:</em> 14400</p>
+</div>
+<div class="section" id="key-cache-keys-to-save">
+<h2><code class="docutils literal notranslate"><span class="pre">key_cache_keys_to_save</span></code><a class="headerlink" href="#key-cache-keys-to-save" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of keys from the key cache to save
+Disabled by default, meaning all keys are going to be saved</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="row-cache-class-name">
+<h2><code class="docutils literal notranslate"><span class="pre">row_cache_class_name</span></code><a class="headerlink" href="#row-cache-class-name" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Row cache implementation class name. Available implementations:</p>
+<dl class="docutils">
+<dt>org.apache.cassandra.cache.OHCProvider</dt>
+<dd>Fully off-heap row cache implementation (default).</dd>
+<dt>org.apache.cassandra.cache.SerializingCacheProvider</dt>
+<dd>This is the row cache implementation availabile
+in previous releases of Cassandra.</dd>
+</dl>
+<p><em>Default Value:</em> org.apache.cassandra.cache.OHCProvider</p>
+</div>
+<div class="section" id="row-cache-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">row_cache_size_in_mb</span></code><a class="headerlink" href="#row-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size of the row cache in memory.
+Please note that OHC cache implementation requires some additional off-heap memory to manage
+the map structures and some in-flight memory during operations before/after cache entries can be
+accounted against the cache capacity. This overhead is usually small compared to the whole capacity.
+Do not specify more memory that the system can afford in the worst usual situation and leave some
+headroom for OS block level cache. Do never allow your system to swap.</p>
+<p>Default value is 0, to disable row caching.</p>
+<p><em>Default Value:</em> 0</p>
+</div>
+<div class="section" id="row-cache-save-period">
+<h2><code class="docutils literal notranslate"><span class="pre">row_cache_save_period</span></code><a class="headerlink" href="#row-cache-save-period" title="Permalink to this headline">¶</a></h2>
+<p>Duration in seconds after which Cassandra should save the row cache.
+Caches are saved to saved_caches_directory as specified in this configuration file.</p>
+<p>Saved caches greatly improve cold-start speeds, and is relatively cheap in
+terms of I/O for the key cache. Row cache saving is much more expensive and
+has limited use.</p>
+<p>Default is 0 to disable saving the row cache.</p>
+<p><em>Default Value:</em> 0</p>
+</div>
+<div class="section" id="row-cache-keys-to-save">
+<h2><code class="docutils literal notranslate"><span class="pre">row_cache_keys_to_save</span></code><a class="headerlink" href="#row-cache-keys-to-save" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of keys from the row cache to save.
+Specify 0 (which is the default), meaning all keys are going to be saved</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="counter-cache-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">counter_cache_size_in_mb</span></code><a class="headerlink" href="#counter-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size of the counter cache in memory.</p>
+<p>Counter cache helps to reduce counter locks’ contention for hot counter cells.
+In case of RF = 1 a counter cache hit will cause Cassandra to skip the read before
+write entirely. With RF &gt; 1 a counter cache hit will still help to reduce the duration
+of the lock hold, helping with hot counter cell updates, but will not allow skipping
+the read entirely. Only the local (clock, count) tuple of a counter cell is kept
+in memory, not the whole counter, so it’s relatively cheap.</p>
+<p>NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.</p>
+<p>Default value is empty to make it “auto” (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache.
+NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache.</p>
+</div>
+<div class="section" id="counter-cache-save-period">
+<h2><code class="docutils literal notranslate"><span class="pre">counter_cache_save_period</span></code><a class="headerlink" href="#counter-cache-save-period" title="Permalink to this headline">¶</a></h2>
+<p>Duration in seconds after which Cassandra should
+save the counter cache (keys only). Caches are saved to saved_caches_directory as
+specified in this configuration file.</p>
+<p>Default is 7200 or 2 hours.</p>
+<p><em>Default Value:</em> 7200</p>
+</div>
+<div class="section" id="counter-cache-keys-to-save">
+<h2><code class="docutils literal notranslate"><span class="pre">counter_cache_keys_to_save</span></code><a class="headerlink" href="#counter-cache-keys-to-save" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of keys from the counter cache to save
+Disabled by default, meaning all keys are going to be saved</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="saved-caches-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">saved_caches_directory</span></code><a class="headerlink" href="#saved-caches-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>saved caches
+If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.</p>
+<p><em>Default Value:</em>  /var/lib/cassandra/saved_caches</p>
+</div>
+<div class="section" id="commitlog-sync-batch-window-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_sync_batch_window_in_ms</span></code><a class="headerlink" href="#commitlog-sync-batch-window-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>commitlog_sync may be either “periodic”, “group”, or “batch.”</p>
+<p>When in batch mode, Cassandra won’t ack writes until the commit log
+has been flushed to disk.  Each incoming write will trigger the flush task.
+commitlog_sync_batch_window_in_ms is a deprecated value. Previously it had
+almost no value, and is being removed.</p>
+<p><em>Default Value:</em> 2</p>
+</div>
+<div class="section" id="commitlog-sync-group-window-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_sync_group_window_in_ms</span></code><a class="headerlink" href="#commitlog-sync-group-window-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>group mode is similar to batch mode, where Cassandra will not ack writes
+until the commit log has been flushed to disk. The difference is group
+mode will wait up to commitlog_sync_group_window_in_ms between flushes.</p>
+<p><em>Default Value:</em> 1000</p>
+</div>
+<div class="section" id="commitlog-sync">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_sync</span></code><a class="headerlink" href="#commitlog-sync" title="Permalink to this headline">¶</a></h2>
+<p>the default option is “periodic” where writes may be acked immediately
+and the CommitLog is simply synced every commitlog_sync_period_in_ms
+milliseconds.</p>
+<p><em>Default Value:</em> periodic</p>
+</div>
+<div class="section" id="commitlog-sync-period-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_sync_period_in_ms</span></code><a class="headerlink" href="#commitlog-sync-period-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 10000</p>
+</div>
+<div class="section" id="periodic-commitlog-sync-lag-block-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">periodic_commitlog_sync_lag_block_in_ms</span></code><a class="headerlink" href="#periodic-commitlog-sync-lag-block-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>When in periodic commitlog mode, the number of milliseconds to block writes
+while waiting for a slow disk flush to complete.</p>
+</div>
+<div class="section" id="commitlog-segment-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_segment_size_in_mb</span></code><a class="headerlink" href="#commitlog-segment-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>The size of the individual commitlog file segments.  A commitlog
+segment may be archived, deleted, or recycled once all the data
+in it (potentially from each columnfamily in the system) has been
+flushed to sstables.</p>
+<p>The default size is 32, which is almost always fine, but if you are
+archiving commitlog segments (see commitlog_archiving.properties),
+then you probably want a finer granularity of archiving; 8 or 16 MB
+is reasonable.
+Max mutation size is also configurable via max_mutation_size_in_kb setting in
+cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024.
+This should be positive and less than 2048.</p>
+<p>NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must
+be set to at least twice the size of max_mutation_size_in_kb / 1024</p>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="commitlog-compression">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_compression</span></code><a class="headerlink" href="#commitlog-compression" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Compression to apply to the commit log. If omitted, the commit log
+will be written uncompressed.  LZ4, Snappy, and Deflate compressors
+are supported.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#   - class_name: LZ4Compressor</span>
+<span class="c1">#     parameters:</span>
+<span class="c1">#         -</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="table">
+<h2><code class="docutils literal notranslate"><span class="pre">table</span></code><a class="headerlink" href="#table" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+Compression to apply to SSTables as they flush for compressed tables.
+Note that tables without compression enabled do not respect this flag.</p>
+<p>As high ratio compressors like LZ4HC, Zstd, and Deflate can potentially
+block flushes for too long, the default is to flush with a known fast
+compressor in those cases. Options are:</p>
+<p>none : Flush without compressing blocks but while still doing checksums.
+fast : Flush with a fast compressor. If the table is already using a</p>
+<blockquote>
+<div>fast compressor that compressor is used.</div></blockquote>
+<p><em>Default Value:</em> Always flush with the same compressor that the table uses. This</p>
+</div>
+<div class="section" id="flush-compression">
+<h2><code class="docutils literal notranslate"><span class="pre">flush_compression</span></code><a class="headerlink" href="#flush-compression" title="Permalink to this headline">¶</a></h2>
+<dl class="docutils">
+<dt><em>This option is commented out by default.</em></dt>
+<dd>was the pre 4.0 behavior.</dd>
+</dl>
+<p><em>Default Value:</em> fast</p>
+</div>
+<div class="section" id="seed-provider">
+<h2><code class="docutils literal notranslate"><span class="pre">seed_provider</span></code><a class="headerlink" href="#seed-provider" title="Permalink to this headline">¶</a></h2>
+<p>any class that implements the SeedProvider interface and has a
+constructor that takes a Map&lt;String, String&gt; of parameters will do.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Addresses of hosts that are deemed contact points.</span>
+<span class="c1"># Cassandra nodes use this list of hosts to find each other and learn</span>
+<span class="c1"># the topology of the ring.  You must change this if you are running</span>
+<span class="c1"># multiple nodes!</span>
+<span class="o">-</span> <span class="n">class_name</span><span class="p">:</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">SimpleSeedProvider</span>
+  <span class="n">parameters</span><span class="p">:</span>
+      <span class="c1"># seeds is actually a comma-delimited list of addresses.</span>
+      <span class="c1"># Ex: &quot;&lt;ip1&gt;,&lt;ip2&gt;,&lt;ip3&gt;&quot;</span>
+      <span class="o">-</span> <span class="n">seeds</span><span class="p">:</span> <span class="s2">&quot;127.0.0.1:7000&quot;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="concurrent-reads">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_reads</span></code><a class="headerlink" href="#concurrent-reads" title="Permalink to this headline">¶</a></h2>
+<p>For workloads with more data than can fit in memory, Cassandra’s
+bottleneck will be reads that need to fetch data from
+disk. “concurrent_reads” should be set to (16 * number_of_drives) in
+order to allow the operations to enqueue low enough in the stack
+that the OS and drives can reorder them. Same applies to
+“concurrent_counter_writes”, since counter writes read the current
+values before incrementing and writing them back.</p>
+<p>On the other hand, since writes are almost never IO bound, the ideal
+number of “concurrent_writes” is dependent on the number of cores in
+your system; (8 * number_of_cores) is a good rule of thumb.</p>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="concurrent-writes">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_writes</span></code><a class="headerlink" href="#concurrent-writes" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="concurrent-counter-writes">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_counter_writes</span></code><a class="headerlink" href="#concurrent-counter-writes" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="concurrent-materialized-view-writes">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_materialized_view_writes</span></code><a class="headerlink" href="#concurrent-materialized-view-writes" title="Permalink to this headline">¶</a></h2>
+<p>For materialized view writes, as there is a read involved, so this should
+be limited by the less of concurrent reads or concurrent writes.</p>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="file-cache-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">file_cache_size_in_mb</span></code><a class="headerlink" href="#file-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Maximum memory to use for sstable chunk cache and buffer pooling.
+32MB of this are reserved for pooling buffers, the rest is used as an
+cache that holds uncompressed sstable chunks.
+Defaults to the smaller of 1/4 of heap or 512MB. This pool is allocated off-heap,
+so is in addition to the memory allocated for heap. The cache also has on-heap
+overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size
+if the default 64k chunk size is used).
+Memory is only allocated when needed.</p>
+<p><em>Default Value:</em> 512</p>
+</div>
+<div class="section" id="buffer-pool-use-heap-if-exhausted">
+<h2><code class="docutils literal notranslate"><span class="pre">buffer_pool_use_heap_if_exhausted</span></code><a class="headerlink" href="#buffer-pool-use-heap-if-exhausted" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Flag indicating whether to allocate on or off heap when the sstable buffer
+pool is exhausted, that is when it has exceeded the maximum memory
+file_cache_size_in_mb, beyond which it will not cache buffers but allocate on request.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="disk-optimization-strategy">
+<h2><code class="docutils literal notranslate"><span class="pre">disk_optimization_strategy</span></code><a class="headerlink" href="#disk-optimization-strategy" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>The strategy for optimizing disk read
+Possible values are:
+ssd (for solid state disks, the default)
+spinning (for spinning disks)</p>
+<p><em>Default Value:</em> ssd</p>
+</div>
+<div class="section" id="memtable-heap-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_heap_space_in_mb</span></code><a class="headerlink" href="#memtable-heap-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Total permitted memory to use for memtables. Cassandra will stop
+accepting writes when the limit is exceeded until a flush completes,
+and will trigger a flush based on memtable_cleanup_threshold
+If omitted, Cassandra will set both to 1/4 the size of the heap.</p>
+<p><em>Default Value:</em> 2048</p>
+</div>
+<div class="section" id="memtable-offheap-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_offheap_space_in_mb</span></code><a class="headerlink" href="#memtable-offheap-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 2048</p>
+</div>
+<div class="section" id="memtable-cleanup-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_cleanup_threshold</span></code><a class="headerlink" href="#memtable-cleanup-threshold" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>memtable_cleanup_threshold is deprecated. The default calculation
+is the only reasonable choice. See the comments on  memtable_flush_writers
+for more information.</p>
+<p>Ratio of occupied non-flushing memtable size to total permitted size
+that will trigger a flush of the largest memtable. Larger mct will
+mean larger flushes and hence less compaction, but also less concurrent
+flush activity which can make it difficult to keep your disks fed
+under heavy write load.</p>
+<p>memtable_cleanup_threshold defaults to 1 / (memtable_flush_writers + 1)</p>
+<p><em>Default Value:</em> 0.11</p>
+</div>
+<div class="section" id="memtable-allocation-type">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_allocation_type</span></code><a class="headerlink" href="#memtable-allocation-type" title="Permalink to this headline">¶</a></h2>
+<p>Specify the way Cassandra allocates and manages memtable memory.
+Options are:</p>
+<dl class="docutils">
+<dt>heap_buffers</dt>
+<dd>on heap nio buffers</dd>
+<dt>offheap_buffers</dt>
+<dd>off heap (direct) nio buffers</dd>
+<dt>offheap_objects</dt>
+<dd>off heap objects</dd>
+</dl>
+<p><em>Default Value:</em> heap_buffers</p>
+</div>
+<div class="section" id="repair-session-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">repair_session_space_in_mb</span></code><a class="headerlink" href="#repair-session-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Limit memory usage for Merkle tree calculations during repairs. The default
+is 1/16th of the available heap. The main tradeoff is that smaller trees
+have less resolution, which can lead to over-streaming data. If you see heap
+pressure during repairs, consider lowering this, but you cannot go below
+one megabyte. If you see lots of over-streaming, consider raising
+this or using subrange repair.</p>
+<p>For more details see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14096">https://issues.apache.org/jira/browse/CASSANDRA-14096</a>.</p>
+</div>
+<div class="section" id="commitlog-total-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_total_space_in_mb</span></code><a class="headerlink" href="#commitlog-total-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Total space to use for commit logs on disk.</p>
+<p>If space gets above this value, Cassandra will flush every dirty CF
+in the oldest segment and remove it.  So a small total commitlog space
+will tend to cause more flush activity on less-active columnfamilies.</p>
+<p>The default value is the smaller of 8192, and 1/4 of the total space
+of the commitlog volume.</p>
+<p><em>Default Value:</em> 8192</p>
+</div>
+<div class="section" id="memtable-flush-writers">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_flush_writers</span></code><a class="headerlink" href="#memtable-flush-writers" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>This sets the number of memtable flush writer threads per disk
+as well as the total number of memtables that can be flushed concurrently.
+These are generally a combination of compute and IO bound.</p>
+<p>Memtable flushing is more CPU efficient than memtable ingest and a single thread
+can keep up with the ingest rate of a whole server on a single fast disk
+until it temporarily becomes IO bound under contention typically with compaction.
+At that point you need multiple flush threads. At some point in the future
+it may become CPU bound all the time.</p>
+<p>You can tell if flushing is falling behind using the MemtablePool.BlockedOnAllocation
+metric which should be 0, but will be non-zero if threads are blocked waiting on flushing
+to free memory.</p>
+<p>memtable_flush_writers defaults to two for a single data directory.
+This means that two  memtables can be flushed concurrently to the single data directory.
+If you have multiple data directories the default is one memtable flushing at a time
+but the flush will use a thread per data directory so you will get two or more writers.</p>
+<p>Two is generally enough to flush on a fast disk [array] mounted as a single data directory.
+Adding more flush writers will result in smaller more frequent flushes that introduce more
+compaction overhead.</p>
+<p>There is a direct tradeoff between number of memtables that can be flushed concurrently
+and flush size and frequency. More is not better you just need enough flush writers
+to never stall waiting for flushing to free memory.</p>
+<p><em>Default Value:</em> 2</p>
+</div>
+<div class="section" id="cdc-total-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">cdc_total_space_in_mb</span></code><a class="headerlink" href="#cdc-total-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Total space to use for change-data-capture logs on disk.</p>
+<p>If space gets above this value, Cassandra will throw WriteTimeoutException
+on Mutations including tables with CDC enabled. A CDCCompactor is responsible
+for parsing the raw CDC logs and deleting them when parsing is completed.</p>
+<p>The default value is the min of 4096 mb and 1/8th of the total space
+of the drive where cdc_raw_directory resides.</p>
+<p><em>Default Value:</em> 4096</p>
+</div>
+<div class="section" id="cdc-free-space-check-interval-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">cdc_free_space_check_interval_ms</span></code><a class="headerlink" href="#cdc-free-space-check-interval-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>When we hit our cdc_raw limit and the CDCCompactor is either running behind
+or experiencing backpressure, we check at the following interval to see if any
+new space for cdc-tracked tables has been made available. Default to 250ms</p>
+<p><em>Default Value:</em> 250</p>
+</div>
+<div class="section" id="index-summary-capacity-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">index_summary_capacity_in_mb</span></code><a class="headerlink" href="#index-summary-capacity-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>A fixed memory pool size in MB for for SSTable index summaries. If left
+empty, this will default to 5% of the heap size. If the memory usage of
+all index summaries exceeds this limit, SSTables with low read rates will
+shrink their index summaries in order to meet this limit.  However, this
+is a best-effort process. In extreme conditions Cassandra may need to use
+more than this amount of memory.</p>
+</div>
+<div class="section" id="index-summary-resize-interval-in-minutes">
+<h2><code class="docutils literal notranslate"><span class="pre">index_summary_resize_interval_in_minutes</span></code><a class="headerlink" href="#index-summary-resize-interval-in-minutes" title="Permalink to this headline">¶</a></h2>
+<p>How frequently index summaries should be resampled.  This is done
+periodically to redistribute memory from the fixed-size pool to sstables
+proportional their recent read rates.  Setting to -1 will disable this
+process, leaving existing index summaries at their current sampling level.</p>
+<p><em>Default Value:</em> 60</p>
+</div>
+<div class="section" id="trickle-fsync">
+<h2><code class="docutils literal notranslate"><span class="pre">trickle_fsync</span></code><a class="headerlink" href="#trickle-fsync" title="Permalink to this headline">¶</a></h2>
+<p>Whether to, when doing sequential writing, fsync() at intervals in
+order to force the operating system to flush the dirty
+buffers. Enable this to avoid sudden dirty buffer flushing from
+impacting read latencies. Almost always a good idea on SSDs; not
+necessarily on platters.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="trickle-fsync-interval-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">trickle_fsync_interval_in_kb</span></code><a class="headerlink" href="#trickle-fsync-interval-in-kb" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 10240</p>
+</div>
+<div class="section" id="storage-port">
+<h2><code class="docutils literal notranslate"><span class="pre">storage_port</span></code><a class="headerlink" href="#storage-port" title="Permalink to this headline">¶</a></h2>
+<p>TCP port, for commands and data
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
+<p><em>Default Value:</em> 7000</p>
+</div>
+<div class="section" id="ssl-storage-port">
+<h2><code class="docutils literal notranslate"><span class="pre">ssl_storage_port</span></code><a class="headerlink" href="#ssl-storage-port" title="Permalink to this headline">¶</a></h2>
+<p>SSL port, for legacy encrypted communication. This property is unused unless enabled in
+server_encryption_options (see below). As of cassandra 4.0, this property is deprecated
+as a single port can be used for either/both secure and insecure connections.
+For security reasons, you should not expose this port to the internet. Firewall it if needed.</p>
+<p><em>Default Value:</em> 7001</p>
+</div>
+<div class="section" id="listen-address">
+<h2><code class="docutils literal notranslate"><span class="pre">listen_address</span></code><a class="headerlink" href="#listen-address" title="Permalink to this headline">¶</a></h2>
+<p>Address or interface to bind to and tell other Cassandra nodes to connect to.
+You _must_ change this if you want multiple nodes to be able to communicate!</p>
+<p>Set listen_address OR listen_interface, not both.</p>
+<p>Leaving it blank leaves it up to InetAddress.getLocalHost(). This
+will always do the Right Thing _if_ the node is properly configured
+(hostname, name resolution, etc), and the Right Thing is to use the
+address associated with the hostname (it might not be).</p>
+<p>Setting listen_address to 0.0.0.0 is always wrong.</p>
+<p><em>Default Value:</em> localhost</p>
+</div>
+<div class="section" id="listen-interface">
+<h2><code class="docutils literal notranslate"><span class="pre">listen_interface</span></code><a class="headerlink" href="#listen-interface" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Set listen_address OR listen_interface, not both. Interfaces must correspond
+to a single address, IP aliasing is not supported.</p>
+<p><em>Default Value:</em> eth0</p>
+</div>
+<div class="section" id="listen-interface-prefer-ipv6">
+<h2><code class="docutils literal notranslate"><span class="pre">listen_interface_prefer_ipv6</span></code><a class="headerlink" href="#listen-interface-prefer-ipv6" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
+you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4
+address will be used. If true the first ipv6 address will be used. Defaults to false preferring
+ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="broadcast-address">
+<h2><code class="docutils literal notranslate"><span class="pre">broadcast_address</span></code><a class="headerlink" href="#broadcast-address" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Address to broadcast to other Cassandra nodes
+Leaving this blank will set it to the same value as listen_address</p>
+<p><em>Default Value:</em> 1.2.3.4</p>
+</div>
+<div class="section" id="listen-on-broadcast-address">
+<h2><code class="docutils literal notranslate"><span class="pre">listen_on_broadcast_address</span></code><a class="headerlink" href="#listen-on-broadcast-address" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>When using multiple physical network interfaces, set this
+to true to listen on broadcast_address in addition to
+the listen_address, allowing nodes to communicate in both
+interfaces.
+Ignore this property if the network configuration automatically
+routes  between the public and private networks such as EC2.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="internode-authenticator">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_authenticator</span></code><a class="headerlink" href="#internode-authenticator" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Internode authentication backend, implementing IInternodeAuthenticator;
+used to allow/disallow connections from peer nodes.</p>
+<p><em>Default Value:</em> org.apache.cassandra.auth.AllowAllInternodeAuthenticator</p>
+</div>
+<div class="section" id="start-native-transport">
+<h2><code class="docutils literal notranslate"><span class="pre">start_native_transport</span></code><a class="headerlink" href="#start-native-transport" title="Permalink to this headline">¶</a></h2>
+<p>Whether to start the native transport server.
+The address on which the native transport is bound is defined by rpc_address.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="native-transport-port">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_port</span></code><a class="headerlink" href="#native-transport-port" title="Permalink to this headline">¶</a></h2>
+<p>port for the CQL native transport to listen for clients on
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
+<p><em>Default Value:</em> 9042</p>
+</div>
+<div class="section" id="native-transport-port-ssl">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_port_ssl</span></code><a class="headerlink" href="#native-transport-port-ssl" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+Enabling native transport encryption in client_encryption_options allows you to either use
+encryption for the standard port or to use a dedicated, additional port along with the unencrypted
+standard native_transport_port.
+Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption
+for native_transport_port. Setting native_transport_port_ssl to a different value
+from native_transport_port will use encryption for native_transport_port_ssl while
+keeping native_transport_port unencrypted.</p>
+<p><em>Default Value:</em> 9142</p>
+</div>
+<div class="section" id="native-transport-max-threads">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_max_threads</span></code><a class="headerlink" href="#native-transport-max-threads" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+The maximum threads for handling requests (note that idle threads are stopped
+after 30 seconds so there is not corresponding minimum setting).</p>
+<p><em>Default Value:</em> 128</p>
+</div>
+<div class="section" id="native-transport-max-frame-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_max_frame_size_in_mb</span></code><a class="headerlink" href="#native-transport-max-frame-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>The maximum size of allowed frame. Frame (requests) larger than this will
+be rejected as invalid. The default is 256MB. If you’re changing this parameter,
+you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048.</p>
+<p><em>Default Value:</em> 256</p>
+</div>
+<div class="section" id="native-transport-frame-block-size-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_frame_block_size_in_kb</span></code><a class="headerlink" href="#native-transport-frame-block-size-in-kb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>If checksumming is enabled as a protocol option, denotes the size of the chunks into which frame
+are bodies will be broken and checksummed.</p>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="native-transport-max-concurrent-connections">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_max_concurrent_connections</span></code><a class="headerlink" href="#native-transport-max-concurrent-connections" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>The maximum number of concurrent client connections.
+The default is -1, which means unlimited.</p>
+<p><em>Default Value:</em> -1</p>
+</div>
+<div class="section" id="native-transport-max-concurrent-connections-per-ip">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_max_concurrent_connections_per_ip</span></code><a class="headerlink" href="#native-transport-max-concurrent-connections-per-ip" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>The maximum number of concurrent client connections per source ip.
+The default is -1, which means unlimited.</p>
+<p><em>Default Value:</em> -1</p>
+</div>
+<div class="section" id="native-transport-allow-older-protocols">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_allow_older_protocols</span></code><a class="headerlink" href="#native-transport-allow-older-protocols" title="Permalink to this headline">¶</a></h2>
+<p>Controls whether Cassandra honors older, yet currently supported, protocol versions.
+The default is true, which means all supported protocols will be honored.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="native-transport-idle-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_idle_timeout_in_ms</span></code><a class="headerlink" href="#native-transport-idle-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Controls when idle client connections are closed. Idle connections are ones that had neither reads
+nor writes for a time period.</p>
+<p>Clients may implement heartbeats by sending OPTIONS native protocol message after a timeout, which
+will reset idle timeout timer on the server side. To close idle client connections, corresponding
+values for heartbeat intervals have to be set on the client side.</p>
+<p>Idle connection timeouts are disabled by default.</p>
+<p><em>Default Value:</em> 60000</p>
+</div>
+<div class="section" id="rpc-address">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_address</span></code><a class="headerlink" href="#rpc-address" title="Permalink to this headline">¶</a></h2>
+<p>The address or interface to bind the native transport server to.</p>
+<p>Set rpc_address OR rpc_interface, not both.</p>
+<p>Leaving rpc_address blank has the same effect as on listen_address
+(i.e. it will be based on the configured hostname of the node).</p>
+<p>Note that unlike listen_address, you can specify 0.0.0.0, but you must also
+set broadcast_rpc_address to a value other than 0.0.0.0.</p>
+<p>For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
+<p><em>Default Value:</em> localhost</p>
+</div>
+<div class="section" id="rpc-interface">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_interface</span></code><a class="headerlink" href="#rpc-interface" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Set rpc_address OR rpc_interface, not both. Interfaces must correspond
+to a single address, IP aliasing is not supported.</p>
+<p><em>Default Value:</em> eth1</p>
+</div>
+<div class="section" id="rpc-interface-prefer-ipv6">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_interface_prefer_ipv6</span></code><a class="headerlink" href="#rpc-interface-prefer-ipv6" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
+you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4
+address will be used. If true the first ipv6 address will be used. Defaults to false preferring
+ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="broadcast-rpc-address">
+<h2><code class="docutils literal notranslate"><span class="pre">broadcast_rpc_address</span></code><a class="headerlink" href="#broadcast-rpc-address" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>RPC address to broadcast to drivers and other Cassandra nodes. This cannot
+be set to 0.0.0.0. If left blank, this will be set to the value of
+rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must
+be set.</p>
+<p><em>Default Value:</em> 1.2.3.4</p>
+</div>
+<div class="section" id="rpc-keepalive">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_keepalive</span></code><a class="headerlink" href="#rpc-keepalive" title="Permalink to this headline">¶</a></h2>
+<p>enable or disable keepalive on rpc/native connections</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="internode-send-buff-size-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_send_buff_size_in_bytes</span></code><a class="headerlink" href="#internode-send-buff-size-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Uncomment to set socket buffer size for internode communication
+Note that when setting this, the buffer size is limited by net.core.wmem_max
+and when not setting it it is defined by net.ipv4.tcp_wmem
+See also:
+/proc/sys/net/core/wmem_max
+/proc/sys/net/core/rmem_max
+/proc/sys/net/ipv4/tcp_wmem
+/proc/sys/net/ipv4/tcp_wmem
+and ‘man tcp’</p>
+</div>
+<div class="section" id="internode-recv-buff-size-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_recv_buff_size_in_bytes</span></code><a class="headerlink" href="#internode-recv-buff-size-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Uncomment to set socket buffer size for internode communication
+Note that when setting this, the buffer size is limited by net.core.wmem_max
+and when not setting it it is defined by net.ipv4.tcp_wmem</p>
+</div>
+<div class="section" id="incremental-backups">
+<h2><code class="docutils literal notranslate"><span class="pre">incremental_backups</span></code><a class="headerlink" href="#incremental-backups" title="Permalink to this headline">¶</a></h2>
+<p>Set to true to have Cassandra create a hard link to each sstable
+flushed or streamed locally in a backups/ subdirectory of the
+keyspace data.  Removing these links is the operator’s
+responsibility.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="snapshot-before-compaction">
+<h2><code class="docutils literal notranslate"><span class="pre">snapshot_before_compaction</span></code><a class="headerlink" href="#snapshot-before-compaction" title="Permalink to this headline">¶</a></h2>
+<p>Whether or not to take a snapshot before each compaction.  Be
+careful using this option, since Cassandra won’t clean up the
+snapshots for you.  Mostly useful if you’re paranoid when there
+is a data format change.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="auto-snapshot">
+<h2><code class="docutils literal notranslate"><span class="pre">auto_snapshot</span></code><a class="headerlink" href="#auto-snapshot" title="Permalink to this headline">¶</a></h2>
+<p>Whether or not a snapshot is taken of the data before keyspace truncation
+or dropping of column families. The STRONGLY advised default of true
+should be used to provide data safety. If you set this flag to false, you will
+lose data on truncation or drop.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="column-index-size-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">column_index_size_in_kb</span></code><a class="headerlink" href="#column-index-size-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Granularity of the collation index of rows within a partition.
+Increase if your rows are large, or if you have a very large
+number of rows per partition.  The competing goals are these:</p>
+<ul class="simple">
+<li>a smaller granularity means more index entries are generated
+and looking up rows withing the partition by collation column
+is faster</li>
+<li>but, Cassandra will keep the collation index in memory for hot
+rows (as part of the key cache), so a larger granularity means
+you can cache more hot rows</li>
+</ul>
+<p><em>Default Value:</em> 64</p>
+</div>
+<div class="section" id="column-index-cache-size-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">column_index_cache_size_in_kb</span></code><a class="headerlink" href="#column-index-cache-size-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Per sstable indexed key cache entries (the collation index in memory
+mentioned above) exceeding this size will not be held on heap.
+This means that only partition information is held on heap and the
+index entries are read from disk.</p>
+<p>Note that this size refers to the size of the
+serialized index information and not the size of the partition.</p>
+<p><em>Default Value:</em> 2</p>
+</div>
+<div class="section" id="concurrent-compactors">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_compactors</span></code><a class="headerlink" href="#concurrent-compactors" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of simultaneous compactions to allow, NOT including
+validation “compactions” for anti-entropy repair.  Simultaneous
+compactions can help preserve read performance in a mixed read/write
+workload, by mitigating the tendency of small sstables to accumulate
+during a single long running compactions. The default is usually
+fine and if you experience problems with compaction running too
+slowly or too fast, you should look at
+compaction_throughput_mb_per_sec first.</p>
+<p>concurrent_compactors defaults to the smaller of (number of disks,
+number of cores), with a minimum of 2 and a maximum of 8.</p>
+<p>If your data directories are backed by SSD, you should increase this
+to the number of cores.</p>
+<p><em>Default Value:</em> 1</p>
+</div>
+<div class="section" id="concurrent-validations">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_validations</span></code><a class="headerlink" href="#concurrent-validations" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of simultaneous repair validations to allow. Default is unbounded
+Values less than one are interpreted as unbounded (the default)</p>
+<p><em>Default Value:</em> 0</p>
+</div>
+<div class="section" id="concurrent-materialized-view-builders">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_materialized_view_builders</span></code><a class="headerlink" href="#concurrent-materialized-view-builders" title="Permalink to this headline">¶</a></h2>
+<p>Number of simultaneous materialized view builder tasks to allow.</p>
+<p><em>Default Value:</em> 1</p>
+</div>
+<div class="section" id="compaction-throughput-mb-per-sec">
+<h2><code class="docutils literal notranslate"><span class="pre">compaction_throughput_mb_per_sec</span></code><a class="headerlink" href="#compaction-throughput-mb-per-sec" title="Permalink to this headline">¶</a></h2>
+<p>Throttles compaction to the given total throughput across the entire
+system. The faster you insert data, the faster you need to compact in
+order to keep the sstable count down, but in general, setting this to
+16 to 32 times the rate you are inserting data is more than sufficient.
+Setting this to 0 disables throttling. Note that this account for all types
+of compaction, including validation compaction.</p>
+<p><em>Default Value:</em> 16</p>
+</div>
+<div class="section" id="sstable-preemptive-open-interval-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">sstable_preemptive_open_interval_in_mb</span></code><a class="headerlink" href="#sstable-preemptive-open-interval-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>When compacting, the replacement sstable(s) can be opened before they
+are completely written, and used in place of the prior sstables for
+any range that has been written. This helps to smoothly transfer reads
+between the sstables, reducing page cache churn and keeping hot rows hot</p>
+<p><em>Default Value:</em> 50</p>
+</div>
+<div class="section" id="stream-entire-sstables">
+<h2><code class="docutils literal notranslate"><span class="pre">stream_entire_sstables</span></code><a class="headerlink" href="#stream-entire-sstables" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>When enabled, permits Cassandra to zero-copy stream entire eligible
+SSTables between nodes, including every component.
+This speeds up the network transfer significantly subject to
+throttling specified by stream_throughput_outbound_megabits_per_sec.
+Enabling this will reduce the GC pressure on sending and receiving node.
+When unset, the default is enabled. While this feature tries to keep the
+disks balanced, it cannot guarantee it. This feature will be automatically
+disabled if internode encryption is enabled. Currently this can be used with
+Leveled Compaction. Once CASSANDRA-14586 is fixed other compaction strategies
+will benefit as well when used in combination with CASSANDRA-6696.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="stream-throughput-outbound-megabits-per-sec">
+<h2><code class="docutils literal notranslate"><span class="pre">stream_throughput_outbound_megabits_per_sec</span></code><a class="headerlink" href="#stream-throughput-outbound-megabits-per-sec" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Throttles all outbound streaming file transfers on this node to the
+given total throughput in Mbps. This is necessary because Cassandra does
+mostly sequential IO when streaming data during bootstrap or repair, which
+can lead to saturating the network connection and degrading rpc performance.
+When unset, the default is 200 Mbps or 25 MB/s.</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="inter-dc-stream-throughput-outbound-megabits-per-sec">
+<h2><code class="docutils literal notranslate"><span class="pre">inter_dc_stream_throughput_outbound_megabits_per_sec</span></code><a class="headerlink" href="#inter-dc-stream-throughput-outbound-megabits-per-sec" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Throttles all streaming file transfer between the datacenters,
+this setting allows users to throttle inter dc stream throughput in addition
+to throttling all network stream traffic as configured with
+stream_throughput_outbound_megabits_per_sec
+When unset, the default is 200 Mbps or 25 MB/s</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="read-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">read_request_timeout_in_ms</span></code><a class="headerlink" href="#read-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for read operations to complete.
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 5000</p>
+</div>
+<div class="section" id="range-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">range_request_timeout_in_ms</span></code><a class="headerlink" href="#range-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for seq or index scans to complete.
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 10000</p>
+</div>
+<div class="section" id="write-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">write_request_timeout_in_ms</span></code><a class="headerlink" href="#write-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for writes to complete.
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="counter-write-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">counter_write_request_timeout_in_ms</span></code><a class="headerlink" href="#counter-write-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for counter writes to complete.
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 5000</p>
+</div>
+<div class="section" id="cas-contention-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">cas_contention_timeout_in_ms</span></code><a class="headerlink" href="#cas-contention-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long a coordinator should continue to retry a CAS operation
+that contends with other proposals for the same row.
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 1000</p>
+</div>
+<div class="section" id="truncate-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">truncate_request_timeout_in_ms</span></code><a class="headerlink" href="#truncate-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for truncates to complete
+(This can be much longer, because unless auto_snapshot is disabled
+we need to flush first so we can snapshot before removing the data.)
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 60000</p>
+</div>
+<div class="section" id="request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">request_timeout_in_ms</span></code><a class="headerlink" href="#request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>The default timeout for other, miscellaneous operations.
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 10000</p>
+</div>
+<div class="section" id="internode-application-send-queue-capacity-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_application_send_queue_capacity_in_bytes</span></code><a class="headerlink" href="#internode-application-send-queue-capacity-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Defensive settings for protecting Cassandra from true network partitions.
+See (CASSANDRA-14358) for details.</p>
+</div>
+<div class="section" id="internode-tcp-connect-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_tcp_connect_timeout_in_ms</span></code><a class="headerlink" href="#internode-tcp-connect-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>The amount of time to wait for internode tcp connections to establish.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="internode-tcp-user-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_tcp_user_timeout_in_ms</span></code><a class="headerlink" href="#internode-tcp-user-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>The amount of time unacknowledged data is allowed on a connection before we throw out the connection
+Note this is only supported on Linux + epoll, and it appears to behave oddly above a setting of 30000
+(it takes much longer than 30s) as of Linux 4.12. If you want something that high set this to 0
+which picks up the OS default and configure the net.ipv4.tcp_retries2 sysctl to be ~8.</p>
+<p><em>Default Value:</em> 30000</p>
+</div>
+<div class="section" id="internode-streaming-tcp-user-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_streaming_tcp_user_timeout_in_ms</span></code><a class="headerlink" href="#internode-streaming-tcp-user-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>The amount of time unacknowledged data is allowed on a streaming connection before we close the connection.</p>
+<p><em>Default Value:</em> 300000 (5 minutes)</p>
+</div>
+<div class="section" id="internode-application-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_application_timeout_in_ms</span></code><a class="headerlink" href="#internode-application-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>The maximum continuous period a connection may be unwritable in application space.</p>
+<p><em>Default Value:</em> 30000</p>
+<p>Global, per-endpoint and per-connection limits imposed on messages queued for delivery to other nodes
+and waiting to be processed on arrival from other nodes in the cluster.  These limits are applied to the on-wire
+size of the message being sent or received.</p>
+<p>The basic per-link limit is consumed in isolation before any endpoint or global limit is imposed.
+Each node-pair has three links: urgent, small and large.  So any given node may have a maximum of
+N*3*(internode_application_send_queue_capacity_in_bytes+internode_application_receive_queue_capacity_in_bytes)
+messages queued without any coordination between them although in practice, with token-aware routing, only RF*tokens
+nodes should need to communicate with significant bandwidth.</p>
+<p>The per-endpoint limit is imposed on all messages exceeding the per-link limit, simultaneously with the global limit,
+on all links to or from a single node in the cluster.
+The global limit is imposed on all messages exceeding the per-link limit, simultaneously with the per-endpoint limit,
+on all links to or from any node in the cluster.</p>
+<p><em>Default Value:</em> 4194304                       #4MiB</p>
+</div>
+<div class="section" id="internode-application-send-queue-reserve-endpoint-capacity-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_application_send_queue_reserve_endpoint_capacity_in_bytes</span></code><a class="headerlink" href="#internode-application-send-queue-reserve-endpoint-capacity-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 134217728    #128MiB</p>
+</div>
+<div class="section" id="internode-application-send-queue-reserve-global-capacity-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_application_send_queue_reserve_global_capacity_in_bytes</span></code><a class="headerlink" href="#internode-application-send-queue-reserve-global-capacity-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 536870912      #512MiB</p>
+</div>
+<div class="section" id="internode-application-receive-queue-capacity-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_application_receive_queue_capacity_in_bytes</span></code><a class="headerlink" href="#internode-application-receive-queue-capacity-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 4194304                    #4MiB</p>
+</div>
+<div class="section" id="internode-application-receive-queue-reserve-endpoint-capacity-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_application_receive_queue_reserve_endpoint_capacity_in_bytes</span></code><a class="headerlink" href="#internode-application-receive-queue-reserve-endpoint-capacity-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 134217728 #128MiB</p>
+</div>
+<div class="section" id="internode-application-receive-queue-reserve-global-capacity-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_application_receive_queue_reserve_global_capacity_in_bytes</span></code><a class="headerlink" href="#internode-application-receive-queue-reserve-global-capacity-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 536870912   #512MiB</p>
+</div>
+<div class="section" id="slow-query-log-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">slow_query_log_timeout_in_ms</span></code><a class="headerlink" href="#slow-query-log-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long before a node logs slow queries. Select queries that take longer than
+this timeout to execute, will generate an aggregated log message, so that slow queries
+can be identified. Set this value to zero to disable slow query logging.</p>
+<p><em>Default Value:</em> 500</p>
+</div>
+<div class="section" id="cross-node-timeout">
+<h2><code class="docutils literal notranslate"><span class="pre">cross_node_timeout</span></code><a class="headerlink" href="#cross-node-timeout" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Enable operation timeout information exchange between nodes to accurately
+measure request timeouts.  If disabled, replicas will assume that requests
+were forwarded to them instantly by the coordinator, which means that
+under overload conditions we will waste that much extra time processing
+already-timed-out requests.</p>
+<p>Warning: It is generally assumed that users have setup NTP on their clusters, and that clocks are modestly in sync,
+since this is a requirement for general correctness of last write wins.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="streaming-keep-alive-period-in-secs">
+<h2><code class="docutils literal notranslate"><span class="pre">streaming_keep_alive_period_in_secs</span></code><a class="headerlink" href="#streaming-keep-alive-period-in-secs" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Set keep-alive period for streaming
+This node will send a keep-alive message periodically with this period.
+If the node does not receive a keep-alive message from the peer for
+2 keep-alive cycles the stream session times out and fail
+Default value is 300s (5 minutes), which means stalled stream
+times out in 10 minutes by default</p>
+<p><em>Default Value:</em> 300</p>
+</div>
+<div class="section" id="streaming-connections-per-host">
+<h2><code class="docutils literal notranslate"><span class="pre">streaming_connections_per_host</span></code><a class="headerlink" href="#streaming-connections-per-host" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Limit number of connections per host for streaming
+Increase this when you notice that joins are CPU-bound rather that network
+bound (for example a few nodes with big files).</p>
+<p><em>Default Value:</em> 1</p>
+</div>
+<div class="section" id="phi-convict-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">phi_convict_threshold</span></code><a class="headerlink" href="#phi-convict-threshold" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>phi value that must be reached for a host to be marked down.
+most users should never need to adjust this.</p>
+<p><em>Default Value:</em> 8</p>
+</div>
+<div class="section" id="endpoint-snitch">
+<h2><code class="docutils literal notranslate"><span class="pre">endpoint_snitch</span></code><a class="headerlink" href="#endpoint-snitch" title="Permalink to this headline">¶</a></h2>
+<p>endpoint_snitch – Set this to a class that implements
+IEndpointSnitch.  The snitch has two functions:</p>
+<ul class="simple">
+<li>it teaches Cassandra enough about your network topology to route
+requests efficiently</li>
+<li>it allows Cassandra to spread replicas around your cluster to avoid
+correlated failures. It does this by grouping machines into
+“datacenters” and “racks.”  Cassandra will do its best not to have
+more than one replica on the same “rack” (which may not actually
+be a physical location)</li>
+</ul>
+<p>CASSANDRA WILL NOT ALLOW YOU TO SWITCH TO AN INCOMPATIBLE SNITCH
+ONCE DATA IS INSERTED INTO THE CLUSTER.  This would cause data loss.
+This means that if you start with the default SimpleSnitch, which
+locates every node on “rack1” in “datacenter1”, your only options
+if you need to add another datacenter are GossipingPropertyFileSnitch
+(and the older PFS).  From there, if you want to migrate to an
+incompatible snitch like Ec2Snitch you can do it by adding new nodes
+under Ec2Snitch (which will locate them in a new “datacenter”) and
+decommissioning the old ones.</p>
+<p>Out of the box, Cassandra provides:</p>
+<dl class="docutils">
+<dt>SimpleSnitch:</dt>
+<dd>Treats Strategy order as proximity. This can improve cache
+locality when disabling read repair.  Only appropriate for
+single-datacenter deployments.</dd>
+<dt>GossipingPropertyFileSnitch</dt>
+<dd>This should be your go-to snitch for production use.  The rack
+and datacenter for the local node are defined in
+cassandra-rackdc.properties and propagated to other nodes via
+gossip.  If cassandra-topology.properties exists, it is used as a
+fallback, allowing migration from the PropertyFileSnitch.</dd>
+<dt>PropertyFileSnitch:</dt>
+<dd>Proximity is determined by rack and data center, which are
+explicitly configured in cassandra-topology.properties.</dd>
+<dt>Ec2Snitch:</dt>
+<dd>Appropriate for EC2 deployments in a single Region. Loads Region
+and Availability Zone information from the EC2 API. The Region is
+treated as the datacenter, and the Availability Zone as the rack.
+Only private IPs are used, so this will not work across multiple
+Regions.</dd>
+<dt>Ec2MultiRegionSnitch:</dt>
+<dd>Uses public IPs as broadcast_address to allow cross-region
+connectivity.  (Thus, you should set seed addresses to the public
+IP as well.) You will need to open the storage_port or
+ssl_storage_port on the public IP firewall.  (For intra-Region
+traffic, Cassandra will switch to the private IP after
+establishing a connection.)</dd>
+<dt>RackInferringSnitch:</dt>
+<dd>Proximity is determined by rack and data center, which are
+assumed to correspond to the 3rd and 2nd octet of each node’s IP
+address, respectively.  Unless this happens to match your
+deployment conventions, this is best used as an example of
+writing a custom Snitch class and is provided in that spirit.</dd>
+</dl>
+<p>You can use a custom Snitch by setting this to the full class name
+of the snitch, which will be assumed to be on your classpath.</p>
+<p><em>Default Value:</em> SimpleSnitch</p>
+</div>
+<div class="section" id="dynamic-snitch-update-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_update_interval_in_ms</span></code><a class="headerlink" href="#dynamic-snitch-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>controls how often to perform the more expensive part of host score
+calculation</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="dynamic-snitch-reset-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_reset_interval_in_ms</span></code><a class="headerlink" href="#dynamic-snitch-reset-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>controls how often to reset all host scores, allowing a bad host to
+possibly recover</p>
+<p><em>Default Value:</em> 600000</p>
+</div>
+<div class="section" id="dynamic-snitch-badness-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_badness_threshold</span></code><a class="headerlink" href="#dynamic-snitch-badness-threshold" title="Permalink to this headline">¶</a></h2>
+<p>if set greater than zero, this will allow
+‘pinning’ of replicas to hosts in order to increase cache capacity.
+The badness threshold will control how much worse the pinned host has to be
+before the dynamic snitch will prefer other replicas over it.  This is
+expressed as a double which represents a percentage.  Thus, a value of
+0.2 means Cassandra would continue to prefer the static snitch values
+until the pinned host was 20% worse than the fastest.</p>
+<p><em>Default Value:</em> 0.1</p>
+</div>
+<div class="section" id="server-encryption-options">
+<h2><code class="docutils literal notranslate"><span class="pre">server_encryption_options</span></code><a class="headerlink" href="#server-encryption-options" title="Permalink to this headline">¶</a></h2>
+<p>Enable or disable inter-node encryption
+JVM and netty defaults for supported SSL socket protocols and cipher suites can
+be replaced using custom encryption options. This is not recommended
+unless you have policies in place that dictate certain settings, or
+need to disable vulnerable ciphers or protocols in case the JVM cannot
+be updated.
+FIPS compliant settings can be configured at JVM level and should not
+involve changing encryption settings here:
+<a class="reference external" href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html">https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html</a></p>
+<p><em>NOTE</em> No custom encryption options are enabled at the moment
+The available internode options are : all, none, dc, rack
+If set to dc cassandra will encrypt the traffic between the DCs
+If set to rack cassandra will encrypt the traffic between the racks</p>
+<p>The passwords used in these options must match the passwords used when generating
+the keystore and truststore.  For instructions on generating these files, see:
+<a class="reference external" href="http://download.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore">http://download.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore</a></p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># set to true for allowing secure incoming connections</span>
+<span class="n">enabled</span><span class="p">:</span> <span class="n">false</span>
+<span class="c1"># If enabled and optional are both set to true, encrypted and unencrypted connections are handled on the storage_port</span>
+<span class="n">optional</span><span class="p">:</span> <span class="n">false</span>
+<span class="c1"># if enabled, will open up an encrypted listening socket on ssl_storage_port. Should be used</span>
+<span class="c1"># during upgrade to 4.0; otherwise, set to false.</span>
+<span class="n">enable_legacy_ssl_storage_port</span><span class="p">:</span> <span class="n">false</span>
+<span class="c1"># on outbound connections, determine which type of peers to securely connect to. &#39;enabled&#39; must be set to true.</span>
+<span class="n">internode_encryption</span><span class="p">:</span> <span class="n">none</span>
+<span class="n">keystore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">keystore</span>
+<span class="n">keystore_password</span><span class="p">:</span> <span class="n">cassandra</span>
+<span class="n">truststore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">truststore</span>
+<span class="n">truststore_password</span><span class="p">:</span> <span class="n">cassandra</span>
+<span class="c1"># More advanced defaults below:</span>
+<span class="c1"># protocol: TLS</span>
+<span class="c1"># store_type: JKS</span>
+<span class="c1"># cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]</span>
+<span class="c1"># require_client_auth: false</span>
+<span class="c1"># require_endpoint_verification: false</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="client-encryption-options">
+<h2><code class="docutils literal notranslate"><span class="pre">client_encryption_options</span></code><a class="headerlink" href="#client-encryption-options" title="Permalink to this headline">¶</a></h2>
+<p>enable or disable client-to-server encryption.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">enabled</span><span class="p">:</span> <span class="n">false</span>
+<span class="c1"># If enabled and optional is set to true encrypted and unencrypted connections are handled.</span>
+<span class="n">optional</span><span class="p">:</span> <span class="n">false</span>
+<span class="n">keystore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">keystore</span>
+<span class="n">keystore_password</span><span class="p">:</span> <span class="n">cassandra</span>
+<span class="c1"># require_client_auth: false</span>
+<span class="c1"># Set trustore and truststore_password if require_client_auth is true</span>
+<span class="c1"># truststore: conf/.truststore</span>
+<span class="c1"># truststore_password: cassandra</span>
+<span class="c1"># More advanced defaults below:</span>
+<span class="c1"># protocol: TLS</span>
+<span class="c1"># store_type: JKS</span>
+<span class="c1"># cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="internode-compression">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_compression</span></code><a class="headerlink" href="#internode-compression" title="Permalink to this headline">¶</a></h2>
+<p>internode_compression controls whether traffic between nodes is
+compressed.
+Can be:</p>
+<dl class="docutils">
+<dt>all</dt>
+<dd>all traffic is compressed</dd>
+<dt>dc</dt>
+<dd>traffic between different datacenters is compressed</dd>
+<dt>none</dt>
+<dd>nothing is compressed.</dd>
+</dl>
+<p><em>Default Value:</em> dc</p>
+</div>
+<div class="section" id="inter-dc-tcp-nodelay">
+<h2><code class="docutils literal notranslate"><span class="pre">inter_dc_tcp_nodelay</span></code><a class="headerlink" href="#inter-dc-tcp-nodelay" title="Permalink to this headline">¶</a></h2>
+<p>Enable or disable tcp_nodelay for inter-dc communication.
+Disabling it will result in larger (but fewer) network packets being sent,
+reducing overhead from the TCP protocol itself, at the cost of increasing
+latency if you block for cross-datacenter responses.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="tracetype-query-ttl">
+<h2><code class="docutils literal notranslate"><span class="pre">tracetype_query_ttl</span></code><a class="headerlink" href="#tracetype-query-ttl" title="Permalink to this headline">¶</a></h2>
+<p>TTL for different trace types used during logging of the repair process.</p>
+<p><em>Default Value:</em> 86400</p>
+</div>
+<div class="section" id="tracetype-repair-ttl">
+<h2><code class="docutils literal notranslate"><span class="pre">tracetype_repair_ttl</span></code><a class="headerlink" href="#tracetype-repair-ttl" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 604800</p>
+</div>
+<div class="section" id="enable-user-defined-functions">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_user_defined_functions</span></code><a class="headerlink" href="#enable-user-defined-functions" title="Permalink to this headline">¶</a></h2>
+<p>If unset, all GC Pauses greater than gc_log_threshold_in_ms will log at
+INFO level
+UDFs (user defined functions) are disabled by default.
+As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="enable-scripted-user-defined-functions">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_scripted_user_defined_functions</span></code><a class="headerlink" href="#enable-scripted-user-defined-functions" title="Permalink to this headline">¶</a></h2>
+<p>Enables scripted UDFs (JavaScript UDFs).
+Java UDFs are always enabled, if enable_user_defined_functions is true.
+Enable this option to be able to use UDFs with “language javascript” or any custom JSR-223 provider.
+This option has no effect, if enable_user_defined_functions is false.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="windows-timer-interval">
+<h2><code class="docutils literal notranslate"><span class="pre">windows_timer_interval</span></code><a class="headerlink" href="#windows-timer-interval" title="Permalink to this headline">¶</a></h2>
+<p>The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation.
+Lowering this value on Windows can provide much tighter latency and better throughput, however
+some virtualized environments may see a negative performance impact from changing this setting
+below their system default. The sysinternals ‘clockres’ tool can confirm your system’s default
+setting.</p>
+<p><em>Default Value:</em> 1</p>
+</div>
+<div class="section" id="transparent-data-encryption-options">
+<h2><code class="docutils literal notranslate"><span class="pre">transparent_data_encryption_options</span></code><a class="headerlink" href="#transparent-data-encryption-options" title="Permalink to this headline">¶</a></h2>
+<p>Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from
+a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by
+the “key_alias” is the only key that will be used for encrypt opertaions; previously used keys
+can still (and should!) be in the keystore and will be used on decrypt operations
+(to handle the case of key rotation).</p>
+<p>It is strongly recommended to download and install Java Cryptography Extension (JCE)
+Unlimited Strength Jurisdiction Policy Files for your version of the JDK.
+(current link: <a class="reference external" href="http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html">http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html</a>)</p>
+<p>Currently, only the following file types are supported for transparent data encryption, although
+more are coming in future cassandra releases: commitlog, hints</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">enabled</span><span class="p">:</span> <span class="n">false</span>
+<span class="n">chunk_length_kb</span><span class="p">:</span> <span class="mi">64</span>
+<span class="n">cipher</span><span class="p">:</span> <span class="n">AES</span><span class="o">/</span><span class="n">CBC</span><span class="o">/</span><span class="n">PKCS5Padding</span>
+<span class="n">key_alias</span><span class="p">:</span> <span class="n">testing</span><span class="p">:</span><span class="mi">1</span>
+<span class="c1"># CBC IV length for AES needs to be 16 bytes (which is also the default size)</span>
+<span class="c1"># iv_length: 16</span>
+<span class="n">key_provider</span><span class="p">:</span>
+  <span class="o">-</span> <span class="n">class_name</span><span class="p">:</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">security</span><span class="o">.</span><span class="n">JKSKeyProvider</span>
+    <span class="n">parameters</span><span class="p">:</span>
+      <span class="o">-</span> <span class="n">keystore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">keystore</span>
+        <span class="n">keystore_password</span><span class="p">:</span> <span class="n">cassandra</span>
+        <span class="n">store_type</span><span class="p">:</span> <span class="n">JCEKS</span>
+        <span class="n">key_password</span><span class="p">:</span> <span class="n">cassandra</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="tombstone-warn-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">tombstone_warn_threshold</span></code><a class="headerlink" href="#tombstone-warn-threshold" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="safety-thresholds">
+<h3>SAFETY THRESHOLDS #<a class="headerlink" href="#safety-thresholds" title="Permalink to this headline">¶</a></h3>
+<p>When executing a scan, within or across a partition, we need to keep the
+tombstones seen in memory so we can return them to the coordinator, which
+will use them to make sure other replicas also know about the deleted rows.
+With workloads that generate a lot of tombstones, this can cause performance
+problems and even exaust the server heap.
+(<a class="reference external" href="http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets">http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets</a>)
+Adjust the thresholds here if you understand the dangers and want to
+scan more tombstones anyway.  These thresholds may also be adjusted at runtime
+using the StorageService mbean.</p>
+<p><em>Default Value:</em> 1000</p>
+</div>
+</div>
+<div class="section" id="tombstone-failure-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">tombstone_failure_threshold</span></code><a class="headerlink" href="#tombstone-failure-threshold" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 100000</p>
+</div>
+<div class="section" id="batch-size-warn-threshold-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">batch_size_warn_threshold_in_kb</span></code><a class="headerlink" href="#batch-size-warn-threshold-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Log WARN on any multiple-partition batch size exceeding this value. 5kb per batch by default.
+Caution should be taken on increasing the size of this threshold as it can lead to node instability.</p>
+<p><em>Default Value:</em> 5</p>
+</div>
+<div class="section" id="batch-size-fail-threshold-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">batch_size_fail_threshold_in_kb</span></code><a class="headerlink" href="#batch-size-fail-threshold-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Fail any multiple-partition batch exceeding this value. 50kb (10x warn threshold) by default.</p>
+<p><em>Default Value:</em> 50</p>
+</div>
+<div class="section" id="unlogged-batch-across-partitions-warn-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">unlogged_batch_across_partitions_warn_threshold</span></code><a class="headerlink" href="#unlogged-batch-across-partitions-warn-threshold" title="Permalink to this headline">¶</a></h2>
+<p>Log WARN on any batches not of type LOGGED than span across more partitions than this limit</p>
+<p><em>Default Value:</em> 10</p>
+</div>
+<div class="section" id="compaction-large-partition-warning-threshold-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">compaction_large_partition_warning_threshold_mb</span></code><a class="headerlink" href="#compaction-large-partition-warning-threshold-mb" title="Permalink to this headline">¶</a></h2>
+<p>Log a warning when compacting partitions larger than this value</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="gc-log-threshold-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">gc_log_threshold_in_ms</span></code><a class="headerlink" href="#gc-log-threshold-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>GC Pauses greater than 200 ms will be logged at INFO level
+This threshold can be adjusted to minimize logging if necessary</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="gc-warn-threshold-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">gc_warn_threshold_in_ms</span></code><a class="headerlink" href="#gc-warn-threshold-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level
+Adjust the threshold based on your application throughput requirement. Setting to 0
+will deactivate the feature.</p>
+<p><em>Default Value:</em> 1000</p>
+</div>
+<div class="section" id="max-value-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">max_value_size_in_mb</span></code><a class="headerlink" href="#max-value-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Maximum size of any value in SSTables. Safety measure to detect SSTable corruption
+early. Any value size larger than this threshold will result into marking an SSTable
+as corrupted. This should be positive and less than 2048.</p>
+<p><em>Default Value:</em> 256</p>
+</div>
+<div class="section" id="back-pressure-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">back_pressure_enabled</span></code><a class="headerlink" href="#back-pressure-enabled" title="Permalink to this headline">¶</a></h2>
+<p>Back-pressure settings #
+If enabled, the coordinator will apply the back-pressure strategy specified below to each mutation
+sent to replicas, with the aim of reducing pressure on overloaded replicas.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="back-pressure-strategy">
+<h2><code class="docutils literal notranslate"><span class="pre">back_pressure_strategy</span></code><a class="headerlink" href="#back-pressure-strategy" title="Permalink to this headline">¶</a></h2>
+<p>The back-pressure strategy applied.
+The default implementation, RateBasedBackPressure, takes three arguments:
+high ratio, factor, and flow type, and uses the ratio between incoming mutation responses and outgoing mutation requests.
+If below high ratio, outgoing mutations are rate limited according to the incoming rate decreased by the given factor;
+if above high ratio, the rate limiting is increased by the given factor;
+such factor is usually best configured between 1 and 10, use larger values for a faster recovery
+at the expense of potentially more dropped mutations;
+the rate limiting is applied according to the flow type: if FAST, it’s rate limited at the speed of the fastest replica,
+if SLOW at the speed of the slowest one.
+New strategies can be added. Implementors need to implement org.apache.cassandra.net.BackpressureStrategy and
+provide a public constructor accepting a Map&lt;String, Object&gt;.</p>
+</div>
+<div class="section" id="otc-coalescing-strategy">
+<h2><code class="docutils literal notranslate"><span class="pre">otc_coalescing_strategy</span></code><a class="headerlink" href="#otc-coalescing-strategy" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Coalescing Strategies #
+Coalescing multiples messages turns out to significantly boost message processing throughput (think doubling or more).
+On bare metal, the floor for packet processing throughput is high enough that many applications won’t notice, but in
+virtualized environments, the point at which an application can be bound by network packet processing can be
+surprisingly low compared to the throughput of task processing that is possible inside a VM. It’s not that bare metal
+doesn’t benefit from coalescing messages, it’s that the number of packets a bare metal network interface can process
+is sufficient for many applications such that no load starvation is experienced even without coalescing.
+There are other benefits to coalescing network messages that are harder to isolate with a simple metric like messages
+per second. By coalescing multiple tasks together, a network thread can process multiple messages for the cost of one
+trip to read from a socket, and all the task submission work can be done at the same time reducing context switching
+and increasing cache friendliness of network message processing.
+See CASSANDRA-8692 for details.</p>
+<p>Strategy to use for coalescing messages in OutboundTcpConnection.
+Can be fixed, movingaverage, timehorizon, disabled (default).
+You can also specify a subclass of CoalescingStrategies.CoalescingStrategy by name.</p>
+<p><em>Default Value:</em> DISABLED</p>
+</div>
+<div class="section" id="otc-coalescing-window-us">
+<h2><code class="docutils literal notranslate"><span class="pre">otc_coalescing_window_us</span></code><a class="headerlink" href="#otc-coalescing-window-us" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>How many microseconds to wait for coalescing. For fixed strategy this is the amount of time after the first
+message is received before it will be sent with any accompanying messages. For moving average this is the
+maximum amount of time that will be waited as well as the interval at which messages must arrive on average
+for coalescing to be enabled.</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="otc-coalescing-enough-coalesced-messages">
+<h2><code class="docutils literal notranslate"><span class="pre">otc_coalescing_enough_coalesced_messages</span></code><a class="headerlink" href="#otc-coalescing-enough-coalesced-messages" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128.</p>
+<p><em>Default Value:</em> 8</p>
+</div>
+<div class="section" id="otc-backlog-expiration-interval-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">otc_backlog_expiration_interval_ms</span></code><a class="headerlink" href="#otc-backlog-expiration-interval-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection.
+Expiration is done if messages are piling up in the backlog. Droppable messages are expired to free the memory
+taken by expired messages. The interval should be between 0 and 1000, and in most installations the default value
+will be appropriate. A smaller value could potentially expire messages slightly sooner at the expense of more CPU
+time and queue contention while iterating the backlog of messages.
+An interval of 0 disables any wait time, which is the behavior of former Cassandra versions.</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="ideal-consistency-level">
+<h2><code class="docutils literal notranslate"><span class="pre">ideal_consistency_level</span></code><a class="headerlink" href="#ideal-consistency-level" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Track a metric per keyspace indicating whether replication achieved the ideal consistency
+level for writes without timing out. This is different from the consistency level requested by
+each write which may be lower in order to facilitate availability.</p>
+<p><em>Default Value:</em> EACH_QUORUM</p>
+</div>
+<div class="section" id="automatic-sstable-upgrade">
+<h2><code class="docutils literal notranslate"><span class="pre">automatic_sstable_upgrade</span></code><a class="headerlink" href="#automatic-sstable-upgrade" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Automatically upgrade sstables after upgrade - if there is no ordinary compaction to do, the
+oldest non-upgraded sstable will get upgraded to the latest version</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="max-concurrent-automatic-sstable-upgrades">
+<h2><code class="docutils literal notranslate"><span class="pre">max_concurrent_automatic_sstable_upgrades</span></code><a class="headerlink" href="#max-concurrent-automatic-sstable-upgrades" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+Limit the number of concurrent sstable upgrades</p>
+<p><em>Default Value:</em> 1</p>
+</div>
+<div class="section" id="audit-logging-options">
+<h2><code class="docutils literal notranslate"><span class="pre">audit_logging_options</span></code><a class="headerlink" href="#audit-logging-options" title="Permalink to this headline">¶</a></h2>
+<p>Audit logging - Logs every incoming CQL command request, authentication to a node. See the docs
+on audit_logging for full details about the various configuration options.</p>
+</div>
+<div class="section" id="full-query-logging-options">
+<h2><code class="docutils literal notranslate"><span class="pre">full_query_logging_options</span></code><a class="headerlink" href="#full-query-logging-options" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>default options for full query logging - these can be overridden from command line when executing
+nodetool enablefullquerylog</p>
+</div>
+<div class="section" id="corrupted-tombstone-strategy">
+<h2><code class="docutils literal notranslate"><span class="pre">corrupted_tombstone_strategy</span></code><a class="headerlink" href="#corrupted-tombstone-strategy" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>validate tombstones on reads and compaction
+can be either “disabled”, “warn” or “exception”</p>
+<p><em>Default Value:</em> disabled</p>
+</div>
+<div class="section" id="diagnostic-events-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">diagnostic_events_enabled</span></code><a class="headerlink" href="#diagnostic-events-enabled" title="Permalink to this headline">¶</a></h2>
+<p>Diagnostic Events #
+If enabled, diagnostic events can be helpful for troubleshooting operational issues. Emitted events contain details
+on internal state and temporal relationships across events, accessible by clients via JMX.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="native-transport-flush-in-batches-legacy">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_flush_in_batches_legacy</span></code><a class="headerlink" href="#native-transport-flush-in-batches-legacy" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Use native transport TCP message coalescing. If on upgrade to 4.0 you found your throughput decreasing, and in
+particular you run an old kernel or have very fewer client connections, this option might be worth evaluating.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="repaired-data-tracking-for-range-reads-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">repaired_data_tracking_for_range_reads_enabled</span></code><a class="headerlink" href="#repaired-data-tracking-for-range-reads-enabled" title="Permalink to this headline">¶</a></h2>
+<p>Enable tracking of repaired state of data during reads and comparison between replicas
+Mismatches between the repaired sets of replicas can be characterized as either confirmed
+or unconfirmed. In this context, unconfirmed indicates that the presence of pending repair
+sessions, unrepaired partition tombstones, or some other condition means that the disparity
+cannot be considered conclusive. Confirmed mismatches should be a trigger for investigation
+as they may be indicative of corruption or data loss.
+There are separate flags for range vs partition reads as single partition reads are only tracked
+when CL &gt; 1 and a digest mismatch occurs. Currently, range queries don’t use digests so if
+enabled for range reads, all range reads will include repaired data tracking. As this adds
+some overhead, operators may wish to disable it whilst still enabling it for partition reads</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="repaired-data-tracking-for-partition-reads-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">repaired_data_tracking_for_partition_reads_enabled</span></code><a class="headerlink" href="#repaired-data-tracking-for-partition-reads-enabled" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="report-unconfirmed-repaired-data-mismatches">
+<h2><code class="docutils literal notranslate"><span class="pre">report_unconfirmed_repaired_data_mismatches</span></code><a class="headerlink" href="#report-unconfirmed-repaired-data-mismatches" title="Permalink to this headline">¶</a></h2>
+<p>If false, only confirmed mismatches will be reported. If true, a separate metric for unconfirmed
+mismatches will also be recorded. This is to avoid potential signal:noise issues are unconfirmed
+mismatches are less actionable than confirmed ones.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="enable-materialized-views">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_materialized_views</span></code><a class="headerlink" href="#enable-materialized-views" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="experimental-features">
+<h3>EXPERIMENTAL FEATURES #<a class="headerlink" href="#experimental-features" title="Permalink to this headline">¶</a></h3>
+<p>Enables materialized view creation on this node.
+Materialized views are considered experimental and are not recommended for production use.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+</div>
+<div class="section" id="enable-sasi-indexes">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_sasi_indexes</span></code><a class="headerlink" href="#enable-sasi-indexes" title="Permalink to this headline">¶</a></h2>
+<p>Enables SASI index creation on this node.
+SASI indexes are considered experimental and are not recommended for production use.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="enable-transient-replication">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_transient_replication</span></code><a class="headerlink" href="#enable-transient-replication" title="Permalink to this headline">¶</a></h2>
+<p>Enables creation of transiently replicated keyspaces on this node.
+Transient replication is experimental and is not recommended for production use.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="cass_rackdc_file.html" class="btn btn-default pull-right " role="button" title="cassandra-rackdc.properties file" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Configuring Cassandra" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/configuration/cassandra_config_file.html b/src/doc/4.0-rc1/configuration/cassandra_config_file.html
new file mode 100644
index 0000000..37bad1e
--- /dev/null
+++ b/src/doc/4.0-rc1/configuration/cassandra_config_file.html
@@ -0,0 +1,1850 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Cassandra Configuration File"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cassandra-configuration-file">
+<span id="cassandra-yaml"></span><h1>Cassandra Configuration File<a class="headerlink" href="#cassandra-configuration-file" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="cluster-name">
+<h2><code class="docutils literal notranslate"><span class="pre">cluster_name</span></code><a class="headerlink" href="#cluster-name" title="Permalink to this headline">¶</a></h2>
+<p>The name of the cluster. This is mainly used to prevent machines in
+one logical cluster from joining another.</p>
+<p><em>Default Value:</em> ‘Test Cluster’</p>
+</div>
+<div class="section" id="num-tokens">
+<h2><code class="docutils literal notranslate"><span class="pre">num_tokens</span></code><a class="headerlink" href="#num-tokens" title="Permalink to this headline">¶</a></h2>
+<p>This defines the number of tokens randomly assigned to this node on the ring
+The more tokens, relative to other nodes, the larger the proportion of data
+that this node will store. You probably want all nodes to have the same number
+of tokens assuming they have equal hardware capability.</p>
+<p>If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility,
+and will use the initial_token as described below.</p>
+<p>Specifying initial_token will override this setting on the node’s initial start,
+on subsequent starts, this setting will apply even if initial token is set.</p>
+<p>See <a class="reference external" href="https://cassandra.apache.org/doc/latest/getting_started/production.html#tokens">https://cassandra.apache.org/doc/latest/getting_started/production.html#tokens</a> for
+best practice information about num_tokens.</p>
+<p><em>Default Value:</em> 16</p>
+</div>
+<div class="section" id="allocate-tokens-for-keyspace">
+<h2><code class="docutils literal notranslate"><span class="pre">allocate_tokens_for_keyspace</span></code><a class="headerlink" href="#allocate-tokens-for-keyspace" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Triggers automatic allocation of num_tokens tokens for this node. The allocation
+algorithm attempts to choose tokens in a way that optimizes replicated load over
+the nodes in the datacenter for the replica factor.</p>
+<p>The load assigned to each node will be close to proportional to its number of
+vnodes.</p>
+<p>Only supported with the Murmur3Partitioner.</p>
+<p>Replica factor is determined via the replication strategy used by the specified
+keyspace.</p>
+<p><em>Default Value:</em> KEYSPACE</p>
+</div>
+<div class="section" id="allocate-tokens-for-local-replication-factor">
+<h2><code class="docutils literal notranslate"><span class="pre">allocate_tokens_for_local_replication_factor</span></code><a class="headerlink" href="#allocate-tokens-for-local-replication-factor" title="Permalink to this headline">¶</a></h2>
+<p>Replica factor is explicitly set, regardless of keyspace or datacenter.
+This is the replica factor within the datacenter, like NTS.</p>
+<p><em>Default Value:</em> 3</p>
+</div>
+<div class="section" id="initial-token">
+<h2><code class="docutils literal notranslate"><span class="pre">initial_token</span></code><a class="headerlink" href="#initial-token" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>initial_token allows you to specify tokens manually.  While you can use it with
+vnodes (num_tokens &gt; 1, above) – in which case you should provide a
+comma-separated list – it’s primarily used when adding nodes to legacy clusters
+that do not have vnodes enabled.</p>
+</div>
+<div class="section" id="hinted-handoff-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">hinted_handoff_enabled</span></code><a class="headerlink" href="#hinted-handoff-enabled" title="Permalink to this headline">¶</a></h2>
+<p>May either be “true” or “false” to enable globally</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="hinted-handoff-disabled-datacenters">
+<h2><code class="docutils literal notranslate"><span class="pre">hinted_handoff_disabled_datacenters</span></code><a class="headerlink" href="#hinted-handoff-disabled-datacenters" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>When hinted_handoff_enabled is true, a black list of data centers that will not
+perform hinted handoff</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#    - DC1</span>
+<span class="c1">#    - DC2</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="max-hint-window-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">max_hint_window_in_ms</span></code><a class="headerlink" href="#max-hint-window-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>this defines the maximum amount of time a dead host will have hints
+generated.  After it has been dead this long, new hints for it will not be
+created until it has been seen alive and gone down again.</p>
+<p><em>Default Value:</em> 10800000 # 3 hours</p>
+</div>
+<div class="section" id="hinted-handoff-throttle-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">hinted_handoff_throttle_in_kb</span></code><a class="headerlink" href="#hinted-handoff-throttle-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum throttle in KBs per second, per delivery thread.  This will be
+reduced proportionally to the number of nodes in the cluster.  (If there
+are two nodes in the cluster, each delivery thread will use the maximum
+rate; if there are three, each will throttle to half of the maximum,
+since we expect two nodes to be delivering hints simultaneously.)</p>
+<p><em>Default Value:</em> 1024</p>
+</div>
+<div class="section" id="max-hints-delivery-threads">
+<h2><code class="docutils literal notranslate"><span class="pre">max_hints_delivery_threads</span></code><a class="headerlink" href="#max-hints-delivery-threads" title="Permalink to this headline">¶</a></h2>
+<p>Number of threads with which to deliver hints;
+Consider increasing this number when you have multi-dc deployments, since
+cross-dc handoff tends to be slower</p>
+<p><em>Default Value:</em> 2</p>
+</div>
+<div class="section" id="hints-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">hints_directory</span></code><a class="headerlink" href="#hints-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Directory where Cassandra should store hints.
+If not set, the default directory is $CASSANDRA_HOME/data/hints.</p>
+<p><em>Default Value:</em>  /var/lib/cassandra/hints</p>
+</div>
+<div class="section" id="hints-flush-period-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">hints_flush_period_in_ms</span></code><a class="headerlink" href="#hints-flush-period-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How often hints should be flushed from the internal buffers to disk.
+Will <em>not</em> trigger fsync.</p>
+<p><em>Default Value:</em> 10000</p>
+</div>
+<div class="section" id="max-hints-file-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">max_hints_file_size_in_mb</span></code><a class="headerlink" href="#max-hints-file-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size for a single hints file, in megabytes.</p>
+<p><em>Default Value:</em> 128</p>
+</div>
+<div class="section" id="hints-compression">
+<h2><code class="docutils literal notranslate"><span class="pre">hints_compression</span></code><a class="headerlink" href="#hints-compression" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Compression to apply to the hint files. If omitted, hints files
+will be written uncompressed. LZ4, Snappy, and Deflate compressors
+are supported.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#   - class_name: LZ4Compressor</span>
+<span class="c1">#     parameters:</span>
+<span class="c1">#         -</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="batchlog-replay-throttle-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">batchlog_replay_throttle_in_kb</span></code><a class="headerlink" href="#batchlog-replay-throttle-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum throttle in KBs per second, total. This will be
+reduced proportionally to the number of nodes in the cluster.</p>
+<p><em>Default Value:</em> 1024</p>
+</div>
+<div class="section" id="authenticator">
+<h2><code class="docutils literal notranslate"><span class="pre">authenticator</span></code><a class="headerlink" href="#authenticator" title="Permalink to this headline">¶</a></h2>
+<p>Authentication backend, implementing IAuthenticator; used to identify users
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator,
+PasswordAuthenticator}.</p>
+<ul class="simple">
+<li>AllowAllAuthenticator performs no checks - set it to disable authentication.</li>
+<li>PasswordAuthenticator relies on username/password pairs to authenticate
+users. It keeps usernames and hashed passwords in system_auth.roles table.
+Please increase system_auth keyspace replication factor if you use this authenticator.
+If using PasswordAuthenticator, CassandraRoleManager must also be used (see below)</li>
+</ul>
+<p><em>Default Value:</em> AllowAllAuthenticator</p>
+</div>
+<div class="section" id="authorizer">
+<h2><code class="docutils literal notranslate"><span class="pre">authorizer</span></code><a class="headerlink" href="#authorizer" title="Permalink to this headline">¶</a></h2>
+<p>Authorization backend, implementing IAuthorizer; used to limit access/provide permissions
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer,
+CassandraAuthorizer}.</p>
+<ul class="simple">
+<li>AllowAllAuthorizer allows any action to any user - set it to disable authorization.</li>
+<li>CassandraAuthorizer stores permissions in system_auth.role_permissions table. Please
+increase system_auth keyspace replication factor if you use this authorizer.</li>
+</ul>
+<p><em>Default Value:</em> AllowAllAuthorizer</p>
+</div>
+<div class="section" id="role-manager">
+<h2><code class="docutils literal notranslate"><span class="pre">role_manager</span></code><a class="headerlink" href="#role-manager" title="Permalink to this headline">¶</a></h2>
+<p>Part of the Authentication &amp; Authorization backend, implementing IRoleManager; used
+to maintain grants and memberships between roles.
+Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager,
+which stores role information in the system_auth keyspace. Most functions of the
+IRoleManager require an authenticated login, so unless the configured IAuthenticator
+actually implements authentication, most of this functionality will be unavailable.</p>
+<ul class="simple">
+<li>CassandraRoleManager stores role data in the system_auth keyspace. Please
+increase system_auth keyspace replication factor if you use this role manager.</li>
+</ul>
+<p><em>Default Value:</em> CassandraRoleManager</p>
+</div>
+<div class="section" id="network-authorizer">
+<h2><code class="docutils literal notranslate"><span class="pre">network_authorizer</span></code><a class="headerlink" href="#network-authorizer" title="Permalink to this headline">¶</a></h2>
+<p>Network authorization backend, implementing INetworkAuthorizer; used to restrict user
+access to certain DCs
+Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllNetworkAuthorizer,
+CassandraNetworkAuthorizer}.</p>
+<ul class="simple">
+<li>AllowAllNetworkAuthorizer allows access to any DC to any user - set it to disable authorization.</li>
+<li>CassandraNetworkAuthorizer stores permissions in system_auth.network_permissions table. Please
+increase system_auth keyspace replication factor if you use this authorizer.</li>
+</ul>
+<p><em>Default Value:</em> AllowAllNetworkAuthorizer</p>
+</div>
+<div class="section" id="roles-validity-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">roles_validity_in_ms</span></code><a class="headerlink" href="#roles-validity-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>Validity period for roles cache (fetching granted roles can be an expensive
+operation depending on the role manager, CassandraRoleManager is one example)
+Granted roles are cached for authenticated sessions in AuthenticatedUser and
+after the period specified here, become eligible for (async) reload.
+Defaults to 2000, set to 0 to disable caching entirely.
+Will be disabled automatically for AllowAllAuthenticator.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="roles-update-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">roles_update_interval_in_ms</span></code><a class="headerlink" href="#roles-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Refresh interval for roles cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If roles_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as roles_validity_in_ms.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="permissions-validity-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">permissions_validity_in_ms</span></code><a class="headerlink" href="#permissions-validity-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>Validity period for permissions cache (fetching permissions can be an
+expensive operation depending on the authorizer, CassandraAuthorizer is
+one example). Defaults to 2000, set to 0 to disable.
+Will be disabled automatically for AllowAllAuthorizer.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="permissions-update-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">permissions_update_interval_in_ms</span></code><a class="headerlink" href="#permissions-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Refresh interval for permissions cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If permissions_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as permissions_validity_in_ms.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="credentials-validity-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">credentials_validity_in_ms</span></code><a class="headerlink" href="#credentials-validity-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>Validity period for credentials cache. This cache is tightly coupled to
+the provided PasswordAuthenticator implementation of IAuthenticator. If
+another IAuthenticator implementation is configured, this cache will not
+be automatically used and so the following settings will have no effect.
+Please note, credentials are cached in their encrypted form, so while
+activating this cache may reduce the number of queries made to the
+underlying table, it may not  bring a significant reduction in the
+latency of individual authentication attempts.
+Defaults to 2000, set to 0 to disable credentials caching.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="credentials-update-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">credentials_update_interval_in_ms</span></code><a class="headerlink" href="#credentials-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Refresh interval for credentials cache (if enabled).
+After this interval, cache entries become eligible for refresh. Upon next
+access, an async reload is scheduled and the old value returned until it
+completes. If credentials_validity_in_ms is non-zero, then this must be
+also.
+Defaults to the same value as credentials_validity_in_ms.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="partitioner">
+<h2><code class="docutils literal notranslate"><span class="pre">partitioner</span></code><a class="headerlink" href="#partitioner" title="Permalink to this headline">¶</a></h2>
+<p>The partitioner is responsible for distributing groups of rows (by
+partition key) across nodes in the cluster. The partitioner can NOT be
+changed without reloading all data.  If you are adding nodes or upgrading,
+you should set this to the same partitioner that you are currently using.</p>
+<p>The default partitioner is the Murmur3Partitioner. Older partitioners
+such as the RandomPartitioner, ByteOrderedPartitioner, and
+OrderPreservingPartitioner have been included for backward compatibility only.
+For new clusters, you should NOT change this value.</p>
+<p><em>Default Value:</em> org.apache.cassandra.dht.Murmur3Partitioner</p>
+</div>
+<div class="section" id="data-file-directories">
+<h2><code class="docutils literal notranslate"><span class="pre">data_file_directories</span></code><a class="headerlink" href="#data-file-directories" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Directories where Cassandra should store data on disk. If multiple
+directories are specified, Cassandra will spread data evenly across
+them by partitioning the token ranges.
+If not set, the default directory is $CASSANDRA_HOME/data/data.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#     - /var/lib/cassandra/data</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="local-system-data-file-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">local_system_data_file_directory</span></code><a class="headerlink" href="#local-system-data-file-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+Directory were Cassandra should store the data of the local system keyspaces.
+By default Cassandra will store the data of the local system keyspaces in the first of the data directories specified
+by data_file_directories.
+This approach ensures that if one of the other disks is lost Cassandra can continue to operate. For extra security
+this setting allows to store those data on a different directory that provides redundancy.</p>
+</div>
+<div class="section" id="commitlog-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_directory</span></code><a class="headerlink" href="#commitlog-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>commit log.  when running on magnetic HDD, this should be a
+separate spindle than the data directories.
+If not set, the default directory is $CASSANDRA_HOME/data/commitlog.</p>
+<p><em>Default Value:</em>  /var/lib/cassandra/commitlog</p>
+</div>
+<div class="section" id="cdc-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">cdc_enabled</span></code><a class="headerlink" href="#cdc-enabled" title="Permalink to this headline">¶</a></h2>
+<p>Enable / disable CDC functionality on a per-node basis. This modifies the logic used
+for write path allocation rejection (standard: never reject. cdc: reject Mutation
+containing a CDC-enabled table if at space limit in cdc_raw_directory).</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="cdc-raw-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">cdc_raw_directory</span></code><a class="headerlink" href="#cdc-raw-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the
+segment contains mutations for a CDC-enabled table. This should be placed on a
+separate spindle than the data directories. If not set, the default directory is
+$CASSANDRA_HOME/data/cdc_raw.</p>
+<p><em>Default Value:</em>  /var/lib/cassandra/cdc_raw</p>
+</div>
+<div class="section" id="disk-failure-policy">
+<h2><code class="docutils literal notranslate"><span class="pre">disk_failure_policy</span></code><a class="headerlink" href="#disk-failure-policy" title="Permalink to this headline">¶</a></h2>
+<p>Policy for data disk failures:</p>
+<dl class="docutils">
+<dt>die</dt>
+<dd>shut down gossip and client transports and kill the JVM for any fs errors or
+single-sstable errors, so the node can be replaced.</dd>
+<dt>stop_paranoid</dt>
+<dd>shut down gossip and client transports even for single-sstable errors,
+kill the JVM for errors during startup.</dd>
+<dt>stop</dt>
+<dd>shut down gossip and client transports, leaving the node effectively dead, but
+can still be inspected via JMX, kill the JVM for errors during startup.</dd>
+<dt>best_effort</dt>
+<dd>stop using the failed disk and respond to requests based on
+remaining available sstables.  This means you WILL see obsolete
+data at CL.ONE!</dd>
+<dt>ignore</dt>
+<dd>ignore fatal errors and let requests fail, as in pre-1.2 Cassandra</dd>
+</dl>
+<p><em>Default Value:</em> stop</p>
+</div>
+<div class="section" id="commit-failure-policy">
+<h2><code class="docutils literal notranslate"><span class="pre">commit_failure_policy</span></code><a class="headerlink" href="#commit-failure-policy" title="Permalink to this headline">¶</a></h2>
+<p>Policy for commit disk failures:</p>
+<dl class="docutils">
+<dt>die</dt>
+<dd>shut down the node and kill the JVM, so the node can be replaced.</dd>
+<dt>stop</dt>
+<dd>shut down the node, leaving the node effectively dead, but
+can still be inspected via JMX.</dd>
+<dt>stop_commit</dt>
+<dd>shutdown the commit log, letting writes collect but
+continuing to service reads, as in pre-2.0.5 Cassandra</dd>
+<dt>ignore</dt>
+<dd>ignore fatal errors and let the batches fail</dd>
+</dl>
+<p><em>Default Value:</em> stop</p>
+</div>
+<div class="section" id="prepared-statements-cache-size-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">prepared_statements_cache_size_mb</span></code><a class="headerlink" href="#prepared-statements-cache-size-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size of the native protocol prepared statement cache</p>
+<p>Valid values are either “auto” (omitting the value) or a value greater 0.</p>
+<p>Note that specifying a too large value will result in long running GCs and possbily
+out-of-memory errors. Keep the value at a small fraction of the heap.</p>
+<p>If you constantly see “prepared statements discarded in the last minute because
+cache limit reached” messages, the first step is to investigate the root cause
+of these messages and check whether prepared statements are used correctly -
+i.e. use bind markers for variable parts.</p>
+<p>Do only change the default value, if you really have more prepared statements than
+fit in the cache. In most cases it is not neccessary to change this value.
+Constantly re-preparing statements is a performance penalty.</p>
+<p>Default value (“auto”) is 1/256th of the heap or 10MB, whichever is greater</p>
+</div>
+<div class="section" id="key-cache-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">key_cache_size_in_mb</span></code><a class="headerlink" href="#key-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size of the key cache in memory.</p>
+<p>Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
+minimum, sometimes more. The key cache is fairly tiny for the amount of
+time it saves, so it’s worthwhile to use it at large numbers.
+The row cache saves even more time, but must contain the entire row,
+so it is extremely space-intensive. It’s best to only use the
+row cache if you have hot rows or static rows.</p>
+<p>NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.</p>
+<p>Default value is empty to make it “auto” (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache.</p>
+</div>
+<div class="section" id="key-cache-save-period">
+<h2><code class="docutils literal notranslate"><span class="pre">key_cache_save_period</span></code><a class="headerlink" href="#key-cache-save-period" title="Permalink to this headline">¶</a></h2>
+<p>Duration in seconds after which Cassandra should
+save the key cache. Caches are saved to saved_caches_directory as
+specified in this configuration file.</p>
+<p>Saved caches greatly improve cold-start speeds, and is relatively cheap in
+terms of I/O for the key cache. Row cache saving is much more expensive and
+has limited use.</p>
+<p>Default is 14400 or 4 hours.</p>
+<p><em>Default Value:</em> 14400</p>
+</div>
+<div class="section" id="key-cache-keys-to-save">
+<h2><code class="docutils literal notranslate"><span class="pre">key_cache_keys_to_save</span></code><a class="headerlink" href="#key-cache-keys-to-save" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of keys from the key cache to save
+Disabled by default, meaning all keys are going to be saved</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="row-cache-class-name">
+<h2><code class="docutils literal notranslate"><span class="pre">row_cache_class_name</span></code><a class="headerlink" href="#row-cache-class-name" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Row cache implementation class name. Available implementations:</p>
+<dl class="docutils">
+<dt>org.apache.cassandra.cache.OHCProvider</dt>
+<dd>Fully off-heap row cache implementation (default).</dd>
+<dt>org.apache.cassandra.cache.SerializingCacheProvider</dt>
+<dd>This is the row cache implementation availabile
+in previous releases of Cassandra.</dd>
+</dl>
+<p><em>Default Value:</em> org.apache.cassandra.cache.OHCProvider</p>
+</div>
+<div class="section" id="row-cache-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">row_cache_size_in_mb</span></code><a class="headerlink" href="#row-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size of the row cache in memory.
+Please note that OHC cache implementation requires some additional off-heap memory to manage
+the map structures and some in-flight memory during operations before/after cache entries can be
+accounted against the cache capacity. This overhead is usually small compared to the whole capacity.
+Do not specify more memory that the system can afford in the worst usual situation and leave some
+headroom for OS block level cache. Do never allow your system to swap.</p>
+<p>Default value is 0, to disable row caching.</p>
+<p><em>Default Value:</em> 0</p>
+</div>
+<div class="section" id="row-cache-save-period">
+<h2><code class="docutils literal notranslate"><span class="pre">row_cache_save_period</span></code><a class="headerlink" href="#row-cache-save-period" title="Permalink to this headline">¶</a></h2>
+<p>Duration in seconds after which Cassandra should save the row cache.
+Caches are saved to saved_caches_directory as specified in this configuration file.</p>
+<p>Saved caches greatly improve cold-start speeds, and is relatively cheap in
+terms of I/O for the key cache. Row cache saving is much more expensive and
+has limited use.</p>
+<p>Default is 0 to disable saving the row cache.</p>
+<p><em>Default Value:</em> 0</p>
+</div>
+<div class="section" id="row-cache-keys-to-save">
+<h2><code class="docutils literal notranslate"><span class="pre">row_cache_keys_to_save</span></code><a class="headerlink" href="#row-cache-keys-to-save" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of keys from the row cache to save.
+Specify 0 (which is the default), meaning all keys are going to be saved</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="counter-cache-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">counter_cache_size_in_mb</span></code><a class="headerlink" href="#counter-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>Maximum size of the counter cache in memory.</p>
+<p>Counter cache helps to reduce counter locks’ contention for hot counter cells.
+In case of RF = 1 a counter cache hit will cause Cassandra to skip the read before
+write entirely. With RF &gt; 1 a counter cache hit will still help to reduce the duration
+of the lock hold, helping with hot counter cell updates, but will not allow skipping
+the read entirely. Only the local (clock, count) tuple of a counter cell is kept
+in memory, not the whole counter, so it’s relatively cheap.</p>
+<p>NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.</p>
+<p>Default value is empty to make it “auto” (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache.
+NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache.</p>
+</div>
+<div class="section" id="counter-cache-save-period">
+<h2><code class="docutils literal notranslate"><span class="pre">counter_cache_save_period</span></code><a class="headerlink" href="#counter-cache-save-period" title="Permalink to this headline">¶</a></h2>
+<p>Duration in seconds after which Cassandra should
+save the counter cache (keys only). Caches are saved to saved_caches_directory as
+specified in this configuration file.</p>
+<p>Default is 7200 or 2 hours.</p>
+<p><em>Default Value:</em> 7200</p>
+</div>
+<div class="section" id="counter-cache-keys-to-save">
+<h2><code class="docutils literal notranslate"><span class="pre">counter_cache_keys_to_save</span></code><a class="headerlink" href="#counter-cache-keys-to-save" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of keys from the counter cache to save
+Disabled by default, meaning all keys are going to be saved</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="saved-caches-directory">
+<h2><code class="docutils literal notranslate"><span class="pre">saved_caches_directory</span></code><a class="headerlink" href="#saved-caches-directory" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>saved caches
+If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.</p>
+<p><em>Default Value:</em>  /var/lib/cassandra/saved_caches</p>
+</div>
+<div class="section" id="commitlog-sync-batch-window-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_sync_batch_window_in_ms</span></code><a class="headerlink" href="#commitlog-sync-batch-window-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>commitlog_sync may be either “periodic”, “group”, or “batch.”</p>
+<p>When in batch mode, Cassandra won’t ack writes until the commit log
+has been flushed to disk.  Each incoming write will trigger the flush task.
+commitlog_sync_batch_window_in_ms is a deprecated value. Previously it had
+almost no value, and is being removed.</p>
+<p><em>Default Value:</em> 2</p>
+</div>
+<div class="section" id="commitlog-sync-group-window-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_sync_group_window_in_ms</span></code><a class="headerlink" href="#commitlog-sync-group-window-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>group mode is similar to batch mode, where Cassandra will not ack writes
+until the commit log has been flushed to disk. The difference is group
+mode will wait up to commitlog_sync_group_window_in_ms between flushes.</p>
+<p><em>Default Value:</em> 1000</p>
+</div>
+<div class="section" id="commitlog-sync">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_sync</span></code><a class="headerlink" href="#commitlog-sync" title="Permalink to this headline">¶</a></h2>
+<p>the default option is “periodic” where writes may be acked immediately
+and the CommitLog is simply synced every commitlog_sync_period_in_ms
+milliseconds.</p>
+<p><em>Default Value:</em> periodic</p>
+</div>
+<div class="section" id="commitlog-sync-period-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_sync_period_in_ms</span></code><a class="headerlink" href="#commitlog-sync-period-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 10000</p>
+</div>
+<div class="section" id="periodic-commitlog-sync-lag-block-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">periodic_commitlog_sync_lag_block_in_ms</span></code><a class="headerlink" href="#periodic-commitlog-sync-lag-block-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>When in periodic commitlog mode, the number of milliseconds to block writes
+while waiting for a slow disk flush to complete.</p>
+</div>
+<div class="section" id="commitlog-segment-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_segment_size_in_mb</span></code><a class="headerlink" href="#commitlog-segment-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>The size of the individual commitlog file segments.  A commitlog
+segment may be archived, deleted, or recycled once all the data
+in it (potentially from each columnfamily in the system) has been
+flushed to sstables.</p>
+<p>The default size is 32, which is almost always fine, but if you are
+archiving commitlog segments (see commitlog_archiving.properties),
+then you probably want a finer granularity of archiving; 8 or 16 MB
+is reasonable.
+Max mutation size is also configurable via max_mutation_size_in_kb setting in
+cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024.
+This should be positive and less than 2048.</p>
+<p>NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must
+be set to at least twice the size of max_mutation_size_in_kb / 1024</p>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="commitlog-compression">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_compression</span></code><a class="headerlink" href="#commitlog-compression" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Compression to apply to the commit log. If omitted, the commit log
+will be written uncompressed.  LZ4, Snappy, and Deflate compressors
+are supported.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#   - class_name: LZ4Compressor</span>
+<span class="c1">#     parameters:</span>
+<span class="c1">#         -</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="table">
+<h2><code class="docutils literal notranslate"><span class="pre">table</span></code><a class="headerlink" href="#table" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+Compression to apply to SSTables as they flush for compressed tables.
+Note that tables without compression enabled do not respect this flag.</p>
+<p>As high ratio compressors like LZ4HC, Zstd, and Deflate can potentially
+block flushes for too long, the default is to flush with a known fast
+compressor in those cases. Options are:</p>
+<p>none : Flush without compressing blocks but while still doing checksums.
+fast : Flush with a fast compressor. If the table is already using a</p>
+<blockquote>
+<div>fast compressor that compressor is used.</div></blockquote>
+<p><em>Default Value:</em> Always flush with the same compressor that the table uses. This</p>
+</div>
+<div class="section" id="flush-compression">
+<h2><code class="docutils literal notranslate"><span class="pre">flush_compression</span></code><a class="headerlink" href="#flush-compression" title="Permalink to this headline">¶</a></h2>
+<dl class="docutils">
+<dt><em>This option is commented out by default.</em></dt>
+<dd>was the pre 4.0 behavior.</dd>
+</dl>
+<p><em>Default Value:</em> fast</p>
+</div>
+<div class="section" id="seed-provider">
+<h2><code class="docutils literal notranslate"><span class="pre">seed_provider</span></code><a class="headerlink" href="#seed-provider" title="Permalink to this headline">¶</a></h2>
+<p>any class that implements the SeedProvider interface and has a
+constructor that takes a Map&lt;String, String&gt; of parameters will do.</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Addresses of hosts that are deemed contact points.</span>
+<span class="c1"># Cassandra nodes use this list of hosts to find each other and learn</span>
+<span class="c1"># the topology of the ring.  You must change this if you are running</span>
+<span class="c1"># multiple nodes!</span>
+<span class="o">-</span> <span class="n">class_name</span><span class="p">:</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">SimpleSeedProvider</span>
+  <span class="n">parameters</span><span class="p">:</span>
+      <span class="c1"># seeds is actually a comma-delimited list of addresses.</span>
+      <span class="c1"># Ex: &quot;&lt;ip1&gt;,&lt;ip2&gt;,&lt;ip3&gt;&quot;</span>
+      <span class="o">-</span> <span class="n">seeds</span><span class="p">:</span> <span class="s2">&quot;127.0.0.1:7000&quot;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="concurrent-reads">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_reads</span></code><a class="headerlink" href="#concurrent-reads" title="Permalink to this headline">¶</a></h2>
+<p>For workloads with more data than can fit in memory, Cassandra’s
+bottleneck will be reads that need to fetch data from
+disk. “concurrent_reads” should be set to (16 * number_of_drives) in
+order to allow the operations to enqueue low enough in the stack
+that the OS and drives can reorder them. Same applies to
+“concurrent_counter_writes”, since counter writes read the current
+values before incrementing and writing them back.</p>
+<p>On the other hand, since writes are almost never IO bound, the ideal
+number of “concurrent_writes” is dependent on the number of cores in
+your system; (8 * number_of_cores) is a good rule of thumb.</p>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="concurrent-writes">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_writes</span></code><a class="headerlink" href="#concurrent-writes" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="concurrent-counter-writes">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_counter_writes</span></code><a class="headerlink" href="#concurrent-counter-writes" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="concurrent-materialized-view-writes">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_materialized_view_writes</span></code><a class="headerlink" href="#concurrent-materialized-view-writes" title="Permalink to this headline">¶</a></h2>
+<p>For materialized view writes, as there is a read involved, so this should
+be limited by the less of concurrent reads or concurrent writes.</p>
+<p><em>Default Value:</em> 32</p>
+</div>
+<div class="section" id="networking-cache-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">networking_cache_size_in_mb</span></code><a class="headerlink" href="#networking-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Maximum memory to use for inter-node and client-server networking buffers.</p>
+<p>Defaults to the smaller of 1/16 of heap or 128MB. This pool is allocated off-heap,
+so is in addition to the memory allocated for heap. The cache also has on-heap
+overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size
+if the default 64k chunk size is used).
+Memory is only allocated when needed.</p>
+<p><em>Default Value:</em> 128</p>
+</div>
+<div class="section" id="file-cache-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">file_cache_enabled</span></code><a class="headerlink" href="#file-cache-enabled" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Enable the sstable chunk cache.  The chunk cache will store recently accessed
+sections of the sstable in-memory as uncompressed buffers.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="file-cache-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">file_cache_size_in_mb</span></code><a class="headerlink" href="#file-cache-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Maximum memory to use for sstable chunk cache and buffer pooling.
+32MB of this are reserved for pooling buffers, the rest is used for chunk cache
+that holds uncompressed sstable chunks.
+Defaults to the smaller of 1/4 of heap or 512MB. This pool is allocated off-heap,
+so is in addition to the memory allocated for heap. The cache also has on-heap
+overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size
+if the default 64k chunk size is used).
+Memory is only allocated when needed.</p>
+<p><em>Default Value:</em> 512</p>
+</div>
+<div class="section" id="buffer-pool-use-heap-if-exhausted">
+<h2><code class="docutils literal notranslate"><span class="pre">buffer_pool_use_heap_if_exhausted</span></code><a class="headerlink" href="#buffer-pool-use-heap-if-exhausted" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Flag indicating whether to allocate on or off heap when the sstable buffer
+pool is exhausted, that is when it has exceeded the maximum memory
+file_cache_size_in_mb, beyond which it will not cache buffers but allocate on request.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="disk-optimization-strategy">
+<h2><code class="docutils literal notranslate"><span class="pre">disk_optimization_strategy</span></code><a class="headerlink" href="#disk-optimization-strategy" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>The strategy for optimizing disk read
+Possible values are:
+ssd (for solid state disks, the default)
+spinning (for spinning disks)</p>
+<p><em>Default Value:</em> ssd</p>
+</div>
+<div class="section" id="memtable-heap-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_heap_space_in_mb</span></code><a class="headerlink" href="#memtable-heap-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Total permitted memory to use for memtables. Cassandra will stop
+accepting writes when the limit is exceeded until a flush completes,
+and will trigger a flush based on memtable_cleanup_threshold
+If omitted, Cassandra will set both to 1/4 the size of the heap.</p>
+<p><em>Default Value:</em> 2048</p>
+</div>
+<div class="section" id="memtable-offheap-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_offheap_space_in_mb</span></code><a class="headerlink" href="#memtable-offheap-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 2048</p>
+</div>
+<div class="section" id="memtable-cleanup-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_cleanup_threshold</span></code><a class="headerlink" href="#memtable-cleanup-threshold" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>memtable_cleanup_threshold is deprecated. The default calculation
+is the only reasonable choice. See the comments on  memtable_flush_writers
+for more information.</p>
+<p>Ratio of occupied non-flushing memtable size to total permitted size
+that will trigger a flush of the largest memtable. Larger mct will
+mean larger flushes and hence less compaction, but also less concurrent
+flush activity which can make it difficult to keep your disks fed
+under heavy write load.</p>
+<p>memtable_cleanup_threshold defaults to 1 / (memtable_flush_writers + 1)</p>
+<p><em>Default Value:</em> 0.11</p>
+</div>
+<div class="section" id="memtable-allocation-type">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_allocation_type</span></code><a class="headerlink" href="#memtable-allocation-type" title="Permalink to this headline">¶</a></h2>
+<p>Specify the way Cassandra allocates and manages memtable memory.
+Options are:</p>
+<dl class="docutils">
+<dt>heap_buffers</dt>
+<dd>on heap nio buffers</dd>
+<dt>offheap_buffers</dt>
+<dd>off heap (direct) nio buffers</dd>
+<dt>offheap_objects</dt>
+<dd>off heap objects</dd>
+</dl>
+<p><em>Default Value:</em> heap_buffers</p>
+</div>
+<div class="section" id="repair-session-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">repair_session_space_in_mb</span></code><a class="headerlink" href="#repair-session-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Limit memory usage for Merkle tree calculations during repairs. The default
+is 1/16th of the available heap. The main tradeoff is that smaller trees
+have less resolution, which can lead to over-streaming data. If you see heap
+pressure during repairs, consider lowering this, but you cannot go below
+one megabyte. If you see lots of over-streaming, consider raising
+this or using subrange repair.</p>
+<p>For more details see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14096">https://issues.apache.org/jira/browse/CASSANDRA-14096</a>.</p>
+</div>
+<div class="section" id="commitlog-total-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">commitlog_total_space_in_mb</span></code><a class="headerlink" href="#commitlog-total-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Total space to use for commit logs on disk.</p>
+<p>If space gets above this value, Cassandra will flush every dirty CF
+in the oldest segment and remove it.  So a small total commitlog space
+will tend to cause more flush activity on less-active columnfamilies.</p>
+<p>The default value is the smaller of 8192, and 1/4 of the total space
+of the commitlog volume.</p>
+<p><em>Default Value:</em> 8192</p>
+</div>
+<div class="section" id="memtable-flush-writers">
+<h2><code class="docutils literal notranslate"><span class="pre">memtable_flush_writers</span></code><a class="headerlink" href="#memtable-flush-writers" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>This sets the number of memtable flush writer threads per disk
+as well as the total number of memtables that can be flushed concurrently.
+These are generally a combination of compute and IO bound.</p>
+<p>Memtable flushing is more CPU efficient than memtable ingest and a single thread
+can keep up with the ingest rate of a whole server on a single fast disk
+until it temporarily becomes IO bound under contention typically with compaction.
+At that point you need multiple flush threads. At some point in the future
+it may become CPU bound all the time.</p>
+<p>You can tell if flushing is falling behind using the MemtablePool.BlockedOnAllocation
+metric which should be 0, but will be non-zero if threads are blocked waiting on flushing
+to free memory.</p>
+<p>memtable_flush_writers defaults to two for a single data directory.
+This means that two  memtables can be flushed concurrently to the single data directory.
+If you have multiple data directories the default is one memtable flushing at a time
+but the flush will use a thread per data directory so you will get two or more writers.</p>
+<p>Two is generally enough to flush on a fast disk [array] mounted as a single data directory.
+Adding more flush writers will result in smaller more frequent flushes that introduce more
+compaction overhead.</p>
+<p>There is a direct tradeoff between number of memtables that can be flushed concurrently
+and flush size and frequency. More is not better you just need enough flush writers
+to never stall waiting for flushing to free memory.</p>
+<p><em>Default Value:</em> 2</p>
+</div>
+<div class="section" id="cdc-total-space-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">cdc_total_space_in_mb</span></code><a class="headerlink" href="#cdc-total-space-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Total space to use for change-data-capture logs on disk.</p>
+<p>If space gets above this value, Cassandra will throw WriteTimeoutException
+on Mutations including tables with CDC enabled. A CDCCompactor is responsible
+for parsing the raw CDC logs and deleting them when parsing is completed.</p>
+<p>The default value is the min of 4096 mb and 1/8th of the total space
+of the drive where cdc_raw_directory resides.</p>
+<p><em>Default Value:</em> 4096</p>
+</div>
+<div class="section" id="cdc-free-space-check-interval-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">cdc_free_space_check_interval_ms</span></code><a class="headerlink" href="#cdc-free-space-check-interval-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>When we hit our cdc_raw limit and the CDCCompactor is either running behind
+or experiencing backpressure, we check at the following interval to see if any
+new space for cdc-tracked tables has been made available. Default to 250ms</p>
+<p><em>Default Value:</em> 250</p>
+</div>
+<div class="section" id="index-summary-capacity-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">index_summary_capacity_in_mb</span></code><a class="headerlink" href="#index-summary-capacity-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>A fixed memory pool size in MB for for SSTable index summaries. If left
+empty, this will default to 5% of the heap size. If the memory usage of
+all index summaries exceeds this limit, SSTables with low read rates will
+shrink their index summaries in order to meet this limit.  However, this
+is a best-effort process. In extreme conditions Cassandra may need to use
+more than this amount of memory.</p>
+</div>
+<div class="section" id="index-summary-resize-interval-in-minutes">
+<h2><code class="docutils literal notranslate"><span class="pre">index_summary_resize_interval_in_minutes</span></code><a class="headerlink" href="#index-summary-resize-interval-in-minutes" title="Permalink to this headline">¶</a></h2>
+<p>How frequently index summaries should be resampled.  This is done
+periodically to redistribute memory from the fixed-size pool to sstables
+proportional their recent read rates.  Setting to -1 will disable this
+process, leaving existing index summaries at their current sampling level.</p>
+<p><em>Default Value:</em> 60</p>
+</div>
+<div class="section" id="trickle-fsync">
+<h2><code class="docutils literal notranslate"><span class="pre">trickle_fsync</span></code><a class="headerlink" href="#trickle-fsync" title="Permalink to this headline">¶</a></h2>
+<p>Whether to, when doing sequential writing, fsync() at intervals in
+order to force the operating system to flush the dirty
+buffers. Enable this to avoid sudden dirty buffer flushing from
+impacting read latencies. Almost always a good idea on SSDs; not
+necessarily on platters.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="trickle-fsync-interval-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">trickle_fsync_interval_in_kb</span></code><a class="headerlink" href="#trickle-fsync-interval-in-kb" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 10240</p>
+</div>
+<div class="section" id="storage-port">
+<h2><code class="docutils literal notranslate"><span class="pre">storage_port</span></code><a class="headerlink" href="#storage-port" title="Permalink to this headline">¶</a></h2>
+<p>TCP port, for commands and data
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
+<p><em>Default Value:</em> 7000</p>
+</div>
+<div class="section" id="ssl-storage-port">
+<h2><code class="docutils literal notranslate"><span class="pre">ssl_storage_port</span></code><a class="headerlink" href="#ssl-storage-port" title="Permalink to this headline">¶</a></h2>
+<p>SSL port, for legacy encrypted communication. This property is unused unless enabled in
+server_encryption_options (see below). As of cassandra 4.0, this property is deprecated
+as a single port can be used for either/both secure and insecure connections.
+For security reasons, you should not expose this port to the internet. Firewall it if needed.</p>
+<p><em>Default Value:</em> 7001</p>
+</div>
+<div class="section" id="listen-address">
+<h2><code class="docutils literal notranslate"><span class="pre">listen_address</span></code><a class="headerlink" href="#listen-address" title="Permalink to this headline">¶</a></h2>
+<p>Address or interface to bind to and tell other Cassandra nodes to connect to.
+You _must_ change this if you want multiple nodes to be able to communicate!</p>
+<p>Set listen_address OR listen_interface, not both.</p>
+<p>Leaving it blank leaves it up to InetAddress.getLocalHost(). This
+will always do the Right Thing _if_ the node is properly configured
+(hostname, name resolution, etc), and the Right Thing is to use the
+address associated with the hostname (it might not be). If unresolvable
+it will fall back to InetAddress.getLoopbackAddress(), which is wrong for production systems.</p>
+<p>Setting listen_address to 0.0.0.0 is always wrong.</p>
+<p><em>Default Value:</em> localhost</p>
+</div>
+<div class="section" id="listen-interface">
+<h2><code class="docutils literal notranslate"><span class="pre">listen_interface</span></code><a class="headerlink" href="#listen-interface" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Set listen_address OR listen_interface, not both. Interfaces must correspond
+to a single address, IP aliasing is not supported.</p>
+<p><em>Default Value:</em> eth0</p>
+</div>
+<div class="section" id="listen-interface-prefer-ipv6">
+<h2><code class="docutils literal notranslate"><span class="pre">listen_interface_prefer_ipv6</span></code><a class="headerlink" href="#listen-interface-prefer-ipv6" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
+you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4
+address will be used. If true the first ipv6 address will be used. Defaults to false preferring
+ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="broadcast-address">
+<h2><code class="docutils literal notranslate"><span class="pre">broadcast_address</span></code><a class="headerlink" href="#broadcast-address" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Address to broadcast to other Cassandra nodes
+Leaving this blank will set it to the same value as listen_address</p>
+<p><em>Default Value:</em> 1.2.3.4</p>
+</div>
+<div class="section" id="listen-on-broadcast-address">
+<h2><code class="docutils literal notranslate"><span class="pre">listen_on_broadcast_address</span></code><a class="headerlink" href="#listen-on-broadcast-address" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>When using multiple physical network interfaces, set this
+to true to listen on broadcast_address in addition to
+the listen_address, allowing nodes to communicate in both
+interfaces.
+Ignore this property if the network configuration automatically
+routes  between the public and private networks such as EC2.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="internode-authenticator">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_authenticator</span></code><a class="headerlink" href="#internode-authenticator" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Internode authentication backend, implementing IInternodeAuthenticator;
+used to allow/disallow connections from peer nodes.</p>
+<p><em>Default Value:</em> org.apache.cassandra.auth.AllowAllInternodeAuthenticator</p>
+</div>
+<div class="section" id="start-native-transport">
+<h2><code class="docutils literal notranslate"><span class="pre">start_native_transport</span></code><a class="headerlink" href="#start-native-transport" title="Permalink to this headline">¶</a></h2>
+<p>Whether to start the native transport server.
+The address on which the native transport is bound is defined by rpc_address.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="native-transport-port">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_port</span></code><a class="headerlink" href="#native-transport-port" title="Permalink to this headline">¶</a></h2>
+<p>port for the CQL native transport to listen for clients on
+For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
+<p><em>Default Value:</em> 9042</p>
+</div>
+<div class="section" id="native-transport-port-ssl">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_port_ssl</span></code><a class="headerlink" href="#native-transport-port-ssl" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+Enabling native transport encryption in client_encryption_options allows you to either use
+encryption for the standard port or to use a dedicated, additional port along with the unencrypted
+standard native_transport_port.
+Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption
+for native_transport_port. Setting native_transport_port_ssl to a different value
+from native_transport_port will use encryption for native_transport_port_ssl while
+keeping native_transport_port unencrypted.</p>
+<p><em>Default Value:</em> 9142</p>
+</div>
+<div class="section" id="native-transport-max-threads">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_max_threads</span></code><a class="headerlink" href="#native-transport-max-threads" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+The maximum threads for handling requests (note that idle threads are stopped
+after 30 seconds so there is not corresponding minimum setting).</p>
+<p><em>Default Value:</em> 128</p>
+</div>
+<div class="section" id="native-transport-max-frame-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_max_frame_size_in_mb</span></code><a class="headerlink" href="#native-transport-max-frame-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>The maximum size of allowed frame. Frame (requests) larger than this will
+be rejected as invalid. The default is 256MB. If you’re changing this parameter,
+you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048.</p>
+<p><em>Default Value:</em> 256</p>
+</div>
+<div class="section" id="native-transport-max-concurrent-connections">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_max_concurrent_connections</span></code><a class="headerlink" href="#native-transport-max-concurrent-connections" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>The maximum number of concurrent client connections.
+The default is -1, which means unlimited.</p>
+<p><em>Default Value:</em> -1</p>
+</div>
+<div class="section" id="native-transport-max-concurrent-connections-per-ip">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_max_concurrent_connections_per_ip</span></code><a class="headerlink" href="#native-transport-max-concurrent-connections-per-ip" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>The maximum number of concurrent client connections per source ip.
+The default is -1, which means unlimited.</p>
+<p><em>Default Value:</em> -1</p>
+</div>
+<div class="section" id="native-transport-allow-older-protocols">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_allow_older_protocols</span></code><a class="headerlink" href="#native-transport-allow-older-protocols" title="Permalink to this headline">¶</a></h2>
+<p>Controls whether Cassandra honors older, yet currently supported, protocol versions.
+The default is true, which means all supported protocols will be honored.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="native-transport-idle-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_idle_timeout_in_ms</span></code><a class="headerlink" href="#native-transport-idle-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Controls when idle client connections are closed. Idle connections are ones that had neither reads
+nor writes for a time period.</p>
+<p>Clients may implement heartbeats by sending OPTIONS native protocol message after a timeout, which
+will reset idle timeout timer on the server side. To close idle client connections, corresponding
+values for heartbeat intervals have to be set on the client side.</p>
+<p>Idle connection timeouts are disabled by default.</p>
+<p><em>Default Value:</em> 60000</p>
+</div>
+<div class="section" id="rpc-address">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_address</span></code><a class="headerlink" href="#rpc-address" title="Permalink to this headline">¶</a></h2>
+<p>The address or interface to bind the native transport server to.</p>
+<p>Set rpc_address OR rpc_interface, not both.</p>
+<p>Leaving rpc_address blank has the same effect as on listen_address
+(i.e. it will be based on the configured hostname of the node).</p>
+<p>Note that unlike listen_address, you can specify 0.0.0.0, but you must also
+set broadcast_rpc_address to a value other than 0.0.0.0.</p>
+<p>For security reasons, you should not expose this port to the internet.  Firewall it if needed.</p>
+<p><em>Default Value:</em> localhost</p>
+</div>
+<div class="section" id="rpc-interface">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_interface</span></code><a class="headerlink" href="#rpc-interface" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Set rpc_address OR rpc_interface, not both. Interfaces must correspond
+to a single address, IP aliasing is not supported.</p>
+<p><em>Default Value:</em> eth1</p>
+</div>
+<div class="section" id="rpc-interface-prefer-ipv6">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_interface_prefer_ipv6</span></code><a class="headerlink" href="#rpc-interface-prefer-ipv6" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address
+you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4
+address will be used. If true the first ipv6 address will be used. Defaults to false preferring
+ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="broadcast-rpc-address">
+<h2><code class="docutils literal notranslate"><span class="pre">broadcast_rpc_address</span></code><a class="headerlink" href="#broadcast-rpc-address" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>RPC address to broadcast to drivers and other Cassandra nodes. This cannot
+be set to 0.0.0.0. If left blank, this will be set to the value of
+rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must
+be set.</p>
+<p><em>Default Value:</em> 1.2.3.4</p>
+</div>
+<div class="section" id="rpc-keepalive">
+<h2><code class="docutils literal notranslate"><span class="pre">rpc_keepalive</span></code><a class="headerlink" href="#rpc-keepalive" title="Permalink to this headline">¶</a></h2>
+<p>enable or disable keepalive on rpc/native connections</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="internode-send-buff-size-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_send_buff_size_in_bytes</span></code><a class="headerlink" href="#internode-send-buff-size-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Uncomment to set socket buffer size for internode communication
+Note that when setting this, the buffer size is limited by net.core.wmem_max
+and when not setting it it is defined by net.ipv4.tcp_wmem
+See also:
+/proc/sys/net/core/wmem_max
+/proc/sys/net/core/rmem_max
+/proc/sys/net/ipv4/tcp_wmem
+/proc/sys/net/ipv4/tcp_wmem
+and ‘man tcp’</p>
+</div>
+<div class="section" id="internode-recv-buff-size-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_recv_buff_size_in_bytes</span></code><a class="headerlink" href="#internode-recv-buff-size-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Uncomment to set socket buffer size for internode communication
+Note that when setting this, the buffer size is limited by net.core.wmem_max
+and when not setting it it is defined by net.ipv4.tcp_wmem</p>
+</div>
+<div class="section" id="incremental-backups">
+<h2><code class="docutils literal notranslate"><span class="pre">incremental_backups</span></code><a class="headerlink" href="#incremental-backups" title="Permalink to this headline">¶</a></h2>
+<p>Set to true to have Cassandra create a hard link to each sstable
+flushed or streamed locally in a backups/ subdirectory of the
+keyspace data.  Removing these links is the operator’s
+responsibility.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="snapshot-before-compaction">
+<h2><code class="docutils literal notranslate"><span class="pre">snapshot_before_compaction</span></code><a class="headerlink" href="#snapshot-before-compaction" title="Permalink to this headline">¶</a></h2>
+<p>Whether or not to take a snapshot before each compaction.  Be
+careful using this option, since Cassandra won’t clean up the
+snapshots for you.  Mostly useful if you’re paranoid when there
+is a data format change.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="auto-snapshot">
+<h2><code class="docutils literal notranslate"><span class="pre">auto_snapshot</span></code><a class="headerlink" href="#auto-snapshot" title="Permalink to this headline">¶</a></h2>
+<p>Whether or not a snapshot is taken of the data before keyspace truncation
+or dropping of column families. The STRONGLY advised default of true
+should be used to provide data safety. If you set this flag to false, you will
+lose data on truncation or drop.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="snapshot-links-per-second">
+<h2><code class="docutils literal notranslate"><span class="pre">snapshot_links_per_second</span></code><a class="headerlink" href="#snapshot-links-per-second" title="Permalink to this headline">¶</a></h2>
+<p>The act of creating or clearing a snapshot involves creating or removing
+potentially tens of thousands of links, which can cause significant performance
+impact, especially on consumer grade SSDs. A non-zero value here can
+be used to throttle these links to avoid negative performance impact of
+taking and clearing snapshots</p>
+<p><em>Default Value:</em> 0</p>
+</div>
+<div class="section" id="column-index-size-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">column_index_size_in_kb</span></code><a class="headerlink" href="#column-index-size-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Granularity of the collation index of rows within a partition.
+Increase if your rows are large, or if you have a very large
+number of rows per partition.  The competing goals are these:</p>
+<ul class="simple">
+<li>a smaller granularity means more index entries are generated
+and looking up rows withing the partition by collation column
+is faster</li>
+<li>but, Cassandra will keep the collation index in memory for hot
+rows (as part of the key cache), so a larger granularity means
+you can cache more hot rows</li>
+</ul>
+<p><em>Default Value:</em> 64</p>
+</div>
+<div class="section" id="column-index-cache-size-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">column_index_cache_size_in_kb</span></code><a class="headerlink" href="#column-index-cache-size-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Per sstable indexed key cache entries (the collation index in memory
+mentioned above) exceeding this size will not be held on heap.
+This means that only partition information is held on heap and the
+index entries are read from disk.</p>
+<p>Note that this size refers to the size of the
+serialized index information and not the size of the partition.</p>
+<p><em>Default Value:</em> 2</p>
+</div>
+<div class="section" id="concurrent-compactors">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_compactors</span></code><a class="headerlink" href="#concurrent-compactors" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of simultaneous compactions to allow, NOT including
+validation “compactions” for anti-entropy repair.  Simultaneous
+compactions can help preserve read performance in a mixed read/write
+workload, by mitigating the tendency of small sstables to accumulate
+during a single long running compactions. The default is usually
+fine and if you experience problems with compaction running too
+slowly or too fast, you should look at
+compaction_throughput_mb_per_sec first.</p>
+<p>concurrent_compactors defaults to the smaller of (number of disks,
+number of cores), with a minimum of 2 and a maximum of 8.</p>
+<p>If your data directories are backed by SSD, you should increase this
+to the number of cores.</p>
+<p><em>Default Value:</em> 1</p>
+</div>
+<div class="section" id="concurrent-validations">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_validations</span></code><a class="headerlink" href="#concurrent-validations" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Number of simultaneous repair validations to allow. If not set or set to
+a value less than 1, it defaults to the value of concurrent_compactors.
+To set a value greeater than concurrent_compactors at startup, the system
+property cassandra.allow_unlimited_concurrent_validations must be set to
+true. To dynamically resize to a value &gt; concurrent_compactors on a running
+node, first call the bypassConcurrentValidatorsLimit method on the
+org.apache.cassandra.db:type=StorageService mbean</p>
+<p><em>Default Value:</em> 0</p>
+</div>
+<div class="section" id="concurrent-materialized-view-builders">
+<h2><code class="docutils literal notranslate"><span class="pre">concurrent_materialized_view_builders</span></code><a class="headerlink" href="#concurrent-materialized-view-builders" title="Permalink to this headline">¶</a></h2>
+<p>Number of simultaneous materialized view builder tasks to allow.</p>
+<p><em>Default Value:</em> 1</p>
+</div>
+<div class="section" id="compaction-throughput-mb-per-sec">
+<h2><code class="docutils literal notranslate"><span class="pre">compaction_throughput_mb_per_sec</span></code><a class="headerlink" href="#compaction-throughput-mb-per-sec" title="Permalink to this headline">¶</a></h2>
+<p>Throttles compaction to the given total throughput across the entire
+system. The faster you insert data, the faster you need to compact in
+order to keep the sstable count down, but in general, setting this to
+16 to 32 times the rate you are inserting data is more than sufficient.
+Setting this to 0 disables throttling. Note that this accounts for all types
+of compaction, including validation compaction (building Merkle trees
+for repairs).</p>
+<p><em>Default Value:</em> 64</p>
+</div>
+<div class="section" id="sstable-preemptive-open-interval-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">sstable_preemptive_open_interval_in_mb</span></code><a class="headerlink" href="#sstable-preemptive-open-interval-in-mb" title="Permalink to this headline">¶</a></h2>
+<p>When compacting, the replacement sstable(s) can be opened before they
+are completely written, and used in place of the prior sstables for
+any range that has been written. This helps to smoothly transfer reads
+between the sstables, reducing page cache churn and keeping hot rows hot</p>
+<p><em>Default Value:</em> 50</p>
+</div>
+<div class="section" id="stream-entire-sstables">
+<h2><code class="docutils literal notranslate"><span class="pre">stream_entire_sstables</span></code><a class="headerlink" href="#stream-entire-sstables" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>When enabled, permits Cassandra to zero-copy stream entire eligible
+SSTables between nodes, including every component.
+This speeds up the network transfer significantly subject to
+throttling specified by stream_throughput_outbound_megabits_per_sec.
+Enabling this will reduce the GC pressure on sending and receiving node.
+When unset, the default is enabled. While this feature tries to keep the
+disks balanced, it cannot guarantee it. This feature will be automatically
+disabled if internode encryption is enabled.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="stream-throughput-outbound-megabits-per-sec">
+<h2><code class="docutils literal notranslate"><span class="pre">stream_throughput_outbound_megabits_per_sec</span></code><a class="headerlink" href="#stream-throughput-outbound-megabits-per-sec" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Throttles all outbound streaming file transfers on this node to the
+given total throughput in Mbps. This is necessary because Cassandra does
+mostly sequential IO when streaming data during bootstrap or repair, which
+can lead to saturating the network connection and degrading rpc performance.
+When unset, the default is 200 Mbps or 25 MB/s.</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="inter-dc-stream-throughput-outbound-megabits-per-sec">
+<h2><code class="docutils literal notranslate"><span class="pre">inter_dc_stream_throughput_outbound_megabits_per_sec</span></code><a class="headerlink" href="#inter-dc-stream-throughput-outbound-megabits-per-sec" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Throttles all streaming file transfer between the datacenters,
+this setting allows users to throttle inter dc stream throughput in addition
+to throttling all network stream traffic as configured with
+stream_throughput_outbound_megabits_per_sec
+When unset, the default is 200 Mbps or 25 MB/s</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="read-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">read_request_timeout_in_ms</span></code><a class="headerlink" href="#read-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for read operations to complete.
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 5000</p>
+</div>
+<div class="section" id="range-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">range_request_timeout_in_ms</span></code><a class="headerlink" href="#range-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for seq or index scans to complete.
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 10000</p>
+</div>
+<div class="section" id="write-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">write_request_timeout_in_ms</span></code><a class="headerlink" href="#write-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for writes to complete.
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 2000</p>
+</div>
+<div class="section" id="counter-write-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">counter_write_request_timeout_in_ms</span></code><a class="headerlink" href="#counter-write-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for counter writes to complete.
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 5000</p>
+</div>
+<div class="section" id="cas-contention-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">cas_contention_timeout_in_ms</span></code><a class="headerlink" href="#cas-contention-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long a coordinator should continue to retry a CAS operation
+that contends with other proposals for the same row.
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 1000</p>
+</div>
+<div class="section" id="truncate-request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">truncate_request_timeout_in_ms</span></code><a class="headerlink" href="#truncate-request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long the coordinator should wait for truncates to complete
+(This can be much longer, because unless auto_snapshot is disabled
+we need to flush first so we can snapshot before removing the data.)
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 60000</p>
+</div>
+<div class="section" id="request-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">request_timeout_in_ms</span></code><a class="headerlink" href="#request-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>The default timeout for other, miscellaneous operations.
+Lowest acceptable value is 10 ms.</p>
+<p><em>Default Value:</em> 10000</p>
+</div>
+<div class="section" id="internode-application-send-queue-capacity-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_application_send_queue_capacity_in_bytes</span></code><a class="headerlink" href="#internode-application-send-queue-capacity-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Defensive settings for protecting Cassandra from true network partitions.
+See (CASSANDRA-14358) for details.</p>
+<p>The amount of time to wait for internode tcp connections to establish.
+internode_tcp_connect_timeout_in_ms = 2000</p>
+<p>The amount of time unacknowledged data is allowed on a connection before we throw out the connection
+Note this is only supported on Linux + epoll, and it appears to behave oddly above a setting of 30000
+(it takes much longer than 30s) as of Linux 4.12. If you want something that high set this to 0
+which picks up the OS default and configure the net.ipv4.tcp_retries2 sysctl to be ~8.
+internode_tcp_user_timeout_in_ms = 30000</p>
+<p>The amount of time unacknowledged data is allowed on a streaming connection.
+The default is 5 minutes. Increase it or set it to 0 in order to increase the timeout.
+internode_streaming_tcp_user_timeout_in_ms = 300000</p>
+<p>The maximum continuous period a connection may be unwritable in application space
+internode_application_timeout_in_ms = 30000</p>
+<p>Global, per-endpoint and per-connection limits imposed on messages queued for delivery to other nodes
+and waiting to be processed on arrival from other nodes in the cluster.  These limits are applied to the on-wire
+size of the message being sent or received.</p>
+<p>The basic per-link limit is consumed in isolation before any endpoint or global limit is imposed.
+Each node-pair has three links: urgent, small and large.  So any given node may have a maximum of
+N*3*(internode_application_send_queue_capacity_in_bytes+internode_application_receive_queue_capacity_in_bytes)
+messages queued without any coordination between them although in practice, with token-aware routing, only RF*tokens
+nodes should need to communicate with significant bandwidth.</p>
+<p>The per-endpoint limit is imposed on all messages exceeding the per-link limit, simultaneously with the global limit,
+on all links to or from a single node in the cluster.
+The global limit is imposed on all messages exceeding the per-link limit, simultaneously with the per-endpoint limit,
+on all links to or from any node in the cluster.</p>
+<p><em>Default Value:</em> 4194304                       #4MiB</p>
+</div>
+<div class="section" id="internode-application-send-queue-reserve-endpoint-capacity-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_application_send_queue_reserve_endpoint_capacity_in_bytes</span></code><a class="headerlink" href="#internode-application-send-queue-reserve-endpoint-capacity-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 134217728    #128MiB</p>
+</div>
+<div class="section" id="internode-application-send-queue-reserve-global-capacity-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_application_send_queue_reserve_global_capacity_in_bytes</span></code><a class="headerlink" href="#internode-application-send-queue-reserve-global-capacity-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 536870912      #512MiB</p>
+</div>
+<div class="section" id="internode-application-receive-queue-capacity-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_application_receive_queue_capacity_in_bytes</span></code><a class="headerlink" href="#internode-application-receive-queue-capacity-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 4194304                    #4MiB</p>
+</div>
+<div class="section" id="internode-application-receive-queue-reserve-endpoint-capacity-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_application_receive_queue_reserve_endpoint_capacity_in_bytes</span></code><a class="headerlink" href="#internode-application-receive-queue-reserve-endpoint-capacity-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 134217728 #128MiB</p>
+</div>
+<div class="section" id="internode-application-receive-queue-reserve-global-capacity-in-bytes">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_application_receive_queue_reserve_global_capacity_in_bytes</span></code><a class="headerlink" href="#internode-application-receive-queue-reserve-global-capacity-in-bytes" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 536870912   #512MiB</p>
+</div>
+<div class="section" id="slow-query-log-timeout-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">slow_query_log_timeout_in_ms</span></code><a class="headerlink" href="#slow-query-log-timeout-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>How long before a node logs slow queries. Select queries that take longer than
+this timeout to execute, will generate an aggregated log message, so that slow queries
+can be identified. Set this value to zero to disable slow query logging.</p>
+<p><em>Default Value:</em> 500</p>
+</div>
+<div class="section" id="cross-node-timeout">
+<h2><code class="docutils literal notranslate"><span class="pre">cross_node_timeout</span></code><a class="headerlink" href="#cross-node-timeout" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Enable operation timeout information exchange between nodes to accurately
+measure request timeouts.  If disabled, replicas will assume that requests
+were forwarded to them instantly by the coordinator, which means that
+under overload conditions we will waste that much extra time processing
+already-timed-out requests.</p>
+<p>Warning: It is generally assumed that users have setup NTP on their clusters, and that clocks are modestly in sync,
+since this is a requirement for general correctness of last write wins.</p>
+<p><em>Default Value:</em> true</p>
+</div>
+<div class="section" id="streaming-keep-alive-period-in-secs">
+<h2><code class="docutils literal notranslate"><span class="pre">streaming_keep_alive_period_in_secs</span></code><a class="headerlink" href="#streaming-keep-alive-period-in-secs" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Set keep-alive period for streaming
+This node will send a keep-alive message periodically with this period.
+If the node does not receive a keep-alive message from the peer for
+2 keep-alive cycles the stream session times out and fail
+Default value is 300s (5 minutes), which means stalled stream
+times out in 10 minutes by default</p>
+<p><em>Default Value:</em> 300</p>
+</div>
+<div class="section" id="streaming-connections-per-host">
+<h2><code class="docutils literal notranslate"><span class="pre">streaming_connections_per_host</span></code><a class="headerlink" href="#streaming-connections-per-host" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Limit number of connections per host for streaming
+Increase this when you notice that joins are CPU-bound rather that network
+bound (for example a few nodes with big files).</p>
+<p><em>Default Value:</em> 1</p>
+</div>
+<div class="section" id="phi-convict-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">phi_convict_threshold</span></code><a class="headerlink" href="#phi-convict-threshold" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>phi value that must be reached for a host to be marked down.
+most users should never need to adjust this.</p>
+<p><em>Default Value:</em> 8</p>
+</div>
+<div class="section" id="endpoint-snitch">
+<h2><code class="docutils literal notranslate"><span class="pre">endpoint_snitch</span></code><a class="headerlink" href="#endpoint-snitch" title="Permalink to this headline">¶</a></h2>
+<p>endpoint_snitch – Set this to a class that implements
+IEndpointSnitch.  The snitch has two functions:</p>
+<ul class="simple">
+<li>it teaches Cassandra enough about your network topology to route
+requests efficiently</li>
+<li>it allows Cassandra to spread replicas around your cluster to avoid
+correlated failures. It does this by grouping machines into
+“datacenters” and “racks.”  Cassandra will do its best not to have
+more than one replica on the same “rack” (which may not actually
+be a physical location)</li>
+</ul>
+<p>CASSANDRA WILL NOT ALLOW YOU TO SWITCH TO AN INCOMPATIBLE SNITCH
+ONCE DATA IS INSERTED INTO THE CLUSTER.  This would cause data loss.
+This means that if you start with the default SimpleSnitch, which
+locates every node on “rack1” in “datacenter1”, your only options
+if you need to add another datacenter are GossipingPropertyFileSnitch
+(and the older PFS).  From there, if you want to migrate to an
+incompatible snitch like Ec2Snitch you can do it by adding new nodes
+under Ec2Snitch (which will locate them in a new “datacenter”) and
+decommissioning the old ones.</p>
+<p>Out of the box, Cassandra provides:</p>
+<dl class="docutils">
+<dt>SimpleSnitch:</dt>
+<dd>Treats Strategy order as proximity. This can improve cache
+locality when disabling read repair.  Only appropriate for
+single-datacenter deployments.</dd>
+<dt>GossipingPropertyFileSnitch</dt>
+<dd>This should be your go-to snitch for production use.  The rack
+and datacenter for the local node are defined in
+cassandra-rackdc.properties and propagated to other nodes via
+gossip.  If cassandra-topology.properties exists, it is used as a
+fallback, allowing migration from the PropertyFileSnitch.</dd>
+<dt>PropertyFileSnitch:</dt>
+<dd>Proximity is determined by rack and data center, which are
+explicitly configured in cassandra-topology.properties.</dd>
+<dt>Ec2Snitch:</dt>
+<dd>Appropriate for EC2 deployments in a single Region. Loads Region
+and Availability Zone information from the EC2 API. The Region is
+treated as the datacenter, and the Availability Zone as the rack.
+Only private IPs are used, so this will not work across multiple
+Regions.</dd>
+<dt>Ec2MultiRegionSnitch:</dt>
+<dd>Uses public IPs as broadcast_address to allow cross-region
+connectivity.  (Thus, you should set seed addresses to the public
+IP as well.) You will need to open the storage_port or
+ssl_storage_port on the public IP firewall.  (For intra-Region
+traffic, Cassandra will switch to the private IP after
+establishing a connection.)</dd>
+<dt>RackInferringSnitch:</dt>
+<dd>Proximity is determined by rack and data center, which are
+assumed to correspond to the 3rd and 2nd octet of each node’s IP
+address, respectively.  Unless this happens to match your
+deployment conventions, this is best used as an example of
+writing a custom Snitch class and is provided in that spirit.</dd>
+</dl>
+<p>You can use a custom Snitch by setting this to the full class name
+of the snitch, which will be assumed to be on your classpath.</p>
+<p><em>Default Value:</em> SimpleSnitch</p>
+</div>
+<div class="section" id="dynamic-snitch-update-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_update_interval_in_ms</span></code><a class="headerlink" href="#dynamic-snitch-update-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>controls how often to perform the more expensive part of host score
+calculation</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="dynamic-snitch-reset-interval-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_reset_interval_in_ms</span></code><a class="headerlink" href="#dynamic-snitch-reset-interval-in-ms" title="Permalink to this headline">¶</a></h2>
+<p>controls how often to reset all host scores, allowing a bad host to
+possibly recover</p>
+<p><em>Default Value:</em> 600000</p>
+</div>
+<div class="section" id="dynamic-snitch-badness-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_badness_threshold</span></code><a class="headerlink" href="#dynamic-snitch-badness-threshold" title="Permalink to this headline">¶</a></h2>
+<p>if set greater than zero, this will allow
+‘pinning’ of replicas to hosts in order to increase cache capacity.
+The badness threshold will control how much worse the pinned host has to be
+before the dynamic snitch will prefer other replicas over it.  This is
+expressed as a double which represents a percentage.  Thus, a value of
+0.2 means Cassandra would continue to prefer the static snitch values
+until the pinned host was 20% worse than the fastest.</p>
+<p><em>Default Value:</em> 1.0</p>
+</div>
+<div class="section" id="server-encryption-options">
+<h2><code class="docutils literal notranslate"><span class="pre">server_encryption_options</span></code><a class="headerlink" href="#server-encryption-options" title="Permalink to this headline">¶</a></h2>
+<p>Configure server-to-server internode encryption</p>
+<p>JVM and netty defaults for supported SSL socket protocols and cipher suites can
+be replaced using custom encryption options. This is not recommended
+unless you have policies in place that dictate certain settings, or
+need to disable vulnerable ciphers or protocols in case the JVM cannot
+be updated.</p>
+<p>FIPS compliant settings can be configured at JVM level and should not
+involve changing encryption settings here:
+<a class="reference external" href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html">https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html</a></p>
+<p><strong>NOTE</strong> this default configuration is an insecure configuration. If you need to
+enable server-to-server encryption generate server keystores (and truststores for mutual
+authentication) per:
+<a class="reference external" href="http://download.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore">http://download.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore</a>
+Then perform the following configuration changes:</p>
+<p>Step 1: Set internode_encryption=&lt;dc|rack|all&gt; and explicitly set optional=true. Restart all nodes</p>
+<p>Step 2: Set optional=false (or remove it) and if you generated truststores and want to use mutual
+auth set require_client_auth=true. Restart all nodes</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># On outbound connections, determine which type of peers to securely connect to.</span>
+<span class="c1">#   The available options are :</span>
+<span class="c1">#     none : Do not encrypt outgoing connections</span>
+<span class="c1">#     dc   : Encrypt connections to peers in other datacenters but not within datacenters</span>
+<span class="c1">#     rack : Encrypt connections to peers in other racks but not within racks</span>
+<span class="c1">#     all  : Always use encrypted connections</span>
+<span class="n">internode_encryption</span><span class="p">:</span> <span class="n">none</span>
+<span class="c1"># When set to true, encrypted and unencrypted connections are allowed on the storage_port</span>
+<span class="c1"># This should _only be true_ while in unencrypted or transitional operation</span>
+<span class="c1"># optional defaults to true if internode_encryption is none</span>
+<span class="c1"># optional: true</span>
+<span class="c1"># If enabled, will open up an encrypted listening socket on ssl_storage_port. Should only be used</span>
+<span class="c1"># during upgrade to 4.0; otherwise, set to false.</span>
+<span class="n">enable_legacy_ssl_storage_port</span><span class="p">:</span> <span class="n">false</span>
+<span class="c1"># Set to a valid keystore if internode_encryption is dc, rack or all</span>
+<span class="n">keystore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">keystore</span>
+<span class="n">keystore_password</span><span class="p">:</span> <span class="n">cassandra</span>
+<span class="c1"># Verify peer server certificates</span>
+<span class="n">require_client_auth</span><span class="p">:</span> <span class="n">false</span>
+<span class="c1"># Set to a valid trustore if require_client_auth is true</span>
+<span class="n">truststore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">truststore</span>
+<span class="n">truststore_password</span><span class="p">:</span> <span class="n">cassandra</span>
+<span class="c1"># Verify that the host name in the certificate matches the connected host</span>
+<span class="n">require_endpoint_verification</span><span class="p">:</span> <span class="n">false</span>
+<span class="c1"># More advanced defaults:</span>
+<span class="c1"># protocol: TLS</span>
+<span class="c1"># store_type: JKS</span>
+<span class="c1"># cipher_suites: [</span>
+<span class="c1">#   TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,</span>
+<span class="c1">#   TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,</span>
+<span class="c1">#   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA,</span>
+<span class="c1">#   TLS_RSA_WITH_AES_256_CBC_SHA</span>
+<span class="c1"># ]</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="client-encryption-options">
+<h2><code class="docutils literal notranslate"><span class="pre">client_encryption_options</span></code><a class="headerlink" href="#client-encryption-options" title="Permalink to this headline">¶</a></h2>
+<p>Configure client-to-server encryption.</p>
+<p><strong>NOTE</strong> this default configuration is an insecure configuration. If you need to
+enable client-to-server encryption generate server keystores (and truststores for mutual
+authentication) per:
+<a class="reference external" href="http://download.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore">http://download.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore</a>
+Then perform the following configuration changes:</p>
+<p>Step 1: Set enabled=true and explicitly set optional=true. Restart all nodes</p>
+<p>Step 2: Set optional=false (or remove it) and if you generated truststores and want to use mutual
+auth set require_client_auth=true. Restart all nodes</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Enable client-to-server encryption</span>
+<span class="n">enabled</span><span class="p">:</span> <span class="n">false</span>
+<span class="c1"># When set to true, encrypted and unencrypted connections are allowed on the native_transport_port</span>
+<span class="c1"># This should _only be true_ while in unencrypted or transitional operation</span>
+<span class="c1"># optional defaults to true when enabled is false, and false when enabled is true.</span>
+<span class="c1"># optional: true</span>
+<span class="c1"># Set keystore and keystore_password to valid keystores if enabled is true</span>
+<span class="n">keystore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">keystore</span>
+<span class="n">keystore_password</span><span class="p">:</span> <span class="n">cassandra</span>
+<span class="c1"># Verify client certificates</span>
+<span class="n">require_client_auth</span><span class="p">:</span> <span class="n">false</span>
+<span class="c1"># Set trustore and truststore_password if require_client_auth is true</span>
+<span class="c1"># truststore: conf/.truststore</span>
+<span class="c1"># truststore_password: cassandra</span>
+<span class="c1"># More advanced defaults:</span>
+<span class="c1"># protocol: TLS</span>
+<span class="c1"># store_type: JKS</span>
+<span class="c1"># cipher_suites: [</span>
+<span class="c1">#   TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,</span>
+<span class="c1">#   TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,</span>
+<span class="c1">#   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA,</span>
+<span class="c1">#   TLS_RSA_WITH_AES_256_CBC_SHA</span>
+<span class="c1"># ]</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="internode-compression">
+<h2><code class="docutils literal notranslate"><span class="pre">internode_compression</span></code><a class="headerlink" href="#internode-compression" title="Permalink to this headline">¶</a></h2>
+<p>internode_compression controls whether traffic between nodes is
+compressed.
+Can be:</p>
+<dl class="docutils">
+<dt>all</dt>
+<dd>all traffic is compressed</dd>
+<dt>dc</dt>
+<dd>traffic between different datacenters is compressed</dd>
+<dt>none</dt>
+<dd>nothing is compressed.</dd>
+</dl>
+<p><em>Default Value:</em> dc</p>
+</div>
+<div class="section" id="inter-dc-tcp-nodelay">
+<h2><code class="docutils literal notranslate"><span class="pre">inter_dc_tcp_nodelay</span></code><a class="headerlink" href="#inter-dc-tcp-nodelay" title="Permalink to this headline">¶</a></h2>
+<p>Enable or disable tcp_nodelay for inter-dc communication.
+Disabling it will result in larger (but fewer) network packets being sent,
+reducing overhead from the TCP protocol itself, at the cost of increasing
+latency if you block for cross-datacenter responses.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="tracetype-query-ttl">
+<h2><code class="docutils literal notranslate"><span class="pre">tracetype_query_ttl</span></code><a class="headerlink" href="#tracetype-query-ttl" title="Permalink to this headline">¶</a></h2>
+<p>TTL for different trace types used during logging of the repair process.</p>
+<p><em>Default Value:</em> 86400</p>
+</div>
+<div class="section" id="tracetype-repair-ttl">
+<h2><code class="docutils literal notranslate"><span class="pre">tracetype_repair_ttl</span></code><a class="headerlink" href="#tracetype-repair-ttl" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 604800</p>
+</div>
+<div class="section" id="enable-user-defined-functions">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_user_defined_functions</span></code><a class="headerlink" href="#enable-user-defined-functions" title="Permalink to this headline">¶</a></h2>
+<p>If unset, all GC Pauses greater than gc_log_threshold_in_ms will log at
+INFO level
+UDFs (user defined functions) are disabled by default.
+As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="enable-scripted-user-defined-functions">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_scripted_user_defined_functions</span></code><a class="headerlink" href="#enable-scripted-user-defined-functions" title="Permalink to this headline">¶</a></h2>
+<p>Enables scripted UDFs (JavaScript UDFs).
+Java UDFs are always enabled, if enable_user_defined_functions is true.
+Enable this option to be able to use UDFs with “language javascript” or any custom JSR-223 provider.
+This option has no effect, if enable_user_defined_functions is false.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="windows-timer-interval">
+<h2><code class="docutils literal notranslate"><span class="pre">windows_timer_interval</span></code><a class="headerlink" href="#windows-timer-interval" title="Permalink to this headline">¶</a></h2>
+<p>The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation.
+Lowering this value on Windows can provide much tighter latency and better throughput, however
+some virtualized environments may see a negative performance impact from changing this setting
+below their system default. The sysinternals ‘clockres’ tool can confirm your system’s default
+setting.</p>
+<p><em>Default Value:</em> 1</p>
+</div>
+<div class="section" id="transparent-data-encryption-options">
+<h2><code class="docutils literal notranslate"><span class="pre">transparent_data_encryption_options</span></code><a class="headerlink" href="#transparent-data-encryption-options" title="Permalink to this headline">¶</a></h2>
+<p>Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from
+a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by
+the “key_alias” is the only key that will be used for encrypt opertaions; previously used keys
+can still (and should!) be in the keystore and will be used on decrypt operations
+(to handle the case of key rotation).</p>
+<p>It is strongly recommended to download and install Java Cryptography Extension (JCE)
+Unlimited Strength Jurisdiction Policy Files for your version of the JDK.
+(current link: <a class="reference external" href="http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html">http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html</a>)</p>
+<p>Currently, only the following file types are supported for transparent data encryption, although
+more are coming in future cassandra releases: commitlog, hints</p>
+<p><em>Default Value (complex option)</em>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">enabled</span><span class="p">:</span> <span class="n">false</span>
+<span class="n">chunk_length_kb</span><span class="p">:</span> <span class="mi">64</span>
+<span class="n">cipher</span><span class="p">:</span> <span class="n">AES</span><span class="o">/</span><span class="n">CBC</span><span class="o">/</span><span class="n">PKCS5Padding</span>
+<span class="n">key_alias</span><span class="p">:</span> <span class="n">testing</span><span class="p">:</span><span class="mi">1</span>
+<span class="c1"># CBC IV length for AES needs to be 16 bytes (which is also the default size)</span>
+<span class="c1"># iv_length: 16</span>
+<span class="n">key_provider</span><span class="p">:</span>
+  <span class="o">-</span> <span class="n">class_name</span><span class="p">:</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">security</span><span class="o">.</span><span class="n">JKSKeyProvider</span>
+    <span class="n">parameters</span><span class="p">:</span>
+      <span class="o">-</span> <span class="n">keystore</span><span class="p">:</span> <span class="n">conf</span><span class="o">/.</span><span class="n">keystore</span>
+        <span class="n">keystore_password</span><span class="p">:</span> <span class="n">cassandra</span>
+        <span class="n">store_type</span><span class="p">:</span> <span class="n">JCEKS</span>
+        <span class="n">key_password</span><span class="p">:</span> <span class="n">cassandra</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="tombstone-warn-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">tombstone_warn_threshold</span></code><a class="headerlink" href="#tombstone-warn-threshold" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="safety-thresholds">
+<h3>SAFETY THRESHOLDS #<a class="headerlink" href="#safety-thresholds" title="Permalink to this headline">¶</a></h3>
+<p>When executing a scan, within or across a partition, we need to keep the
+tombstones seen in memory so we can return them to the coordinator, which
+will use them to make sure other replicas also know about the deleted rows.
+With workloads that generate a lot of tombstones, this can cause performance
+problems and even exaust the server heap.
+(<a class="reference external" href="http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets">http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets</a>)
+Adjust the thresholds here if you understand the dangers and want to
+scan more tombstones anyway.  These thresholds may also be adjusted at runtime
+using the StorageService mbean.</p>
+<p><em>Default Value:</em> 1000</p>
+</div>
+</div>
+<div class="section" id="tombstone-failure-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">tombstone_failure_threshold</span></code><a class="headerlink" href="#tombstone-failure-threshold" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> 100000</p>
+</div>
+<div class="section" id="replica-filtering-protection">
+<h2><code class="docutils literal notranslate"><span class="pre">replica_filtering_protection</span></code><a class="headerlink" href="#replica-filtering-protection" title="Permalink to this headline">¶</a></h2>
+<p>Filtering and secondary index queries at read consistency levels above ONE/LOCAL_ONE use a
+mechanism called replica filtering protection to ensure that results from stale replicas do
+not violate consistency. (See CASSANDRA-8272 and CASSANDRA-15907 for more details.) This
+mechanism materializes replica results by partition on-heap at the coordinator. The more possibly
+stale results returned by the replicas, the more rows materialized during the query.</p>
+</div>
+<div class="section" id="batch-size-warn-threshold-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">batch_size_warn_threshold_in_kb</span></code><a class="headerlink" href="#batch-size-warn-threshold-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Log WARN on any multiple-partition batch size exceeding this value. 5kb per batch by default.
+Caution should be taken on increasing the size of this threshold as it can lead to node instability.</p>
+<p><em>Default Value:</em> 5</p>
+</div>
+<div class="section" id="batch-size-fail-threshold-in-kb">
+<h2><code class="docutils literal notranslate"><span class="pre">batch_size_fail_threshold_in_kb</span></code><a class="headerlink" href="#batch-size-fail-threshold-in-kb" title="Permalink to this headline">¶</a></h2>
+<p>Fail any multiple-partition batch exceeding this value. 50kb (10x warn threshold) by default.</p>
+<p><em>Default Value:</em> 50</p>
+</div>
+<div class="section" id="unlogged-batch-across-partitions-warn-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">unlogged_batch_across_partitions_warn_threshold</span></code><a class="headerlink" href="#unlogged-batch-across-partitions-warn-threshold" title="Permalink to this headline">¶</a></h2>
+<p>Log WARN on any batches not of type LOGGED than span across more partitions than this limit</p>
+<p><em>Default Value:</em> 10</p>
+</div>
+<div class="section" id="compaction-large-partition-warning-threshold-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">compaction_large_partition_warning_threshold_mb</span></code><a class="headerlink" href="#compaction-large-partition-warning-threshold-mb" title="Permalink to this headline">¶</a></h2>
+<p>Log a warning when compacting partitions larger than this value</p>
+<p><em>Default Value:</em> 100</p>
+</div>
+<div class="section" id="gc-log-threshold-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">gc_log_threshold_in_ms</span></code><a class="headerlink" href="#gc-log-threshold-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>GC Pauses greater than 200 ms will be logged at INFO level
+This threshold can be adjusted to minimize logging if necessary</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="gc-warn-threshold-in-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">gc_warn_threshold_in_ms</span></code><a class="headerlink" href="#gc-warn-threshold-in-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level
+Adjust the threshold based on your application throughput requirement. Setting to 0
+will deactivate the feature.</p>
+<p><em>Default Value:</em> 1000</p>
+</div>
+<div class="section" id="max-value-size-in-mb">
+<h2><code class="docutils literal notranslate"><span class="pre">max_value_size_in_mb</span></code><a class="headerlink" href="#max-value-size-in-mb" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Maximum size of any value in SSTables. Safety measure to detect SSTable corruption
+early. Any value size larger than this threshold will result into marking an SSTable
+as corrupted. This should be positive and less than 2048.</p>
+<p><em>Default Value:</em> 256</p>
+</div>
+<div class="section" id="otc-coalescing-strategy">
+<h2><code class="docutils literal notranslate"><span class="pre">otc_coalescing_strategy</span></code><a class="headerlink" href="#otc-coalescing-strategy" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Coalescing Strategies #
+Coalescing multiples messages turns out to significantly boost message processing throughput (think doubling or more).
+On bare metal, the floor for packet processing throughput is high enough that many applications won’t notice, but in
+virtualized environments, the point at which an application can be bound by network packet processing can be
+surprisingly low compared to the throughput of task processing that is possible inside a VM. It’s not that bare metal
+doesn’t benefit from coalescing messages, it’s that the number of packets a bare metal network interface can process
+is sufficient for many applications such that no load starvation is experienced even without coalescing.
+There are other benefits to coalescing network messages that are harder to isolate with a simple metric like messages
+per second. By coalescing multiple tasks together, a network thread can process multiple messages for the cost of one
+trip to read from a socket, and all the task submission work can be done at the same time reducing context switching
+and increasing cache friendliness of network message processing.
+See CASSANDRA-8692 for details.</p>
+<p>Strategy to use for coalescing messages in OutboundTcpConnection.
+Can be fixed, movingaverage, timehorizon, disabled (default).
+You can also specify a subclass of CoalescingStrategies.CoalescingStrategy by name.</p>
+<p><em>Default Value:</em> DISABLED</p>
+</div>
+<div class="section" id="otc-coalescing-window-us">
+<h2><code class="docutils literal notranslate"><span class="pre">otc_coalescing_window_us</span></code><a class="headerlink" href="#otc-coalescing-window-us" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>How many microseconds to wait for coalescing. For fixed strategy this is the amount of time after the first
+message is received before it will be sent with any accompanying messages. For moving average this is the
+maximum amount of time that will be waited as well as the interval at which messages must arrive on average
+for coalescing to be enabled.</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="otc-coalescing-enough-coalesced-messages">
+<h2><code class="docutils literal notranslate"><span class="pre">otc_coalescing_enough_coalesced_messages</span></code><a class="headerlink" href="#otc-coalescing-enough-coalesced-messages" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128.</p>
+<p><em>Default Value:</em> 8</p>
+</div>
+<div class="section" id="otc-backlog-expiration-interval-ms">
+<h2><code class="docutils literal notranslate"><span class="pre">otc_backlog_expiration_interval_ms</span></code><a class="headerlink" href="#otc-backlog-expiration-interval-ms" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection.
+Expiration is done if messages are piling up in the backlog. Droppable messages are expired to free the memory
+taken by expired messages. The interval should be between 0 and 1000, and in most installations the default value
+will be appropriate. A smaller value could potentially expire messages slightly sooner at the expense of more CPU
+time and queue contention while iterating the backlog of messages.
+An interval of 0 disables any wait time, which is the behavior of former Cassandra versions.</p>
+<p><em>Default Value:</em> 200</p>
+</div>
+<div class="section" id="ideal-consistency-level">
+<h2><code class="docutils literal notranslate"><span class="pre">ideal_consistency_level</span></code><a class="headerlink" href="#ideal-consistency-level" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Track a metric per keyspace indicating whether replication achieved the ideal consistency
+level for writes without timing out. This is different from the consistency level requested by
+each write which may be lower in order to facilitate availability.</p>
+<p><em>Default Value:</em> EACH_QUORUM</p>
+</div>
+<div class="section" id="automatic-sstable-upgrade">
+<h2><code class="docutils literal notranslate"><span class="pre">automatic_sstable_upgrade</span></code><a class="headerlink" href="#automatic-sstable-upgrade" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Automatically upgrade sstables after upgrade - if there is no ordinary compaction to do, the
+oldest non-upgraded sstable will get upgraded to the latest version</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="max-concurrent-automatic-sstable-upgrades">
+<h2><code class="docutils literal notranslate"><span class="pre">max_concurrent_automatic_sstable_upgrades</span></code><a class="headerlink" href="#max-concurrent-automatic-sstable-upgrades" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em>
+Limit the number of concurrent sstable upgrades</p>
+<p><em>Default Value:</em> 1</p>
+</div>
+<div class="section" id="audit-logging-options">
+<h2><code class="docutils literal notranslate"><span class="pre">audit_logging_options</span></code><a class="headerlink" href="#audit-logging-options" title="Permalink to this headline">¶</a></h2>
+<p>Audit logging - Logs every incoming CQL command request, authentication to a node. See the docs
+on audit_logging for full details about the various configuration options.</p>
+</div>
+<div class="section" id="full-query-logging-options">
+<h2><code class="docutils literal notranslate"><span class="pre">full_query_logging_options</span></code><a class="headerlink" href="#full-query-logging-options" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>default options for full query logging - these can be overridden from command line when executing
+nodetool enablefullquerylog</p>
+</div>
+<div class="section" id="corrupted-tombstone-strategy">
+<h2><code class="docutils literal notranslate"><span class="pre">corrupted_tombstone_strategy</span></code><a class="headerlink" href="#corrupted-tombstone-strategy" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>validate tombstones on reads and compaction
+can be either “disabled”, “warn” or “exception”</p>
+<p><em>Default Value:</em> disabled</p>
+</div>
+<div class="section" id="diagnostic-events-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">diagnostic_events_enabled</span></code><a class="headerlink" href="#diagnostic-events-enabled" title="Permalink to this headline">¶</a></h2>
+<p>Diagnostic Events #
+If enabled, diagnostic events can be helpful for troubleshooting operational issues. Emitted events contain details
+on internal state and temporal relationships across events, accessible by clients via JMX.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="native-transport-flush-in-batches-legacy">
+<h2><code class="docutils literal notranslate"><span class="pre">native_transport_flush_in_batches_legacy</span></code><a class="headerlink" href="#native-transport-flush-in-batches-legacy" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Use native transport TCP message coalescing. If on upgrade to 4.0 you found your throughput decreasing, and in
+particular you run an old kernel or have very fewer client connections, this option might be worth evaluating.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="repaired-data-tracking-for-range-reads-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">repaired_data_tracking_for_range_reads_enabled</span></code><a class="headerlink" href="#repaired-data-tracking-for-range-reads-enabled" title="Permalink to this headline">¶</a></h2>
+<p>Enable tracking of repaired state of data during reads and comparison between replicas
+Mismatches between the repaired sets of replicas can be characterized as either confirmed
+or unconfirmed. In this context, unconfirmed indicates that the presence of pending repair
+sessions, unrepaired partition tombstones, or some other condition means that the disparity
+cannot be considered conclusive. Confirmed mismatches should be a trigger for investigation
+as they may be indicative of corruption or data loss.
+There are separate flags for range vs partition reads as single partition reads are only tracked
+when CL &gt; 1 and a digest mismatch occurs. Currently, range queries don’t use digests so if
+enabled for range reads, all range reads will include repaired data tracking. As this adds
+some overhead, operators may wish to disable it whilst still enabling it for partition reads</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="repaired-data-tracking-for-partition-reads-enabled">
+<h2><code class="docutils literal notranslate"><span class="pre">repaired_data_tracking_for_partition_reads_enabled</span></code><a class="headerlink" href="#repaired-data-tracking-for-partition-reads-enabled" title="Permalink to this headline">¶</a></h2>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="report-unconfirmed-repaired-data-mismatches">
+<h2><code class="docutils literal notranslate"><span class="pre">report_unconfirmed_repaired_data_mismatches</span></code><a class="headerlink" href="#report-unconfirmed-repaired-data-mismatches" title="Permalink to this headline">¶</a></h2>
+<p>If false, only confirmed mismatches will be reported. If true, a separate metric for unconfirmed
+mismatches will also be recorded. This is to avoid potential signal:noise issues are unconfirmed
+mismatches are less actionable than confirmed ones.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="table-count-warn-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">table_count_warn_threshold</span></code><a class="headerlink" href="#table-count-warn-threshold" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p>Having many tables and/or keyspaces negatively affects performance of many operations in the
+cluster. When the number of tables/keyspaces in the cluster exceeds the following thresholds
+a client warning will be sent back to the user when creating a table or keyspace.</p>
+<p><em>Default Value:</em> 150</p>
+</div>
+<div class="section" id="keyspace-count-warn-threshold">
+<h2><code class="docutils literal notranslate"><span class="pre">keyspace_count_warn_threshold</span></code><a class="headerlink" href="#keyspace-count-warn-threshold" title="Permalink to this headline">¶</a></h2>
+<p><em>This option is commented out by default.</em></p>
+<p><em>Default Value:</em> 40</p>
+</div>
+<div class="section" id="enable-materialized-views">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_materialized_views</span></code><a class="headerlink" href="#enable-materialized-views" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="experimental-features">
+<h3>EXPERIMENTAL FEATURES #<a class="headerlink" href="#experimental-features" title="Permalink to this headline">¶</a></h3>
+<p>Enables materialized view creation on this node.
+Materialized views are considered experimental and are not recommended for production use.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+</div>
+<div class="section" id="enable-sasi-indexes">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_sasi_indexes</span></code><a class="headerlink" href="#enable-sasi-indexes" title="Permalink to this headline">¶</a></h2>
+<p>Enables SASI index creation on this node.
+SASI indexes are considered experimental and are not recommended for production use.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+<div class="section" id="enable-transient-replication">
+<h2><code class="docutils literal notranslate"><span class="pre">enable_transient_replication</span></code><a class="headerlink" href="#enable-transient-replication" title="Permalink to this headline">¶</a></h2>
+<p>Enables creation of transiently replicated keyspaces on this node.
+Transient replication is experimental and is not recommended for production use.</p>
+<p><em>Default Value:</em> false</p>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/configuration/index.html b/src/doc/4.0-rc1/configuration/index.html
new file mode 100644
index 0000000..286af5c
--- /dev/null
+++ b/src/doc/4.0-rc1/configuration/index.html
@@ -0,0 +1,123 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Configuring Cassandra"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="next" title="cassandra.yaml file configuration" href="cass_yaml_file.html"/>
+      <link rel="prev" title="Cassandra Data Modeling Tools" href="../data_modeling/data_modeling_tools.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Configuring Cassandra</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cass_yaml_file.html">cassandra.yaml file configuration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_rackdc_file.html">cassandra-rackdc.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_env_sh_file.html">cassandra-env.sh file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_topo_file.html">cassandra-topologies.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_cl_archive_file.html">commitlog-archiving.properties file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_logback_xml_file.html">logback.xml file</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cass_jvm_options_file.html">jvm-* files</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="configuring-cassandra">
+<h1>Configuring Cassandra<a class="headerlink" href="#configuring-cassandra" title="Permalink to this headline">¶</a></h1>
+<p>This section describes how to configure Apache Cassandra.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="cass_yaml_file.html">cassandra.yaml file configuration</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cass_rackdc_file.html">cassandra-rackdc.properties file</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cass_env_sh_file.html">cassandra-env.sh file</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cass_topo_file.html">cassandra-topologies.properties file</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cass_cl_archive_file.html">commitlog-archiving.properties file</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cass_logback_xml_file.html">logback.xml file</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cass_jvm_options_file.html">jvm-* files</a></li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="cass_yaml_file.html" class="btn btn-default pull-right " role="button" title="cassandra.yaml file configuration" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../data_modeling/data_modeling_tools.html" class="btn btn-default" role="button" title="Cassandra Data Modeling Tools" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/contactus.html b/src/doc/4.0-rc1/contactus.html
new file mode 100644
index 0000000..ce3fea2
--- /dev/null
+++ b/src/doc/4.0-rc1/contactus.html
@@ -0,0 +1,127 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Contact us"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="index.html"/>
+      <link rel="prev" title="Reporting Bugs" href="bugs.html"/>
+'
+doc-search-path: "search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Contact us</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#mailing-lists">Mailing lists</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#slack">Slack</a></li>
+</ul>
+</li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="contact-us">
+<h1>Contact us<a class="headerlink" href="#contact-us" title="Permalink to this headline">¶</a></h1>
+<p>You can get in touch with the Cassandra community either via the mailing lists or <a class="reference internal" href="#slack"><span class="std std-ref">Slack rooms</span></a>.</p>
+<div class="section" id="mailing-lists">
+<span id="id1"></span><h2>Mailing lists<a class="headerlink" href="#mailing-lists" title="Permalink to this headline">¶</a></h2>
+<p>The following mailing lists are available:</p>
+<ul class="simple">
+<li><a class="reference external" href="http://www.mail-archive.com/user&#64;cassandra.apache.org/">Users</a> – General discussion list for users - <a class="reference external" href="mailto:user-subscribe&#37;&#52;&#48;cassandra&#46;apache&#46;org">Subscribe</a></li>
+<li><a class="reference external" href="http://www.mail-archive.com/dev&#64;cassandra.apache.org/">Developers</a> – Development related discussion - <a class="reference external" href="mailto:dev-subscribe&#37;&#52;&#48;cassandra&#46;apache&#46;org">Subscribe</a></li>
+<li><a class="reference external" href="http://www.mail-archive.com/commits&#64;cassandra.apache.org/">Commits</a> – Commit notification source repository -
+<a class="reference external" href="mailto:commits-subscribe&#37;&#52;&#48;cassandra&#46;apache&#46;org">Subscribe</a></li>
+<li><a class="reference external" href="http://www.mail-archive.com/client-dev&#64;cassandra.apache.org/">Client Libraries</a> – Discussion related to the
+development of idiomatic client APIs - <a class="reference external" href="mailto:client-dev-subscribe&#37;&#52;&#48;cassandra&#46;apache&#46;org">Subscribe</a></li>
+</ul>
+<p>Subscribe by sending an email to the email address in the Subscribe links above. Follow the instructions in the welcome
+email to confirm your subscription. Make sure to keep the welcome email as it contains instructions on how to
+unsubscribe.</p>
+</div>
+<div class="section" id="slack">
+<span id="id2"></span><h2>Slack<a class="headerlink" href="#slack" title="Permalink to this headline">¶</a></h2>
+<p>To chat with developers or users in real-time, join our rooms on <a class="reference external" href="https://s.apache.org/slack-invite">ASF Slack</a>:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">cassandra</span></code> - for user questions and general discussions.</li>
+<li><code class="docutils literal notranslate"><span class="pre">cassandra-dev</span></code> - strictly for questions or discussions related to Cassandra development.</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            
+            <a href="bugs.html" class="btn btn-default" role="button" title="Reporting Bugs" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/appendices.html b/src/doc/4.0-rc1/cql/appendices.html
new file mode 100644
index 0000000..167e1a2
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/appendices.html
@@ -0,0 +1,572 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Appendices"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Changes" href="changes.html"/>
+      <link rel="prev" title="Triggers" href="triggers.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Appendices</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#appendix-a-cql-keywords">Appendix A: CQL Keywords</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#appendix-b-cql-reserved-types">Appendix B: CQL Reserved Types</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#appendix-c-dropping-compact-storage">Appendix C: Dropping Compact Storage</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="appendices">
+<h1>Appendices<a class="headerlink" href="#appendices" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="appendix-a-cql-keywords">
+<span id="appendix-a"></span><h2>Appendix A: CQL Keywords<a class="headerlink" href="#appendix-a-cql-keywords" title="Permalink to this headline">¶</a></h2>
+<p>CQL distinguishes between <em>reserved</em> and <em>non-reserved</em> keywords.
+Reserved keywords cannot be used as identifier, they are truly reserved
+for the language (but one can enclose a reserved keyword by
+double-quotes to use it as an identifier). Non-reserved keywords however
+only have a specific meaning in certain context but can used as
+identifier otherwise. The only <em>raison d’être</em> of these non-reserved
+keywords is convenience: some keyword are non-reserved when it was
+always easy for the parser to decide whether they were used as keywords
+or not.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="61%" />
+<col width="39%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Keyword</th>
+<th class="head">Reserved?</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ADD</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AGGREGATE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ALL</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ALLOW</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AND</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">APPLY</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ASC</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ASCII</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">BATCH</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">BEGIN</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">BIGINT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">BLOB</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">BOOLEAN</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">BY</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">CALLED</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">CLUSTERING</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">COLUMNFAMILY</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">COMPACT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">CONTAINS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">COUNT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">COUNTER</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">CUSTOM</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DATE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DECIMAL</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DELETE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DESC</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DISTINCT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DOUBLE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ENTRIES</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">EXISTS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">FILTERING</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">FINALFUNC</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">FLOAT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">FROM</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">FROZEN</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">FULL</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">FUNCTION</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">FUNCTIONS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">GRANT</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">IF</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">IN</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">INDEX</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">INET</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">INFINITY</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">INITCOND</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">INPUT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">INSERT</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">INT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">INTO</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">JSON</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">KEY</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">KEYS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">KEYSPACES</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">LANGUAGE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">LIMIT</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">LIST</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">LOGIN</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">MAP</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">NAN</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">NOLOGIN</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">NORECURSIVE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">NOSUPERUSER</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">NOT</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">NULL</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">OF</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ON</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">OPTIONS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">OR</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ORDER</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">PASSWORD</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">PERMISSION</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">PERMISSIONS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">PRIMARY</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">RENAME</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">REPLACE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">RETURNS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">REVOKE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ROLE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ROLES</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SCHEMA</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SET</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">SFUNC</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SMALLINT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">STATIC</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">STORAGE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">STYPE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TABLE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">TEXT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TIME</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">TIMESTAMP</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TIMEUUID</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">TINYINT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TO</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">TOKEN</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TRIGGER</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TTL</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">TUPLE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">TYPE</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">UNLOGGED</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">UPDATE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">USE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">USER</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">USERS</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">USING</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">UUID</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">VALUES</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">VARCHAR</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">VARINT</span></code></td>
+<td>no</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">WHERE</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">WITH</span></code></td>
+<td>yes</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">WRITETIME</span></code></td>
+<td>no</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="appendix-b-cql-reserved-types">
+<h2>Appendix B: CQL Reserved Types<a class="headerlink" href="#appendix-b-cql-reserved-types" title="Permalink to this headline">¶</a></h2>
+<p>The following type names are not currently used by CQL, but are reserved
+for potential future use. User-defined types may not use reserved type
+names as their name.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="100%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">type</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">bitstring</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">byte</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">complex</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">enum</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">interval</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">macaddr</span></code></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="appendix-c-dropping-compact-storage">
+<h2>Appendix C: Dropping Compact Storage<a class="headerlink" href="#appendix-c-dropping-compact-storage" title="Permalink to this headline">¶</a></h2>
+<p><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">...</span> <span class="pre">DROP</span> <span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> statement makes Compact Tables CQL-compatible,
+exposing internal structure of Thrift/Compact Tables:</p>
+<ul class="simple">
+<li>CQL-created Compact Tables that have no clustering columns, will expose an
+additional clustering column <code class="docutils literal notranslate"><span class="pre">column1</span></code> with <code class="docutils literal notranslate"><span class="pre">UTF8Type</span></code>.</li>
+<li>CQL-created Compact Tables that had no regular columns, will expose a
+regular column <code class="docutils literal notranslate"><span class="pre">value</span></code> with <code class="docutils literal notranslate"><span class="pre">BytesType</span></code>.</li>
+<li>For CQL-Created Compact Tables, all columns originally defined as
+<code class="docutils literal notranslate"><span class="pre">regular</span></code> will be come <code class="docutils literal notranslate"><span class="pre">static</span></code></li>
+<li>CQL-created Compact Tables that have clustering but have no regular
+columns will have an empty value column (of <code class="docutils literal notranslate"><span class="pre">EmptyType</span></code>)</li>
+<li>SuperColumn Tables (can only be created through Thrift) will expose
+a compact value map with an empty name.</li>
+<li>Thrift-created Compact Tables will have types corresponding to their
+Thrift definition.</li>
+<li>If a row was written while a table was still compact but it has no live
+cells due to later row or cell deletions, it may continue to be simply
+left out of query results, as is the normal behavior for compact tables.
+Rows written after a table is fully CQL-compatible, if they have no live
+cells but a live primary key, may be present in query results with null values.</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="changes.html" class="btn btn-default pull-right " role="button" title="Changes" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="triggers.html" class="btn btn-default" role="button" title="Triggers" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/changes.html b/src/doc/4.0-rc1/cql/changes.html
new file mode 100644
index 0000000..6144ece
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/changes.html
@@ -0,0 +1,364 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Changes"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Data Modeling" href="../data_modeling/index.html"/>
+      <link rel="prev" title="Appendices" href="appendices.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Changes</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#id1">3.4.5</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id2">3.4.4</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id3">3.4.3</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id6">3.4.2</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id7">3.4.1</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id8">3.4.0</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id9">3.3.1</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id10">3.3.0</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id11">3.2.0</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id12">3.1.7</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id13">3.1.6</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id14">3.1.5</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id15">3.1.4</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id16">3.1.3</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id17">3.1.2</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id18">3.1.1</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id19">3.1.0</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id20">3.0.5</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id21">3.0.4</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id22">3.0.3</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id23">3.0.2</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#id24">3.0.1</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#versioning">Versioning</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="changes">
+<h1>Changes<a class="headerlink" href="#changes" title="Permalink to this headline">¶</a></h1>
+<p>The following describes the changes in each version of CQL.</p>
+<div class="section" id="id1">
+<h2>3.4.5<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Adds support for arithmetic operators (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-11935">CASSANDRA-11935</a>)</li>
+<li>Adds support for <code class="docutils literal notranslate"><span class="pre">+</span></code> and <code class="docutils literal notranslate"><span class="pre">-</span></code> operations on dates (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-11936">CASSANDRA-11936</a>)</li>
+<li>Adds <code class="docutils literal notranslate"><span class="pre">currentTimestamp</span></code>, <code class="docutils literal notranslate"><span class="pre">currentDate</span></code>, <code class="docutils literal notranslate"><span class="pre">currentTime</span></code> and <code class="docutils literal notranslate"><span class="pre">currentTimeUUID</span></code> functions (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-13132">CASSANDRA-13132</a>)</li>
+</ul>
+</div>
+<div class="section" id="id2">
+<h2>3.4.4<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> <code class="docutils literal notranslate"><span class="pre">ALTER</span></code> has been removed; a column’s type may not be changed after creation (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12443">CASSANDRA-12443</a>).</li>
+<li><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TYPE</span></code> <code class="docutils literal notranslate"><span class="pre">ALTER</span></code> has been removed; a field’s type may not be changed after creation (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12443">CASSANDRA-12443</a>).</li>
+</ul>
+</div>
+<div class="section" id="id3">
+<h2>3.4.3<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Adds a new <a href="#id4"><span class="problematic" id="id5">``</span></a>duration `` <a class="reference internal" href="types.html#data-types"><span class="std std-ref">data types</span></a> (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-11873">CASSANDRA-11873</a>).</li>
+<li>Support for <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-10707">CASSANDRA-10707</a>).</li>
+<li>Adds a <code class="docutils literal notranslate"><span class="pre">DEFAULT</span> <span class="pre">UNSET</span></code> option for <code class="docutils literal notranslate"><span class="pre">INSERT</span> <span class="pre">JSON</span></code> to ignore omitted columns (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-11424">CASSANDRA-11424</a>).</li>
+<li>Allows <code class="docutils literal notranslate"><span class="pre">null</span></code> as a legal value for TTL on insert and update. It will be treated as equivalent to inserting a 0 (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12216">CASSANDRA-12216</a>).</li>
+</ul>
+</div>
+<div class="section" id="id6">
+<h2>3.4.2<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>If a table has a non zero <code class="docutils literal notranslate"><span class="pre">default_time_to_live</span></code>, then explicitly specifying a TTL of 0 in an <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> or
+<code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statement will result in the new writes not having any expiration (that is, an explicit TTL of 0 cancels
+the <code class="docutils literal notranslate"><span class="pre">default_time_to_live</span></code>). This wasn’t the case before and the <code class="docutils literal notranslate"><span class="pre">default_time_to_live</span></code> was applied even though a
+TTL had been explicitly set.</li>
+<li><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> <code class="docutils literal notranslate"><span class="pre">ADD</span></code> and <code class="docutils literal notranslate"><span class="pre">DROP</span></code> now allow multiple columns to be added/removed.</li>
+<li>New <code class="docutils literal notranslate"><span class="pre">PER</span> <span class="pre">PARTITION</span> <span class="pre">LIMIT</span></code> option for <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statements (see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-7017)">CASSANDRA-7017</a>.</li>
+<li><a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">User-defined functions</span></a> can now instantiate <code class="docutils literal notranslate"><span class="pre">UDTValue</span></code> and <code class="docutils literal notranslate"><span class="pre">TupleValue</span></code> instances via the
+new <code class="docutils literal notranslate"><span class="pre">UDFContext</span></code> interface (see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-10818)">CASSANDRA-10818</a>.</li>
+<li><a class="reference internal" href="types.html#udts"><span class="std std-ref">User-defined types</span></a> may now be stored in a non-frozen form, allowing individual fields to be updated and
+deleted in <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statements and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statements, respectively. (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-7423)">CASSANDRA-7423</a>).</li>
+</ul>
+</div>
+<div class="section" id="id7">
+<h2>3.4.1<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Adds <code class="docutils literal notranslate"><span class="pre">CAST</span></code> functions.</li>
+</ul>
+</div>
+<div class="section" id="id8">
+<h2>3.4.0<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Support for <a class="reference internal" href="mvs.html#materialized-views"><span class="std std-ref">materialized views</span></a>.</li>
+<li><code class="docutils literal notranslate"><span class="pre">DELETE</span></code> support for inequality expressions and <code class="docutils literal notranslate"><span class="pre">IN</span></code> restrictions on any primary key columns.</li>
+<li><code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> support for <code class="docutils literal notranslate"><span class="pre">IN</span></code> restrictions on any primary key columns.</li>
+</ul>
+</div>
+<div class="section" id="id9">
+<h2>3.3.1<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>The syntax <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span> <span class="pre">TABLE</span> <span class="pre">X</span></code> is now accepted as an alias for <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span> <span class="pre">X</span></code>.</li>
+</ul>
+</div>
+<div class="section" id="id10">
+<h2>3.3.0<a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">User-defined functions and aggregates</span></a> are now supported.</li>
+<li>Allows double-dollar enclosed strings literals as an alternative to single-quote enclosed strings.</li>
+<li>Introduces Roles to supersede user based authentication and access control</li>
+<li>New <code class="docutils literal notranslate"><span class="pre">date</span></code>, <code class="docutils literal notranslate"><span class="pre">time</span></code>, <code class="docutils literal notranslate"><span class="pre">tinyint</span></code> and <code class="docutils literal notranslate"><span class="pre">smallint</span></code> <a class="reference internal" href="types.html#data-types"><span class="std std-ref">data types</span></a> have been added.</li>
+<li><a class="reference internal" href="json.html#cql-json"><span class="std std-ref">JSON support</span></a> has been added</li>
+<li>Adds new time conversion functions and deprecate <code class="docutils literal notranslate"><span class="pre">dateOf</span></code> and <code class="docutils literal notranslate"><span class="pre">unixTimestampOf</span></code>.</li>
+</ul>
+</div>
+<div class="section" id="id11">
+<h2>3.2.0<a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference internal" href="types.html#udts"><span class="std std-ref">User-defined types</span></a> supported.</li>
+<li><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> now supports indexing collection columns, including indexing the keys of map collections through the
+<code class="docutils literal notranslate"><span class="pre">keys()</span></code> function</li>
+<li>Indexes on collections may be queried using the new <code class="docutils literal notranslate"><span class="pre">CONTAINS</span></code> and <code class="docutils literal notranslate"><span class="pre">CONTAINS</span> <span class="pre">KEY</span></code> operators</li>
+<li><a class="reference internal" href="types.html#tuples"><span class="std std-ref">Tuple types</span></a> were added to hold fixed-length sets of typed positional fields.</li>
+<li><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">INDEX</span></code> now supports optionally specifying a keyspace.</li>
+</ul>
+</div>
+<div class="section" id="id12">
+<h2>3.1.7<a class="headerlink" href="#id12" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statements now support selecting multiple rows in a single partition using an <code class="docutils literal notranslate"><span class="pre">IN</span></code> clause on combinations
+of clustering columns.</li>
+<li><code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> and <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> syntax is now supported by <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">USER</span></code> and <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">USER</span></code> statements,
+respectively.</li>
+</ul>
+</div>
+<div class="section" id="id13">
+<h2>3.1.6<a class="headerlink" href="#id13" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>A new <code class="docutils literal notranslate"><span class="pre">uuid()</span></code> method has been added.</li>
+<li>Support for <code class="docutils literal notranslate"><span class="pre">DELETE</span> <span class="pre">...</span> <span class="pre">IF</span> <span class="pre">EXISTS</span></code> syntax.</li>
+</ul>
+</div>
+<div class="section" id="id14">
+<h2>3.1.5<a class="headerlink" href="#id14" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>It is now possible to group clustering columns in a relation, see <a class="reference internal" href="dml.html#where-clause"><span class="std std-ref">WHERE</span></a> clauses.</li>
+<li>Added support for <a class="reference internal" href="ddl.html#static-columns"><span class="std std-ref">static columns</span></a>.</li>
+</ul>
+</div>
+<div class="section" id="id15">
+<h2>3.1.4<a class="headerlink" href="#id15" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> now allows specifying options when creating CUSTOM indexes.</li>
+</ul>
+</div>
+<div class="section" id="id16">
+<h2>3.1.3<a class="headerlink" href="#id16" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Millisecond precision formats have been added to the <a class="reference internal" href="types.html#timestamps"><span class="std std-ref">timestamp</span></a> parser.</li>
+</ul>
+</div>
+<div class="section" id="id17">
+<h2>3.1.2<a class="headerlink" href="#id17" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">NaN</span></code> and <code class="docutils literal notranslate"><span class="pre">Infinity</span></code> has been added as valid float constants. They are now reserved keywords. In the unlikely case
+you we using them as a column identifier (or keyspace/table one), you will now need to double quote them.</li>
+</ul>
+</div>
+<div class="section" id="id18">
+<h2>3.1.1<a class="headerlink" href="#id18" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement now allows listing the partition keys (using the <code class="docutils literal notranslate"><span class="pre">DISTINCT</span></code> modifier). See <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-4536">CASSANDRA-4536</a>.</li>
+<li>The syntax <code class="docutils literal notranslate"><span class="pre">c</span> <span class="pre">IN</span> <span class="pre">?</span></code> is now supported in <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clauses. In that case, the value expected for the bind variable
+will be a list of whatever type <code class="docutils literal notranslate"><span class="pre">c</span></code> is.</li>
+<li>It is now possible to use named bind variables (using <code class="docutils literal notranslate"><span class="pre">:name</span></code> instead of <code class="docutils literal notranslate"><span class="pre">?</span></code>).</li>
+</ul>
+</div>
+<div class="section" id="id19">
+<h2>3.1.0<a class="headerlink" href="#id19" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> <code class="docutils literal notranslate"><span class="pre">DROP</span></code> option added.</li>
+<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement now supports aliases in select clause. Aliases in WHERE and ORDER BY clauses are not supported.</li>
+<li><code class="docutils literal notranslate"><span class="pre">CREATE</span></code> statements for <code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code>, <code class="docutils literal notranslate"><span class="pre">TABLE</span></code> and <code class="docutils literal notranslate"><span class="pre">INDEX</span></code> now supports an <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> condition.
+Similarly, <code class="docutils literal notranslate"><span class="pre">DROP</span></code> statements support a <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> condition.</li>
+<li><code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statements optionally supports a <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> condition and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> supports <code class="docutils literal notranslate"><span class="pre">IF</span></code> conditions.</li>
+</ul>
+</div>
+<div class="section" id="id20">
+<h2>3.0.5<a class="headerlink" href="#id20" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statements now allow empty <code class="docutils literal notranslate"><span class="pre">IN</span></code> relations (see <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-5626)">CASSANDRA-5626</a>.</li>
+</ul>
+</div>
+<div class="section" id="id21">
+<h2>3.0.4<a class="headerlink" href="#id21" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Updated the syntax for custom <a class="reference internal" href="indexes.html#secondary-indexes"><span class="std std-ref">secondary indexes</span></a>.</li>
+<li>Non-equal condition on the partition key are now never supported, even for ordering partitioner as this was not
+correct (the order was <strong>not</strong> the one of the type of the partition key). Instead, the <code class="docutils literal notranslate"><span class="pre">token</span></code> method should always
+be used for range queries on the partition key (see <a class="reference internal" href="dml.html#where-clause"><span class="std std-ref">WHERE clauses</span></a>).</li>
+</ul>
+</div>
+<div class="section" id="id22">
+<h2>3.0.3<a class="headerlink" href="#id22" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Support for custom <a class="reference internal" href="indexes.html#secondary-indexes"><span class="std std-ref">secondary indexes</span></a> has been added.</li>
+</ul>
+</div>
+<div class="section" id="id23">
+<h2>3.0.2<a class="headerlink" href="#id23" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Type validation for the <a class="reference internal" href="definitions.html#constants"><span class="std std-ref">constants</span></a> has been fixed. For instance, the implementation used to allow
+<code class="docutils literal notranslate"><span class="pre">'2'</span></code> as a valid value for an <code class="docutils literal notranslate"><span class="pre">int</span></code> column (interpreting it has the equivalent of <code class="docutils literal notranslate"><span class="pre">2</span></code>), or <code class="docutils literal notranslate"><span class="pre">42</span></code> as a valid
+<code class="docutils literal notranslate"><span class="pre">blob</span></code> value (in which case <code class="docutils literal notranslate"><span class="pre">42</span></code> was interpreted as an hexadecimal representation of the blob). This is no longer
+the case, type validation of constants is now more strict. See the <a class="reference internal" href="types.html#data-types"><span class="std std-ref">data types</span></a> section for details
+on which constant is allowed for which type.</li>
+<li>The type validation fixed of the previous point has lead to the introduction of blobs constants to allow the input of
+blobs. Do note that while the input of blobs as strings constant is still supported by this version (to allow smoother
+transition to blob constant), it is now deprecated and will be removed by a future version. If you were using strings
+as blobs, you should thus update your client code ASAP to switch blob constants.</li>
+<li>A number of functions to convert native types to blobs have also been introduced. Furthermore the token function is
+now also allowed in select clauses. See the <a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">section on functions</span></a> for details.</li>
+</ul>
+</div>
+<div class="section" id="id24">
+<h2>3.0.1<a class="headerlink" href="#id24" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Date strings (and timestamps) are no longer accepted as valid <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> values. Doing so was a bug in the sense
+that date string are not valid <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code>, and it was thus resulting in <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-4936">confusing behaviors</a>. However, the following new methods have been added to help
+working with <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code>: <code class="docutils literal notranslate"><span class="pre">now</span></code>, <code class="docutils literal notranslate"><span class="pre">minTimeuuid</span></code>, <code class="docutils literal notranslate"><span class="pre">maxTimeuuid</span></code> ,
+<code class="docutils literal notranslate"><span class="pre">dateOf</span></code> and <code class="docutils literal notranslate"><span class="pre">unixTimestampOf</span></code>.</li>
+<li>Float constants now support the exponent notation. In other words, <code class="docutils literal notranslate"><span class="pre">4.2E10</span></code> is now a valid floating point value.</li>
+</ul>
+</div>
+<div class="section" id="versioning">
+<h2>Versioning<a class="headerlink" href="#versioning" title="Permalink to this headline">¶</a></h2>
+<p>Versioning of the CQL language adheres to the <a class="reference external" href="http://semver.org">Semantic Versioning</a> guidelines. Versions take the
+form X.Y.Z where X, Y, and Z are integer values representing major, minor, and patch level respectively. There is no
+correlation between Cassandra release versions and the CQL language version.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="8%" />
+<col width="92%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">version</th>
+<th class="head">description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Major</td>
+<td>The major version <em>must</em> be bumped when backward incompatible changes are introduced. This should rarely
+occur.</td>
+</tr>
+<tr class="row-odd"><td>Minor</td>
+<td>Minor version increments occur when new, but backward compatible, functionality is introduced.</td>
+</tr>
+<tr class="row-even"><td>Patch</td>
+<td>The patch version is incremented when bugs are fixed.</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../data_modeling/index.html" class="btn btn-default pull-right " role="button" title="Data Modeling" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="appendices.html" class="btn btn-default" role="button" title="Appendices" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/ddl.html b/src/doc/4.0-rc1/cql/ddl.html
new file mode 100644
index 0000000..162595b
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/ddl.html
@@ -0,0 +1,1514 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Data Definition"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Data Manipulation" href="dml.html"/>
+      <link rel="prev" title="Data Types" href="types.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Data Definition</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#common-definitions">Common definitions</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#create-keyspace">CREATE KEYSPACE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#use">USE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#alter-keyspace">ALTER KEYSPACE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#drop-keyspace">DROP KEYSPACE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#create-table">CREATE TABLE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#alter-table">ALTER TABLE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#drop-table">DROP TABLE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#truncate">TRUNCATE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#describe">DESCRIBE</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="data-definition">
+<span id="id1"></span><h1>Data Definition<a class="headerlink" href="#data-definition" title="Permalink to this headline">¶</a></h1>
+<p>CQL stores data in <em>tables</em>, whose schema defines the layout of said data in the table, and those tables are grouped in
+<em>keyspaces</em>. A keyspace defines a number of options that applies to all the tables it contains, most prominently of
+which is the <a class="reference internal" href="#replication-strategy"><span class="std std-ref">replication strategy</span></a> used by the keyspace. It is generally encouraged to use
+one keyspace by <em>application</em>, and thus many cluster may define only one keyspace.</p>
+<p>This section describes the statements used to create, modify, and remove those keyspace and tables.</p>
+<div class="section" id="common-definitions">
+<h2>Common definitions<a class="headerlink" href="#common-definitions" title="Permalink to this headline">¶</a></h2>
+<p>The names of the keyspaces and tables are defined by the following grammar:</p>
+<pre>
+<strong id="grammar-token-keyspace-name">keyspace_name</strong> ::=  <a class="reference internal" href="#grammar-token-name"><code class="xref docutils literal notranslate"><span class="pre">name</span></code></a>
+<strong id="grammar-token-table-name">table_name   </strong> ::=  [ <a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a> '.' ] <a class="reference internal" href="#grammar-token-name"><code class="xref docutils literal notranslate"><span class="pre">name</span></code></a>
+<strong id="grammar-token-name">name         </strong> ::=  <a class="reference internal" href="#grammar-token-unquoted-name"><code class="xref docutils literal notranslate"><span class="pre">unquoted_name</span></code></a> | <a class="reference internal" href="#grammar-token-quoted-name"><code class="xref docutils literal notranslate"><span class="pre">quoted_name</span></code></a>
+<strong id="grammar-token-unquoted-name">unquoted_name</strong> ::=  re('[a-zA-Z_0-9]{1, 48}')
+<strong id="grammar-token-quoted-name">quoted_name  </strong> ::=  '&quot;' <a class="reference internal" href="#grammar-token-unquoted-name"><code class="xref docutils literal notranslate"><span class="pre">unquoted_name</span></code></a> '&quot;'
+</pre>
+<p>Both keyspace and table name should be comprised of only alphanumeric characters, cannot be empty and are limited in
+size to 48 characters (that limit exists mostly to avoid filenames (which may include the keyspace and table name) to go
+over the limits of certain file systems). By default, keyspace and table names are case insensitive (<code class="docutils literal notranslate"><span class="pre">myTable</span></code> is
+equivalent to <code class="docutils literal notranslate"><span class="pre">mytable</span></code>) but case sensitivity can be forced by using double-quotes (<code class="docutils literal notranslate"><span class="pre">&quot;myTable&quot;</span></code> is different from
+<code class="docutils literal notranslate"><span class="pre">mytable</span></code>).</p>
+<p>Further, a table is always part of a keyspace and a table name can be provided fully-qualified by the keyspace it is
+part of. If is is not fully-qualified, the table is assumed to be in the <em>current</em> keyspace (see <a class="reference internal" href="#use-statement"><span class="std std-ref">USE statement</span></a>).</p>
+<p>Further, the valid names for columns is simply defined as:</p>
+<pre>
+<strong id="grammar-token-column-name">column_name</strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a>
+</pre>
+<p>We also define the notion of statement options for use in the following section:</p>
+<pre>
+<strong id="grammar-token-options">options</strong> ::=  <a class="reference internal" href="#grammar-token-option"><code class="xref docutils literal notranslate"><span class="pre">option</span></code></a> ( AND <a class="reference internal" href="#grammar-token-option"><code class="xref docutils literal notranslate"><span class="pre">option</span></code></a> )*
+<strong id="grammar-token-option">option </strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> '=' ( <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-constant"><code class="xref docutils literal notranslate"><span class="pre">constant</span></code></a> | <a class="reference internal" href="types.html#grammar-token-map-literal"><code class="xref docutils literal notranslate"><span class="pre">map_literal</span></code></a> )
+</pre>
+</div>
+<div class="section" id="create-keyspace">
+<span id="create-keyspace-statement"></span><h2>CREATE KEYSPACE<a class="headerlink" href="#create-keyspace" title="Permalink to this headline">¶</a></h2>
+<p>A keyspace is created using a <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">KEYSPACE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-keyspace-statement">create_keyspace_statement</strong> ::=  CREATE KEYSPACE [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a> WITH <a class="reference internal" href="#grammar-token-options"><code class="xref docutils literal notranslate"><span class="pre">options</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">excelsior</span>
+    <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;SimpleStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;replication_factor&#39;</span> <span class="p">:</span> <span class="mf">3</span><span class="p">};</span>
+
+<span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">excalibur</span>
+    <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;NetworkTopologyStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;DC1&#39;</span> <span class="p">:</span> <span class="mf">1</span><span class="p">,</span> <span class="s1">&#39;DC2&#39;</span> <span class="p">:</span> <span class="mf">3</span><span class="p">}</span>
+    <span class="k">AND</span> <span class="n">durable_writes</span> <span class="o">=</span> <span class="n">false</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Attempting to create a keyspace that already exists will return an error unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is used. If
+it is used, the statement will be a no-op if the keyspace already exists.</p>
+<p>The supported <code class="docutils literal notranslate"><span class="pre">options</span></code> are:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="16%" />
+<col width="9%" />
+<col width="9%" />
+<col width="8%" />
+<col width="58%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">name</th>
+<th class="head">kind</th>
+<th class="head">mandatory</th>
+<th class="head">default</th>
+<th class="head">description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">replication</span></code></td>
+<td><em>map</em></td>
+<td>yes</td>
+<td>&#160;</td>
+<td>The replication strategy and options to use for the keyspace (see
+details below).</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">durable_writes</span></code></td>
+<td><em>simple</em></td>
+<td>no</td>
+<td>true</td>
+<td>Whether to use the commit log for updates on this keyspace
+(disable this option at your own risk!).</td>
+</tr>
+</tbody>
+</table>
+<p>The <code class="docutils literal notranslate"><span class="pre">replication</span></code> property is mandatory and must at least contains the <code class="docutils literal notranslate"><span class="pre">'class'</span></code> sub-option which defines the
+<a class="reference internal" href="#replication-strategy"><span class="std std-ref">replication strategy</span></a> class to use. The rest of the sub-options depends on what replication
+strategy is used. By default, Cassandra support the following <code class="docutils literal notranslate"><span class="pre">'class'</span></code>:</p>
+<div class="section" id="simplestrategy">
+<span id="replication-strategy"></span><h3><code class="docutils literal notranslate"><span class="pre">SimpleStrategy</span></code><a class="headerlink" href="#simplestrategy" title="Permalink to this headline">¶</a></h3>
+<p>A simple strategy that defines a replication factor for data to be spread
+across the entire cluster. This is generally not a wise choice for production
+because it does not respect datacenter layouts and can lead to wildly varying
+query latency. For a production ready strategy, see
+<code class="docutils literal notranslate"><span class="pre">NetworkTopologyStrategy</span></code>. <code class="docutils literal notranslate"><span class="pre">SimpleStrategy</span></code> supports a single mandatory argument:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="30%" />
+<col width="7%" />
+<col width="8%" />
+<col width="54%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">sub-option</th>
+<th class="head">type</th>
+<th class="head">since</th>
+<th class="head">description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">'replication_factor'</span></code></td>
+<td>int</td>
+<td>all</td>
+<td>The number of replicas to store per range</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="networktopologystrategy">
+<h3><code class="docutils literal notranslate"><span class="pre">NetworkTopologyStrategy</span></code><a class="headerlink" href="#networktopologystrategy" title="Permalink to this headline">¶</a></h3>
+<p>A production ready replication strategy that allows to set the replication
+factor independently for each data-center. The rest of the sub-options are
+key-value pairs where a key is a data-center name and its value is the
+associated replication factor. Options:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="39%" />
+<col width="6%" />
+<col width="6%" />
+<col width="48%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">sub-option</th>
+<th class="head">type</th>
+<th class="head">since</th>
+<th class="head">description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">'&lt;datacenter&gt;'</span></code></td>
+<td>int</td>
+<td>all</td>
+<td>The number of replicas to store per range in
+the provided datacenter.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">'replication_factor'</span></code></td>
+<td>int</td>
+<td>4.0</td>
+<td>The number of replicas to use as a default
+per datacenter if not specifically provided.
+Note that this always defers to existing
+definitions or explicit datacenter settings.
+For example, to have three replicas per
+datacenter, supply this with a value of 3.</td>
+</tr>
+</tbody>
+</table>
+<p>Note that when <code class="docutils literal notranslate"><span class="pre">ALTER</span></code> ing keyspaces and supplying <code class="docutils literal notranslate"><span class="pre">replication_factor</span></code>,
+auto-expansion will only <em>add</em> new datacenters for safety, it will not alter
+existing datacenters or remove any even if they are no longer in the cluster.
+If you want to remove datacenters while still supplying <code class="docutils literal notranslate"><span class="pre">replication_factor</span></code>,
+explicitly zero out the datacenter you want to have zero replicas.</p>
+<p>An example of auto-expanding datacenters with two datacenters: <code class="docutils literal notranslate"><span class="pre">DC1</span></code> and <code class="docutils literal notranslate"><span class="pre">DC2</span></code>:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">excalibur</span>
+    <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;NetworkTopologyStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;replication_factor&#39;</span> <span class="p">:</span> <span class="mf">3</span><span class="p">}</span>
+
+<span class="k">DESCRIBE</span> <span class="k">KEYSPACE</span> <span class="n">excalibur</span>
+    <span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">excalibur</span> <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;NetworkTopologyStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;DC1&#39;</span><span class="p">:</span> <span class="s1">&#39;3&#39;</span><span class="p">,</span> <span class="s1">&#39;DC2&#39;</span><span class="p">:</span> <span class="s1">&#39;3&#39;</span><span class="p">}</span> <span class="k">AND</span> <span class="n">durable_writes</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>An example of auto-expanding and overriding a datacenter:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">excalibur</span>
+    <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;NetworkTopologyStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;replication_factor&#39;</span> <span class="p">:</span> <span class="mf">3</span><span class="p">,</span> <span class="s1">&#39;DC2&#39;</span><span class="p">:</span> <span class="mf">2</span><span class="p">}</span>
+
+<span class="k">DESCRIBE</span> <span class="k">KEYSPACE</span> <span class="n">excalibur</span>
+    <span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">excalibur</span> <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;NetworkTopologyStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;DC1&#39;</span><span class="p">:</span> <span class="s1">&#39;3&#39;</span><span class="p">,</span> <span class="s1">&#39;DC2&#39;</span><span class="p">:</span> <span class="s1">&#39;2&#39;</span><span class="p">}</span> <span class="k">AND</span> <span class="n">durable_writes</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>An example that excludes a datacenter while using <code class="docutils literal notranslate"><span class="pre">replication_factor</span></code>:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">excalibur</span>
+    <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;NetworkTopologyStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;replication_factor&#39;</span> <span class="p">:</span> <span class="mf">3</span><span class="p">,</span> <span class="s1">&#39;DC2&#39;</span><span class="p">:</span> <span class="mf">0</span><span class="p">}</span> <span class="p">;</span>
+
+<span class="k">DESCRIBE</span> <span class="k">KEYSPACE</span> <span class="n">excalibur</span>
+    <span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">excalibur</span> <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;NetworkTopologyStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;DC1&#39;</span><span class="p">:</span> <span class="s1">&#39;3&#39;</span><span class="p">}</span> <span class="k">AND</span> <span class="n">durable_writes</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>If transient replication has been enabled, transient replicas can be configured for both
+<code class="docutils literal notranslate"><span class="pre">SimpleStrategy</span></code> and <code class="docutils literal notranslate"><span class="pre">NetworkTopologyStrategy</span></code> by defining replication factors in the format <code class="docutils literal notranslate"><span class="pre">'&lt;total_replicas&gt;/&lt;transient_replicas&gt;'</span></code></p>
+<p>For instance, this keyspace will have 3 replicas in DC1, 1 of which is transient, and 5 replicas in DC2, 2 of which are transient:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">some_keysopace</span>
+           <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;NetworkTopologyStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;DC1&#39;</span> <span class="p">:</span> <span class="s1">&#39;3/1&#39;&#39;, &#39;</span><span class="n">DC2</span><span class="s1">&#39; : &#39;</span><span class="mf">5</span><span class="o">/</span><span class="mf">2</span><span class="s1">&#39;};</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="use">
+<span id="use-statement"></span><h2>USE<a class="headerlink" href="#use" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">USE</span></code> statement allows to change the <em>current</em> keyspace (for the <em>connection</em> on which it is executed). A number
+of objects in CQL are bound to a keyspace (tables, user-defined types, functions, …) and the current keyspace is the
+default keyspace used when those objects are referred without a fully-qualified name (that is, without being prefixed a
+keyspace name). A <code class="docutils literal notranslate"><span class="pre">USE</span></code> statement simply takes the keyspace to use as current as argument:</p>
+<pre>
+<strong id="grammar-token-use-statement">use_statement</strong> ::=  USE <a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a>
+</pre>
+</div>
+<div class="section" id="alter-keyspace">
+<span id="alter-keyspace-statement"></span><h2>ALTER KEYSPACE<a class="headerlink" href="#alter-keyspace" title="Permalink to this headline">¶</a></h2>
+<p>An <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">KEYSPACE</span></code> statement allows to modify the options of a keyspace:</p>
+<pre>
+<strong id="grammar-token-alter-keyspace-statement">alter_keyspace_statement</strong> ::=  ALTER KEYSPACE <a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a> WITH <a class="reference internal" href="#grammar-token-options"><code class="xref docutils literal notranslate"><span class="pre">options</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">KEYSPACE</span> <span class="n">Excelsior</span>
+    <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;SimpleStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;replication_factor&#39;</span> <span class="p">:</span> <span class="mf">4</span><span class="p">};</span>
+</pre></div>
+</div>
+<p>The supported options are the same than for <a class="reference internal" href="#create-keyspace-statement"><span class="std std-ref">creating a keyspace</span></a>.</p>
+</div>
+<div class="section" id="drop-keyspace">
+<span id="drop-keyspace-statement"></span><h2>DROP KEYSPACE<a class="headerlink" href="#drop-keyspace" title="Permalink to this headline">¶</a></h2>
+<p>Dropping a keyspace can be done using the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">KEYSPACE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-keyspace-statement">drop_keyspace_statement</strong> ::=  DROP KEYSPACE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DROP</span> <span class="k">KEYSPACE</span> <span class="n">Excelsior</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Dropping a keyspace results in the immediate, irreversible removal of that keyspace, including all the tables, UTD and
+functions in it, and all the data contained in those tables.</p>
+<p>If the keyspace does not exists, the statement will return an error, unless <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used in which case the
+operation is a no-op.</p>
+</div>
+<div class="section" id="create-table">
+<span id="create-table-statement"></span><h2>CREATE TABLE<a class="headerlink" href="#create-table" title="Permalink to this headline">¶</a></h2>
+<p>Creating a new table uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-table-statement">create_table_statement</strong> ::=  CREATE TABLE [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+                            '('
+                                <a class="reference internal" href="#grammar-token-column-definition"><code class="xref docutils literal notranslate"><span class="pre">column_definition</span></code></a>
+                                ( ',' <a class="reference internal" href="#grammar-token-column-definition"><code class="xref docutils literal notranslate"><span class="pre">column_definition</span></code></a> )*
+                                [ ',' PRIMARY KEY '(' <a class="reference internal" href="#grammar-token-primary-key"><code class="xref docutils literal notranslate"><span class="pre">primary_key</span></code></a> ')' ]
+                            ')' [ WITH <a class="reference internal" href="#grammar-token-table-options"><code class="xref docutils literal notranslate"><span class="pre">table_options</span></code></a> ]
+<strong id="grammar-token-column-definition">column_definition     </strong> ::=  <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> [ STATIC ] [ PRIMARY KEY]
+<strong id="grammar-token-primary-key">primary_key           </strong> ::=  <a class="reference internal" href="#grammar-token-partition-key"><code class="xref docutils literal notranslate"><span class="pre">partition_key</span></code></a> [ ',' <a class="reference internal" href="#grammar-token-clustering-columns"><code class="xref docutils literal notranslate"><span class="pre">clustering_columns</span></code></a> ]
+<strong id="grammar-token-partition-key">partition_key         </strong> ::=  <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a>
+                            | '(' <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )* ')'
+<strong id="grammar-token-clustering-columns">clustering_columns    </strong> ::=  <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )*
+<strong id="grammar-token-table-options">table_options         </strong> ::=  CLUSTERING ORDER BY '(' <a class="reference internal" href="#grammar-token-clustering-order"><code class="xref docutils literal notranslate"><span class="pre">clustering_order</span></code></a> ')' [ AND <a class="reference internal" href="#grammar-token-options"><code class="xref docutils literal notranslate"><span class="pre">options</span></code></a> ]
+                            | <a class="reference internal" href="#grammar-token-options"><code class="xref docutils literal notranslate"><span class="pre">options</span></code></a>
+<strong id="grammar-token-clustering-order">clustering_order      </strong> ::=  <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> (ASC | DESC) ( ',' <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> (ASC | DESC) )*
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">monkeySpecies</span> <span class="p">(</span>
+    <span class="n">species</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">common_name</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">population</span> <span class="nb">varint</span><span class="p">,</span>
+    <span class="n">average_size</span> <span class="nb">int</span>
+<span class="p">)</span> <span class="k">WITH</span> <span class="n">comment</span><span class="o">=</span><span class="s1">&#39;Important biological records&#39;</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">timeline</span> <span class="p">(</span>
+    <span class="n">userid</span> <span class="nb">uuid</span><span class="p">,</span>
+    <span class="n">posted_month</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">posted_time</span> <span class="nb">uuid</span><span class="p">,</span>
+    <span class="n">body</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">posted_by</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">userid</span><span class="p">,</span> <span class="n">posted_month</span><span class="p">,</span> <span class="n">posted_time</span><span class="p">)</span>
+<span class="p">)</span> <span class="k">WITH</span> <span class="n">compaction</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;class&#39;</span> <span class="p">:</span> <span class="s1">&#39;LeveledCompactionStrategy&#39;</span> <span class="p">};</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">loads</span> <span class="p">(</span>
+    <span class="n">machine</span> <span class="nb">inet</span><span class="p">,</span>
+    <span class="n">cpu</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">mtime</span> <span class="nb">timeuuid</span><span class="p">,</span>
+    <span class="n">load</span> <span class="nb">float</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">((</span><span class="n">machine</span><span class="p">,</span> <span class="n">cpu</span><span class="p">),</span> <span class="n">mtime</span><span class="p">)</span>
+<span class="p">)</span> <span class="k">WITH</span> <span class="k">CLUSTERING</span> <span class="k">ORDER</span> <span class="k">BY</span> <span class="p">(</span><span class="n">mtime</span> <span class="k">DESC</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>A CQL table has a name and is composed of a set of <em>rows</em>. Creating a table amounts to defining which <a class="reference internal" href="#column-definition"><span class="std std-ref">columns</span></a> the rows will be composed, which of those columns compose the <a class="reference internal" href="#primary-key"><span class="std std-ref">primary key</span></a>, as
+well as optional <a class="reference internal" href="#create-table-options"><span class="std std-ref">options</span></a> for the table.</p>
+<p>Attempting to create an already existing table will return an error unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> directive is used. If
+it is used, the statement will be a no-op if the table already exists.</p>
+<p>Every rows in a CQL table has a set of predefined columns defined at the time of the table creation (or added later
+using an <a class="reference internal" href="#alter-table-statement"><span class="std std-ref">alter statement</span></a>).</p>
+<p>A <a class="reference internal" href="#grammar-token-column-definition"><code class="xref std std-token docutils literal notranslate"><span class="pre">column_definition</span></code></a> is primarily comprised of the name of the column defined and it’s <a class="reference internal" href="types.html#data-types"><span class="std std-ref">type</span></a>,
+which restrict which values are accepted for that column. Additionally, a column definition can have the following
+modifiers:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">STATIC</span></code></dt>
+<dd>it declares the column as being a <a class="reference internal" href="#static-columns"><span class="std std-ref">static column</span></a>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code></dt>
+<dd>it declares the column as being the sole component of the <a class="reference internal" href="#primary-key"><span class="std std-ref">primary key</span></a> of the table.</dd>
+</dl>
+<p>Some columns can be declared as <code class="docutils literal notranslate"><span class="pre">STATIC</span></code> in a table definition. A column that is static will be “shared” by all the
+rows belonging to the same partition (having the same <a class="reference internal" href="#partition-key"><span class="std std-ref">partition key</span></a>). For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span>
+    <span class="n">pk</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">t</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">v</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">s</span> <span class="nb">text</span> <span class="k">static</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span>
+<span class="p">);</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">t</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">0</span><span class="p">,</span> <span class="mf">0</span><span class="p">,</span> <span class="s1">&#39;val0&#39;</span><span class="p">,</span> <span class="s1">&#39;static0&#39;</span><span class="p">);</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">t</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">0</span><span class="p">,</span> <span class="mf">1</span><span class="p">,</span> <span class="s1">&#39;val1&#39;</span><span class="p">,</span> <span class="s1">&#39;static1&#39;</span><span class="p">);</span>
+
+<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
+   <span class="n">pk</span> <span class="o">|</span> <span class="n">t</span> <span class="o">|</span> <span class="n">v</span>      <span class="o">|</span> <span class="n">s</span>
+  <span class="c1">----+---+--------+-----------</span>
+   <span class="mf">0</span>  <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="s1">&#39;val0&#39;</span> <span class="o">|</span> <span class="s1">&#39;static1&#39;</span>
+   <span class="mf">0</span>  <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="s1">&#39;val1&#39;</span> <span class="o">|</span> <span class="s1">&#39;static1&#39;</span>
+</pre></div>
+</div>
+<p>As can be seen, the <code class="docutils literal notranslate"><span class="pre">s</span></code> value is the same (<code class="docutils literal notranslate"><span class="pre">static1</span></code>) for both of the row in the partition (the partition key in
+that example being <code class="docutils literal notranslate"><span class="pre">pk</span></code>, both rows are in that same partition): the 2nd insertion has overridden the value for <code class="docutils literal notranslate"><span class="pre">s</span></code>.</p>
+<p>The use of static columns as the following restrictions:</p>
+<ul class="simple">
+<li>a table without clustering columns cannot have static columns (in a table without clustering columns, every partition
+has only one row, and so every column is inherently static).</li>
+<li>only non <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> columns can be static.</li>
+</ul>
+<p>Within a table, a row is uniquely identified by its <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code>, and hence all table <strong>must</strong> define a PRIMARY KEY
+(and only one). A <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> definition is composed of one or more of the columns defined in the table.
+Syntactically, the primary key is defined the keywords <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> followed by comma-separated list of the column
+names composing it within parenthesis, but if the primary key has only one column, one can alternatively follow that
+column definition by the <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> keywords. The order of the columns in the primary key definition matter.</p>
+<p>A CQL primary key is composed of 2 parts:</p>
+<ul>
+<li><p class="first">the <a class="reference internal" href="#partition-key"><span class="std std-ref">partition key</span></a> part. It is the first component of the primary key definition. It can be a
+single column or, using additional parenthesis, can be multiple columns. A table always have at least a partition key,
+the smallest possible table definition is:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span><span class="n">k</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">);</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">the <a class="reference internal" href="#clustering-columns"><span class="std std-ref">clustering columns</span></a>. Those are the columns after the first component of the primary key
+definition, and the order of those columns define the <em>clustering order</em>.</p>
+</li>
+</ul>
+<p>Some example of primary key definition are:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span> <span class="pre">(a)</span></code>: <code class="docutils literal notranslate"><span class="pre">a</span></code> is the partition key and there is no clustering columns.</li>
+<li><code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span> <span class="pre">(a,</span> <span class="pre">b,</span> <span class="pre">c)</span></code> : <code class="docutils literal notranslate"><span class="pre">a</span></code> is the partition key and <code class="docutils literal notranslate"><span class="pre">b</span></code> and <code class="docutils literal notranslate"><span class="pre">c</span></code> are the clustering columns.</li>
+<li><code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span> <span class="pre">((a,</span> <span class="pre">b),</span> <span class="pre">c)</span></code> : <code class="docutils literal notranslate"><span class="pre">a</span></code> and <code class="docutils literal notranslate"><span class="pre">b</span></code> compose the partition key (this is often called a <em>composite</em> partition
+key) and <code class="docutils literal notranslate"><span class="pre">c</span></code> is the clustering column.</li>
+</ul>
+<p>Within a table, CQL defines the notion of a <em>partition</em>. A partition is simply the set of rows that share the same value
+for their partition key. Note that if the partition key is composed of multiple columns, then rows belong to the same
+partition only they have the same values for all those partition key column. So for instance, given the following table
+definition and content:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span>
+    <span class="n">a</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">b</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">c</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">d</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">((</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">),</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span><span class="p">)</span>
+<span class="p">);</span>
+
+<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
+   <span class="n">a</span> <span class="o">|</span> <span class="n">b</span> <span class="o">|</span> <span class="n">c</span> <span class="o">|</span> <span class="n">d</span>
+  <span class="c1">---+---+---+---</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span>    <span class="c1">// row 1</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">1</span>    <span class="c1">// row 2</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">2</span> <span class="o">|</span> <span class="mf">2</span>    <span class="c1">// row 3</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">3</span> <span class="o">|</span> <span class="mf">3</span>    <span class="c1">// row 4</span>
+   <span class="mf">1</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">4</span> <span class="o">|</span> <span class="mf">4</span>    <span class="c1">// row 5</span>
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span class="pre">row</span> <span class="pre">1</span></code> and <code class="docutils literal notranslate"><span class="pre">row</span> <span class="pre">2</span></code> are in the same partition, <code class="docutils literal notranslate"><span class="pre">row</span> <span class="pre">3</span></code> and <code class="docutils literal notranslate"><span class="pre">row</span> <span class="pre">4</span></code> are also in the same partition (but a
+different one) and <code class="docutils literal notranslate"><span class="pre">row</span> <span class="pre">5</span></code> is in yet another partition.</p>
+<p>Note that a table always has a partition key, and that if the table has no <a class="reference internal" href="#clustering-columns"><span class="std std-ref">clustering columns</span></a>, then every partition of that table is only comprised of a single row (since the primary key
+uniquely identifies rows and the primary key is equal to the partition key if there is no clustering columns).</p>
+<p>The most important property of partition is that all the rows belonging to the same partition are guarantee to be stored
+on the same set of replica nodes. In other words, the partition key of a table defines which of the rows will be
+localized together in the Cluster, and it is thus important to choose your partition key wisely so that rows that needs
+to be fetch together are in the same partition (so that querying those rows together require contacting a minimum of
+nodes).</p>
+<p>Please note however that there is a flip-side to this guarantee: as all rows sharing a partition key are guaranteed to
+be stored on the same set of replica node, a partition key that groups too much data can create a hotspot.</p>
+<p>Another useful property of a partition is that when writing data, all the updates belonging to a single partition are
+done <em>atomically</em> and in <em>isolation</em>, which is not the case across partitions.</p>
+<p>The proper choice of the partition key and clustering columns for a table is probably one of the most important aspect
+of data modeling in Cassandra, and it largely impact which queries can be performed, and how efficiently they are.</p>
+<p>The clustering columns of a table defines the clustering order for the partition of that table. For a given
+<a class="reference internal" href="#partition-key"><span class="std std-ref">partition</span></a>, all the rows are physically ordered inside Cassandra by that clustering order. For
+instance, given:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span>
+    <span class="n">a</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">b</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">c</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span>
+<span class="p">);</span>
+
+<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
+   <span class="n">a</span> <span class="o">|</span> <span class="n">b</span> <span class="o">|</span> <span class="n">c</span>
+  <span class="c1">---+---+---</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">0</span> <span class="o">|</span> <span class="mf">4</span>     <span class="c1">// row 1</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">1</span> <span class="o">|</span> <span class="mf">9</span>     <span class="c1">// row 2</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">2</span> <span class="o">|</span> <span class="mf">2</span>     <span class="c1">// row 3</span>
+   <span class="mf">0</span> <span class="o">|</span> <span class="mf">3</span> <span class="o">|</span> <span class="mf">3</span>     <span class="c1">// row 4</span>
+</pre></div>
+</div>
+<p>then the rows (which all belong to the same partition) are all stored internally in the order of the values of their
+<code class="docutils literal notranslate"><span class="pre">b</span></code> column (the order they are displayed above). So where the partition key of the table allows to group rows on the
+same replica set, the clustering columns controls how those rows are stored on the replica. That sorting allows the
+retrieval of a range of rows within a partition (for instance, in the example above, <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">*</span> <span class="pre">FROM</span> <span class="pre">t</span> <span class="pre">WHERE</span> <span class="pre">a</span> <span class="pre">=</span> <span class="pre">0</span> <span class="pre">AND</span> <span class="pre">b</span>
+<span class="pre">&gt;</span> <span class="pre">1</span> <span class="pre">and</span> <span class="pre">b</span> <span class="pre">&lt;=</span> <span class="pre">3</span></code>) to be very efficient.</p>
+<p>A CQL table has a number of options that can be set at creation (and, for most of them, <a class="reference internal" href="#alter-table-statement"><span class="std std-ref">altered</span></a> later). These options are specified after the <code class="docutils literal notranslate"><span class="pre">WITH</span></code> keyword and are described
+in the following sections.</p>
+<blockquote id="compact-tables">
+<div></div></blockquote>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">It is strongly discouraged to create new tables with the <code class="docutils literal notranslate"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> option. Since Cassandra 3.0,
+compact storage tables have the exact same layout internally than non compact ones (for the same schema obviously),
+and declaring a table compact <strong>only</strong> creates artificial limitations on the table definition and usage. As of Cassandra
+4.0-rc1 <code class="docutils literal notranslate"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> cannot be removed.</p>
+</div>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> is not recommended for production environments. There are still cases where a change of</dt>
+<dd>behavior is observed. To name a few: (1) Hidden columns show up, which breaks <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">*</span></code> queries.
+(2) <code class="docutils literal notranslate"><span class="pre">DELETE</span> <span class="pre">v</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span> <span class="pre">v</span> <span class="pre">WITH</span> <span class="pre">TTL</span></code> would result into row removals in non-dense compact storage tables (CASSANDRA-16069)
+(3) <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> allows skipping clusterings, which are filled with nulls by default.</dd>
+</dl>
+<p>A <em>compact storage</em> table is one defined with the <code class="docutils literal notranslate"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code> option. This option is only maintained for backward
+compatibility for definitions created before CQL version 3 and shouldn’t be used for new tables. 4.0 supports partially
+<code class="docutils literal notranslate"><span class="pre">COMPACT</span> <span class="pre">STORAGE</span></code>. There is no support for super column family. Since Cassandra 3.0, compact storage tables have the exact
+same layout internally than non compact ones (for the same schema obviously), and declaring a table with this option creates
+limitations for the table which are largely arbitrary (and exists for historical reasons). Amongst those limitation:</p>
+<ul class="last simple">
+<li>a compact storage table cannot use collections nor static columns.</li>
+<li>if a compact storage table has at least one clustering column, then it must have <em>exactly</em> one column outside of the primary
+key ones. This implies you cannot add or remove columns after creation in particular.</li>
+<li>a compact storage table is limited in the indexes it can create, and no materialized view can be created on it.</li>
+</ul>
+</div>
+<p>But please bear in mind that the <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> option cannot be changed after table creation and
+has influences on the performance of some queries.</p>
+<p>The clustering order of a table is defined by the <a class="reference internal" href="#clustering-columns"><span class="std std-ref">clustering columns</span></a> of that table. By
+default, that ordering is based on natural order of those clustering order, but the <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> allows to
+change that clustering order to use the <em>reverse</em> natural order for some (potentially all) of the columns.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> option takes the comma-separated list of the clustering column, each with a <code class="docutils literal notranslate"><span class="pre">ASC</span></code> (for
+<em>ascendant</em>, e.g. the natural order) or <code class="docutils literal notranslate"><span class="pre">DESC</span></code> (for <em>descendant</em>, e.g. the reverse natural order). Note in particular
+that the default (if the <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> option is not used) is strictly equivalent to using the option with all
+clustering columns using the <code class="docutils literal notranslate"><span class="pre">ASC</span></code> modifier.</p>
+<p>Note that this option is basically a hint for the storage engine to change the order in which it stores the row but it
+has 3 visible consequences:</p>
+<dl class="docutils">
+<dt># it limits which <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span></code> clause are allowed for <a class="reference internal" href="dml.html#select-statement"><span class="std std-ref">selects</span></a> on that table. You can only</dt>
+<dd>order results by the clustering order or the reverse clustering order. Meaning that if a table has 2 clustering column
+<code class="docutils literal notranslate"><span class="pre">a</span></code> and <code class="docutils literal notranslate"><span class="pre">b</span></code> and you defined <code class="docutils literal notranslate"><span class="pre">WITH</span> <span class="pre">CLUSTERING</span> <span class="pre">ORDER</span> <span class="pre">(a</span> <span class="pre">DESC,</span> <span class="pre">b</span> <span class="pre">ASC)</span></code>, then in queries you will be allowed to use
+<code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span> <span class="pre">(a</span> <span class="pre">DESC,</span> <span class="pre">b</span> <span class="pre">ASC)</span></code> and (reverse clustering order) <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span> <span class="pre">(a</span> <span class="pre">ASC,</span> <span class="pre">b</span> <span class="pre">DESC)</span></code> but <strong>not</strong> <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span> <span class="pre">(a</span>
+<span class="pre">ASC,</span> <span class="pre">b</span> <span class="pre">ASC)</span></code> (nor <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span> <span class="pre">(a</span> <span class="pre">DESC,</span> <span class="pre">b</span> <span class="pre">DESC)</span></code>).</dd>
+<dt># it also change the default order of results when queried (if no <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span></code> is provided). Results are always returned</dt>
+<dd>in clustering order (within a partition).</dd>
+<dt># it has a small performance impact on some queries as queries in reverse clustering order are slower than the one in</dt>
+<dd>forward clustering order. In practice, this means that if you plan on querying mostly in the reverse natural order of
+your columns (which is common with time series for instance where you often want data from the newest to the oldest),
+it is an optimization to declare a descending clustering order.</dd>
+</dl>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">review (misses cdc if nothing else) and link to proper categories when appropriate (compaction for instance)</p>
+</div>
+<p>A table supports the following options:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="28%" />
+<col width="9%" />
+<col width="11%" />
+<col width="52%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">option</th>
+<th class="head">kind</th>
+<th class="head">default</th>
+<th class="head">description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">comment</span></code>
+<code class="docutils literal notranslate"><span class="pre">speculative_retry</span></code></td>
+<td><em>simple</em>
+<em>simple</em></td>
+<td>none
+99PERCENTILE</td>
+<td>A free-form, human-readable comment.
+<a class="reference internal" href="#speculative-retry-options"><span class="std std-ref">Speculative retry options</span></a>.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">cdc</span></code></td>
+<td><em>boolean</em></td>
+<td>false</td>
+<td>Create a Change Data Capture (CDC) log on the table.</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">additional_write_policy</span></code></td>
+<td><em>simple</em></td>
+<td>99PERCENTILE</td>
+<td><a class="reference internal" href="#speculative-retry-options"><span class="std std-ref">Speculative retry options</span></a>.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code></td>
+<td><em>simple</em></td>
+<td>864000</td>
+<td>Time to wait before garbage collecting tombstones
+(deletion markers).</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code></td>
+<td><em>simple</em></td>
+<td>0.00075</td>
+<td>The target probability of false positive of the sstable
+bloom filters. Said bloom filters will be sized to provide
+the provided probability (thus lowering this value impact
+the size of bloom filters in-memory and on-disk)</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">default_time_to_live</span></code></td>
+<td><em>simple</em></td>
+<td>0</td>
+<td>The default expiration time (“TTL”) in seconds for a
+table.</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">compaction</span></code></td>
+<td><em>map</em></td>
+<td><em>see below</em></td>
+<td><a class="reference internal" href="#cql-compaction-options"><span class="std std-ref">Compaction options</span></a>.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">compression</span></code></td>
+<td><em>map</em></td>
+<td><em>see below</em></td>
+<td><a class="reference internal" href="#cql-compression-options"><span class="std std-ref">Compression options</span></a>.</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">caching</span></code></td>
+<td><em>map</em></td>
+<td><em>see below</em></td>
+<td><a class="reference internal" href="#cql-caching-options"><span class="std std-ref">Caching options</span></a>.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">memtable_flush_period_in_ms</span></code></td>
+<td><em>simple</em></td>
+<td>0</td>
+<td>Time (in ms) before Cassandra flushes memtables to disk.</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">read_repair</span></code></td>
+<td><em>simple</em></td>
+<td>BLOCKING</td>
+<td>Sets read repair behavior (see below)</td>
+</tr>
+</tbody>
+</table>
+<p>By default, Cassandra read coordinators only query as many replicas as necessary to satisfy
+consistency levels: one for consistency level <code class="docutils literal notranslate"><span class="pre">ONE</span></code>, a quorum for <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code>, and so on.
+<code class="docutils literal notranslate"><span class="pre">speculative_retry</span></code> determines when coordinators may query additional replicas, which is useful
+when replicas are slow or unresponsive.  Speculative retries are used to reduce the latency.  The speculative_retry option may be
+used to configure rapid read protection with which a coordinator sends more requests than needed to satisfy the Consistency level.</p>
+<p>Pre-4.0 speculative Retry Policy takes a single string as a parameter, this can be <code class="docutils literal notranslate"><span class="pre">NONE</span></code>, <code class="docutils literal notranslate"><span class="pre">ALWAYS</span></code>, <code class="docutils literal notranslate"><span class="pre">99PERCENTILE</span></code> (PERCENTILE), <code class="docutils literal notranslate"><span class="pre">50MS</span></code> (CUSTOM).</p>
+<p>Examples of setting speculative retry are:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">TABLE</span> <span class="k">users</span> <span class="k">WITH</span> <span class="n">speculative_retry</span> <span class="o">=</span> <span class="s1">&#39;10ms&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Or,</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">TABLE</span> <span class="k">users</span> <span class="k">WITH</span> <span class="n">speculative_retry</span> <span class="o">=</span> <span class="s1">&#39;99PERCENTILE&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The problem with these settings is when a single host goes into an unavailable state this drags up the percentiles. This means if we
+are set to use <code class="docutils literal notranslate"><span class="pre">p99</span></code> alone, we might not speculate when we intended to to because the value at the specified percentile has gone so high.
+As a fix 4.0 adds  support for hybrid <code class="docutils literal notranslate"><span class="pre">MIN()</span></code>, <code class="docutils literal notranslate"><span class="pre">MAX()</span></code> speculative retry policies (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14293">CASSANDRA-14293</a>). This means if the normal <code class="docutils literal notranslate"><span class="pre">p99</span></code> for the
+table is &lt;50ms, we will still speculate at this value and not drag the tail latencies up… but if the <code class="docutils literal notranslate"><span class="pre">p99th</span></code> goes above what we know we
+should never exceed we use that instead.</p>
+<p>In 4.0 the values (case-insensitive) discussed in the following table are supported:</p>
+<p>As of version 4.0 speculative retry allows more friendly params (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-13876">CASSANDRA-13876</a>). The <code class="docutils literal notranslate"><span class="pre">speculative_retry</span></code> is more flexible with case. As an example a
+value does not have to be <code class="docutils literal notranslate"><span class="pre">NONE</span></code>, and the following are supported alternatives.</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">alter</span> <span class="k">table</span> <span class="k">users</span> <span class="k">WITH</span> <span class="n">speculative_retry</span> <span class="o">=</span> <span class="s1">&#39;none&#39;</span><span class="p">;</span>
+<span class="k">alter</span> <span class="k">table</span> <span class="k">users</span> <span class="k">WITH</span> <span class="n">speculative_retry</span> <span class="o">=</span> <span class="s1">&#39;None&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The text component is case insensitive and for <code class="docutils literal notranslate"><span class="pre">nPERCENTILE</span></code> version 4.0 allows <code class="docutils literal notranslate"><span class="pre">nP</span></code>, for instance <code class="docutils literal notranslate"><span class="pre">99p</span></code>.
+In a hybrid value for speculative retry, one of the two values must be a fixed millisecond value and the other a percentile value.</p>
+<p>Some examples:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="n">min</span><span class="p">(</span><span class="mf">99</span><span class="n">percentile</span><span class="p">,</span><span class="mf">50</span><span class="n">ms</span><span class="p">)</span>
+<span class="n">max</span><span class="p">(</span><span class="mf">99</span><span class="n">p</span><span class="p">,</span><span class="mf">50</span><span class="n">MS</span><span class="p">)</span>
+<span class="n">MAX</span><span class="p">(</span><span class="mf">99</span><span class="n">P</span><span class="p">,</span><span class="mf">50</span><span class="n">ms</span><span class="p">)</span>
+<span class="n">MIN</span><span class="p">(</span><span class="mf">99.9</span><span class="n">PERCENTILE</span><span class="p">,</span><span class="mf">50</span><span class="n">ms</span><span class="p">)</span>
+<span class="n">max</span><span class="p">(</span><span class="mf">90</span><span class="n">percentile</span><span class="p">,</span><span class="mf">100</span><span class="n">MS</span><span class="p">)</span>
+<span class="n">MAX</span><span class="p">(</span><span class="mf">100.0</span><span class="n">PERCENTILE</span><span class="p">,</span><span class="mf">60</span><span class="n">ms</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Two values of the same kind cannot be specified such as <code class="docutils literal notranslate"><span class="pre">min(90percentile,99percentile)</span></code> as it wouldn’t be a hybrid value.
+This setting does not affect reads with consistency level <code class="docutils literal notranslate"><span class="pre">ALL</span></code> because they already query all replicas.</p>
+<p>Note that frequently reading from additional replicas can hurt cluster performance.
+When in doubt, keep the default <code class="docutils literal notranslate"><span class="pre">99PERCENTILE</span></code>.</p>
+<p><code class="docutils literal notranslate"><span class="pre">additional_write_policy</span></code> specifies the threshold at which a cheap quorum write will be upgraded to include transient replicas.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">compaction</span></code> options must at least define the <code class="docutils literal notranslate"><span class="pre">'class'</span></code> sub-option, that defines the compaction strategy class
+to use. The supported class are <code class="docutils literal notranslate"><span class="pre">'SizeTieredCompactionStrategy'</span></code> (<a class="reference internal" href="../operating/compaction/stcs.html#stcs"><span class="std std-ref">STCS</span></a>),
+<code class="docutils literal notranslate"><span class="pre">'LeveledCompactionStrategy'</span></code> (<a class="reference internal" href="../operating/compaction/lcs.html#lcs"><span class="std std-ref">LCS</span></a>) and <code class="docutils literal notranslate"><span class="pre">'TimeWindowCompactionStrategy'</span></code> (<a class="reference internal" href="../operating/compaction/twcs.html#twcs"><span class="std std-ref">TWCS</span></a>) (the
+<code class="docutils literal notranslate"><span class="pre">'DateTieredCompactionStrategy'</span></code> is also supported but is deprecated and <code class="docutils literal notranslate"><span class="pre">'TimeWindowCompactionStrategy'</span></code> should be
+preferred instead). The default is <code class="docutils literal notranslate"><span class="pre">'SizeTieredCompactionStrategy'</span></code>. Custom strategy can be provided by specifying the full class name as a <a class="reference internal" href="definitions.html#constants"><span class="std std-ref">string constant</span></a>.</p>
+<p>All default strategies support a number of <a class="reference internal" href="../operating/compaction/index.html#compaction-options"><span class="std std-ref">common options</span></a>, as well as options specific to
+the strategy chosen (see the section corresponding to your strategy for details: <a class="reference internal" href="../operating/compaction/stcs.html#stcs-options"><span class="std std-ref">STCS</span></a>, <a class="reference internal" href="../operating/compaction/lcs.html#lcs-options"><span class="std std-ref">LCS</span></a> and <a class="reference internal" href="../operating/compaction/twcs.html#twcs"><span class="std std-ref">TWCS</span></a>).</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">compression</span></code> options define if and how the sstables of the table are compressed. Compression is configured on a per-table
+basis as an optional argument to <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> or <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code>. The following sub-options are
+available:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="19%" />
+<col width="11%" />
+<col width="70%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Option</th>
+<th class="head">Default</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">class</span></code></td>
+<td>LZ4Compressor</td>
+<td>The compression algorithm to use. Default compressor are: LZ4Compressor,
+SnappyCompressor, DeflateCompressor and ZstdCompressor. Use <code class="docutils literal notranslate"><span class="pre">'enabled'</span> <span class="pre">:</span> <span class="pre">false</span></code> to disable
+compression. Custom compressor can be provided by specifying the full class
+name as a “string constant”:#constants.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">enabled</span></code></td>
+<td>true</td>
+<td>Enable/disable sstable compression. If the <code class="docutils literal notranslate"><span class="pre">enabled</span></code> option is set to <code class="docutils literal notranslate"><span class="pre">false</span></code> no other
+options must be specified.</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">chunk_length_in_kb</span></code></td>
+<td>64</td>
+<td><p class="first">On disk SSTables are compressed by block (to allow random reads). This
+defines the size (in KB) of said block. Bigger values may improve the
+compression rate, but increases the minimum size of data to be read from disk
+for a read. The default value is an optimal value for compressing tables. Chunk length must
+be a power of 2 because so is assumed so when computing the chunk number from an uncompressed
+file offset.  Block size may be adjusted based on read/write access patterns such as:</p>
+<blockquote class="last">
+<div><ul class="simple">
+<li>How much data is typically requested at once</li>
+<li>Average size of rows in the table</li>
+</ul>
+</div></blockquote>
+</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">crc_check_chance</span></code></td>
+<td>1.0</td>
+<td>Determines how likely Cassandra is to verify the checksum on each compression chunk during
+reads.</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">compression_level</span></code></td>
+<td>3</td>
+<td>Compression level. It is only applicable for <code class="docutils literal notranslate"><span class="pre">ZstdCompressor</span></code> and accepts values between
+<code class="docutils literal notranslate"><span class="pre">-131072</span></code> and <code class="docutils literal notranslate"><span class="pre">22</span></code>.</td>
+</tr>
+</tbody>
+</table>
+<p>For instance, to create a table with LZ4Compressor and a chunk_lenth_in_kb of 4KB:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">simple</span> <span class="p">(</span>
+   <span class="n">id</span> <span class="nb">int</span><span class="p">,</span>
+   <span class="k">key</span> <span class="nb">text</span><span class="p">,</span>
+   <span class="n">value</span> <span class="nb">text</span><span class="p">,</span>
+   <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="k">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
+<span class="p">)</span> <span class="k">with</span> <span class="n">compression</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;LZ4Compressor&#39;</span><span class="p">,</span> <span class="s1">&#39;chunk_length_in_kb&#39;</span><span class="p">:</span> <span class="mf">4</span><span class="p">};</span>
+</pre></div>
+</div>
+<p>Caching optimizes the use of cache memory of a table. The cached data is weighed by size and access frequency. The <code class="docutils literal notranslate"><span class="pre">caching</span></code>
+options allows to configure both the <em>key cache</em> and the <em>row cache</em> for the table. The following
+sub-options are available:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Option</th>
+<th class="head">Default</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">keys</span></code></td>
+<td>ALL</td>
+<td>Whether to cache keys (“key cache”) for this table. Valid values are: <code class="docutils literal notranslate"><span class="pre">ALL</span></code> and
+<code class="docutils literal notranslate"><span class="pre">NONE</span></code>.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">rows_per_partition</span></code></td>
+<td>NONE</td>
+<td>The amount of rows to cache per partition (“row cache”). If an integer <code class="docutils literal notranslate"><span class="pre">n</span></code> is
+specified, the first <code class="docutils literal notranslate"><span class="pre">n</span></code> queried rows of a partition will be cached. Other
+possible options are <code class="docutils literal notranslate"><span class="pre">ALL</span></code>, to cache all rows of a queried partition, or <code class="docutils literal notranslate"><span class="pre">NONE</span></code>
+to disable row caching.</td>
+</tr>
+</tbody>
+</table>
+<p>For instance, to create a table with both a key cache and 10 rows per partition:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">simple</span> <span class="p">(</span>
+<span class="n">id</span> <span class="nb">int</span><span class="p">,</span>
+<span class="k">key</span> <span class="nb">text</span><span class="p">,</span>
+<span class="n">value</span> <span class="nb">text</span><span class="p">,</span>
+<span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="k">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
+<span class="p">)</span> <span class="k">WITH</span> <span class="n">caching</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;keys&#39;</span><span class="p">:</span> <span class="s1">&#39;ALL&#39;</span><span class="p">,</span> <span class="s1">&#39;rows_per_partition&#39;</span><span class="p">:</span> <span class="mf">10</span><span class="p">};</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">read_repair</span></code> options configures the read repair behavior to allow tuning for various performance and
+consistency behaviors. Two consistency properties are affected by read repair behavior.</p>
+<ul class="simple">
+<li>Monotonic Quorum Reads: Provided by <code class="docutils literal notranslate"><span class="pre">BLOCKING</span></code>. Monotonic quorum reads prevents reads from appearing to go back
+in time in some circumstances. When monotonic quorum reads are not provided and a write fails to reach a quorum of
+replicas, it may be visible in one read, and then disappear in a subsequent read.</li>
+<li>Write Atomicity: Provided by <code class="docutils literal notranslate"><span class="pre">NONE</span></code>. Write atomicity prevents reads from returning partially applied writes.
+Cassandra attempts to provide partition level write atomicity, but since only the data covered by a SELECT statement
+is repaired by a read repair, read repair can break write atomicity when data is read at a more granular level than it
+is written. For example read repair can break write atomicity if you write multiple rows to a clustered partition in a
+batch, but then select a single row by specifying the clustering column in a SELECT statement.</li>
+</ul>
+<p>The available read repair settings are:</p>
+<p>The default setting. When <code class="docutils literal notranslate"><span class="pre">read_repair</span></code> is set to <code class="docutils literal notranslate"><span class="pre">BLOCKING</span></code>, and a read repair is triggered, the read will block
+on writes sent to other replicas until the CL is reached by the writes. Provides monotonic quorum reads, but not partition
+level write atomicity</p>
+<p>When <code class="docutils literal notranslate"><span class="pre">read_repair</span></code> is set to <code class="docutils literal notranslate"><span class="pre">NONE</span></code>, the coordinator will reconcile any differences between replicas, but will not
+attempt to repair them. Provides partition level write atomicity, but not monotonic quorum reads.</p>
+<ul class="simple">
+<li>Adding new columns (see <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> below) is a constant time operation. There is thus no need to try to
+anticipate future usage when creating a table.</li>
+</ul>
+</div>
+<div class="section" id="alter-table">
+<span id="alter-table-statement"></span><h2>ALTER TABLE<a class="headerlink" href="#alter-table" title="Permalink to this headline">¶</a></h2>
+<p>Altering an existing table uses the <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-alter-table-statement">alter_table_statement  </strong> ::=  ALTER TABLE <a class="reference internal" href="#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a> <a class="reference internal" href="#grammar-token-alter-table-instruction"><code class="xref docutils literal notranslate"><span class="pre">alter_table_instruction</span></code></a>
+<strong id="grammar-token-alter-table-instruction">alter_table_instruction</strong> ::=  ADD <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> )*
+                             | DROP <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( <a class="reference internal" href="#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )*
+                             | WITH <a class="reference internal" href="#grammar-token-options"><code class="xref docutils literal notranslate"><span class="pre">options</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">TABLE</span> <span class="n">addamsFamily</span> <span class="k">ADD</span> <span class="n">gravesite</span> <span class="nb">varchar</span><span class="p">;</span>
+
+<span class="k">ALTER</span> <span class="k">TABLE</span> <span class="n">addamsFamily</span>
+       <span class="k">WITH</span> <span class="n">comment</span> <span class="o">=</span> <span class="s1">&#39;A most excellent and useful table&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement can:</p>
+<ul class="simple">
+<li>Add new column(s) to the table (through the <code class="docutils literal notranslate"><span class="pre">ADD</span></code> instruction). Note that the primary key of a table cannot be
+changed and thus newly added column will, by extension, never be part of the primary key. Also note that <a class="reference internal" href="#compact-tables"><span class="std std-ref">compact
+tables</span></a> have restrictions regarding column addition. Note that this is constant (in the amount of
+data the cluster contains) time operation.</li>
+<li>Remove column(s) from the table. This drops both the column and all its content, but note that while the column
+becomes immediately unavailable, its content is only removed lazily during compaction. Please also see the warnings
+below. Due to lazy removal, the altering itself is a constant (in the amount of data removed or contained in the
+cluster) time operation.</li>
+<li>Change some of the table options (through the <code class="docutils literal notranslate"><span class="pre">WITH</span></code> instruction). The <a class="reference internal" href="#create-table-options"><span class="std std-ref">supported options</span></a> are the same that when creating a table (outside of <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span>
+<span class="pre">ORDER</span></code> that cannot be changed after creation). Note that setting any <code class="docutils literal notranslate"><span class="pre">compaction</span></code> sub-options has the effect of
+erasing all previous <code class="docutils literal notranslate"><span class="pre">compaction</span></code> options, so you need to re-specify all the sub-options if you want to keep them.
+The same note applies to the set of <code class="docutils literal notranslate"><span class="pre">compression</span></code> sub-options.</li>
+</ul>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">Dropping a column assumes that the timestamps used for the value of this column are “real” timestamp in
+microseconds. Using “real” timestamps in microseconds is the default is and is <strong>strongly</strong> recommended but as
+Cassandra allows the client to provide any timestamp on any table it is theoretically possible to use another
+convention. Please be aware that if you do so, dropping a column will not work correctly.</p>
+</div>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">Once a column is dropped, it is allowed to re-add a column with the same name than the dropped one
+<strong>unless</strong> the type of the dropped column was a (non-frozen) column (due to an internal technical limitation).</p>
+</div>
+</div>
+<div class="section" id="drop-table">
+<span id="drop-table-statement"></span><h2>DROP TABLE<a class="headerlink" href="#drop-table" title="Permalink to this headline">¶</a></h2>
+<p>Dropping a table uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">TABLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-table-statement">drop_table_statement</strong> ::=  DROP TABLE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+</pre>
+<p>Dropping a table results in the immediate, irreversible removal of the table, including all data it contains.</p>
+<p>If the table does not exist, the statement will return an error, unless <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used in which case the
+operation is a no-op.</p>
+</div>
+<div class="section" id="truncate">
+<span id="truncate-statement"></span><h2>TRUNCATE<a class="headerlink" href="#truncate" title="Permalink to this headline">¶</a></h2>
+<p>A table can be truncated using the <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-truncate-statement">truncate_statement</strong> ::=  TRUNCATE [ TABLE ] <a class="reference internal" href="#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+</pre>
+<p>Note that <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span> <span class="pre">TABLE</span> <span class="pre">foo</span></code> is allowed for consistency with other DDL statements but tables are the only object
+that can be truncated currently and so the <code class="docutils literal notranslate"><span class="pre">TABLE</span></code> keyword can be omitted.</p>
+<p>Truncating a table permanently removes all existing data from the table, but without removing the table itself.</p>
+</div>
+<div class="section" id="describe">
+<span id="describe-statements"></span><h2>DESCRIBE<a class="headerlink" href="#describe" title="Permalink to this headline">¶</a></h2>
+<p>Statements used to outputs information about the connected Cassandra cluster,
+or about the data objects stored in the cluster.</p>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">Describe statement resultset that exceed the page size are paged. If a schema changes is detected between
+two pages the query will fail with an <code class="docutils literal notranslate"><span class="pre">InvalidRequestException</span></code>. It is safe to retry the whole <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code>
+statement after such an error.</p>
+</div>
+<div class="section" id="describe-keyspaces">
+<h3>DESCRIBE KEYSPACES<a class="headerlink" href="#describe-keyspaces" title="Permalink to this headline">¶</a></h3>
+<p>Output the names of all keyspaces.</p>
+<pre>
+<strong id="grammar-token-describe-keyspaces-statement">describe_keyspaces_statement</strong> ::=  DESCRIBE KEYSPACES
+</pre>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-keyspace">
+<h3>DESCRIBE KEYSPACE<a class="headerlink" href="#describe-keyspace" title="Permalink to this headline">¶</a></h3>
+<p>Output CQL commands that could be used to recreate the given keyspace, and the objects in it
+(such as tables, types, functions, etc.).</p>
+<pre>
+<strong id="grammar-token-describe-keyspace-statement">describe_keyspace_statement</strong> ::=  DESCRIBE [ONLY] KEYSPACE [<a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a>] [WITH INTERNALS]
+</pre>
+<p>The <code class="docutils literal notranslate"><span class="pre">keyspace_name</span></code> argument may be omitted, in which case the current keyspace will be described.</p>
+<p>If <code class="docutils literal notranslate"><span class="pre">WITH</span> <span class="pre">INTERNALS</span></code> is specified, the output contains the table IDs and is adopted to represent the DDL necessary
+to “re-create” dropped columns.</p>
+<p>If <code class="docutils literal notranslate"><span class="pre">ONLY</span></code> is specified, only the DDL to recreate the keyspace will be created. All keyspace elements, like tables,
+types, functions, etc will be omitted.</p>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+<tr class="row-odd"><td>create_statement</td>
+<td>text</td>
+<td>The CQL statement to use to recreate the schema element</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-tables">
+<h3>DESCRIBE TABLES<a class="headerlink" href="#describe-tables" title="Permalink to this headline">¶</a></h3>
+<p>Output the names of all tables in the current keyspace, or in all keyspaces if there is no current keyspace.</p>
+<pre>
+<strong id="grammar-token-describe-tables-statement">describe_tables_statement</strong> ::=  DESCRIBE TABLES
+</pre>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-table">
+<h3>DESCRIBE TABLE<a class="headerlink" href="#describe-table" title="Permalink to this headline">¶</a></h3>
+<p>Output CQL commands that could be used to recreate the given table.</p>
+<pre>
+<strong id="grammar-token-describe-table-statement">describe_table_statement</strong> ::=  DESCRIBE TABLE [<a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a>.]<a class="reference internal" href="#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a> [WITH INTERNALS]
+</pre>
+<p>If <cite>WITH INTERNALS</cite> is specified, the output contains the table ID and is adopted to represent the DDL necessary
+to “re-create” dropped columns.</p>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+<tr class="row-odd"><td>create_statement</td>
+<td>text</td>
+<td>The CQL statement to use to recreate the schema element</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-index">
+<h3>DESCRIBE INDEX<a class="headerlink" href="#describe-index" title="Permalink to this headline">¶</a></h3>
+<p>Output the CQL command that could be used to recreate the given index.</p>
+<pre>
+<strong id="grammar-token-describe-index-statement">describe_index_statement</strong> ::=  DESCRIBE INDEX [<a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a>.]<a class="reference internal" href="indexes.html#grammar-token-index-name"><code class="xref docutils literal notranslate"><span class="pre">index_name</span></code></a>
+</pre>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+<tr class="row-odd"><td>create_statement</td>
+<td>text</td>
+<td>The CQL statement to use to recreate the schema element</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-materialized-view">
+<h3>DESCRIBE MATERIALIZED VIEW<a class="headerlink" href="#describe-materialized-view" title="Permalink to this headline">¶</a></h3>
+<p>Output the CQL command that could be used to recreate the given materialized view.</p>
+<pre>
+<strong id="grammar-token-describe-materialized-view-statement">describe_materialized_view_statement</strong> ::=  DESCRIBE MATERIALIZED VIEW [<a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a>.]<a class="reference internal" href="mvs.html#grammar-token-view-name"><code class="xref docutils literal notranslate"><span class="pre">view_name</span></code></a>
+</pre>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+<tr class="row-odd"><td>create_statement</td>
+<td>text</td>
+<td>The CQL statement to use to recreate the schema element</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-cluster">
+<h3>DESCRIBE CLUSTER<a class="headerlink" href="#describe-cluster" title="Permalink to this headline">¶</a></h3>
+<p>Output information about the connected Cassandra cluster, such as the cluster name, and the partitioner and snitch
+in use. When you are connected to a non-system keyspace, also shows endpoint-range ownership information for
+the Cassandra ring.</p>
+<pre>
+<strong id="grammar-token-describe-cluster-statement">describe_cluster_statement</strong> ::=  DESCRIBE CLUSTER
+</pre>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="20%" />
+<col width="19%" />
+<col width="61%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>cluster</td>
+<td>text</td>
+<td>The cluster name</td>
+</tr>
+<tr class="row-odd"><td>partitioner</td>
+<td>text</td>
+<td>The partitioner being used by the cluster</td>
+</tr>
+<tr class="row-even"><td>snitch</td>
+<td>text</td>
+<td>The snitch being used by the cluster</td>
+</tr>
+<tr class="row-odd"><td>range_ownership</td>
+<td>map&lt;text, list&lt;text&gt;&gt;</td>
+<td>The CQL statement to use to recreate the schema element</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-schema">
+<h3>DESCRIBE SCHEMA<a class="headerlink" href="#describe-schema" title="Permalink to this headline">¶</a></h3>
+<p>Output CQL commands that could be used to recreate the entire (non-system) schema.
+Works as though “DESCRIBE KEYSPACE k” was invoked for each non-system keyspace</p>
+<pre>
+<strong id="grammar-token-describe-schema-statement">describe_schema_statement</strong> ::=  DESCRIBE [FULL] SCHEMA [WITH INTERNALS]
+</pre>
+<p>Use <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span> <span class="pre">FULL</span> <span class="pre">SCHEMA</span></code> to include the system keyspaces.</p>
+<p>If <code class="docutils literal notranslate"><span class="pre">WITH</span> <span class="pre">INTERNALS</span></code> is specified, the output contains the table IDs and is adopted to represent the DDL necessary
+to “re-create” dropped columns.</p>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+<tr class="row-odd"><td>create_statement</td>
+<td>text</td>
+<td>The CQL statement to use to recreate the schema element</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-types">
+<h3>DESCRIBE TYPES<a class="headerlink" href="#describe-types" title="Permalink to this headline">¶</a></h3>
+<p>Output the names of all user-defined-types in the current keyspace, or in all keyspaces if there is no current keyspace.</p>
+<pre>
+<strong id="grammar-token-describe-types-statement">describe_types_statement</strong> ::=  DESCRIBE TYPES
+</pre>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-type">
+<h3>DESCRIBE TYPE<a class="headerlink" href="#describe-type" title="Permalink to this headline">¶</a></h3>
+<p>Output the CQL command that could be used to recreate the given user-defined-type.</p>
+<pre>
+<strong id="grammar-token-describe-type-statement">describe_type_statement</strong> ::=  DESCRIBE TYPE [<a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a>.]<code class="xref docutils literal notranslate"><span class="pre">type_name</span></code>
+</pre>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+<tr class="row-odd"><td>create_statement</td>
+<td>text</td>
+<td>The CQL statement to use to recreate the schema element</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-functions">
+<h3>DESCRIBE FUNCTIONS<a class="headerlink" href="#describe-functions" title="Permalink to this headline">¶</a></h3>
+<p>Output the names of all user-defined-functions in the current keyspace, or in all keyspaces if there is no current
+keyspace.</p>
+<pre>
+<strong id="grammar-token-describe-functions-statement">describe_functions_statement</strong> ::=  DESCRIBE FUNCTIONS
+</pre>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-function">
+<h3>DESCRIBE FUNCTION<a class="headerlink" href="#describe-function" title="Permalink to this headline">¶</a></h3>
+<p>Output the CQL command that could be used to recreate the given user-defined-function.</p>
+<pre>
+<strong id="grammar-token-describe-function-statement">describe_function_statement</strong> ::=  DESCRIBE FUNCTION [<a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a>.]<a class="reference internal" href="functions.html#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a>
+</pre>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+<tr class="row-odd"><td>create_statement</td>
+<td>text</td>
+<td>The CQL statement to use to recreate the schema element</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-aggregates">
+<h3>DESCRIBE AGGREGATES<a class="headerlink" href="#describe-aggregates" title="Permalink to this headline">¶</a></h3>
+<p>Output the names of all user-defined-aggregates in the current keyspace, or in all keyspaces if there is no current
+keyspace.</p>
+<pre>
+<strong id="grammar-token-describe-aggregates-statement">describe_aggregates_statement</strong> ::=  DESCRIBE AGGREGATES
+</pre>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-aggregate">
+<h3>DESCRIBE AGGREGATE<a class="headerlink" href="#describe-aggregate" title="Permalink to this headline">¶</a></h3>
+<p>Output the CQL command that could be used to recreate the given user-defined-aggregate.</p>
+<pre>
+<strong id="grammar-token-describe-aggregate-statement">describe_aggregate_statement</strong> ::=  DESCRIBE AGGREGATE [<a class="reference internal" href="#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a>.]<code class="xref docutils literal notranslate"><span class="pre">aggregate_name</span></code>
+</pre>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+<tr class="row-odd"><td>create_statement</td>
+<td>text</td>
+<td>The CQL statement to use to recreate the schema element</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="describe-object">
+<h3>DESCRIBE object<a class="headerlink" href="#describe-object" title="Permalink to this headline">¶</a></h3>
+<p>Output CQL commands that could be used to recreate the entire object schema, where object can be either a keyspace
+or a table or an index or a materialized view (in this order).</p>
+<pre>
+<strong id="grammar-token-describe-object-statement">describe_object_statement</strong> ::=  DESCRIBE <code class="xref docutils literal notranslate"><span class="pre">object_name</span></code> [WITH INTERNALS]
+</pre>
+<p>If <code class="docutils literal notranslate"><span class="pre">WITH</span> <span class="pre">INTERNALS</span></code> is specified and <code class="docutils literal notranslate"><span class="pre">object_name</span></code> represents a keyspace or table the output contains the table IDs
+and is adopted to represent the DDL necessary to “re-create” dropped columns.</p>
+<p><code class="docutils literal notranslate"><span class="pre">object_name</span></code> cannot be any of the “describe what” qualifiers like “cluster”, “table”, etc.</p>
+<p>Returned columns:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="21%" />
+<col width="8%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Columns</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>keyspace_name</td>
+<td>text</td>
+<td>The keyspace name</td>
+</tr>
+<tr class="row-odd"><td>type</td>
+<td>text</td>
+<td>The schema element type</td>
+</tr>
+<tr class="row-even"><td>name</td>
+<td>text</td>
+<td>The schema element name</td>
+</tr>
+<tr class="row-odd"><td>create_statement</td>
+<td>text</td>
+<td>The CQL statement to use to recreate the schema element</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="dml.html" class="btn btn-default pull-right " role="button" title="Data Manipulation" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="types.html" class="btn btn-default" role="button" title="Data Types" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/definitions.html b/src/doc/4.0-rc1/cql/definitions.html
new file mode 100644
index 0000000..bdac266
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/definitions.html
@@ -0,0 +1,319 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Definitions"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Data Types" href="types.html"/>
+      <link rel="prev" title="The Cassandra Query Language (CQL)" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Definitions</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#conventions">Conventions</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#identifiers">Identifiers and keywords</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#constants">Constants</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#terms">Terms</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#comments">Comments</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#statements">Statements</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#prepared-statements">Prepared Statements</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="definitions">
+<h1>Definitions<a class="headerlink" href="#definitions" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="conventions">
+<span id="id1"></span><h2>Conventions<a class="headerlink" href="#conventions" title="Permalink to this headline">¶</a></h2>
+<p>To aid in specifying the CQL syntax, we will use the following conventions in this document:</p>
+<ul class="simple">
+<li>Language rules will be given in an informal <a class="reference external" href="http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form#Variants">BNF variant</a> notation. In particular, we’ll use square brakets
+(<code class="docutils literal notranslate"><span class="pre">[</span> <span class="pre">item</span> <span class="pre">]</span></code>) for optional items, <code class="docutils literal notranslate"><span class="pre">*</span></code> and <code class="docutils literal notranslate"><span class="pre">+</span></code> for repeated items (where <code class="docutils literal notranslate"><span class="pre">+</span></code> imply at least one).</li>
+<li>The grammar will also use the following convention for convenience: non-terminal term will be lowercase (and link to
+their definition) while terminal keywords will be provided “all caps”. Note however that keywords are
+<a class="reference internal" href="#identifiers"><span class="std std-ref">Identifiers and keywords</span></a> and are thus case insensitive in practice. We will also define some early construction using
+regexp, which we’ll indicate with <code class="docutils literal notranslate"><span class="pre">re(&lt;some</span> <span class="pre">regular</span> <span class="pre">expression&gt;)</span></code>.</li>
+<li>The grammar is provided for documentation purposes and leave some minor details out.  For instance, the comma on the
+last column definition in a <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> statement is optional but supported if present even though the grammar in
+this document suggests otherwise. Also, not everything accepted by the grammar is necessarily valid CQL.</li>
+<li>References to keywords or pieces of CQL code in running text will be shown in a <code class="docutils literal notranslate"><span class="pre">fixed-width</span> <span class="pre">font</span></code>.</li>
+</ul>
+</div>
+<div class="section" id="identifiers">
+<span id="identifiers-and-keywords"></span><h2>Identifiers and keywords<a class="headerlink" href="#identifiers" title="Permalink to this headline">¶</a></h2>
+<p>The CQL language uses <em>identifiers</em> (or <em>names</em>) to identify tables, columns and other objects. An identifier can be either
+unquoted or quoted. The unquoted identifier is a token matching the regular expression <code class="docutils literal notranslate"><span class="pre">[a-zA-Z][a-zA-Z0-9_]*</span></code>.
+In the case of quoted, the identity can contain non-ASCII characters between the quotation marks, with one exception that
+Cassandra does not accept non-ASCII characters, if the quoted identifier is used for keyspace name or table name.</p>
+<p>A number of such identifiers, like <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> or <code class="docutils literal notranslate"><span class="pre">WITH</span></code>, are <em>keywords</em>. They have a fixed meaning for the language
+and most are reserved. The list of those keywords can be found in <a class="reference internal" href="appendices.html#appendix-a"><span class="std std-ref">Appendix A: CQL Keywords</span></a>.</p>
+<p>Identifiers and (unquoted) keywords are case insensitive. Thus <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> is the same than <code class="docutils literal notranslate"><span class="pre">select</span></code> or <code class="docutils literal notranslate"><span class="pre">sElEcT</span></code>, and
+<code class="docutils literal notranslate"><span class="pre">myId</span></code> is the same than <code class="docutils literal notranslate"><span class="pre">myid</span></code> or <code class="docutils literal notranslate"><span class="pre">MYID</span></code>. A convention often used (in particular by the samples of this
+documentation) is to use upper case for keywords and lower case for other identifiers.</p>
+<p>There is a second kind of identifiers called <em>quoted identifiers</em> defined by enclosing an arbitrary sequence of
+characters (non empty) in double-quotes(<code class="docutils literal notranslate"><span class="pre">&quot;</span></code>). Quoted identifiers are never keywords. Thus <code class="docutils literal notranslate"><span class="pre">&quot;select&quot;</span></code> is not a
+reserved keyword and can be used to refer to a column (note that using this is particularly advised), while <code class="docutils literal notranslate"><span class="pre">select</span></code>
+would raise a parsing error. Also, contrarily to unquoted identifiers and keywords, quoted identifiers are case
+sensitive (<code class="docutils literal notranslate"><span class="pre">&quot;My</span> <span class="pre">Quoted</span> <span class="pre">Id&quot;</span></code> is <em>different</em> from <code class="docutils literal notranslate"><span class="pre">&quot;my</span> <span class="pre">quoted</span> <span class="pre">id&quot;</span></code>). A fully lowercase quoted identifier that matches
+<code class="docutils literal notranslate"><span class="pre">[a-zA-Z][a-zA-Z0-9_]*</span></code> is however <em>equivalent</em> to the unquoted identifier obtained by removing the double-quote (so
+<code class="docutils literal notranslate"><span class="pre">&quot;myid&quot;</span></code> is equivalent to <code class="docutils literal notranslate"><span class="pre">myid</span></code> and to <code class="docutils literal notranslate"><span class="pre">myId</span></code> but different from <code class="docutils literal notranslate"><span class="pre">&quot;myId&quot;</span></code>).  Inside a quoted identifier, the
+double-quote character can be repeated to escape it, so <code class="docutils literal notranslate"><span class="pre">&quot;foo</span> <span class="pre">&quot;&quot;</span> <span class="pre">bar&quot;</span></code> is a valid identifier.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last"><em>quoted identifiers</em> allows to declare columns with arbitrary names, and those can sometime clash with
+specific names used by the server. For instance, when using conditional update, the server will respond with a
+result-set containing a special result named <code class="docutils literal notranslate"><span class="pre">&quot;[applied]&quot;</span></code>. If you’ve declared a column with such a name, this
+could potentially confuse some tools and should be avoided. In general, unquoted identifiers should be preferred but
+if you use quoted identifiers, it is strongly advised to avoid any name enclosed by squared brackets (like
+<code class="docutils literal notranslate"><span class="pre">&quot;[applied]&quot;</span></code>) and any name that looks like a function call (like <code class="docutils literal notranslate"><span class="pre">&quot;f(x)&quot;</span></code>).</p>
+</div>
+<p>More formally, we have:</p>
+<pre>
+<strong id="grammar-token-identifier">identifier         </strong> ::=  <a class="reference internal" href="#grammar-token-unquoted-identifier"><code class="xref docutils literal notranslate"><span class="pre">unquoted_identifier</span></code></a> | <a class="reference internal" href="#grammar-token-quoted-identifier"><code class="xref docutils literal notranslate"><span class="pre">quoted_identifier</span></code></a>
+<strong id="grammar-token-unquoted-identifier">unquoted_identifier</strong> ::=  re('[a-zA-Z][a-zA-Z0-9_]*')
+<strong id="grammar-token-quoted-identifier">quoted_identifier  </strong> ::=  '&quot;' (any character where &quot; can appear if doubled)+ '&quot;'
+</pre>
+</div>
+<div class="section" id="constants">
+<span id="id2"></span><h2>Constants<a class="headerlink" href="#constants" title="Permalink to this headline">¶</a></h2>
+<p>CQL defines the following kind of <em>constants</em>:</p>
+<pre>
+<strong id="grammar-token-constant">constant</strong> ::=  <a class="reference internal" href="#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a> | <a class="reference internal" href="#grammar-token-integer"><code class="xref docutils literal notranslate"><span class="pre">integer</span></code></a> | <a class="reference internal" href="#grammar-token-float"><code class="xref docutils literal notranslate"><span class="pre">float</span></code></a> | <a class="reference internal" href="#grammar-token-boolean"><code class="xref docutils literal notranslate"><span class="pre">boolean</span></code></a> | <a class="reference internal" href="#grammar-token-uuid"><code class="xref docutils literal notranslate"><span class="pre">uuid</span></code></a> | <a class="reference internal" href="#grammar-token-blob"><code class="xref docutils literal notranslate"><span class="pre">blob</span></code></a> | NULL
+<strong id="grammar-token-string">string  </strong> ::=  '\'' (any character where ' can appear if doubled)+ '\''
+              '$$' (any character other than '$$') '$$'
+<strong id="grammar-token-integer">integer </strong> ::=  re('-?[0-9]+')
+<strong id="grammar-token-float">float   </strong> ::=  re('-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9+])?') | NAN | INFINITY
+<strong id="grammar-token-boolean">boolean </strong> ::=  TRUE | FALSE
+<strong id="grammar-token-uuid">uuid    </strong> ::=  <a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal notranslate"><span class="pre">hex</span></code></a>{8}-<a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal notranslate"><span class="pre">hex</span></code></a>{4}-<a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal notranslate"><span class="pre">hex</span></code></a>{4}-<a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal notranslate"><span class="pre">hex</span></code></a>{4}-<a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal notranslate"><span class="pre">hex</span></code></a>{12}
+<strong id="grammar-token-hex">hex     </strong> ::=  re(&quot;[0-9a-fA-F]&quot;)
+<strong id="grammar-token-blob">blob    </strong> ::=  '0' ('x' | 'X') <a class="reference internal" href="#grammar-token-hex"><code class="xref docutils literal notranslate"><span class="pre">hex</span></code></a>+
+</pre>
+<p>In other words:</p>
+<ul class="simple">
+<li>A string constant is an arbitrary sequence of characters enclosed by single-quote(<code class="docutils literal notranslate"><span class="pre">'</span></code>). A single-quote
+can be included by repeating it, e.g. <code class="docutils literal notranslate"><span class="pre">'It''s</span> <span class="pre">raining</span> <span class="pre">today'</span></code>. Those are not to be confused with quoted
+<a class="reference internal" href="#identifiers"><span class="std std-ref">Identifiers and keywords</span></a> that use double-quotes. Alternatively, a string can be defined by enclosing the arbitrary sequence
+of characters by two dollar characters, in which case single-quote can be used without escaping (<code class="docutils literal notranslate"><span class="pre">$$It's</span> <span class="pre">raining</span>
+<span class="pre">today$$</span></code>). That latter form is often used when defining <a class="reference internal" href="functions.html#udfs"><span class="std std-ref">user-defined functions</span></a> to avoid having to
+escape single-quote characters in function body (as they are more likely to occur than <code class="docutils literal notranslate"><span class="pre">$$</span></code>).</li>
+<li>Integer, float and boolean constant are defined as expected. Note however than float allows the special <code class="docutils literal notranslate"><span class="pre">NaN</span></code> and
+<code class="docutils literal notranslate"><span class="pre">Infinity</span></code> constants.</li>
+<li>CQL supports <a class="reference external" href="https://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a> constants.</li>
+<li>Blobs content are provided in hexadecimal and prefixed by <code class="docutils literal notranslate"><span class="pre">0x</span></code>.</li>
+<li>The special <code class="docutils literal notranslate"><span class="pre">NULL</span></code> constant denotes the absence of value.</li>
+</ul>
+<p>For how these constants are typed, see the <a class="reference internal" href="types.html#data-types"><span class="std std-ref">Data Types</span></a> section.</p>
+</div>
+<div class="section" id="terms">
+<h2>Terms<a class="headerlink" href="#terms" title="Permalink to this headline">¶</a></h2>
+<p>CQL has the notion of a <em>term</em>, which denotes the kind of values that CQL support. Terms are defined by:</p>
+<pre>
+<strong id="grammar-token-term">term                </strong> ::=  <a class="reference internal" href="#grammar-token-constant"><code class="xref docutils literal notranslate"><span class="pre">constant</span></code></a> | <a class="reference internal" href="#grammar-token-literal"><code class="xref docutils literal notranslate"><span class="pre">literal</span></code></a> | <a class="reference internal" href="#grammar-token-function-call"><code class="xref docutils literal notranslate"><span class="pre">function_call</span></code></a> | <a class="reference internal" href="#grammar-token-arithmetic-operation"><code class="xref docutils literal notranslate"><span class="pre">arithmetic_operation</span></code></a> | <a class="reference internal" href="#grammar-token-type-hint"><code class="xref docutils literal notranslate"><span class="pre">type_hint</span></code></a> | <a class="reference internal" href="#grammar-token-bind-marker"><code class="xref docutils literal notranslate"><span class="pre">bind_marker</span></code></a>
+<strong id="grammar-token-literal">literal             </strong> ::=  <a class="reference internal" href="types.html#grammar-token-collection-literal"><code class="xref docutils literal notranslate"><span class="pre">collection_literal</span></code></a> | <a class="reference internal" href="types.html#grammar-token-udt-literal"><code class="xref docutils literal notranslate"><span class="pre">udt_literal</span></code></a> | <a class="reference internal" href="types.html#grammar-token-tuple-literal"><code class="xref docutils literal notranslate"><span class="pre">tuple_literal</span></code></a>
+<strong id="grammar-token-function-call">function_call       </strong> ::=  <a class="reference internal" href="#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> '(' [ <a class="reference internal" href="#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> (',' <a class="reference internal" href="#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>)* ] ')'
+<strong id="grammar-token-arithmetic-operation">arithmetic_operation</strong> ::=  '-' <a class="reference internal" href="#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> | <a class="reference internal" href="#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> ('+' | '-' | '*' | '/' | '%') <a class="reference internal" href="#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>
+<strong id="grammar-token-type-hint">type_hint           </strong> ::=  '(' <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> `)` term
+<strong id="grammar-token-bind-marker">bind_marker         </strong> ::=  '?' | ':' <a class="reference internal" href="#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a>
+</pre>
+<p>A term is thus one of:</p>
+<ul class="simple">
+<li>A <a class="reference internal" href="#constants"><span class="std std-ref">constant</span></a>.</li>
+<li>A literal for either <a class="reference internal" href="types.html#collections"><span class="std std-ref">a collection</span></a>, <a class="reference internal" href="types.html#udts"><span class="std std-ref">a user-defined type</span></a> or <a class="reference internal" href="types.html#tuples"><span class="std std-ref">a tuple</span></a>
+(see the linked sections for details).</li>
+<li>A function call: see <a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">the section on functions</span></a> for details on which <a class="reference internal" href="functions.html#native-functions"><span class="std std-ref">native function</span></a> exists and how to define your own <a class="reference internal" href="functions.html#udfs"><span class="std std-ref">user-defined ones</span></a>.</li>
+<li>An arithmetic operation between terms. see <a class="reference internal" href="operators.html#arithmetic-operators"><span class="std std-ref">the section on arithmetic operations</span></a></li>
+<li>A <em>type hint</em>: see the <span class="xref std std-ref">related section</span> for details.</li>
+<li>A bind marker, which denotes a variable to be bound at execution time. See the section on <a class="reference internal" href="#prepared-statements"><span class="std std-ref">Prepared Statements</span></a>
+for details. A bind marker can be either anonymous (<code class="docutils literal notranslate"><span class="pre">?</span></code>) or named (<code class="docutils literal notranslate"><span class="pre">:some_name</span></code>). The latter form provides a more
+convenient way to refer to the variable for binding it and should generally be preferred.</li>
+</ul>
+</div>
+<div class="section" id="comments">
+<h2>Comments<a class="headerlink" href="#comments" title="Permalink to this headline">¶</a></h2>
+<p>A comment in CQL is a line beginning by either double dashes (<code class="docutils literal notranslate"><span class="pre">--</span></code>) or double slash (<code class="docutils literal notranslate"><span class="pre">//</span></code>).</p>
+<p>Multi-line comments are also supported through enclosure within <code class="docutils literal notranslate"><span class="pre">/*</span></code> and <code class="docutils literal notranslate"><span class="pre">*/</span></code> (but nesting is not supported).</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="c1">-- This is a comment</span>
+<span class="c1">// This is a comment too</span>
+<span class="cm">/* This is</span>
+<span class="cm">   a multi-line comment */</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="statements">
+<h2>Statements<a class="headerlink" href="#statements" title="Permalink to this headline">¶</a></h2>
+<p>CQL consists of statements that can be divided in the following categories:</p>
+<ul class="simple">
+<li><a class="reference internal" href="ddl.html#data-definition"><span class="std std-ref">Data Definition</span></a> statements, to define and change how the data is stored (keyspaces and tables).</li>
+<li><a class="reference internal" href="dml.html#data-manipulation"><span class="std std-ref">Data Manipulation</span></a> statements, for selecting, inserting and deleting data.</li>
+<li><a class="reference internal" href="indexes.html#secondary-indexes"><span class="std std-ref">Secondary Indexes</span></a> statements.</li>
+<li><a class="reference internal" href="mvs.html#materialized-views"><span class="std std-ref">Materialized Views</span></a> statements.</li>
+<li><a class="reference internal" href="security.html#cql-roles"><span class="std std-ref">Database Roles</span></a> statements.</li>
+<li><a class="reference internal" href="security.html#cql-permissions"><span class="std std-ref">Permissions</span></a> statements.</li>
+<li><a class="reference internal" href="functions.html#udfs"><span class="std std-ref">User-Defined Functions</span></a> statements.</li>
+<li><a class="reference internal" href="types.html#udts"><span class="std std-ref">User-Defined Types</span></a> statements.</li>
+<li><a class="reference internal" href="triggers.html#cql-triggers"><span class="std std-ref">Triggers</span></a> statements.</li>
+</ul>
+<p>All the statements are listed below and are described in the rest of this documentation (see links above):</p>
+<pre>
+<strong id="grammar-token-cql-statement">cql_statement               </strong> ::=  <a class="reference internal" href="#grammar-token-statement"><code class="xref docutils literal notranslate"><span class="pre">statement</span></code></a> [ ';' ]
+<strong id="grammar-token-statement">statement                   </strong> ::=  <a class="reference internal" href="#grammar-token-ddl-statement"><code class="xref docutils literal notranslate"><span class="pre">ddl_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-dml-statement"><code class="xref docutils literal notranslate"><span class="pre">dml_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-secondary-index-statement"><code class="xref docutils literal notranslate"><span class="pre">secondary_index_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-materialized-view-statement"><code class="xref docutils literal notranslate"><span class="pre">materialized_view_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-role-or-permission-statement"><code class="xref docutils literal notranslate"><span class="pre">role_or_permission_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-udf-statement"><code class="xref docutils literal notranslate"><span class="pre">udf_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-udt-statement"><code class="xref docutils literal notranslate"><span class="pre">udt_statement</span></code></a>
+                                  | <a class="reference internal" href="#grammar-token-trigger-statement"><code class="xref docutils literal notranslate"><span class="pre">trigger_statement</span></code></a>
+<strong id="grammar-token-ddl-statement">ddl_statement               </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-use-statement"><code class="xref docutils literal notranslate"><span class="pre">use_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-create-keyspace-statement"><code class="xref docutils literal notranslate"><span class="pre">create_keyspace_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-alter-keyspace-statement"><code class="xref docutils literal notranslate"><span class="pre">alter_keyspace_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-drop-keyspace-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_keyspace_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-create-table-statement"><code class="xref docutils literal notranslate"><span class="pre">create_table_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-alter-table-statement"><code class="xref docutils literal notranslate"><span class="pre">alter_table_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-drop-table-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_table_statement</span></code></a>
+                                  | <a class="reference internal" href="ddl.html#grammar-token-truncate-statement"><code class="xref docutils literal notranslate"><span class="pre">truncate_statement</span></code></a>
+<strong id="grammar-token-dml-statement">dml_statement               </strong> ::=  <a class="reference internal" href="dml.html#grammar-token-select-statement"><code class="xref docutils literal notranslate"><span class="pre">select_statement</span></code></a>
+                                  | <a class="reference internal" href="dml.html#grammar-token-insert-statement"><code class="xref docutils literal notranslate"><span class="pre">insert_statement</span></code></a>
+                                  | <a class="reference internal" href="dml.html#grammar-token-update-statement"><code class="xref docutils literal notranslate"><span class="pre">update_statement</span></code></a>
+                                  | <a class="reference internal" href="dml.html#grammar-token-delete-statement"><code class="xref docutils literal notranslate"><span class="pre">delete_statement</span></code></a>
+                                  | <a class="reference internal" href="dml.html#grammar-token-batch-statement"><code class="xref docutils literal notranslate"><span class="pre">batch_statement</span></code></a>
+<strong id="grammar-token-secondary-index-statement">secondary_index_statement   </strong> ::=  <a class="reference internal" href="indexes.html#grammar-token-create-index-statement"><code class="xref docutils literal notranslate"><span class="pre">create_index_statement</span></code></a>
+                                  | <a class="reference internal" href="indexes.html#grammar-token-drop-index-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_index_statement</span></code></a>
+<strong id="grammar-token-materialized-view-statement">materialized_view_statement </strong> ::=  <a class="reference internal" href="mvs.html#grammar-token-create-materialized-view-statement"><code class="xref docutils literal notranslate"><span class="pre">create_materialized_view_statement</span></code></a>
+                                  | <a class="reference internal" href="mvs.html#grammar-token-drop-materialized-view-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_materialized_view_statement</span></code></a>
+<strong id="grammar-token-role-or-permission-statement">role_or_permission_statement</strong> ::=  <a class="reference internal" href="security.html#grammar-token-create-role-statement"><code class="xref docutils literal notranslate"><span class="pre">create_role_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-alter-role-statement"><code class="xref docutils literal notranslate"><span class="pre">alter_role_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-drop-role-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_role_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-grant-role-statement"><code class="xref docutils literal notranslate"><span class="pre">grant_role_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-revoke-role-statement"><code class="xref docutils literal notranslate"><span class="pre">revoke_role_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-list-roles-statement"><code class="xref docutils literal notranslate"><span class="pre">list_roles_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-grant-permission-statement"><code class="xref docutils literal notranslate"><span class="pre">grant_permission_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-revoke-permission-statement"><code class="xref docutils literal notranslate"><span class="pre">revoke_permission_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-list-permissions-statement"><code class="xref docutils literal notranslate"><span class="pre">list_permissions_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-create-user-statement"><code class="xref docutils literal notranslate"><span class="pre">create_user_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-alter-user-statement"><code class="xref docutils literal notranslate"><span class="pre">alter_user_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-drop-user-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_user_statement</span></code></a>
+                                  | <a class="reference internal" href="security.html#grammar-token-list-users-statement"><code class="xref docutils literal notranslate"><span class="pre">list_users_statement</span></code></a>
+<strong id="grammar-token-udf-statement">udf_statement               </strong> ::=  <a class="reference internal" href="functions.html#grammar-token-create-function-statement"><code class="xref docutils literal notranslate"><span class="pre">create_function_statement</span></code></a>
+                                  | <a class="reference internal" href="functions.html#grammar-token-drop-function-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_function_statement</span></code></a>
+                                  | <a class="reference internal" href="functions.html#grammar-token-create-aggregate-statement"><code class="xref docutils literal notranslate"><span class="pre">create_aggregate_statement</span></code></a>
+                                  | <a class="reference internal" href="functions.html#grammar-token-drop-aggregate-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_aggregate_statement</span></code></a>
+<strong id="grammar-token-udt-statement">udt_statement               </strong> ::=  <a class="reference internal" href="types.html#grammar-token-create-type-statement"><code class="xref docutils literal notranslate"><span class="pre">create_type_statement</span></code></a>
+                                  | <a class="reference internal" href="types.html#grammar-token-alter-type-statement"><code class="xref docutils literal notranslate"><span class="pre">alter_type_statement</span></code></a>
+                                  | <a class="reference internal" href="types.html#grammar-token-drop-type-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_type_statement</span></code></a>
+<strong id="grammar-token-trigger-statement">trigger_statement           </strong> ::=  <a class="reference internal" href="triggers.html#grammar-token-create-trigger-statement"><code class="xref docutils literal notranslate"><span class="pre">create_trigger_statement</span></code></a>
+                                  | <a class="reference internal" href="triggers.html#grammar-token-drop-trigger-statement"><code class="xref docutils literal notranslate"><span class="pre">drop_trigger_statement</span></code></a>
+</pre>
+</div>
+<div class="section" id="prepared-statements">
+<span id="id3"></span><h2>Prepared Statements<a class="headerlink" href="#prepared-statements" title="Permalink to this headline">¶</a></h2>
+<p>CQL supports <em>prepared statements</em>. Prepared statements are an optimization that allows to parse a query only once but
+execute it multiple times with different concrete values.</p>
+<p>Any statement that uses at least one bind marker (see <a class="reference internal" href="#grammar-token-bind-marker"><code class="xref std std-token docutils literal notranslate"><span class="pre">bind_marker</span></code></a>) will need to be <em>prepared</em>. After which the statement
+can be <em>executed</em> by provided concrete values for each of its marker. The exact details of how a statement is prepared
+and then executed depends on the CQL driver used and you should refer to your driver documentation.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="types.html" class="btn btn-default pull-right " role="button" title="Data Types" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="The Cassandra Query Language (CQL)" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/dml.html b/src/doc/4.0-rc1/cql/dml.html
new file mode 100644
index 0000000..844159e
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/dml.html
@@ -0,0 +1,561 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Data Manipulation"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Secondary Indexes" href="indexes.html"/>
+      <link rel="prev" title="Data Definition" href="ddl.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Data Manipulation</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#select">SELECT</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#insert">INSERT</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#update">UPDATE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#delete">DELETE</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#batch">BATCH</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="data-manipulation">
+<span id="id1"></span><h1>Data Manipulation<a class="headerlink" href="#data-manipulation" title="Permalink to this headline">¶</a></h1>
+<p>This section describes the statements supported by CQL to insert, update, delete and query data.</p>
+<div class="section" id="select">
+<span id="select-statement"></span><h2>SELECT<a class="headerlink" href="#select" title="Permalink to this headline">¶</a></h2>
+<p>Querying data from data is done using a <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-select-statement">select_statement</strong> ::=  SELECT [ JSON | DISTINCT ] ( <a class="reference internal" href="#grammar-token-select-clause"><code class="xref docutils literal notranslate"><span class="pre">select_clause</span></code></a> | '*' )
+                      FROM <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+                      [ WHERE <a class="reference internal" href="#grammar-token-where-clause"><code class="xref docutils literal notranslate"><span class="pre">where_clause</span></code></a> ]
+                      [ GROUP BY <a class="reference internal" href="#grammar-token-group-by-clause"><code class="xref docutils literal notranslate"><span class="pre">group_by_clause</span></code></a> ]
+                      [ ORDER BY <a class="reference internal" href="#grammar-token-ordering-clause"><code class="xref docutils literal notranslate"><span class="pre">ordering_clause</span></code></a> ]
+                      [ PER PARTITION LIMIT (<a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref docutils literal notranslate"><span class="pre">integer</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-bind-marker"><code class="xref docutils literal notranslate"><span class="pre">bind_marker</span></code></a>) ]
+                      [ LIMIT (<a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref docutils literal notranslate"><span class="pre">integer</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-bind-marker"><code class="xref docutils literal notranslate"><span class="pre">bind_marker</span></code></a>) ]
+                      [ ALLOW FILTERING ]
+<strong id="grammar-token-select-clause">select_clause   </strong> ::=  <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal notranslate"><span class="pre">selector</span></code></a> [ AS <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> ] ( ',' <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal notranslate"><span class="pre">selector</span></code></a> [ AS <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> ] )
+<strong id="grammar-token-selector">selector        </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a>
+                      | <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>
+                      | CAST '(' <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal notranslate"><span class="pre">selector</span></code></a> AS <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ')'
+                      | <a class="reference internal" href="functions.html#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> '(' [ <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal notranslate"><span class="pre">selector</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-selector"><code class="xref docutils literal notranslate"><span class="pre">selector</span></code></a> )* ] ')'
+                      | COUNT '(' '*' ')'
+<strong id="grammar-token-where-clause">where_clause    </strong> ::=  <a class="reference internal" href="#grammar-token-relation"><code class="xref docutils literal notranslate"><span class="pre">relation</span></code></a> ( AND <a class="reference internal" href="#grammar-token-relation"><code class="xref docutils literal notranslate"><span class="pre">relation</span></code></a> )*
+<strong id="grammar-token-relation">relation        </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal notranslate"><span class="pre">operator</span></code></a> <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>
+                      '(' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )* ')' <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal notranslate"><span class="pre">operator</span></code></a> <a class="reference internal" href="types.html#grammar-token-tuple-literal"><code class="xref docutils literal notranslate"><span class="pre">tuple_literal</span></code></a>
+                      TOKEN '(' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )* ')' <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal notranslate"><span class="pre">operator</span></code></a> <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>
+<strong id="grammar-token-operator">operator        </strong> ::=  '=' | '&lt;' | '&gt;' | '&lt;=' | '&gt;=' | '!=' | IN | CONTAINS | CONTAINS KEY
+<strong id="grammar-token-group-by-clause">group_by_clause </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )*
+<strong id="grammar-token-ordering-clause">ordering_clause </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> [ ASC | DESC ] ( ',' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> [ ASC | DESC ] )*
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">name</span><span class="p">,</span> <span class="n">occupation</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">userid</span> <span class="k">IN</span> <span class="p">(</span><span class="mf">199</span><span class="p">,</span> <span class="mf">200</span><span class="p">,</span> <span class="mf">207</span><span class="p">);</span>
+<span class="k">SELECT</span> <span class="k">JSON</span> <span class="n">name</span><span class="p">,</span> <span class="n">occupation</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="mf">199</span><span class="p">;</span>
+<span class="k">SELECT</span> <span class="n">name</span> <span class="k">AS</span> <span class="n">user_name</span><span class="p">,</span> <span class="n">occupation</span> <span class="k">AS</span> <span class="n">user_occupation</span> <span class="k">FROM</span> <span class="k">users</span><span class="p">;</span>
+
+<span class="k">SELECT</span> <span class="nb">time</span><span class="p">,</span> <span class="n">value</span>
+<span class="k">FROM</span> <span class="n">events</span>
+<span class="k">WHERE</span> <span class="n">event_type</span> <span class="o">=</span> <span class="s1">&#39;myEvent&#39;</span>
+  <span class="k">AND</span> <span class="nb">time</span> <span class="o">&gt;</span> <span class="s1">&#39;2011-02-03&#39;</span>
+  <span class="k">AND</span> <span class="nb">time</span> <span class="o">&lt;=</span> <span class="s1">&#39;2012-01-01&#39;</span>
+
+<span class="k">SELECT</span> <span class="k">COUNT</span> <span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="k">AS</span> <span class="n">user_count</span> <span class="k">FROM</span> <span class="k">users</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statements reads one or more columns for one or more rows in a table. It returns a result-set of the rows
+matching the request, where each row contains the values for the selection corresponding to the query. Additionally,
+<a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">functions</span></a> including <a class="reference internal" href="functions.html#aggregate-functions"><span class="std std-ref">aggregation</span></a> ones can be applied to the result.</p>
+<p>A <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement contains at least a <a class="reference internal" href="#selection-clause"><span class="std std-ref">selection clause</span></a> and the name of the table on which
+the selection is on (note that CQL does <strong>not</strong> joins or sub-queries and thus a select statement only apply to a single
+table). In most case, a select will also have a <a class="reference internal" href="#where-clause"><span class="std std-ref">where clause</span></a> and it can optionally have additional
+clauses to <a class="reference internal" href="#ordering-clause"><span class="std std-ref">order</span></a> or <a class="reference internal" href="#limit-clause"><span class="std std-ref">limit</span></a> the results. Lastly, <a class="reference internal" href="#allow-filtering"><span class="std std-ref">queries that require
+filtering</span></a> can be allowed if the <code class="docutils literal notranslate"><span class="pre">ALLOW</span> <span class="pre">FILTERING</span></code> flag is provided.</p>
+<div class="section" id="selection-clause">
+<span id="id2"></span><h3>Selection clause<a class="headerlink" href="#selection-clause" title="Permalink to this headline">¶</a></h3>
+<p>The <a class="reference internal" href="#grammar-token-select-clause"><code class="xref std std-token docutils literal notranslate"><span class="pre">select_clause</span></code></a> determines which columns needs to be queried and returned in the result-set, as well as any
+transformation to apply to this result before returning. It consists of a comma-separated list of <em>selectors</em> or,
+alternatively, of the wildcard character (<code class="docutils literal notranslate"><span class="pre">*</span></code>) to select all the columns defined in the table.</p>
+<div class="section" id="selectors">
+<h4>Selectors<a class="headerlink" href="#selectors" title="Permalink to this headline">¶</a></h4>
+<p>A <a class="reference internal" href="#grammar-token-selector"><code class="xref std std-token docutils literal notranslate"><span class="pre">selector</span></code></a> can be one of:</p>
+<ul class="simple">
+<li>A column name of the table selected, to retrieve the values for that column.</li>
+<li>A term, which is usually used nested inside other selectors like functions (if a term is selected directly, then the
+corresponding column of the result-set will simply have the value of this term for every row returned).</li>
+<li>A casting, which allows to convert a nested selector to a (compatible) type.</li>
+<li>A function call, where the arguments are selector themselves. See the section on <a class="reference internal" href="functions.html#cql-functions"><span class="std std-ref">functions</span></a> for
+more details.</li>
+<li>The special call <code class="docutils literal notranslate"><span class="pre">COUNT(*)</span></code> to the <a class="reference internal" href="functions.html#count-function"><span class="std std-ref">COUNT function</span></a>, which counts all non-null results.</li>
+</ul>
+</div>
+<div class="section" id="aliases">
+<h4>Aliases<a class="headerlink" href="#aliases" title="Permalink to this headline">¶</a></h4>
+<p>Every <em>top-level</em> selector can also be aliased (using <cite>AS</cite>). If so, the name of the corresponding column in the result
+set will be that of the alias. For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="c1">// Without alias</span>
+<span class="k">SELECT</span> <span class="n">intAsBlob</span><span class="p">(</span><span class="mf">4</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
+
+<span class="c1">//  intAsBlob(4)</span>
+<span class="c1">// --------------</span>
+<span class="c1">//  0x00000004</span>
+
+<span class="c1">// With alias</span>
+<span class="k">SELECT</span> <span class="n">intAsBlob</span><span class="p">(</span><span class="mf">4</span><span class="p">)</span> <span class="k">AS</span> <span class="n">four</span> <span class="k">FROM</span> <span class="n">t</span><span class="p">;</span>
+
+<span class="c1">//  four</span>
+<span class="c1">// ------------</span>
+<span class="c1">//  0x00000004</span>
+</pre></div>
+</div>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Currently, aliases aren’t recognized anywhere else in the statement where they are used (not in the <code class="docutils literal notranslate"><span class="pre">WHERE</span></code>
+clause, not in the <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span></code> clause, …). You must use the orignal column name instead.</p>
+</div>
+</div>
+<div class="section" id="writetime-and-ttl-function">
+<h4><code class="docutils literal notranslate"><span class="pre">WRITETIME</span></code> and <code class="docutils literal notranslate"><span class="pre">TTL</span></code> function<a class="headerlink" href="#writetime-and-ttl-function" title="Permalink to this headline">¶</a></h4>
+<p>Selection supports two special functions (that aren’t allowed anywhere else): <code class="docutils literal notranslate"><span class="pre">WRITETIME</span></code> and <code class="docutils literal notranslate"><span class="pre">TTL</span></code>. Both function
+take only one argument and that argument <em>must</em> be a column name (so for instance <code class="docutils literal notranslate"><span class="pre">TTL(3)</span></code> is invalid).</p>
+<p>Those functions allow to retrieve meta-information that are stored internally for each column, namely:</p>
+<ul class="simple">
+<li>the timestamp of the value of the column for <code class="docutils literal notranslate"><span class="pre">WRITETIME</span></code>.</li>
+<li>the remaining time to live (in seconds) for the value of the column if it set to expire (and <code class="docutils literal notranslate"><span class="pre">null</span></code> otherwise).</li>
+</ul>
+</div>
+</div>
+<div class="section" id="the-where-clause">
+<span id="where-clause"></span><h3>The <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clause<a class="headerlink" href="#the-where-clause" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clause specifies which rows must be queried. It is composed of relations on the columns that are part of
+the <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> and/or have a <a class="reference external" href="#createIndexStmt">secondary index</a> defined on them.</p>
+<p>Not all relations are allowed in a query. For instance, non-equal relations (where <code class="docutils literal notranslate"><span class="pre">IN</span></code> is considered as an equal
+relation) on a partition key are not supported (but see the use of the <code class="docutils literal notranslate"><span class="pre">TOKEN</span></code> method below to do non-equal queries on
+the partition key). Moreover, for a given partition key, the clustering columns induce an ordering of rows and relations
+on them is restricted to the relations that allow to select a <strong>contiguous</strong> (for the ordering) set of rows. For
+instance, given:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">posts</span> <span class="p">(</span>
+    <span class="n">userid</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">blog_title</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">posted_at</span> <span class="nb">timestamp</span><span class="p">,</span>
+    <span class="n">entry_title</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">content</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">category</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">userid</span><span class="p">,</span> <span class="n">blog_title</span><span class="p">,</span> <span class="n">posted_at</span><span class="p">)</span>
+<span class="p">)</span>
+</pre></div>
+</div>
+<p>The following query is allowed:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">entry_title</span><span class="p">,</span> <span class="n">content</span> <span class="k">FROM</span> <span class="n">posts</span>
+ <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
+   <span class="k">AND</span> <span class="n">blog_title</span><span class="o">=</span><span class="s1">&#39;John&#39;&#39;s Blog&#39;</span>
+   <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&gt;=</span> <span class="s1">&#39;2012-01-01&#39;</span> <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&lt;</span> <span class="s1">&#39;2012-01-31&#39;</span>
+</pre></div>
+</div>
+<p>But the following one is not, as it does not select a contiguous set of rows (and we suppose no secondary indexes are
+set):</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="c1">// Needs a blog_title to be set to select ranges of posted_at</span>
+<span class="k">SELECT</span> <span class="n">entry_title</span><span class="p">,</span> <span class="n">content</span> <span class="k">FROM</span> <span class="n">posts</span>
+ <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
+   <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&gt;=</span> <span class="s1">&#39;2012-01-01&#39;</span> <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&lt;</span> <span class="s1">&#39;2012-01-31&#39;</span>
+</pre></div>
+</div>
+<p>When specifying relations, the <code class="docutils literal notranslate"><span class="pre">TOKEN</span></code> function can be used on the <code class="docutils literal notranslate"><span class="pre">PARTITION</span> <span class="pre">KEY</span></code> column to query. In that case,
+rows will be selected based on the token of their <code class="docutils literal notranslate"><span class="pre">PARTITION_KEY</span></code> rather than on the value. Note that the token of a
+key depends on the partitioner in use, and that in particular the RandomPartitioner won’t yield a meaningful order. Also
+note that ordering partitioners always order token values by bytes (so even if the partition key is of type int,
+<code class="docutils literal notranslate"><span class="pre">token(-1)</span> <span class="pre">&gt;</span> <span class="pre">token(0)</span></code> in particular). Example:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">posts</span>
+ <span class="k">WHERE</span> <span class="k">token</span><span class="p">(</span><span class="n">userid</span><span class="p">)</span> <span class="o">&gt;</span> <span class="k">token</span><span class="p">(</span><span class="s1">&#39;tom&#39;</span><span class="p">)</span> <span class="k">AND</span> <span class="k">token</span><span class="p">(</span><span class="n">userid</span><span class="p">)</span> <span class="o">&lt;</span> <span class="k">token</span><span class="p">(</span><span class="s1">&#39;bob&#39;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Moreover, the <code class="docutils literal notranslate"><span class="pre">IN</span></code> relation is only allowed on the last column of the partition key and on the last column of the full
+primary key.</p>
+<p>It is also possible to “group” <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">COLUMNS</span></code> together in a relation using the tuple notation. For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">posts</span>
+ <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
+   <span class="k">AND</span> <span class="p">(</span><span class="n">blog_title</span><span class="p">,</span> <span class="n">posted_at</span><span class="p">)</span> <span class="o">&gt;</span> <span class="p">(</span><span class="s1">&#39;John&#39;&#39;s Blog&#39;</span><span class="p">,</span> <span class="s1">&#39;2012-01-01&#39;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>will request all rows that sorts after the one having “John’s Blog” as <code class="docutils literal notranslate"><span class="pre">blog_tile</span></code> and ‘2012-01-01’ for <code class="docutils literal notranslate"><span class="pre">posted_at</span></code>
+in the clustering order. In particular, rows having a <code class="docutils literal notranslate"><span class="pre">post_at</span> <span class="pre">&lt;=</span> <span class="pre">'2012-01-01'</span></code> will be returned as long as their
+<code class="docutils literal notranslate"><span class="pre">blog_title</span> <span class="pre">&gt;</span> <span class="pre">'John''s</span> <span class="pre">Blog'</span></code>, which would not be the case for:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">posts</span>
+ <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
+   <span class="k">AND</span> <span class="n">blog_title</span> <span class="o">&gt;</span> <span class="s1">&#39;John&#39;&#39;s Blog&#39;</span>
+   <span class="k">AND</span> <span class="n">posted_at</span> <span class="o">&gt;</span> <span class="s1">&#39;2012-01-01&#39;</span>
+</pre></div>
+</div>
+<p>The tuple notation may also be used for <code class="docutils literal notranslate"><span class="pre">IN</span></code> clauses on clustering columns:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">posts</span>
+ <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;john doe&#39;</span>
+   <span class="k">AND</span> <span class="p">(</span><span class="n">blog_title</span><span class="p">,</span> <span class="n">posted_at</span><span class="p">)</span> <span class="k">IN</span> <span class="p">((</span><span class="s1">&#39;John&#39;&#39;s Blog&#39;</span><span class="p">,</span> <span class="s1">&#39;2012-01-01&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Extreme Chess&#39;</span><span class="p">,</span> <span class="s1">&#39;2014-06-01&#39;</span><span class="p">))</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">CONTAINS</span></code> operator may only be used on collection columns (lists, sets, and maps). In the case of maps,
+<code class="docutils literal notranslate"><span class="pre">CONTAINS</span></code> applies to the map values. The <code class="docutils literal notranslate"><span class="pre">CONTAINS</span> <span class="pre">KEY</span></code> operator may only be used on map columns and applies to the
+map keys.</p>
+</div>
+<div class="section" id="grouping-results">
+<span id="group-by-clause"></span><h3>Grouping results<a class="headerlink" href="#grouping-results" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> option allows to condense into a single row all selected rows that share the same values for a set
+of columns.</p>
+<p>Using the <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> option, it is only possible to group rows at the partition key level or at a clustering column
+level. By consequence, the <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> option only accept as arguments primary key column names in the primary key
+order. If a primary key column is restricted by an equality restriction it is not required to be present in the
+<code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> clause.</p>
+<p>Aggregate functions will produce a separate value for each group. If no <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code> clause is specified,
+aggregates functions will produce a single value for all the rows.</p>
+<p>If a column is selected without an aggregate function, in a statement with a <code class="docutils literal notranslate"><span class="pre">GROUP</span> <span class="pre">BY</span></code>, the first value encounter
+in each group will be returned.</p>
+</div>
+<div class="section" id="ordering-results">
+<span id="ordering-clause"></span><h3>Ordering results<a class="headerlink" href="#ordering-results" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span></code> clause allows to select the order of the returned results. It takes as argument a list of column names
+along with the order for the column (<code class="docutils literal notranslate"><span class="pre">ASC</span></code> for ascendant and <code class="docutils literal notranslate"><span class="pre">DESC</span></code> for descendant, omitting the order being
+equivalent to <code class="docutils literal notranslate"><span class="pre">ASC</span></code>). Currently the possible orderings are limited by the <a class="reference internal" href="ddl.html#clustering-order"><span class="std std-ref">clustering order</span></a>
+defined on the table:</p>
+<ul class="simple">
+<li>if the table has been defined without any specific <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code>, then then allowed orderings are the order
+induced by the clustering columns and the reverse of that one.</li>
+<li>otherwise, the orderings allowed are the order of the <code class="docutils literal notranslate"><span class="pre">CLUSTERING</span> <span class="pre">ORDER</span></code> option and the reversed one.</li>
+</ul>
+</div>
+<div class="section" id="limiting-results">
+<span id="limit-clause"></span><h3>Limiting results<a class="headerlink" href="#limiting-results" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">LIMIT</span></code> option to a <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement limits the number of rows returned by a query, while the <code class="docutils literal notranslate"><span class="pre">PER</span> <span class="pre">PARTITION</span>
+<span class="pre">LIMIT</span></code> option limits the number of rows returned for a given partition by the query. Note that both type of limit can
+used in the same statement.</p>
+</div>
+<div class="section" id="allowing-filtering">
+<span id="allow-filtering"></span><h3>Allowing filtering<a class="headerlink" href="#allowing-filtering" title="Permalink to this headline">¶</a></h3>
+<p>By default, CQL only allows select queries that don’t involve “filtering” server side, i.e. queries where we know that
+all (live) record read will be returned (maybe partly) in the result set. The reasoning is that those “non filtering”
+queries have predictable performance in the sense that they will execute in a time that is proportional to the amount of
+data <strong>returned</strong> by the query (which can be controlled through <code class="docutils literal notranslate"><span class="pre">LIMIT</span></code>).</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">ALLOW</span> <span class="pre">FILTERING</span></code> option allows to explicitly allow (some) queries that require filtering. Please note that a
+query using <code class="docutils literal notranslate"><span class="pre">ALLOW</span> <span class="pre">FILTERING</span></code> may thus have unpredictable performance (for the definition above), i.e. even a query
+that selects a handful of records <strong>may</strong> exhibit performance that depends on the total amount of data stored in the
+cluster.</p>
+<p>For instance, considering the following table holding user profiles with their year of birth (with a secondary index on
+it) and country of residence:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="k">users</span> <span class="p">(</span>
+    <span class="n">username</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">firstname</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">lastname</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">birth_year</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">country</span> <span class="nb">text</span>
+<span class="p">)</span>
+
+<span class="k">CREATE</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="k">users</span><span class="p">(</span><span class="n">birth_year</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>Then the following queries are valid:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="k">users</span><span class="p">;</span>
+<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">birth_year</span> <span class="o">=</span> <span class="mf">1981</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>because in both case, Cassandra guarantees that these queries performance will be proportional to the amount of data
+returned. In particular, if no users are born in 1981, then the second query performance will not depend of the number
+of user profile stored in the database (not directly at least: due to secondary index implementation consideration, this
+query may still depend on the number of node in the cluster, which indirectly depends on the amount of data stored.
+Nevertheless, the number of nodes will always be multiple number of magnitude lower than the number of user profile
+stored). Of course, both query may return very large result set in practice, but the amount of data returned can always
+be controlled by adding a <code class="docutils literal notranslate"><span class="pre">LIMIT</span></code>.</p>
+<p>However, the following query will be rejected:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">birth_year</span> <span class="o">=</span> <span class="mf">1981</span> <span class="k">AND</span> <span class="n">country</span> <span class="o">=</span> <span class="s1">&#39;FR&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>because Cassandra cannot guarantee that it won’t have to scan large amount of data even if the result to those query is
+small. Typically, it will scan all the index entries for users born in 1981 even if only a handful are actually from
+France. However, if you “know what you are doing”, you can force the execution of this query by using <code class="docutils literal notranslate"><span class="pre">ALLOW</span>
+<span class="pre">FILTERING</span></code> and so the following query is valid:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">birth_year</span> <span class="o">=</span> <span class="mf">1981</span> <span class="k">AND</span> <span class="n">country</span> <span class="o">=</span> <span class="s1">&#39;FR&#39;</span> <span class="k">ALLOW</span> <span class="k">FILTERING</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="insert">
+<span id="insert-statement"></span><h2>INSERT<a class="headerlink" href="#insert" title="Permalink to this headline">¶</a></h2>
+<p>Inserting data for a row is done using an <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-insert-statement">insert_statement</strong> ::=  INSERT INTO <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a> ( <a class="reference internal" href="#grammar-token-names-values"><code class="xref docutils literal notranslate"><span class="pre">names_values</span></code></a> | <a class="reference internal" href="#grammar-token-json-clause"><code class="xref docutils literal notranslate"><span class="pre">json_clause</span></code></a> )
+                      [ IF NOT EXISTS ]
+                      [ USING <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> ( AND <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> )* ]
+<strong id="grammar-token-names-values">names_values    </strong> ::=  <a class="reference internal" href="#grammar-token-names"><code class="xref docutils literal notranslate"><span class="pre">names</span></code></a> VALUES <a class="reference internal" href="types.html#grammar-token-tuple-literal"><code class="xref docutils literal notranslate"><span class="pre">tuple_literal</span></code></a>
+<strong id="grammar-token-json-clause">json_clause     </strong> ::=  JSON <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a> [ DEFAULT ( NULL | UNSET ) ]
+<strong id="grammar-token-names">names           </strong> ::=  '(' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( ',' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> )* ')'
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">NerdMovies</span> <span class="p">(</span><span class="n">movie</span><span class="p">,</span> <span class="n">director</span><span class="p">,</span> <span class="n">main_actor</span><span class="p">,</span> <span class="n">year</span><span class="p">)</span>
+                <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;Serenity&#39;</span><span class="p">,</span> <span class="s1">&#39;Joss Whedon&#39;</span><span class="p">,</span> <span class="s1">&#39;Nathan Fillion&#39;</span><span class="p">,</span> <span class="mf">2005</span><span class="p">)</span>
+      <span class="k">USING</span> <span class="k">TTL</span> <span class="mf">86400</span><span class="p">;</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">NerdMovies</span> <span class="k">JSON</span> <span class="s1">&#39;{&quot;movie&quot;: &quot;Serenity&quot;,</span>
+<span class="s1">                              &quot;director&quot;: &quot;Joss Whedon&quot;,</span>
+<span class="s1">                              &quot;year&quot;: 2005}&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statement writes one or more columns for a given row in a table. Note that since a row is identified by
+its <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code>, at least the columns composing it must be specified. The list of columns to insert to must be
+supplied when using the <code class="docutils literal notranslate"><span class="pre">VALUES</span></code> syntax. When using the <code class="docutils literal notranslate"><span class="pre">JSON</span></code> syntax, they are optional. See the
+section on <a class="reference internal" href="json.html#cql-json"><span class="std std-ref">JSON support</span></a> for more detail.</p>
+<p>Note that unlike in SQL, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> does not check the prior existence of the row by default: the row is created if none
+existed before, and updated otherwise. Furthermore, there is no mean to know which of creation or update happened.</p>
+<p>It is however possible to use the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> condition to only insert if the row does not exist prior to the
+insertion. But please note that using <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> will incur a non negligible performance cost (internally, Paxos
+will be used) so this should be used sparingly.</p>
+<p>All updates for an <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> are applied atomically and in isolation.</p>
+<p>Please refer to the <a class="reference internal" href="#update-parameters"><span class="std std-ref">UPDATE</span></a> section for informations on the <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref std std-token docutils literal notranslate"><span class="pre">update_parameter</span></code></a>.</p>
+<p>Also note that <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> does not support counters, while <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> does.</p>
+</div>
+<div class="section" id="update">
+<span id="update-statement"></span><h2>UPDATE<a class="headerlink" href="#update" title="Permalink to this headline">¶</a></h2>
+<p>Updating a row is done using an <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-update-statement">update_statement</strong> ::=  UPDATE <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+                      [ USING <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> ( AND <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> )* ]
+                      SET <a class="reference internal" href="#grammar-token-assignment"><code class="xref docutils literal notranslate"><span class="pre">assignment</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-assignment"><code class="xref docutils literal notranslate"><span class="pre">assignment</span></code></a> )*
+                      WHERE <a class="reference internal" href="#grammar-token-where-clause"><code class="xref docutils literal notranslate"><span class="pre">where_clause</span></code></a>
+                      [ IF ( EXISTS | <a class="reference internal" href="#grammar-token-condition"><code class="xref docutils literal notranslate"><span class="pre">condition</span></code></a> ( AND <a class="reference internal" href="#grammar-token-condition"><code class="xref docutils literal notranslate"><span class="pre">condition</span></code></a> )*) ]
+<strong id="grammar-token-update-parameter">update_parameter</strong> ::=  ( TIMESTAMP | TTL ) ( <a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref docutils literal notranslate"><span class="pre">integer</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-bind-marker"><code class="xref docutils literal notranslate"><span class="pre">bind_marker</span></code></a> )
+<strong id="grammar-token-assignment">assignment      </strong> ::=  <a class="reference internal" href="#grammar-token-simple-selection"><code class="xref docutils literal notranslate"><span class="pre">simple_selection</span></code></a> '=' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>
+                     | <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> '=' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ( '+' | '-' ) <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>
+                     | <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> '=' <a class="reference internal" href="types.html#grammar-token-list-literal"><code class="xref docutils literal notranslate"><span class="pre">list_literal</span></code></a> '+' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a>
+<strong id="grammar-token-simple-selection">simple_selection</strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a>
+                     | <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> '[' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> ']'
+                     | <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> '.' `field_name
+<strong id="grammar-token-condition">condition       </strong> ::=  <a class="reference internal" href="#grammar-token-simple-selection"><code class="xref docutils literal notranslate"><span class="pre">simple_selection</span></code></a> <a class="reference internal" href="#grammar-token-operator"><code class="xref docutils literal notranslate"><span class="pre">operator</span></code></a> <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">NerdMovies</span> <span class="k">USING</span> <span class="k">TTL</span> <span class="mf">400</span>
+   <span class="k">SET</span> <span class="n">director</span>   <span class="o">=</span> <span class="s1">&#39;Joss Whedon&#39;</span><span class="p">,</span>
+       <span class="n">main_actor</span> <span class="o">=</span> <span class="s1">&#39;Nathan Fillion&#39;</span><span class="p">,</span>
+       <span class="n">year</span>       <span class="o">=</span> <span class="mf">2005</span>
+ <span class="k">WHERE</span> <span class="n">movie</span> <span class="o">=</span> <span class="s1">&#39;Serenity&#39;</span><span class="p">;</span>
+
+<span class="k">UPDATE</span> <span class="n">UserActions</span>
+   <span class="k">SET</span> <span class="n">total</span> <span class="o">=</span> <span class="n">total</span> <span class="o">+</span> <span class="mf">2</span>
+   <span class="k">WHERE</span> <span class="k">user</span> <span class="o">=</span> <span class="m">B70DE1D0-9908-4AE3-BE34-5573E5B09F14</span>
+     <span class="k">AND</span> <span class="n">action</span> <span class="o">=</span> <span class="s1">&#39;click&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statement writes one or more columns for a given row in a table. The <a class="reference internal" href="#grammar-token-where-clause"><code class="xref std std-token docutils literal notranslate"><span class="pre">where_clause</span></code></a> is used to
+select the row to update and must include all columns composing the <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code>. Non primary key columns are then
+set using the <code class="docutils literal notranslate"><span class="pre">SET</span></code> keyword.</p>
+<p>Note that unlike in SQL, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> does not check the prior existence of the row by default (except through <code class="docutils literal notranslate"><span class="pre">IF</span></code>, see
+below): the row is created if none existed before, and updated otherwise. Furthermore, there are no means to know
+whether a creation or update occurred.</p>
+<p>It is however possible to use the conditions on some columns through <code class="docutils literal notranslate"><span class="pre">IF</span></code>, in which case the row will not be updated
+unless the conditions are met. But, please note that using <code class="docutils literal notranslate"><span class="pre">IF</span></code> conditions will incur a non-negligible performance
+cost (internally, Paxos will be used) so this should be used sparingly.</p>
+<p>In an <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statement, all updates within the same partition key are applied atomically and in isolation.</p>
+<p>Regarding the <a class="reference internal" href="#grammar-token-assignment"><code class="xref std std-token docutils literal notranslate"><span class="pre">assignment</span></code></a>:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">c</span> <span class="pre">=</span> <span class="pre">c</span> <span class="pre">+</span> <span class="pre">3</span></code> is used to increment/decrement counters. The column name after the ‘=’ sign <strong>must</strong> be the same than
+the one before the ‘=’ sign. Note that increment/decrement is only allowed on counters, and are the <em>only</em> update
+operations allowed on counters. See the section on <a class="reference internal" href="types.html#counters"><span class="std std-ref">counters</span></a> for details.</li>
+<li><code class="docutils literal notranslate"><span class="pre">id</span> <span class="pre">=</span> <span class="pre">id</span> <span class="pre">+</span> <span class="pre">&lt;some-collection&gt;</span></code> and <code class="docutils literal notranslate"><span class="pre">id[value1]</span> <span class="pre">=</span> <span class="pre">value2</span></code> are for collections, see the <a class="reference internal" href="types.html#collections"><span class="std std-ref">relevant section</span></a> for details.</li>
+<li><code class="docutils literal notranslate"><span class="pre">id.field</span> <span class="pre">=</span> <span class="pre">3</span></code> is for setting the value of a field on a non-frozen user-defined types. see the <a class="reference internal" href="types.html#udts"><span class="std std-ref">relevant section</span></a> for details.</li>
+</ul>
+<div class="section" id="update-parameters">
+<span id="id3"></span><h3>Update parameters<a class="headerlink" href="#update-parameters" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> (and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> and <code class="docutils literal notranslate"><span class="pre">BATCH</span></code> for the <code class="docutils literal notranslate"><span class="pre">TIMESTAMP</span></code>) statements support the following
+parameters:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">TIMESTAMP</span></code>: sets the timestamp for the operation. If not specified, the coordinator will use the current time (in
+microseconds) at the start of statement execution as the timestamp. This is usually a suitable default.</li>
+<li><code class="docutils literal notranslate"><span class="pre">TTL</span></code>: specifies an optional Time To Live (in seconds) for the inserted values. If set, the inserted values are
+automatically removed from the database after the specified time. Note that the TTL concerns the inserted values, not
+the columns themselves. This means that any subsequent update of the column will also reset the TTL (to whatever TTL
+is specified in that update). By default, values never expire. A TTL of 0 is equivalent to no TTL. If the table has a
+default_time_to_live, a TTL of 0 will remove the TTL for the inserted or updated values. A TTL of <code class="docutils literal notranslate"><span class="pre">null</span></code> is equivalent
+to inserting with a TTL of 0.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="delete">
+<span id="delete-statement"></span><h2>DELETE<a class="headerlink" href="#delete" title="Permalink to this headline">¶</a></h2>
+<p>Deleting rows or parts of rows uses the <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-delete-statement">delete_statement</strong> ::=  DELETE [ <a class="reference internal" href="#grammar-token-simple-selection"><code class="xref docutils literal notranslate"><span class="pre">simple_selection</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-simple-selection"><code class="xref docutils literal notranslate"><span class="pre">simple_selection</span></code></a> ) ]
+                      FROM <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+                      [ USING <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> ( AND <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> )* ]
+                      WHERE <a class="reference internal" href="#grammar-token-where-clause"><code class="xref docutils literal notranslate"><span class="pre">where_clause</span></code></a>
+                      [ IF ( EXISTS | <a class="reference internal" href="#grammar-token-condition"><code class="xref docutils literal notranslate"><span class="pre">condition</span></code></a> ( AND <a class="reference internal" href="#grammar-token-condition"><code class="xref docutils literal notranslate"><span class="pre">condition</span></code></a> )*) ]
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DELETE</span> <span class="k">FROM</span> <span class="n">NerdMovies</span> <span class="k">USING</span> <span class="nb">TIMESTAMP</span> <span class="mf">1240003134</span>
+ <span class="k">WHERE</span> <span class="n">movie</span> <span class="o">=</span> <span class="s1">&#39;Serenity&#39;</span><span class="p">;</span>
+
+<span class="k">DELETE</span> <span class="n">phone</span> <span class="k">FROM</span> <span class="k">Users</span>
+ <span class="k">WHERE</span> <span class="n">userid</span> <span class="k">IN</span> <span class="p">(</span><span class="m">C73DE1D3-AF08-40F3-B124-3FF3E5109F22</span><span class="p">,</span> <span class="m">B70DE1D0-9908-4AE3-BE34-5573E5B09F14</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statement deletes columns and rows. If column names are provided directly after the <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> keyword,
+only those columns are deleted from the row indicated by the <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clause. Otherwise, whole rows are removed.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clause specifies which rows are to be deleted. Multiple rows may be deleted with one statement by using an
+<code class="docutils literal notranslate"><span class="pre">IN</span></code> operator. A range of rows may be deleted using an inequality operator (such as <code class="docutils literal notranslate"><span class="pre">&gt;=</span></code>).</p>
+<p><code class="docutils literal notranslate"><span class="pre">DELETE</span></code> supports the <code class="docutils literal notranslate"><span class="pre">TIMESTAMP</span></code> option with the same semantics as in <a class="reference internal" href="#update-parameters"><span class="std std-ref">updates</span></a>.</p>
+<p>In a <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statement, all deletions within the same partition key are applied atomically and in isolation.</p>
+<p>A <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> operation can be conditional through the use of an <code class="docutils literal notranslate"><span class="pre">IF</span></code> clause, similar to <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> and <code class="docutils literal notranslate"><span class="pre">INSERT</span></code>
+statements. However, as with <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statements, this will incur a non-negligible performance cost
+(internally, Paxos will be used) and so should be used sparingly.</p>
+</div>
+<div class="section" id="batch">
+<span id="batch-statement"></span><h2>BATCH<a class="headerlink" href="#batch" title="Permalink to this headline">¶</a></h2>
+<p>Multiple <code class="docutils literal notranslate"><span class="pre">INSERT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> can be executed in a single statement by grouping them through a
+<code class="docutils literal notranslate"><span class="pre">BATCH</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-batch-statement">batch_statement       </strong> ::=  BEGIN [ UNLOGGED | COUNTER ] BATCH
+                            [ USING <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> ( AND <a class="reference internal" href="#grammar-token-update-parameter"><code class="xref docutils literal notranslate"><span class="pre">update_parameter</span></code></a> )* ]
+                            <a class="reference internal" href="#grammar-token-modification-statement"><code class="xref docutils literal notranslate"><span class="pre">modification_statement</span></code></a> ( ';' <a class="reference internal" href="#grammar-token-modification-statement"><code class="xref docutils literal notranslate"><span class="pre">modification_statement</span></code></a> )*
+                            APPLY BATCH
+<strong id="grammar-token-modification-statement">modification_statement</strong> ::=  <a class="reference internal" href="#grammar-token-insert-statement"><code class="xref docutils literal notranslate"><span class="pre">insert_statement</span></code></a> | <a class="reference internal" href="#grammar-token-update-statement"><code class="xref docutils literal notranslate"><span class="pre">update_statement</span></code></a> | <a class="reference internal" href="#grammar-token-delete-statement"><code class="xref docutils literal notranslate"><span class="pre">delete_statement</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">BEGIN</span> <span class="k">BATCH</span>
+   <span class="k">INSERT</span> <span class="k">INTO</span> <span class="k">users</span> <span class="p">(</span><span class="n">userid</span><span class="p">,</span> <span class="k">password</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;user2&#39;</span><span class="p">,</span> <span class="s1">&#39;ch@ngem3b&#39;</span><span class="p">,</span> <span class="s1">&#39;second user&#39;</span><span class="p">);</span>
+   <span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="k">password</span> <span class="o">=</span> <span class="s1">&#39;ps22dhds&#39;</span> <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;user3&#39;</span><span class="p">;</span>
+   <span class="k">INSERT</span> <span class="k">INTO</span> <span class="k">users</span> <span class="p">(</span><span class="n">userid</span><span class="p">,</span> <span class="k">password</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;user4&#39;</span><span class="p">,</span> <span class="s1">&#39;ch@ngem3c&#39;</span><span class="p">);</span>
+   <span class="k">DELETE</span> <span class="n">name</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">userid</span> <span class="o">=</span> <span class="s1">&#39;user1&#39;</span><span class="p">;</span>
+<span class="k">APPLY</span> <span class="k">BATCH</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">BATCH</span></code> statement group multiple modification statements (insertions/updates and deletions) into a single
+statement. It serves several purposes:</p>
+<ul class="simple">
+<li>It saves network round-trips between the client and the server (and sometimes between the server coordinator and the
+replicas) when batching multiple updates.</li>
+<li>All updates in a <code class="docutils literal notranslate"><span class="pre">BATCH</span></code> belonging to a given partition key are performed in isolation.</li>
+<li>By default, all operations in the batch are performed as <em>logged</em>, to ensure all mutations eventually complete (or
+none will). See the notes on <a class="reference internal" href="#unlogged-batches"><span class="std std-ref">UNLOGGED batches</span></a> for more details.</li>
+</ul>
+<p>Note that:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">BATCH</span></code> statements may only contain <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statements (not other batches for instance).</li>
+<li>Batches are <em>not</em> a full analogue for SQL transactions.</li>
+<li>If a timestamp is not specified for each operation, then all operations will be applied with the same timestamp
+(either one generated automatically, or the timestamp provided at the batch level). Due to Cassandra’s conflict
+resolution procedure in the case of <a class="reference external" href="http://wiki.apache.org/cassandra/FAQ#clocktie">timestamp ties</a>, operations may
+be applied in an order that is different from the order they are listed in the <code class="docutils literal notranslate"><span class="pre">BATCH</span></code> statement. To force a
+particular operation ordering, you must specify per-operation timestamps.</li>
+<li>A LOGGED batch to a single partition will be converted to an UNLOGGED batch as an optimization.</li>
+</ul>
+<div class="section" id="unlogged-batches">
+<span id="id4"></span><h3><code class="docutils literal notranslate"><span class="pre">UNLOGGED</span></code> batches<a class="headerlink" href="#unlogged-batches" title="Permalink to this headline">¶</a></h3>
+<p>By default, Cassandra uses a batch log to ensure all operations in a batch eventually complete or none will (note
+however that operations are only isolated within a single partition).</p>
+<p>There is a performance penalty for batch atomicity when a batch spans multiple partitions. If you do not want to incur
+this penalty, you can tell Cassandra to skip the batchlog with the <code class="docutils literal notranslate"><span class="pre">UNLOGGED</span></code> option. If the <code class="docutils literal notranslate"><span class="pre">UNLOGGED</span></code> option is
+used, a failed batch might leave the patch only partly applied.</p>
+</div>
+<div class="section" id="counter-batches">
+<h3><code class="docutils literal notranslate"><span class="pre">COUNTER</span></code> batches<a class="headerlink" href="#counter-batches" title="Permalink to this headline">¶</a></h3>
+<p>Use the <code class="docutils literal notranslate"><span class="pre">COUNTER</span></code> option for batched counter updates. Unlike other
+updates in Cassandra, counter updates are not idempotent.</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="indexes.html" class="btn btn-default pull-right " role="button" title="Secondary Indexes" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="ddl.html" class="btn btn-default" role="button" title="Data Definition" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/functions.html b/src/doc/4.0-rc1/cql/functions.html
new file mode 100644
index 0000000..3dd1d9d
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/functions.html
@@ -0,0 +1,706 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Functions"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Arithmetic Operators" href="operators.html"/>
+      <link rel="prev" title="Security" href="security.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Functions</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#scalar-functions">Scalar functions</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#aggregate-functions">Aggregate functions</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <span class="target" id="cql-functions"></span><div class="section" id="functions">
+<span id="native-functions"></span><span id="udfs"></span><h1>Functions<a class="headerlink" href="#functions" title="Permalink to this headline">¶</a></h1>
+<p>CQL supports 2 main categories of functions:</p>
+<ul class="simple">
+<li>the <a class="reference internal" href="#scalar-functions"><span class="std std-ref">scalar functions</span></a>, which simply take a number of values and produce an output with it.</li>
+<li>the <a class="reference internal" href="#aggregate-functions"><span class="std std-ref">aggregate functions</span></a>, which are used to aggregate multiple rows results from a
+<code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement.</li>
+</ul>
+<p>In both cases, CQL provides a number of native “hard-coded” functions as well as the ability to create new user-defined
+functions.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">By default, the use of user-defined functions is disabled by default for security concerns (even when
+enabled, the execution of user-defined functions is sandboxed and a “rogue” function should not be allowed to do
+evil, but no sandbox is perfect so using user-defined functions is opt-in). See the <code class="docutils literal notranslate"><span class="pre">enable_user_defined_functions</span></code>
+in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> to enable them.</p>
+</div>
+<p>A function is identifier by its name:</p>
+<pre>
+<strong id="grammar-token-function-name">function_name</strong> ::=  [ <a class="reference internal" href="ddl.html#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a> '.' ] <a class="reference internal" href="ddl.html#grammar-token-name"><code class="xref docutils literal notranslate"><span class="pre">name</span></code></a>
+</pre>
+<div class="section" id="scalar-functions">
+<span id="id1"></span><h2>Scalar functions<a class="headerlink" href="#scalar-functions" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="scalar-native-functions">
+<span id="id2"></span><h3>Native functions<a class="headerlink" href="#scalar-native-functions" title="Permalink to this headline">¶</a></h3>
+<div class="section" id="cast">
+<h4>Cast<a class="headerlink" href="#cast" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">cast</span></code> function can be used to converts one native datatype to another.</p>
+<p>The following table describes the conversions supported by the <code class="docutils literal notranslate"><span class="pre">cast</span></code> function. Cassandra will silently ignore any
+cast converting a datatype into its own datatype.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="13%" />
+<col width="87%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">From</th>
+<th class="head">To</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ascii</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">bigint</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">boolean</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">counter</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>,
+<code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">date</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">decimal</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">double</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">float</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">inet</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">int</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">smallint</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">time</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">date</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code>, <code class="docutils literal notranslate"><span class="pre">date</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">varint</span></code>,
+<code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">uuid</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">text</span></code>, <code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">varint</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code>, <code class="docutils literal notranslate"><span class="pre">smallint</span></code>, <code class="docutils literal notranslate"><span class="pre">int</span></code>, <code class="docutils literal notranslate"><span class="pre">bigint</span></code>, <code class="docutils literal notranslate"><span class="pre">float</span></code>, <code class="docutils literal notranslate"><span class="pre">double</span></code>, <code class="docutils literal notranslate"><span class="pre">decimal</span></code>, <code class="docutils literal notranslate"><span class="pre">text</span></code>,
+<code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+</tr>
+</tbody>
+</table>
+<p>The conversions rely strictly on Java’s semantics. For example, the double value 1 will be converted to the text value
+‘1.0’. For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">avg</span><span class="p">(</span><span class="k">cast</span><span class="p">(</span><span class="k">count</span> <span class="k">as</span> <span class="nb">double</span><span class="p">))</span> <span class="k">FROM</span> <span class="n">myTable</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="token">
+<h4>Token<a class="headerlink" href="#token" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">token</span></code> function allows to compute the token for a given partition key. The exact signature of the token function
+depends on the table concerned and of the partitioner used by the cluster.</p>
+<p>The type of the arguments of the <code class="docutils literal notranslate"><span class="pre">token</span></code> depend on the type of the partition key columns. The return type depend on
+the partitioner in use:</p>
+<ul class="simple">
+<li>For Murmur3Partitioner, the return type is <code class="docutils literal notranslate"><span class="pre">bigint</span></code>.</li>
+<li>For RandomPartitioner, the return type is <code class="docutils literal notranslate"><span class="pre">varint</span></code>.</li>
+<li>For ByteOrderedPartitioner, the return type is <code class="docutils literal notranslate"><span class="pre">blob</span></code>.</li>
+</ul>
+<p>For instance, in a cluster using the default Murmur3Partitioner, if a table is defined by:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="k">users</span> <span class="p">(</span>
+    <span class="n">userid</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">username</span> <span class="nb">text</span><span class="p">,</span>
+<span class="p">)</span>
+</pre></div>
+</div>
+<p>then the <code class="docutils literal notranslate"><span class="pre">token</span></code> function will take a single argument of type <code class="docutils literal notranslate"><span class="pre">text</span></code> (in that case, the partition key is <code class="docutils literal notranslate"><span class="pre">userid</span></code>
+(there is no clustering columns so the partition key is the same than the primary key)), and the return type will be
+<code class="docutils literal notranslate"><span class="pre">bigint</span></code>.</p>
+</div>
+<div class="section" id="uuid">
+<h4>Uuid<a class="headerlink" href="#uuid" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">uuid</span></code> function takes no parameters and generates a random type 4 uuid suitable for use in <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> or
+<code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statements.</p>
+</div>
+<div class="section" id="timeuuid-functions">
+<span id="id3"></span><h4>Timeuuid functions<a class="headerlink" href="#timeuuid-functions" title="Permalink to this headline">¶</a></h4>
+<div class="section" id="now">
+<h5><code class="docutils literal notranslate"><span class="pre">now</span></code><a class="headerlink" href="#now" title="Permalink to this headline">¶</a></h5>
+<p>The <code class="docutils literal notranslate"><span class="pre">now</span></code> function takes no arguments and generates, on the coordinator node, a new unique timeuuid at the
+time the function is invoked. Note that this method is useful for insertion but is largely non-sensical in
+<code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clauses. For instance, a query of the form:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">myTable</span> <span class="k">WHERE</span> <span class="n">t</span> <span class="o">=</span> <span class="n">now</span><span class="p">()</span>
+</pre></div>
+</div>
+<p>will never return any result by design, since the value returned by <code class="docutils literal notranslate"><span class="pre">now()</span></code> is guaranteed to be unique.</p>
+<p><code class="docutils literal notranslate"><span class="pre">currentTimeUUID</span></code> is an alias of <code class="docutils literal notranslate"><span class="pre">now</span></code>.</p>
+</div>
+<div class="section" id="mintimeuuid-and-maxtimeuuid">
+<h5><code class="docutils literal notranslate"><span class="pre">minTimeuuid</span></code> and <code class="docutils literal notranslate"><span class="pre">maxTimeuuid</span></code><a class="headerlink" href="#mintimeuuid-and-maxtimeuuid" title="Permalink to this headline">¶</a></h5>
+<p>The <code class="docutils literal notranslate"><span class="pre">minTimeuuid</span></code> (resp. <code class="docutils literal notranslate"><span class="pre">maxTimeuuid</span></code>) function takes a <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> value <code class="docutils literal notranslate"><span class="pre">t</span></code> (which can be <cite>either a timestamp
+or a date string &lt;timestamps&gt;</cite>) and return a <em>fake</em> <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> corresponding to the <em>smallest</em> (resp. <em>biggest</em>)
+possible <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> having for timestamp <code class="docutils literal notranslate"><span class="pre">t</span></code>. So for instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">myTable</span>
+ <span class="k">WHERE</span> <span class="n">t</span> <span class="o">&gt;</span> <span class="n">maxTimeuuid</span><span class="p">(</span><span class="s1">&#39;2013-01-01 00:05+0000&#39;</span><span class="p">)</span>
+   <span class="k">AND</span> <span class="n">t</span> <span class="o">&lt;</span> <span class="n">minTimeuuid</span><span class="p">(</span><span class="s1">&#39;2013-02-02 10:00+0000&#39;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>will select all rows where the <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> column <code class="docutils literal notranslate"><span class="pre">t</span></code> is strictly older than <code class="docutils literal notranslate"><span class="pre">'2013-01-01</span> <span class="pre">00:05+0000'</span></code> but strictly
+younger than <code class="docutils literal notranslate"><span class="pre">'2013-02-02</span> <span class="pre">10:00+0000'</span></code>. Please note that <code class="docutils literal notranslate"><span class="pre">t</span> <span class="pre">&gt;=</span> <span class="pre">maxTimeuuid('2013-01-01</span> <span class="pre">00:05+0000')</span></code> would still
+<em>not</em> select a <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> generated exactly at ‘2013-01-01 00:05+0000’ and is essentially equivalent to <code class="docutils literal notranslate"><span class="pre">t</span> <span class="pre">&gt;</span>
+<span class="pre">maxTimeuuid('2013-01-01</span> <span class="pre">00:05+0000')</span></code>.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">We called the values generated by <code class="docutils literal notranslate"><span class="pre">minTimeuuid</span></code> and <code class="docutils literal notranslate"><span class="pre">maxTimeuuid</span></code> <em>fake</em> UUID because they do no respect
+the Time-Based UUID generation process specified by the <a class="reference external" href="http://www.ietf.org/rfc/rfc4122.txt">RFC 4122</a>. In
+particular, the value returned by these 2 methods will not be unique. This means you should only use those methods
+for querying (as in the example above). Inserting the result of those methods is almost certainly <em>a bad idea</em>.</p>
+</div>
+</div>
+</div>
+<div class="section" id="datetime-functions">
+<h4>Datetime functions<a class="headerlink" href="#datetime-functions" title="Permalink to this headline">¶</a></h4>
+<div class="section" id="retrieving-the-current-date-time">
+<h5>Retrieving the current date/time<a class="headerlink" href="#retrieving-the-current-date-time" title="Permalink to this headline">¶</a></h5>
+<p>The following functions can be used to retrieve the date/time at the time where the function is invoked:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="58%" />
+<col width="42%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Function name</th>
+<th class="head">Output type</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">currentTimestamp</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">currentDate</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">date</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">currentTime</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">time</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">currentTimeUUID</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timeUUID</span></code></td>
+</tr>
+</tbody>
+</table>
+<p>For example the last 2 days of data can be retrieved using:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">myTable</span> <span class="k">WHERE</span> <span class="nb">date</span> <span class="o">&gt;=</span> <span class="n">currentDate</span><span class="p">()</span> <span class="o">-</span> <span class="mf">2</span><span class="n">d</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="time-conversion-functions">
+<h5>Time conversion functions<a class="headerlink" href="#time-conversion-functions" title="Permalink to this headline">¶</a></h5>
+<p>A number of functions are provided to “convert” a <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code>, a <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> or a <code class="docutils literal notranslate"><span class="pre">date</span></code> into another <code class="docutils literal notranslate"><span class="pre">native</span></code>
+type.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="20%" />
+<col width="15%" />
+<col width="65%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Function name</th>
+<th class="head">Input type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">toDate</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">date</span></code> type</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">toDate</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">date</span></code> type</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">toTimestamp</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> type</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">toTimestamp</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">date</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">date</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> type</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">toUnixTimestamp</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">timeuuid</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">bigInt</span></code> raw value</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">toUnixTimestamp</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">bigInt</span></code> raw value</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">toUnixTimestamp</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">date</span></code></td>
+<td>Converts the <code class="docutils literal notranslate"><span class="pre">date</span></code> argument into a <code class="docutils literal notranslate"><span class="pre">bigInt</span></code> raw value</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">dateOf</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td>Similar to <code class="docutils literal notranslate"><span class="pre">toTimestamp(timeuuid)</span></code> (DEPRECATED)</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">unixTimestampOf</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td>Similar to <code class="docutils literal notranslate"><span class="pre">toUnixTimestamp(timeuuid)</span></code> (DEPRECATED)</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="section" id="blob-conversion-functions">
+<h4>Blob conversion functions<a class="headerlink" href="#blob-conversion-functions" title="Permalink to this headline">¶</a></h4>
+<p>A number of functions are provided to “convert” the native types into binary data (<code class="docutils literal notranslate"><span class="pre">blob</span></code>). For every
+<code class="docutils literal notranslate"><span class="pre">&lt;native-type&gt;</span></code> <code class="docutils literal notranslate"><span class="pre">type</span></code> supported by CQL (a notable exceptions is <code class="docutils literal notranslate"><span class="pre">blob</span></code>, for obvious reasons), the function
+<code class="docutils literal notranslate"><span class="pre">typeAsBlob</span></code> takes a argument of type <code class="docutils literal notranslate"><span class="pre">type</span></code> and return it as a <code class="docutils literal notranslate"><span class="pre">blob</span></code>. Conversely, the function <code class="docutils literal notranslate"><span class="pre">blobAsType</span></code>
+takes a 64-bit <code class="docutils literal notranslate"><span class="pre">blob</span></code> argument and convert it to a <code class="docutils literal notranslate"><span class="pre">bigint</span></code> value. And so for instance, <code class="docutils literal notranslate"><span class="pre">bigintAsBlob(3)</span></code> is
+<code class="docutils literal notranslate"><span class="pre">0x0000000000000003</span></code> and <code class="docutils literal notranslate"><span class="pre">blobAsBigint(0x0000000000000003)</span></code> is <code class="docutils literal notranslate"><span class="pre">3</span></code>.</p>
+</div>
+</div>
+<div class="section" id="user-defined-functions">
+<span id="user-defined-scalar-functions"></span><h3>User-defined functions<a class="headerlink" href="#user-defined-functions" title="Permalink to this headline">¶</a></h3>
+<p>User-defined functions allow execution of user-provided code in Cassandra. By default, Cassandra supports defining
+functions in <em>Java</em> and <em>JavaScript</em>. Support for other JSR 223 compliant scripting languages (such as Python, Ruby, and
+Scala) can be added by adding a JAR to the classpath.</p>
+<p>UDFs are part of the Cassandra schema. As such, they are automatically propagated to all nodes in the cluster.</p>
+<p>UDFs can be <em>overloaded</em> - i.e. multiple UDFs with different argument types but the same function name. Example:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">sample</span> <span class="p">(</span> <span class="n">arg</span> <span class="nb">int</span> <span class="p">)</span> <span class="mf">...</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">sample</span> <span class="p">(</span> <span class="n">arg</span> <span class="nb">text</span> <span class="p">)</span> <span class="mf">...</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>User-defined functions are susceptible to all of the normal problems with the chosen programming language. Accordingly,
+implementations should be safe against null pointer exceptions, illegal arguments, or any other potential source of
+exceptions. An exception during function execution will result in the entire statement failing.</p>
+<p>It is valid to use <em>complex</em> types like collections, tuple types and user-defined types as argument and return types.
+Tuple types and user-defined types are handled by the conversion functions of the DataStax Java Driver. Please see the
+documentation of the Java Driver for details on handling tuple types and user-defined types.</p>
+<p>Arguments for functions can be literals or terms. Prepared statement placeholders can be used, too.</p>
+<p>Note that you can use the double-quoted string syntax to enclose the UDF source code. For example:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">some_function</span> <span class="p">(</span> <span class="n">arg</span> <span class="nb">int</span> <span class="p">)</span>
+    <span class="k">RETURNS</span> <span class="k">NULL</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="nb">int</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span> <span class="k">return</span> <span class="n">arg</span><span class="p">;</span> <span class="s">$$</span><span class="p">;</span>
+
+<span class="k">SELECT</span> <span class="n">some_function</span><span class="p">(</span><span class="n">column</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">atable</span> <span class="mf">...</span><span class="p">;</span>
+<span class="k">UPDATE</span> <span class="n">atable</span> <span class="k">SET</span> <span class="n">col</span> <span class="o">=</span> <span class="n">some_function</span><span class="p">(</span><span class="o">?</span><span class="p">)</span> <span class="mf">...</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">custom_type</span> <span class="p">(</span><span class="n">txt</span> <span class="nb">text</span><span class="p">,</span> <span class="n">i</span> <span class="nb">int</span><span class="p">);</span>
+<span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">fct_using_udt</span> <span class="p">(</span> <span class="n">udtarg</span> <span class="k">frozen</span> <span class="p">)</span>
+    <span class="k">RETURNS</span> <span class="k">NULL</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="nb">text</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span> <span class="k">return</span> <span class="n">udtarg</span><span class="p">.</span><span class="na">getString</span><span class="p">(</span><span class="s">&quot;txt&quot;</span><span class="p">);</span> <span class="s">$$</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>User-defined functions can be used in <code class="docutils literal notranslate"><span class="pre">SELECT</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> statements.</p>
+<p>The implicitly available <code class="docutils literal notranslate"><span class="pre">udfContext</span></code> field (or binding for script UDFs) provides the necessary functionality to
+create new UDT and tuple values:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">custom_type</span> <span class="p">(</span><span class="n">txt</span> <span class="nb">text</span><span class="p">,</span> <span class="n">i</span> <span class="nb">int</span><span class="p">);</span>
+<span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="n">fct</span><span class="err">\</span><span class="n">_using</span><span class="err">\</span><span class="n">_udt</span> <span class="p">(</span> <span class="n">somearg</span> <span class="nb">int</span> <span class="p">)</span>
+    <span class="k">RETURNS</span> <span class="k">NULL</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="n">custom_type</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span>
+        <span class="n">UDTValue</span> <span class="n">udt</span> <span class="o">=</span> <span class="n">udfContext</span><span class="p">.</span><span class="na">newReturnUDTValue</span><span class="p">();</span>
+        <span class="n">udt</span><span class="p">.</span><span class="na">setString</span><span class="p">(</span><span class="s">&quot;txt&quot;</span><span class="p">,</span> <span class="s">&quot;some string&quot;</span><span class="p">);</span>
+        <span class="n">udt</span><span class="p">.</span><span class="na">setInt</span><span class="p">(</span><span class="s">&quot;i&quot;</span><span class="p">,</span> <span class="mi">42</span><span class="p">);</span>
+        <span class="k">return</span> <span class="n">udt</span><span class="p">;</span>
+    <span class="s">$$</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The definition of the <code class="docutils literal notranslate"><span class="pre">UDFContext</span></code> interface can be found in the Apache Cassandra source code for
+<code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.cql3.functions.UDFContext</span></code>.</p>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kd">public</span> <span class="kd">interface</span> <span class="nc">UDFContext</span>
+<span class="p">{</span>
+    <span class="n">UDTValue</span> <span class="nf">newArgUDTValue</span><span class="p">(</span><span class="n">String</span> <span class="n">argName</span><span class="p">);</span>
+    <span class="n">UDTValue</span> <span class="nf">newArgUDTValue</span><span class="p">(</span><span class="kt">int</span> <span class="n">argNum</span><span class="p">);</span>
+    <span class="n">UDTValue</span> <span class="nf">newReturnUDTValue</span><span class="p">();</span>
+    <span class="n">UDTValue</span> <span class="nf">newUDTValue</span><span class="p">(</span><span class="n">String</span> <span class="n">udtName</span><span class="p">);</span>
+    <span class="n">TupleValue</span> <span class="nf">newArgTupleValue</span><span class="p">(</span><span class="n">String</span> <span class="n">argName</span><span class="p">);</span>
+    <span class="n">TupleValue</span> <span class="nf">newArgTupleValue</span><span class="p">(</span><span class="kt">int</span> <span class="n">argNum</span><span class="p">);</span>
+    <span class="n">TupleValue</span> <span class="nf">newReturnTupleValue</span><span class="p">();</span>
+    <span class="n">TupleValue</span> <span class="nf">newTupleValue</span><span class="p">(</span><span class="n">String</span> <span class="n">cqlDefinition</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Java UDFs already have some imports for common interfaces and classes defined. These imports are:</p>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">java.nio.ByteBuffer</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java.util.List</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java.util.Map</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java.util.Set</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.cassandra.cql3.functions.UDFContext</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">com.datastax.driver.core.TypeCodec</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">com.datastax.driver.core.TupleValue</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">com.datastax.driver.core.UDTValue</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Please note, that these convenience imports are not available for script UDFs.</p>
+<div class="section" id="create-function">
+<span id="create-function-statement"></span><h4>CREATE FUNCTION<a class="headerlink" href="#create-function" title="Permalink to this headline">¶</a></h4>
+<p>Creating a new user-defined function uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-function-statement">create_function_statement</strong> ::=  CREATE [ OR REPLACE ] FUNCTION [ IF NOT EXISTS]
+                                   <a class="reference internal" href="#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> '(' <a class="reference internal" href="#grammar-token-arguments-declaration"><code class="xref docutils literal notranslate"><span class="pre">arguments_declaration</span></code></a> ')'
+                                   [ CALLED | RETURNS NULL ] ON NULL INPUT
+                                   RETURNS <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a>
+                                   LANGUAGE <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a>
+                                   AS <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a>
+<strong id="grammar-token-arguments-declaration">arguments_declaration    </strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> )*
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">OR</span> <span class="k">REPLACE</span> <span class="k">FUNCTION</span> <span class="n">somefunction</span><span class="p">(</span><span class="n">somearg</span> <span class="nb">int</span><span class="p">,</span> <span class="n">anotherarg</span> <span class="nb">text</span><span class="p">,</span> <span class="n">complexarg</span> <span class="k">frozen</span><span class="o">&lt;</span><span class="n">someUDT</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">listarg</span> <span class="k">list</span><span class="p">)</span>
+    <span class="k">RETURNS</span> <span class="k">NULL</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="nb">text</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span>
+        <span class="c1">// some Java code</span>
+    <span class="s">$$</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">FUNCTION</span> <span class="k">IF</span> <span class="k">NOT</span> <span class="k">EXISTS</span> <span class="n">akeyspace</span><span class="mf">.</span><span class="n">fname</span><span class="p">(</span><span class="n">someArg</span> <span class="nb">int</span><span class="p">)</span>
+    <span class="k">CALLED</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="nb">text</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span>
+        <span class="c1">// some Java code</span>
+    <span class="s">$$</span><span class="p">;</span>
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> with the optional <code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> keywords either creates a function or replaces an existing one with
+the same signature. A <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> without <code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> fails if a function with the same signature already
+exists.</p>
+<p>If the optional <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> keywords are used, the function will
+only be created if another function with the same signature does not
+exist.</p>
+<p><code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> and <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> cannot be used together.</p>
+<p>Behavior on invocation with <code class="docutils literal notranslate"><span class="pre">null</span></code> values must be defined for each
+function. There are two options:</p>
+<ol class="arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">RETURNS</span> <span class="pre">NULL</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code> declares that the function will always
+return <code class="docutils literal notranslate"><span class="pre">null</span></code> if any of the input arguments is <code class="docutils literal notranslate"><span class="pre">null</span></code>.</li>
+<li><code class="docutils literal notranslate"><span class="pre">CALLED</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code> declares that the function will always be
+executed.</li>
+</ol>
+<div class="section" id="function-signature">
+<h5>Function Signature<a class="headerlink" href="#function-signature" title="Permalink to this headline">¶</a></h5>
+<p>Signatures are used to distinguish individual functions. The signature consists of:</p>
+<ol class="arabic simple">
+<li>The fully qualified function name - i.e <em>keyspace</em> plus <em>function-name</em></li>
+<li>The concatenated list of all argument types</li>
+</ol>
+<p>Note that keyspace names, function names and argument types are subject to the default naming conventions and
+case-sensitivity rules.</p>
+<p>Functions belong to a keyspace. If no keyspace is specified in <code class="docutils literal notranslate"><span class="pre">&lt;function-name&gt;</span></code>, the current keyspace is used (i.e.
+the keyspace specified using the <code class="docutils literal notranslate"><span class="pre">USE</span></code> statement). It is not possible to create a user-defined function in one of the
+system keyspaces.</p>
+</div>
+</div>
+<div class="section" id="drop-function">
+<span id="drop-function-statement"></span><h4>DROP FUNCTION<a class="headerlink" href="#drop-function" title="Permalink to this headline">¶</a></h4>
+<p>Dropping a function uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-function-statement">drop_function_statement</strong> ::=  DROP FUNCTION [ IF EXISTS ] <a class="reference internal" href="#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> [ '(' <a class="reference internal" href="#grammar-token-arguments-signature"><code class="xref docutils literal notranslate"><span class="pre">arguments_signature</span></code></a> ')' ]
+<strong id="grammar-token-arguments-signature">arguments_signature    </strong> ::=  <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> )*
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DROP</span> <span class="k">FUNCTION</span> <span class="n">myfunction</span><span class="p">;</span>
+<span class="k">DROP</span> <span class="k">FUNCTION</span> <span class="n">mykeyspace</span><span class="mf">.</span><span class="n">afunction</span><span class="p">;</span>
+<span class="k">DROP</span> <span class="k">FUNCTION</span> <span class="n">afunction</span> <span class="p">(</span> <span class="nb">int</span> <span class="p">);</span>
+<span class="k">DROP</span> <span class="k">FUNCTION</span> <span class="n">afunction</span> <span class="p">(</span> <span class="nb">text</span> <span class="p">);</span>
+</pre></div>
+</div>
+<p>You must specify the argument types (<a class="reference internal" href="#grammar-token-arguments-signature"><code class="xref std std-token docutils literal notranslate"><span class="pre">arguments_signature</span></code></a>) of the function to drop if there are multiple
+functions with the same name but a different signature (overloaded functions).</p>
+<p><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code> with the optional <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> keywords drops a function if it exists, but does not throw an error if
+it doesn’t</p>
+</div>
+</div>
+</div>
+<div class="section" id="aggregate-functions">
+<span id="id4"></span><h2>Aggregate functions<a class="headerlink" href="#aggregate-functions" title="Permalink to this headline">¶</a></h2>
+<p>Aggregate functions work on a set of rows. They receive values for each row and returns one value for the whole set.</p>
+<p>If <code class="docutils literal notranslate"><span class="pre">normal</span></code> columns, <code class="docutils literal notranslate"><span class="pre">scalar</span> <span class="pre">functions</span></code>, <code class="docutils literal notranslate"><span class="pre">UDT</span></code> fields, <code class="docutils literal notranslate"><span class="pre">writetime</span></code> or <code class="docutils literal notranslate"><span class="pre">ttl</span></code> are selected together with
+aggregate functions, the values returned for them will be the ones of the first row matching the query.</p>
+<div class="section" id="native-aggregates">
+<h3>Native aggregates<a class="headerlink" href="#native-aggregates" title="Permalink to this headline">¶</a></h3>
+<div class="section" id="count">
+<span id="count-function"></span><h4>Count<a class="headerlink" href="#count" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">count</span></code> function can be used to count the rows returned by a query. Example:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="k">COUNT</span> <span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
+<span class="k">SELECT</span> <span class="k">COUNT</span> <span class="p">(</span><span class="mf">1</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>It also can be used to count the non null value of a given column:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="k">COUNT</span> <span class="p">(</span><span class="n">scores</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="max-and-min">
+<h4>Max and Min<a class="headerlink" href="#max-and-min" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">max</span></code> and <code class="docutils literal notranslate"><span class="pre">min</span></code> functions can be used to compute the maximum and the minimum value returned by a query for a
+given column. For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">MIN</span> <span class="p">(</span><span class="n">players</span><span class="p">),</span> <span class="n">MAX</span> <span class="p">(</span><span class="n">players</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span> <span class="k">WHERE</span> <span class="n">game</span> <span class="o">=</span> <span class="s1">&#39;quake&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="sum">
+<h4>Sum<a class="headerlink" href="#sum" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">sum</span></code> function can be used to sum up all the values returned by a query for a given column. For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">SUM</span> <span class="p">(</span><span class="n">players</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="avg">
+<h4>Avg<a class="headerlink" href="#avg" title="Permalink to this headline">¶</a></h4>
+<p>The <code class="docutils literal notranslate"><span class="pre">avg</span></code> function can be used to compute the average of all the values returned by a query for a given column. For
+instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="n">AVG</span> <span class="p">(</span><span class="n">players</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">plays</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="user-defined-aggregates">
+<span id="user-defined-aggregates-functions"></span><h3>User-Defined Aggregates<a class="headerlink" href="#user-defined-aggregates" title="Permalink to this headline">¶</a></h3>
+<p>User-defined aggregates allow the creation of custom aggregate functions. Common examples of aggregate functions are
+<em>count</em>, <em>min</em>, and <em>max</em>.</p>
+<p>Each aggregate requires an <em>initial state</em> (<code class="docutils literal notranslate"><span class="pre">INITCOND</span></code>, which defaults to <code class="docutils literal notranslate"><span class="pre">null</span></code>) of type <code class="docutils literal notranslate"><span class="pre">STYPE</span></code>. The first
+argument of the state function must have type <code class="docutils literal notranslate"><span class="pre">STYPE</span></code>. The remaining arguments of the state function must match the
+types of the user-defined aggregate arguments. The state function is called once for each row, and the value returned by
+the state function becomes the new state. After all rows are processed, the optional <code class="docutils literal notranslate"><span class="pre">FINALFUNC</span></code> is executed with last
+state value as its argument.</p>
+<p><code class="docutils literal notranslate"><span class="pre">STYPE</span></code> is mandatory in order to be able to distinguish possibly overloaded versions of the state and/or final
+function (since the overload can appear after creation of the aggregate).</p>
+<p>User-defined aggregates can be used in <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement.</p>
+<p>A complete working example for user-defined aggregates (assuming that a keyspace has been selected using the <code class="docutils literal notranslate"><span class="pre">USE</span></code>
+statement):</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">OR</span> <span class="k">REPLACE</span> <span class="k">FUNCTION</span> <span class="n">averageState</span><span class="p">(</span><span class="n">state</span> <span class="k">tuple</span><span class="o">&lt;</span><span class="nb">int</span><span class="p">,</span><span class="nb">bigint</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">val</span> <span class="nb">int</span><span class="p">)</span>
+    <span class="k">CALLED</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="k">tuple</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">val</span> <span class="o">!=</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">state</span><span class="p">.</span><span class="na">setInt</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">state</span><span class="p">.</span><span class="na">getInt</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
+            <span class="n">state</span><span class="p">.</span><span class="na">setLong</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">state</span><span class="p">.</span><span class="na">getLong</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">val</span><span class="p">.</span><span class="na">intValue</span><span class="p">());</span>
+        <span class="p">}</span>
+        <span class="k">return</span> <span class="n">state</span><span class="p">;</span>
+    <span class="s">$$</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">OR</span> <span class="k">REPLACE</span> <span class="k">FUNCTION</span> <span class="n">averageFinal</span> <span class="p">(</span><span class="n">state</span> <span class="k">tuple</span><span class="o">&lt;</span><span class="nb">int</span><span class="p">,</span><span class="nb">bigint</span><span class="o">&gt;</span><span class="p">)</span>
+    <span class="k">CALLED</span> <span class="k">ON</span> <span class="k">NULL</span> <span class="k">INPUT</span>
+    <span class="k">RETURNS</span> <span class="nb">double</span>
+    <span class="k">LANGUAGE</span> <span class="n">java</span>
+    <span class="k">AS</span> <span class="s">$$</span>
+        <span class="kt">double</span> <span class="n">r</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="p">.</span><span class="na">getInt</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
+        <span class="n">r</span> <span class="o">=</span> <span class="n">state</span><span class="p">.</span><span class="na">getLong</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+        <span class="n">r</span> <span class="o">/=</span> <span class="n">state</span><span class="p">.</span><span class="na">getInt</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+        <span class="k">return</span> <span class="n">Double</span><span class="p">.</span><span class="na">valueOf</span><span class="p">(</span><span class="n">r</span><span class="p">);</span>
+    <span class="s">$$</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">OR</span> <span class="k">REPLACE</span> <span class="k">AGGREGATE</span> <span class="n">average</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span>
+    <span class="k">SFUNC</span> <span class="n">averageState</span>
+    <span class="k">STYPE</span> <span class="k">tuple</span>
+    <span class="k">FINALFUNC</span> <span class="n">averageFinal</span>
+    <span class="k">INITCOND</span> <span class="p">(</span><span class="mf">0</span><span class="p">,</span> <span class="mf">0</span><span class="p">);</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">atable</span> <span class="p">(</span>
+    <span class="n">pk</span> <span class="nb">int</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">val</span> <span class="nb">int</span>
+<span class="p">);</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">atable</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">1</span><span class="p">,</span><span class="mf">1</span><span class="p">);</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">atable</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">2</span><span class="p">,</span><span class="mf">2</span><span class="p">);</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">atable</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="mf">3</span><span class="p">);</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">atable</span> <span class="p">(</span><span class="n">pk</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="mf">4</span><span class="p">,</span><span class="mf">4</span><span class="p">);</span>
+
+<span class="k">SELECT</span> <span class="n">average</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">atable</span><span class="p">;</span>
+</pre></div>
+</div>
+<div class="section" id="create-aggregate">
+<span id="create-aggregate-statement"></span><h4>CREATE AGGREGATE<a class="headerlink" href="#create-aggregate" title="Permalink to this headline">¶</a></h4>
+<p>Creating (or replacing) a user-defined aggregate function uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-aggregate-statement">create_aggregate_statement</strong> ::=  CREATE [ OR REPLACE ] AGGREGATE [ IF NOT EXISTS ]
+                                    <a class="reference internal" href="#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> '(' <a class="reference internal" href="#grammar-token-arguments-signature"><code class="xref docutils literal notranslate"><span class="pre">arguments_signature</span></code></a> ')'
+                                    SFUNC <a class="reference internal" href="#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a>
+                                    STYPE <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a>
+                                    [ FINALFUNC <a class="reference internal" href="#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> ]
+                                    [ INITCOND <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> ]
+</pre>
+<p>See above for a complete example.</p>
+<p><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> with the optional <code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> keywords either creates an aggregate or replaces an existing one
+with the same signature. A <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> without <code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> fails if an aggregate with the same signature
+already exists.</p>
+<p><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> with the optional <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> keywords either creates an aggregate if it does not already
+exist.</p>
+<p><code class="docutils literal notranslate"><span class="pre">OR</span> <span class="pre">REPLACE</span></code> and <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> cannot be used together.</p>
+<p><code class="docutils literal notranslate"><span class="pre">STYPE</span></code> defines the type of the state value and must be specified.</p>
+<p>The optional <code class="docutils literal notranslate"><span class="pre">INITCOND</span></code> defines the initial state value for the aggregate. It defaults to <code class="docutils literal notranslate"><span class="pre">null</span></code>. A non-<code class="docutils literal notranslate"><span class="pre">null</span></code>
+<code class="docutils literal notranslate"><span class="pre">INITCOND</span></code> must be specified for state functions that are declared with <code class="docutils literal notranslate"><span class="pre">RETURNS</span> <span class="pre">NULL</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code>.</p>
+<p><code class="docutils literal notranslate"><span class="pre">SFUNC</span></code> references an existing function to be used as the state modifying function. The type of first argument of the
+state function must match <code class="docutils literal notranslate"><span class="pre">STYPE</span></code>. The remaining argument types of the state function must match the argument types of
+the aggregate function. State is not updated for state functions declared with <code class="docutils literal notranslate"><span class="pre">RETURNS</span> <span class="pre">NULL</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code> and called
+with <code class="docutils literal notranslate"><span class="pre">null</span></code>.</p>
+<p>The optional <code class="docutils literal notranslate"><span class="pre">FINALFUNC</span></code> is called just before the aggregate result is returned. It must take only one argument with
+type <code class="docutils literal notranslate"><span class="pre">STYPE</span></code>. The return type of the <code class="docutils literal notranslate"><span class="pre">FINALFUNC</span></code> may be a different type. A final function declared with <code class="docutils literal notranslate"><span class="pre">RETURNS</span>
+<span class="pre">NULL</span> <span class="pre">ON</span> <span class="pre">NULL</span> <span class="pre">INPUT</span></code> means that the aggregate’s return value will be <code class="docutils literal notranslate"><span class="pre">null</span></code>, if the last state is <code class="docutils literal notranslate"><span class="pre">null</span></code>.</p>
+<p>If no <code class="docutils literal notranslate"><span class="pre">FINALFUNC</span></code> is defined, the overall return type of the aggregate function is <code class="docutils literal notranslate"><span class="pre">STYPE</span></code>. If a <code class="docutils literal notranslate"><span class="pre">FINALFUNC</span></code> is
+defined, it is the return type of that function.</p>
+</div>
+<div class="section" id="drop-aggregate">
+<span id="drop-aggregate-statement"></span><h4>DROP AGGREGATE<a class="headerlink" href="#drop-aggregate" title="Permalink to this headline">¶</a></h4>
+<p>Dropping an user-defined aggregate function uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-aggregate-statement">drop_aggregate_statement</strong> ::=  DROP AGGREGATE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> [ '(' <a class="reference internal" href="#grammar-token-arguments-signature"><code class="xref docutils literal notranslate"><span class="pre">arguments_signature</span></code></a> ')' ]
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DROP</span> <span class="k">AGGREGATE</span> <span class="n">myAggregate</span><span class="p">;</span>
+<span class="k">DROP</span> <span class="k">AGGREGATE</span> <span class="n">myKeyspace</span><span class="mf">.</span><span class="n">anAggregate</span><span class="p">;</span>
+<span class="k">DROP</span> <span class="k">AGGREGATE</span> <span class="n">someAggregate</span> <span class="p">(</span> <span class="nb">int</span> <span class="p">);</span>
+<span class="k">DROP</span> <span class="k">AGGREGATE</span> <span class="n">someAggregate</span> <span class="p">(</span> <span class="nb">text</span> <span class="p">);</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> statement removes an aggregate created using <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code>. You must specify the argument
+types of the aggregate to drop if there are multiple aggregates with the same name but a different signature (overloaded
+aggregates).</p>
+<p><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> with the optional <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> keywords drops an aggregate if it exists, and does nothing if a
+function with the signature does not exist.</p>
+</div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="operators.html" class="btn btn-default pull-right " role="button" title="Arithmetic Operators" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="security.html" class="btn btn-default" role="button" title="Security" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/index.html b/src/doc/4.0-rc1/cql/index.html
new file mode 100644
index 0000000..7f81877
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/index.html
@@ -0,0 +1,249 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "The Cassandra Query Language (CQL)"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="next" title="Definitions" href="definitions.html"/>
+      <link rel="prev" title="Guarantees" href="../architecture/guarantees.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">The Cassandra Query Language (CQL)</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="the-cassandra-query-language-cql">
+<span id="cql"></span><h1>The Cassandra Query Language (CQL)<a class="headerlink" href="#the-cassandra-query-language-cql" title="Permalink to this headline">¶</a></h1>
+<p>This document describes the Cassandra Query Language (CQL) <a class="footnote-reference" href="#id2" id="id1">[1]</a>. Note that this document describes the last version of
+the languages. However, the <a class="reference external" href="#changes">changes</a> section provides the diff between the different versions of CQL.</p>
+<p>CQL offers a model close to SQL in the sense that data is put in <em>tables</em> containing <em>rows</em> of <em>columns</em>. For
+that reason, when used in this document, these terms (tables, rows and columns) have the same definition than they have
+in SQL.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="definitions.html">Definitions</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#conventions">Conventions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#identifiers">Identifiers and keywords</a></li>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#constants">Constants</a></li>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#terms">Terms</a></li>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#comments">Comments</a></li>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#statements">Statements</a></li>
+<li class="toctree-l2"><a class="reference internal" href="definitions.html#prepared-statements">Prepared Statements</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="types.html">Data Types</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="types.html#native-types">Native Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#working-with-timestamps">Working with timestamps</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#working-with-dates">Working with dates</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#working-with-times">Working with times</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#working-with-durations">Working with durations</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#collections">Collections</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#tuples">Tuples</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#user-defined-types">User-Defined Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#frozen-types">Frozen Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html#custom-types">Custom Types</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="ddl.html">Data Definition</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#common-definitions">Common definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#create-keyspace">CREATE KEYSPACE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#use">USE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#alter-keyspace">ALTER KEYSPACE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#drop-keyspace">DROP KEYSPACE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#create-table">CREATE TABLE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#alter-table">ALTER TABLE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#drop-table">DROP TABLE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#truncate">TRUNCATE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html#describe">DESCRIBE</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="dml.html">Data Manipulation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="dml.html#select">SELECT</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html#insert">INSERT</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html#update">UPDATE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html#delete">DELETE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html#batch">BATCH</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="indexes.html">Secondary Indexes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html#create-index">CREATE INDEX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html#drop-index">DROP INDEX</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="mvs.html">Materialized Views</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html#create-materialized-view">CREATE MATERIALIZED VIEW</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html#alter-materialized-view">ALTER MATERIALIZED VIEW</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html#drop-materialized-view">DROP MATERIALIZED VIEW</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="security.html#database-roles">Database Roles</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#users">Users</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#data-control">Data Control</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="functions.html">Functions</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="functions.html#scalar-functions">Scalar functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html#aggregate-functions">Aggregate functions</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="operators.html">Arithmetic Operators</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="operators.html#number-arithmetic">Number Arithmetic</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html#datetime-arithmetic">Datetime Arithmetic</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="json.html">JSON Support</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="json.html#select-json">SELECT JSON</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html#insert-json">INSERT JSON</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html#json-encoding-of-cassandra-data-types">JSON Encoding of Cassandra Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html#the-fromjson-function">The fromJson() Function</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html#the-tojson-function">The toJson() Function</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="triggers.html">Triggers</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html#create-trigger">CREATE TRIGGER</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html#drop-trigger">DROP TRIGGER</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="appendices.html">Appendices</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html#appendix-a-cql-keywords">Appendix A: CQL Keywords</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html#appendix-b-cql-reserved-types">Appendix B: CQL Reserved Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html#appendix-c-dropping-compact-storage">Appendix C: Dropping Compact Storage</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="changes.html">Changes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id1">3.4.5</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id2">3.4.4</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id3">3.4.3</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id6">3.4.2</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id7">3.4.1</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id8">3.4.0</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id9">3.3.1</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id10">3.3.0</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id11">3.2.0</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id12">3.1.7</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id13">3.1.6</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id14">3.1.5</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id15">3.1.4</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id16">3.1.3</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id17">3.1.2</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id18">3.1.1</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id19">3.1.0</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id20">3.0.5</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id21">3.0.4</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id22">3.0.3</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id23">3.0.2</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#id24">3.0.1</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html#versioning">Versioning</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<table class="docutils footnote" frame="void" id="id2" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td>Technically, this document CQL version 3, which is not backward compatible with CQL version 1 and 2 (which have
+been deprecated and remove) and differs from it in numerous ways.</td></tr>
+</tbody>
+</table>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="definitions.html" class="btn btn-default pull-right " role="button" title="Definitions" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../architecture/guarantees.html" class="btn btn-default" role="button" title="Guarantees" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/indexes.html b/src/doc/4.0-rc1/cql/indexes.html
new file mode 100644
index 0000000..48b4078
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/indexes.html
@@ -0,0 +1,171 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Secondary Indexes"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Materialized Views" href="mvs.html"/>
+      <link rel="prev" title="Data Manipulation" href="dml.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Secondary Indexes</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#create-index">CREATE INDEX</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#drop-index">DROP INDEX</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="secondary-indexes">
+<span id="id1"></span><h1>Secondary Indexes<a class="headerlink" href="#secondary-indexes" title="Permalink to this headline">¶</a></h1>
+<p>CQL supports creating secondary indexes on tables, allowing queries on the table to use those indexes. A secondary index
+is identified by a name defined by:</p>
+<pre>
+<strong id="grammar-token-index-name">index_name</strong> ::=  re('[a-zA-Z_0-9]+')
+</pre>
+<div class="section" id="create-index">
+<span id="create-index-statement"></span><h2>CREATE INDEX<a class="headerlink" href="#create-index" title="Permalink to this headline">¶</a></h2>
+<p>Creating a secondary index on a table uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-index-statement">create_index_statement</strong> ::=  CREATE [ CUSTOM ] INDEX [ IF NOT EXISTS ] [ <a class="reference internal" href="#grammar-token-index-name"><code class="xref docutils literal notranslate"><span class="pre">index_name</span></code></a> ]
+                                ON <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a> '(' <a class="reference internal" href="#grammar-token-index-identifier"><code class="xref docutils literal notranslate"><span class="pre">index_identifier</span></code></a> ')'
+                                [ USING <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a> [ WITH OPTIONS = <a class="reference internal" href="types.html#grammar-token-map-literal"><code class="xref docutils literal notranslate"><span class="pre">map_literal</span></code></a> ] ]
+<strong id="grammar-token-index-identifier">index_identifier      </strong> ::=  <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a>
+                           | ( KEYS | VALUES | ENTRIES | FULL ) '(' <a class="reference internal" href="ddl.html#grammar-token-column-name"><code class="xref docutils literal notranslate"><span class="pre">column_name</span></code></a> ')'
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">INDEX</span> <span class="n">userIndex</span> <span class="k">ON</span> <span class="n">NerdMovies</span> <span class="p">(</span><span class="k">user</span><span class="p">);</span>
+<span class="k">CREATE</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="n">Mutants</span> <span class="p">(</span><span class="n">abilityId</span><span class="p">);</span>
+<span class="k">CREATE</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="k">users</span> <span class="p">(</span><span class="k">keys</span><span class="p">(</span><span class="n">favs</span><span class="p">));</span>
+<span class="k">CREATE</span> <span class="k">CUSTOM</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="k">users</span> <span class="p">(</span><span class="n">email</span><span class="p">)</span> <span class="k">USING</span> <span class="s1">&#39;path.to.the.IndexClass&#39;</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">CUSTOM</span> <span class="k">INDEX</span> <span class="k">ON</span> <span class="k">users</span> <span class="p">(</span><span class="n">email</span><span class="p">)</span> <span class="k">USING</span> <span class="s1">&#39;path.to.the.IndexClass&#39;</span> <span class="k">WITH</span> <span class="k">OPTIONS</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;storage&#39;</span><span class="p">:</span> <span class="s1">&#39;/mnt/ssd/indexes/&#39;</span><span class="p">};</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">INDEX</span></code> statement is used to create a new (automatic) secondary index for a given (existing) column in a
+given table. A name for the index itself can be specified before the <code class="docutils literal notranslate"><span class="pre">ON</span></code> keyword, if desired. If data already exists
+for the column, it will be indexed asynchronously. After the index is created, new data for the column is indexed
+automatically at insertion time.</p>
+<p>Attempting to create an already existing index will return an error unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is used. If it
+is used, the statement will be a no-op if the index already exists.</p>
+<div class="section" id="indexes-on-map-keys">
+<h3>Indexes on Map Keys<a class="headerlink" href="#indexes-on-map-keys" title="Permalink to this headline">¶</a></h3>
+<p>When creating an index on a <a class="reference internal" href="types.html#maps"><span class="std std-ref">maps</span></a>, you may index either the keys or the values. If the column identifier is
+placed within the <code class="docutils literal notranslate"><span class="pre">keys()</span></code> function, the index will be on the map keys, allowing you to use <code class="docutils literal notranslate"><span class="pre">CONTAINS</span> <span class="pre">KEY</span></code> in
+<code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clauses. Otherwise, the index will be on the map values.</p>
+</div>
+</div>
+<div class="section" id="drop-index">
+<span id="drop-index-statement"></span><h2>DROP INDEX<a class="headerlink" href="#drop-index" title="Permalink to this headline">¶</a></h2>
+<p>Dropping a secondary index uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">INDEX</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-index-statement">drop_index_statement</strong> ::=  DROP INDEX [ IF EXISTS ] <a class="reference internal" href="#grammar-token-index-name"><code class="xref docutils literal notranslate"><span class="pre">index_name</span></code></a>
+</pre>
+<p>The <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">INDEX</span></code> statement is used to drop an existing secondary index. The argument of the statement is the index
+name, which may optionally specify the keyspace of the index.</p>
+<p>If the index does not exists, the statement will return an error, unless <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used in which case the
+operation is a no-op.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="mvs.html" class="btn btn-default pull-right " role="button" title="Materialized Views" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="dml.html" class="btn btn-default" role="button" title="Data Manipulation" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/json.html b/src/doc/4.0-rc1/cql/json.html
new file mode 100644
index 0000000..8fbe3e1
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/json.html
@@ -0,0 +1,318 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "JSON Support"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Triggers" href="triggers.html"/>
+      <link rel="prev" title="Arithmetic Operators" href="operators.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">JSON Support</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#select-json">SELECT JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#insert-json">INSERT JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#json-encoding-of-cassandra-data-types">JSON Encoding of Cassandra Data Types</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#the-fromjson-function">The fromJson() Function</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#the-tojson-function">The toJson() Function</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="json-support">
+<span id="cql-json"></span><h1>JSON Support<a class="headerlink" href="#json-support" title="Permalink to this headline">¶</a></h1>
+<p>Cassandra 2.2 introduces JSON support to <a class="reference internal" href="dml.html#select-statement"><span class="std std-ref">SELECT</span></a> and <a class="reference internal" href="dml.html#insert-statement"><span class="std std-ref">INSERT</span></a>
+statements. This support does not fundamentally alter the CQL API (for example, the schema is still enforced), it simply
+provides a convenient way to work with JSON documents.</p>
+<div class="section" id="select-json">
+<h2>SELECT JSON<a class="headerlink" href="#select-json" title="Permalink to this headline">¶</a></h2>
+<p>With <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statements, the <code class="docutils literal notranslate"><span class="pre">JSON</span></code> keyword can be used to return each row as a single <code class="docutils literal notranslate"><span class="pre">JSON</span></code> encoded map. The
+remainder of the <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement behavior is the same.</p>
+<p>The result map keys are the same as the column names in a normal result set. For example, a statement like <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">JSON</span>
+<span class="pre">a,</span> <span class="pre">ttl(b)</span> <span class="pre">FROM</span> <span class="pre">...</span></code> would result in a map with keys <code class="docutils literal notranslate"><span class="pre">&quot;a&quot;</span></code> and <code class="docutils literal notranslate"><span class="pre">&quot;ttl(b)&quot;</span></code>. However, this is one notable exception:
+for symmetry with <code class="docutils literal notranslate"><span class="pre">INSERT</span> <span class="pre">JSON</span></code> behavior, case-sensitive column names with upper-case letters will be surrounded with
+double quotes. For example, <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">JSON</span> <span class="pre">myColumn</span> <span class="pre">FROM</span> <span class="pre">...</span></code> would result in a map key <code class="docutils literal notranslate"><span class="pre">&quot;\&quot;myColumn\&quot;&quot;</span></code> (note the
+escaped quotes).</p>
+<p>The map values will <code class="docutils literal notranslate"><span class="pre">JSON</span></code>-encoded representations (as described below) of the result set values.</p>
+</div>
+<div class="section" id="insert-json">
+<h2>INSERT JSON<a class="headerlink" href="#insert-json" title="Permalink to this headline">¶</a></h2>
+<p>With <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statements, the new <code class="docutils literal notranslate"><span class="pre">JSON</span></code> keyword can be used to enable inserting a <code class="docutils literal notranslate"><span class="pre">JSON</span></code> encoded map as a single
+row. The format of the <code class="docutils literal notranslate"><span class="pre">JSON</span></code> map should generally match that returned by a <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">JSON</span></code> statement on the same
+table. In particular, case-sensitive column names should be surrounded with double quotes. For example, to insert into a
+table with two columns named “myKey” and “value”, you would do the following:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">mytable</span> <span class="k">JSON</span> <span class="s1">&#39;{ &quot;\&quot;myKey\&quot;&quot;: 0, &quot;value&quot;: 0}&#39;</span>
+</pre></div>
+</div>
+<p>By default (or if <code class="docutils literal notranslate"><span class="pre">DEFAULT</span> <span class="pre">NULL</span></code> is explicitly used), a column omitted from the <code class="docutils literal notranslate"><span class="pre">JSON</span></code> map will be set to <code class="docutils literal notranslate"><span class="pre">NULL</span></code>,
+meaning that any pre-existing value for that column will be removed (resulting in a tombstone being created).
+Alternatively, if the <code class="docutils literal notranslate"><span class="pre">DEFAULT</span> <span class="pre">UNSET</span></code> directive is used after the value, omitted column values will be left unset,
+meaning that pre-existing values for those column will be preserved.</p>
+</div>
+<div class="section" id="json-encoding-of-cassandra-data-types">
+<h2>JSON Encoding of Cassandra Data Types<a class="headerlink" href="#json-encoding-of-cassandra-data-types" title="Permalink to this headline">¶</a></h2>
+<p>Where possible, Cassandra will represent and accept data types in their native <code class="docutils literal notranslate"><span class="pre">JSON</span></code> representation. Cassandra will
+also accept string representations matching the CQL literal format for all single-field types. For example, floats,
+ints, UUIDs, and dates can be represented by CQL literal strings. However, compound types, such as collections, tuples,
+and user-defined types must be represented by native <code class="docutils literal notranslate"><span class="pre">JSON</span></code> collections (maps and lists) or a JSON-encoded string
+representation of the collection.</p>
+<p>The following table describes the encodings that Cassandra will accept in <code class="docutils literal notranslate"><span class="pre">INSERT</span> <span class="pre">JSON</span></code> values (and <code class="docutils literal notranslate"><span class="pre">fromJson()</span></code>
+arguments) as well as the format Cassandra will use when returning data for <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">JSON</span></code> statements (and
+<code class="docutils literal notranslate"><span class="pre">fromJson()</span></code>):</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="13%" />
+<col width="21%" />
+<col width="13%" />
+<col width="54%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Type</th>
+<th class="head">Formats accepted</th>
+<th class="head">Return format</th>
+<th class="head">Notes</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ascii</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>Uses JSON’s <code class="docutils literal notranslate"><span class="pre">\u</span></code> character escape</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">bigint</span></code></td>
+<td>integer, string</td>
+<td>integer</td>
+<td>String must be valid 64 bit integer</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">blob</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>String should be 0x followed by an even number of hex digits</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">boolean</span></code></td>
+<td>boolean, string</td>
+<td>boolean</td>
+<td>String must be “true” or “false”</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">date</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>Date in format <code class="docutils literal notranslate"><span class="pre">YYYY-MM-DD</span></code>, timezone UTC</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">decimal</span></code></td>
+<td>integer, float, string</td>
+<td>float</td>
+<td>May exceed 32 or 64-bit IEEE-754 floating point precision in
+client-side decoder</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">double</span></code></td>
+<td>integer, float, string</td>
+<td>float</td>
+<td>String must be valid integer or float</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">float</span></code></td>
+<td>integer, float, string</td>
+<td>float</td>
+<td>String must be valid integer or float</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">inet</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>IPv4 or IPv6 address</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">int</span></code></td>
+<td>integer, string</td>
+<td>integer</td>
+<td>String must be valid 32 bit integer</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">list</span></code></td>
+<td>list, string</td>
+<td>list</td>
+<td>Uses JSON’s native list representation</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">map</span></code></td>
+<td>map, string</td>
+<td>map</td>
+<td>Uses JSON’s native map representation</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">smallint</span></code></td>
+<td>integer, string</td>
+<td>integer</td>
+<td>String must be valid 16 bit integer</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">set</span></code></td>
+<td>list, string</td>
+<td>list</td>
+<td>Uses JSON’s native list representation</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">text</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>Uses JSON’s <code class="docutils literal notranslate"><span class="pre">\u</span></code> character escape</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">time</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>Time of day in format <code class="docutils literal notranslate"><span class="pre">HH-MM-SS[.fffffffff]</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code></td>
+<td>integer, string</td>
+<td>string</td>
+<td>A timestamp. Strings constant allows to input <a class="reference internal" href="types.html#timestamps"><span class="std std-ref">timestamps
+as dates</span></a>. Datestamps with format <code class="docutils literal notranslate"><span class="pre">YYYY-MM-DD</span>
+<span class="pre">HH:MM:SS.SSS</span></code> are returned.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>Type 1 UUID. See <a class="reference internal" href="definitions.html#grammar-token-constant"><code class="xref std std-token docutils literal notranslate"><span class="pre">constant</span></code></a> for the UUID format</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code></td>
+<td>integer, string</td>
+<td>integer</td>
+<td>String must be valid 8 bit integer</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">tuple</span></code></td>
+<td>list, string</td>
+<td>list</td>
+<td>Uses JSON’s native list representation</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">UDT</span></code></td>
+<td>map, string</td>
+<td>map</td>
+<td>Uses JSON’s native map representation with field names as keys</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">uuid</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>See <a class="reference internal" href="definitions.html#grammar-token-constant"><code class="xref std std-token docutils literal notranslate"><span class="pre">constant</span></code></a> for the UUID format</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+<td>string</td>
+<td>string</td>
+<td>Uses JSON’s <code class="docutils literal notranslate"><span class="pre">\u</span></code> character escape</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">varint</span></code></td>
+<td>integer, string</td>
+<td>integer</td>
+<td>Variable length; may overflow 32 or 64 bit integers in
+client-side decoder</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="the-fromjson-function">
+<h2>The fromJson() Function<a class="headerlink" href="#the-fromjson-function" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">fromJson()</span></code> function may be used similarly to <code class="docutils literal notranslate"><span class="pre">INSERT</span> <span class="pre">JSON</span></code>, but for a single column value. It may only be used
+in the <code class="docutils literal notranslate"><span class="pre">VALUES</span></code> clause of an <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> statement or as one of the column values in an <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">DELETE</span></code>, or
+<code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement. For example, it cannot be used in the selection clause of a <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement.</p>
+</div>
+<div class="section" id="the-tojson-function">
+<h2>The toJson() Function<a class="headerlink" href="#the-tojson-function" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">toJson()</span></code> function may be used similarly to <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">JSON</span></code>, but for a single column value. It may only be used
+in the selection clause of a <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="triggers.html" class="btn btn-default pull-right " role="button" title="Triggers" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="operators.html" class="btn btn-default" role="button" title="Arithmetic Operators" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/mvs.html b/src/doc/4.0-rc1/cql/mvs.html
new file mode 100644
index 0000000..639dd7b
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/mvs.html
@@ -0,0 +1,261 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Materialized Views"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Security" href="security.html"/>
+      <link rel="prev" title="Secondary Indexes" href="indexes.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Materialized Views</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#create-materialized-view">CREATE MATERIALIZED VIEW</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#alter-materialized-view">ALTER MATERIALIZED VIEW</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#drop-materialized-view">DROP MATERIALIZED VIEW</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="materialized-views">
+<span id="id1"></span><h1>Materialized Views<a class="headerlink" href="#materialized-views" title="Permalink to this headline">¶</a></h1>
+<p>Materialized views names are defined by:</p>
+<pre>
+<strong id="grammar-token-view-name">view_name</strong> ::=  re('[a-zA-Z_0-9]+')
+</pre>
+<div class="section" id="create-materialized-view">
+<span id="create-materialized-view-statement"></span><h2>CREATE MATERIALIZED VIEW<a class="headerlink" href="#create-materialized-view" title="Permalink to this headline">¶</a></h2>
+<p>You can create a materialized view on a table using a <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">MATERIALIZED</span> <span class="pre">VIEW</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-materialized-view-statement">create_materialized_view_statement</strong> ::=  CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-view-name"><code class="xref docutils literal notranslate"><span class="pre">view_name</span></code></a> AS
+                                            <a class="reference internal" href="dml.html#grammar-token-select-statement"><code class="xref docutils literal notranslate"><span class="pre">select_statement</span></code></a>
+                                            PRIMARY KEY '(' <a class="reference internal" href="ddl.html#grammar-token-primary-key"><code class="xref docutils literal notranslate"><span class="pre">primary_key</span></code></a> ')'
+                                            WITH <a class="reference internal" href="ddl.html#grammar-token-table-options"><code class="xref docutils literal notranslate"><span class="pre">table_options</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">monkeySpecies_by_population</span> <span class="k">AS</span>
+    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">monkeySpecies</span>
+    <span class="k">WHERE</span> <span class="n">population</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">species</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">population</span><span class="p">,</span> <span class="n">species</span><span class="p">)</span>
+    <span class="k">WITH</span> <span class="n">comment</span><span class="o">=</span><span class="s1">&#39;Allow query by population instead of species&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">MATERIALIZED</span> <span class="pre">VIEW</span></code> statement creates a new materialized view. Each such view is a set of <em>rows</em> which
+corresponds to rows which are present in the underlying, or base, table specified in the <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement. A
+materialized view cannot be directly updated, but updates to the base table will cause corresponding updates in the
+view.</p>
+<p>Creating a materialized view has 3 main parts:</p>
+<ul class="simple">
+<li>The <a class="reference internal" href="#mv-select"><span class="std std-ref">select statement</span></a> that restrict the data included in the view.</li>
+<li>The <a class="reference internal" href="#mv-primary-key"><span class="std std-ref">primary key</span></a> definition for the view.</li>
+<li>The <a class="reference internal" href="#mv-options"><span class="std std-ref">options</span></a> for the view.</li>
+</ul>
+<p>Attempting to create an already existing materialized view will return an error unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is
+used. If it is used, the statement will be a no-op if the materialized view already exists.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">By default, materialized views are built in a single thread. The initial build can be parallelized by
+increasing the number of threads specified by the property <code class="docutils literal notranslate"><span class="pre">concurrent_materialized_view_builders</span></code> in
+<code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>. This property can also be manipulated at runtime through both JMX and the
+<code class="docutils literal notranslate"><span class="pre">setconcurrentviewbuilders</span></code> and <code class="docutils literal notranslate"><span class="pre">getconcurrentviewbuilders</span></code> nodetool commands.</p>
+</div>
+<div class="section" id="mv-select-statement">
+<span id="mv-select"></span><h3>MV select statement<a class="headerlink" href="#mv-select-statement" title="Permalink to this headline">¶</a></h3>
+<p>The select statement of a materialized view creation defines which of the base table is included in the view. That
+statement is limited in a number of ways:</p>
+<ul class="simple">
+<li>the <a class="reference internal" href="dml.html#selection-clause"><span class="std std-ref">selection</span></a> is limited to those that only select columns of the base table. In other
+words, you can’t use any function (aggregate or not), casting, term, etc. Aliases are also not supported. You can
+however use <cite>*</cite> as a shortcut of selecting all columns. Further, <a class="reference internal" href="ddl.html#static-columns"><span class="std std-ref">static columns</span></a> cannot be
+included in a materialized view (which means <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">*</span></code> isn’t allowed if the base table has static columns).</li>
+<li>the <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clause have the following restrictions:<ul>
+<li>it cannot include any <a class="reference internal" href="definitions.html#grammar-token-bind-marker"><code class="xref std std-token docutils literal notranslate"><span class="pre">bind_marker</span></code></a>.</li>
+<li>the columns that are not part of the <em>base table</em> primary key can only be restricted by an <code class="docutils literal notranslate"><span class="pre">IS</span> <span class="pre">NOT</span> <span class="pre">NULL</span></code>
+restriction. No other restriction is allowed.</li>
+<li>as the columns that are part of the <em>view</em> primary key cannot be null, they must always be at least restricted by a
+<code class="docutils literal notranslate"><span class="pre">IS</span> <span class="pre">NOT</span> <span class="pre">NULL</span></code> restriction (or any other restriction, but they must have one).</li>
+</ul>
+</li>
+<li>it cannot have neither an <a class="reference internal" href="dml.html#ordering-clause"><span class="std std-ref">ordering clause</span></a>, nor a <a class="reference internal" href="dml.html#limit-clause"><span class="std std-ref">limit</span></a>, nor <a class="reference internal" href="dml.html#allow-filtering"><span class="std std-ref">ALLOW
+FILTERING</span></a>.</li>
+</ul>
+</div>
+<div class="section" id="mv-primary-key">
+<span id="id2"></span><h3>MV primary key<a class="headerlink" href="#mv-primary-key" title="Permalink to this headline">¶</a></h3>
+<p>A view must have a primary key and that primary key must conform to the following restrictions:</p>
+<ul class="simple">
+<li>it must contain all the primary key columns of the base table. This ensures that every row of the view correspond to
+exactly one row of the base table.</li>
+<li>it can only contain a single column that is not a primary key column in the base table.</li>
+</ul>
+<p>So for instance, give the following base table definition:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">t</span> <span class="p">(</span>
+    <span class="n">k</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">c1</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">c2</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">v1</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">v2</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">c1</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
+<span class="p">)</span>
+</pre></div>
+</div>
+<p>then the following view definitions are allowed:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">mv1</span> <span class="k">AS</span>
+    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span> <span class="k">WHERE</span> <span class="n">k</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c2</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">c1</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
+
+<span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">mv1</span> <span class="k">AS</span>
+    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span> <span class="k">WHERE</span> <span class="n">k</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c2</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">v1</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">c1</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>but the following ones are <strong>not</strong> allowed:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="c1">// Error: cannot include both v1 and v2 in the primary key as both are not in the base table primary key</span>
+<span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">mv1</span> <span class="k">AS</span>
+    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span> <span class="k">WHERE</span> <span class="n">k</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c2</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">v1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">v1</span><span class="p">,</span> <span class="n">v2</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">c1</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
+
+<span class="c1">// Error: must include k in the primary as it&#39;s a base table primary key column</span>
+<span class="k">CREATE</span> <span class="k">MATERIALIZED</span> <span class="k">VIEW</span> <span class="n">mv1</span> <span class="k">AS</span>
+    <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span> <span class="k">WHERE</span> <span class="n">c1</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="k">AND</span> <span class="n">c2</span> <span class="k">IS</span> <span class="k">NOT</span> <span class="k">NULL</span>
+    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">c1</span><span class="p">,</span> <span class="n">c2</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="mv-options">
+<span id="id3"></span><h3>MV options<a class="headerlink" href="#mv-options" title="Permalink to this headline">¶</a></h3>
+<p>A materialized view is internally implemented by a table and as such, creating a MV allows the <a class="reference internal" href="ddl.html#create-table-options"><span class="std std-ref">same options than
+creating a table</span></a>.</p>
+</div>
+</div>
+<div class="section" id="alter-materialized-view">
+<span id="alter-materialized-view-statement"></span><h2>ALTER MATERIALIZED VIEW<a class="headerlink" href="#alter-materialized-view" title="Permalink to this headline">¶</a></h2>
+<p>After creation, you can alter the options of a materialized view using the <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">MATERIALIZED</span> <span class="pre">VIEW</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-alter-materialized-view-statement">alter_materialized_view_statement</strong> ::=  ALTER MATERIALIZED VIEW <a class="reference internal" href="#grammar-token-view-name"><code class="xref docutils literal notranslate"><span class="pre">view_name</span></code></a> WITH <a class="reference internal" href="ddl.html#grammar-token-table-options"><code class="xref docutils literal notranslate"><span class="pre">table_options</span></code></a>
+</pre>
+<p>The options that can be updated are the same than at creation time and thus the <a class="reference internal" href="ddl.html#create-table-options"><span class="std std-ref">same than for tables</span></a>.</p>
+</div>
+<div class="section" id="drop-materialized-view">
+<span id="drop-materialized-view-statement"></span><h2>DROP MATERIALIZED VIEW<a class="headerlink" href="#drop-materialized-view" title="Permalink to this headline">¶</a></h2>
+<p>Dropping a materialized view users the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">MATERIALIZED</span> <span class="pre">VIEW</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-materialized-view-statement">drop_materialized_view_statement</strong> ::=  DROP MATERIALIZED VIEW [ IF EXISTS ] <a class="reference internal" href="#grammar-token-view-name"><code class="xref docutils literal notranslate"><span class="pre">view_name</span></code></a>;
+</pre>
+<p>If the materialized view does not exists, the statement will return an error, unless <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used in which case
+the operation is a no-op.</p>
+<div class="section" id="mv-limitations">
+<h3>MV Limitations<a class="headerlink" href="#mv-limitations" title="Permalink to this headline">¶</a></h3>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Removal of columns not selected in the Materialized View (via <code class="docutils literal notranslate"><span class="pre">UPDATE</span> <span class="pre">base</span> <span class="pre">SET</span> <span class="pre">unselected_column</span> <span class="pre">=</span> <span class="pre">null</span></code> or
+<code class="docutils literal notranslate"><span class="pre">DELETE</span> <span class="pre">unselected_column</span> <span class="pre">FROM</span> <span class="pre">base</span></code>) may shadow missed updates to other columns received by hints or repair.
+For this reason, we advise against doing deletions on base columns not selected in views until this is
+fixed on CASSANDRA-13826.</p>
+</div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="security.html" class="btn btn-default pull-right " role="button" title="Security" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="indexes.html" class="btn btn-default" role="button" title="Secondary Indexes" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/operators.html b/src/doc/4.0-rc1/cql/operators.html
new file mode 100644
index 0000000..504be08
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/operators.html
@@ -0,0 +1,301 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Arithmetic Operators"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="JSON Support" href="json.html"/>
+      <link rel="prev" title="Functions" href="functions.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Arithmetic Operators</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#number-arithmetic">Number Arithmetic</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#datetime-arithmetic">Datetime Arithmetic</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="arithmetic-operators">
+<span id="id1"></span><h1>Arithmetic Operators<a class="headerlink" href="#arithmetic-operators" title="Permalink to this headline">¶</a></h1>
+<p>CQL supports the following operators:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="13%" />
+<col width="87%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Operator</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>- (unary)</td>
+<td>Negates operand</td>
+</tr>
+<tr class="row-odd"><td>+</td>
+<td>Addition</td>
+</tr>
+<tr class="row-even"><td>-</td>
+<td>Substraction</td>
+</tr>
+<tr class="row-odd"><td>*</td>
+<td>Multiplication</td>
+</tr>
+<tr class="row-even"><td>/</td>
+<td>Division</td>
+</tr>
+<tr class="row-odd"><td>%</td>
+<td>Returns the remainder of a division</td>
+</tr>
+</tbody>
+</table>
+<div class="section" id="number-arithmetic">
+<span id="id2"></span><h2>Number Arithmetic<a class="headerlink" href="#number-arithmetic" title="Permalink to this headline">¶</a></h2>
+<p>All arithmetic operations are supported on numeric types or counters.</p>
+<p>The return type of the operation will be based on the operand types:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="13%" />
+<col width="11%" />
+<col width="10%" />
+<col width="10%" />
+<col width="10%" />
+<col width="10%" />
+<col width="10%" />
+<col width="10%" />
+<col width="10%" />
+<col width="10%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">left/right</th>
+<th class="head">tinyint</th>
+<th class="head">smallint</th>
+<th class="head">int</th>
+<th class="head">bigint</th>
+<th class="head">counter</th>
+<th class="head">float</th>
+<th class="head">double</th>
+<th class="head">varint</th>
+<th class="head">decimal</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><strong>tinyint</strong></td>
+<td>tinyint</td>
+<td>smallint</td>
+<td>int</td>
+<td>bigint</td>
+<td>bigint</td>
+<td>float</td>
+<td>double</td>
+<td>varint</td>
+<td>decimal</td>
+</tr>
+<tr class="row-odd"><td><strong>smallint</strong></td>
+<td>smallint</td>
+<td>smallint</td>
+<td>int</td>
+<td>bigint</td>
+<td>bigint</td>
+<td>float</td>
+<td>double</td>
+<td>varint</td>
+<td>decimal</td>
+</tr>
+<tr class="row-even"><td><strong>int</strong></td>
+<td>int</td>
+<td>int</td>
+<td>int</td>
+<td>bigint</td>
+<td>bigint</td>
+<td>float</td>
+<td>double</td>
+<td>varint</td>
+<td>decimal</td>
+</tr>
+<tr class="row-odd"><td><strong>bigint</strong></td>
+<td>bigint</td>
+<td>bigint</td>
+<td>bigint</td>
+<td>bigint</td>
+<td>bigint</td>
+<td>double</td>
+<td>double</td>
+<td>varint</td>
+<td>decimal</td>
+</tr>
+<tr class="row-even"><td><strong>counter</strong></td>
+<td>bigint</td>
+<td>bigint</td>
+<td>bigint</td>
+<td>bigint</td>
+<td>bigint</td>
+<td>double</td>
+<td>double</td>
+<td>varint</td>
+<td>decimal</td>
+</tr>
+<tr class="row-odd"><td><strong>float</strong></td>
+<td>float</td>
+<td>float</td>
+<td>float</td>
+<td>double</td>
+<td>double</td>
+<td>float</td>
+<td>double</td>
+<td>decimal</td>
+<td>decimal</td>
+</tr>
+<tr class="row-even"><td><strong>double</strong></td>
+<td>double</td>
+<td>double</td>
+<td>double</td>
+<td>double</td>
+<td>double</td>
+<td>double</td>
+<td>double</td>
+<td>decimal</td>
+<td>decimal</td>
+</tr>
+<tr class="row-odd"><td><strong>varint</strong></td>
+<td>varint</td>
+<td>varint</td>
+<td>varint</td>
+<td>decimal</td>
+<td>decimal</td>
+<td>decimal</td>
+<td>decimal</td>
+<td>decimal</td>
+<td>decimal</td>
+</tr>
+<tr class="row-even"><td><strong>decimal</strong></td>
+<td>decimal</td>
+<td>decimal</td>
+<td>decimal</td>
+<td>decimal</td>
+<td>decimal</td>
+<td>decimal</td>
+<td>decimal</td>
+<td>decimal</td>
+<td>decimal</td>
+</tr>
+</tbody>
+</table>
+<p><code class="docutils literal notranslate"><span class="pre">*</span></code>, <code class="docutils literal notranslate"><span class="pre">/</span></code> and <code class="docutils literal notranslate"><span class="pre">%</span></code> operators have a higher precedence level than <code class="docutils literal notranslate"><span class="pre">+</span></code> and <code class="docutils literal notranslate"><span class="pre">-</span></code> operator. By consequence,
+they will be evaluated before. If two operator in an expression have the same precedence level, they will be evaluated
+left to right based on their position in the expression.</p>
+</div>
+<div class="section" id="datetime-arithmetic">
+<span id="id3"></span><h2>Datetime Arithmetic<a class="headerlink" href="#datetime-arithmetic" title="Permalink to this headline">¶</a></h2>
+<p>A <code class="docutils literal notranslate"><span class="pre">duration</span></code> can be added (+) or substracted (-) from a <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> or a <code class="docutils literal notranslate"><span class="pre">date</span></code> to create a new
+<code class="docutils literal notranslate"><span class="pre">timestamp</span></code> or <code class="docutils literal notranslate"><span class="pre">date</span></code>. So for instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">myTable</span> <span class="k">WHERE</span> <span class="n">t</span> <span class="o">=</span> <span class="s1">&#39;2017-01-01&#39;</span> <span class="o">-</span> <span class="mf">2</span><span class="n">d</span>
+</pre></div>
+</div>
+<p>will select all the records with a value of <code class="docutils literal notranslate"><span class="pre">t</span></code> which is in the last 2 days of 2016.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="json.html" class="btn btn-default pull-right " role="button" title="JSON Support" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="functions.html" class="btn btn-default" role="button" title="Functions" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/security.html b/src/doc/4.0-rc1/cql/security.html
new file mode 100644
index 0000000..65ad844
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/security.html
@@ -0,0 +1,743 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Security"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Functions" href="functions.html"/>
+      <link rel="prev" title="Materialized Views" href="mvs.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Security</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#database-roles">Database Roles</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#users">Users</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#data-control">Data Control</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="security">
+<span id="cql-security"></span><h1>Security<a class="headerlink" href="#security" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="database-roles">
+<span id="cql-roles"></span><h2>Database Roles<a class="headerlink" href="#database-roles" title="Permalink to this headline">¶</a></h2>
+<p>CQL uses database roles to represent users and group of users. Syntactically, a role is defined by:</p>
+<pre>
+<strong id="grammar-token-role-name">role_name</strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> | <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a>
+</pre>
+<div class="section" id="create-role">
+<span id="create-role-statement"></span><h3>CREATE ROLE<a class="headerlink" href="#create-role" title="Permalink to this headline">¶</a></h3>
+<p>Creating a role uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-role-statement">create_role_statement</strong> ::=  CREATE ROLE [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+                               [ WITH <a class="reference internal" href="#grammar-token-role-options"><code class="xref docutils literal notranslate"><span class="pre">role_options</span></code></a> ]
+<strong id="grammar-token-role-options">role_options         </strong> ::=  <a class="reference internal" href="#grammar-token-role-option"><code class="xref docutils literal notranslate"><span class="pre">role_option</span></code></a> ( AND <a class="reference internal" href="#grammar-token-role-option"><code class="xref docutils literal notranslate"><span class="pre">role_option</span></code></a> )*
+<strong id="grammar-token-role-option">role_option          </strong> ::=  PASSWORD '=' <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a>
+                          | LOGIN '=' <a class="reference internal" href="definitions.html#grammar-token-boolean"><code class="xref docutils literal notranslate"><span class="pre">boolean</span></code></a>
+                          | SUPERUSER '=' <a class="reference internal" href="definitions.html#grammar-token-boolean"><code class="xref docutils literal notranslate"><span class="pre">boolean</span></code></a>
+                          | OPTIONS '=' <a class="reference internal" href="types.html#grammar-token-map-literal"><code class="xref docutils literal notranslate"><span class="pre">map_literal</span></code></a>
+                          | ACCESS TO DATACENTERS <a class="reference internal" href="types.html#grammar-token-set-literal"><code class="xref docutils literal notranslate"><span class="pre">set_literal</span></code></a>
+                          | ACCESS TO ALL DATACENTERS
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">new_role</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">bob</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_b&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">carlos</span> <span class="k">WITH</span> <span class="k">OPTIONS</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;custom_option1&#39;</span> <span class="p">:</span> <span class="s1">&#39;option1_value&#39;</span><span class="p">,</span> <span class="s1">&#39;custom_option2&#39;</span> <span class="p">:</span> <span class="mf">99</span> <span class="p">};</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="n">ACCESS</span> <span class="k">TO</span> <span class="n">DATACENTERS</span> <span class="p">{</span><span class="s1">&#39;DC1&#39;</span><span class="p">,</span> <span class="s1">&#39;DC3&#39;</span><span class="p">};</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="n">ACCESS</span> <span class="k">TO</span> <span class="k">ALL</span> <span class="n">DATACENTERS</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>By default roles do not possess <code class="docutils literal notranslate"><span class="pre">LOGIN</span></code> privileges or <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code> status.</p>
+<p><a class="reference internal" href="#cql-permissions"><span class="std std-ref">Permissions</span></a> on database resources are granted to roles; types of resources include keyspaces,
+tables, functions and roles themselves. Roles may be granted to other roles to create hierarchical permissions
+structures; in these hierarchies, permissions and <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code> status are inherited, but the <code class="docutils literal notranslate"><span class="pre">LOGIN</span></code> privilege is
+not.</p>
+<p>If a role has the <code class="docutils literal notranslate"><span class="pre">LOGIN</span></code> privilege, clients may identify as that role when connecting. For the duration of that
+connection, the client will acquire any roles and privileges granted to that role.</p>
+<p>Only a client with with the <code class="docutils literal notranslate"><span class="pre">CREATE</span></code> permission on the database roles resource may issue <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code> requests (see
+the <a class="reference internal" href="#cql-permissions"><span class="std std-ref">relevant section</span></a> below), unless the client is a <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code>. Role management in Cassandra
+is pluggable and custom implementations may support only a subset of the listed options.</p>
+<p>Role names should be quoted if they contain non-alphanumeric characters.</p>
+<div class="section" id="setting-credentials-for-internal-authentication">
+<span id="id1"></span><h4>Setting credentials for internal authentication<a class="headerlink" href="#setting-credentials-for-internal-authentication" title="Permalink to this headline">¶</a></h4>
+<p>Use the <code class="docutils literal notranslate"><span class="pre">WITH</span> <span class="pre">PASSWORD</span></code> clause to set a password for internal authentication, enclosing the password in single
+quotation marks.</p>
+<p>If internal authentication has not been set up or the role does not have <code class="docutils literal notranslate"><span class="pre">LOGIN</span></code> privileges, the <code class="docutils literal notranslate"><span class="pre">WITH</span> <span class="pre">PASSWORD</span></code>
+clause is not necessary.</p>
+</div>
+<div class="section" id="restricting-connections-to-specific-datacenters">
+<h4>Restricting connections to specific datacenters<a class="headerlink" href="#restricting-connections-to-specific-datacenters" title="Permalink to this headline">¶</a></h4>
+<p>If a <code class="docutils literal notranslate"><span class="pre">network_authorizer</span></code> has been configured, you can restrict login roles to specific datacenters with the
+<code class="docutils literal notranslate"><span class="pre">ACCESS</span> <span class="pre">TO</span> <span class="pre">DATACENTERS</span></code> clause followed by a set literal of datacenters the user can access. Not specifiying
+datacenters implicitly grants access to all datacenters. The clause <code class="docutils literal notranslate"><span class="pre">ACCESS</span> <span class="pre">TO</span> <span class="pre">ALL</span> <span class="pre">DATACENTERS</span></code> can be used for
+explicitness, but there’s no functional difference.</p>
+</div>
+<div class="section" id="creating-a-role-conditionally">
+<h4>Creating a role conditionally<a class="headerlink" href="#creating-a-role-conditionally" title="Permalink to this headline">¶</a></h4>
+<p>Attempting to create an existing role results in an invalid query condition unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is used.
+If the option is used and the role exists, the statement is a no-op:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">other_role</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="k">IF</span> <span class="k">NOT</span> <span class="k">EXISTS</span> <span class="n">other_role</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="alter-role">
+<span id="alter-role-statement"></span><h3>ALTER ROLE<a class="headerlink" href="#alter-role" title="Permalink to this headline">¶</a></h3>
+<p>Altering a role options uses the <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">ROLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-alter-role-statement">alter_role_statement</strong> ::=  ALTER ROLE <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> WITH <a class="reference internal" href="#grammar-token-role-options"><code class="xref docutils literal notranslate"><span class="pre">role_options</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">ROLE</span> <span class="n">bob</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;PASSWORD_B&#39;</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">false</span><span class="p">;</span>
+</pre></div>
+</div>
+<div class="section" id="id2">
+<h4>Restricting connections to specific datacenters<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h4>
+<p>If a <code class="docutils literal notranslate"><span class="pre">network_authorizer</span></code> has been configured, you can restrict login roles to specific datacenters with the
+<code class="docutils literal notranslate"><span class="pre">ACCESS</span> <span class="pre">TO</span> <span class="pre">DATACENTERS</span></code> clause followed by a set literal of datacenters the user can access. To remove any
+data center restrictions, use the <code class="docutils literal notranslate"><span class="pre">ACCESS</span> <span class="pre">TO</span> <span class="pre">ALL</span> <span class="pre">DATACENTERS</span></code> clause.</p>
+<p>Conditions on executing <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">ROLE</span></code> statements:</p>
+<ul class="simple">
+<li>A client must have <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code> status to alter the <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code> status of another role</li>
+<li>A client cannot alter the <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code> status of any role it currently holds</li>
+<li>A client can only modify certain properties of the role with which it identified at login (e.g. <code class="docutils literal notranslate"><span class="pre">PASSWORD</span></code>)</li>
+<li>To modify properties of a role, the client must be granted <code class="docutils literal notranslate"><span class="pre">ALTER</span></code> <a class="reference internal" href="#cql-permissions"><span class="std std-ref">permission</span></a> on that role</li>
+</ul>
+</div>
+</div>
+<div class="section" id="drop-role">
+<span id="drop-role-statement"></span><h3>DROP ROLE<a class="headerlink" href="#drop-role" title="Permalink to this headline">¶</a></h3>
+<p>Dropping a role uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">ROLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-role-statement">drop_role_statement</strong> ::=  DROP ROLE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+</pre>
+<p><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">ROLE</span></code> requires the client to have <code class="docutils literal notranslate"><span class="pre">DROP</span></code> <a class="reference internal" href="#cql-permissions"><span class="std std-ref">permission</span></a> on the role in question. In
+addition, client may not <code class="docutils literal notranslate"><span class="pre">DROP</span></code> the role with which it identified at login. Finally, only a client with <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code>
+status may <code class="docutils literal notranslate"><span class="pre">DROP</span></code> another <code class="docutils literal notranslate"><span class="pre">SUPERUSER</span></code> role.</p>
+<p>Attempting to drop a role which does not exist results in an invalid query condition unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> option is
+used. If the option is used and the role does not exist the statement is a no-op.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">DROP ROLE intentionally does not terminate any open user sessions. Currently connected sessions will remain
+connected and will retain the ability to perform any database actions which do not require <a class="reference internal" href="../operating/security.html#authorization"><span class="std std-ref">authorization</span></a>.
+However, if authorization is enabled, <a class="reference internal" href="#cql-permissions"><span class="std std-ref">permissions</span></a> of the dropped role are also revoked,
+subject to the <a class="reference internal" href="../operating/security.html#auth-caching"><span class="std std-ref">caching options</span></a> configured in <a class="reference internal" href="../configuration/cassandra_config_file.html#cassandra-yaml"><span class="std std-ref">cassandra.yaml</span></a>.
+Should a dropped role be subsequently recreated and have new <a class="reference internal" href="#grant-permission-statement"><span class="std std-ref">permissions</span></a> or
+<a class="reference internal" href="#grant-role-statement"><span class="std std-ref">roles</span></a> granted to it, any client sessions still connected will acquire the newly granted
+permissions and roles.</p>
+</div>
+</div>
+<div class="section" id="grant-role">
+<span id="grant-role-statement"></span><h3>GRANT ROLE<a class="headerlink" href="#grant-role" title="Permalink to this headline">¶</a></h3>
+<p>Granting a role to another uses the <code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">ROLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-grant-role-statement">grant_role_statement</strong> ::=  GRANT <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> TO <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="n">report_writer</span> <span class="k">TO</span> <span class="n">alice</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This statement grants the <code class="docutils literal notranslate"><span class="pre">report_writer</span></code> role to <code class="docutils literal notranslate"><span class="pre">alice</span></code>. Any permissions granted to <code class="docutils literal notranslate"><span class="pre">report_writer</span></code> are also
+acquired by <code class="docutils literal notranslate"><span class="pre">alice</span></code>.</p>
+<p>Roles are modelled as a directed acyclic graph, so circular grants are not permitted. The following examples result in
+error conditions:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="n">role_a</span> <span class="k">TO</span> <span class="n">role_b</span><span class="p">;</span>
+<span class="k">GRANT</span> <span class="n">role_b</span> <span class="k">TO</span> <span class="n">role_a</span><span class="p">;</span>
+
+<span class="k">GRANT</span> <span class="n">role_a</span> <span class="k">TO</span> <span class="n">role_b</span><span class="p">;</span>
+<span class="k">GRANT</span> <span class="n">role_b</span> <span class="k">TO</span> <span class="n">role_c</span><span class="p">;</span>
+<span class="k">GRANT</span> <span class="n">role_c</span> <span class="k">TO</span> <span class="n">role_a</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="revoke-role">
+<span id="revoke-role-statement"></span><h3>REVOKE ROLE<a class="headerlink" href="#revoke-role" title="Permalink to this headline">¶</a></h3>
+<p>Revoking a role uses the <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">ROLE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-revoke-role-statement">revoke_role_statement</strong> ::=  REVOKE <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> FROM <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">REVOKE</span> <span class="n">report_writer</span> <span class="k">FROM</span> <span class="n">alice</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This statement revokes the <code class="docutils literal notranslate"><span class="pre">report_writer</span></code> role from <code class="docutils literal notranslate"><span class="pre">alice</span></code>. Any permissions that <code class="docutils literal notranslate"><span class="pre">alice</span></code> has acquired via the
+<code class="docutils literal notranslate"><span class="pre">report_writer</span></code> role are also revoked.</p>
+</div>
+<div class="section" id="list-roles">
+<span id="list-roles-statement"></span><h3>LIST ROLES<a class="headerlink" href="#list-roles" title="Permalink to this headline">¶</a></h3>
+<p>All the known roles (in the system or granted to specific role) can be listed using the <code class="docutils literal notranslate"><span class="pre">LIST</span> <span class="pre">ROLES</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-list-roles-statement">list_roles_statement</strong> ::=  LIST ROLES [ OF <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> ] [ NORECURSIVE ]
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ROLES</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>returns all known roles in the system, this requires <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code> permission on the database roles resource. And:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ROLES</span> <span class="k">OF</span> <span class="n">alice</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>enumerates all roles granted to <code class="docutils literal notranslate"><span class="pre">alice</span></code>, including those transitively acquired. But:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ROLES</span> <span class="k">OF</span> <span class="n">bob</span> <span class="k">NORECURSIVE</span>
+</pre></div>
+</div>
+<p>lists all roles directly granted to <code class="docutils literal notranslate"><span class="pre">bob</span></code> without including any of the transitively acquired ones.</p>
+</div>
+</div>
+<div class="section" id="users">
+<h2>Users<a class="headerlink" href="#users" title="Permalink to this headline">¶</a></h2>
+<p>Prior to the introduction of roles in Cassandra 2.2, authentication and authorization were based around the concept of a
+<code class="docutils literal notranslate"><span class="pre">USER</span></code>. For backward compatibility, the legacy syntax has been preserved with <code class="docutils literal notranslate"><span class="pre">USER</span></code> centric statements becoming
+synonyms for the <code class="docutils literal notranslate"><span class="pre">ROLE</span></code> based equivalents. In other words, creating/updating a user is just a different syntax for
+creating/updating a role.</p>
+<div class="section" id="create-user">
+<span id="create-user-statement"></span><h3>CREATE USER<a class="headerlink" href="#create-user" title="Permalink to this headline">¶</a></h3>
+<p>Creating a user uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">USER</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-user-statement">create_user_statement</strong> ::=  CREATE USER [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> [ WITH PASSWORD <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a> ] [ <a class="reference internal" href="#grammar-token-user-option"><code class="xref docutils literal notranslate"><span class="pre">user_option</span></code></a> ]
+<strong id="grammar-token-user-option">user_option          </strong> ::=  SUPERUSER | NOSUPERUSER
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">SUPERUSER</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">USER</span> <span class="n">bob</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_b&#39;</span> <span class="k">NOSUPERUSER</span><span class="p">;</span>
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">USER</span></code> is equivalent to <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code> where the <code class="docutils literal notranslate"><span class="pre">LOGIN</span></code> option is <code class="docutils literal notranslate"><span class="pre">true</span></code>. So, the following pairs of
+statements are equivalent:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">SUPERUSER</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">USER</span> <span class="k">IF</span> <span class="k">NOT</span> <span class="k">EXISTS</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">SUPERUSER</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="k">IF</span> <span class="k">NOT</span> <span class="k">EXISTS</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">NOSUPERUSER</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span> <span class="k">AND</span> <span class="k">SUPERUSER</span> <span class="o">=</span> <span class="n">false</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">NOSUPERUSER</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;password_a&#39;</span><span class="p">;</span>
+<span class="k">CREATE</span> <span class="k">ROLE</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;password_a&#39;</span> <span class="k">AND</span> <span class="k">LOGIN</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="alter-user">
+<span id="alter-user-statement"></span><h3>ALTER USER<a class="headerlink" href="#alter-user" title="Permalink to this headline">¶</a></h3>
+<p>Altering the options of a user uses the <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">USER</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-alter-user-statement">alter_user_statement</strong> ::=  ALTER USER <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> [ WITH PASSWORD <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a> ] [ <a class="reference internal" href="#grammar-token-user-option"><code class="xref docutils literal notranslate"><span class="pre">user_option</span></code></a> ]
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">ALTER</span> <span class="k">USER</span> <span class="n">alice</span> <span class="k">WITH</span> <span class="k">PASSWORD</span> <span class="s1">&#39;PASSWORD_A&#39;</span><span class="p">;</span>
+<span class="k">ALTER</span> <span class="k">USER</span> <span class="n">bob</span> <span class="k">SUPERUSER</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="drop-user">
+<span id="drop-user-statement"></span><h3>DROP USER<a class="headerlink" href="#drop-user" title="Permalink to this headline">¶</a></h3>
+<p>Dropping a user uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">USER</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-user-statement">drop_user_statement</strong> ::=  DROP USER [ IF EXISTS ] <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+</pre>
+</div>
+<div class="section" id="list-users">
+<span id="list-users-statement"></span><h3>LIST USERS<a class="headerlink" href="#list-users" title="Permalink to this headline">¶</a></h3>
+<p>Existing users can be listed using the <code class="docutils literal notranslate"><span class="pre">LIST</span> <span class="pre">USERS</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-list-users-statement">list_users_statement</strong> ::=  LIST USERS
+</pre>
+<p>Note that this statement is equivalent to:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ROLES</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>but only roles with the <code class="docutils literal notranslate"><span class="pre">LOGIN</span></code> privilege are included in the output.</p>
+</div>
+</div>
+<div class="section" id="data-control">
+<h2>Data Control<a class="headerlink" href="#data-control" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="permissions">
+<span id="cql-permissions"></span><h3>Permissions<a class="headerlink" href="#permissions" title="Permalink to this headline">¶</a></h3>
+<p>Permissions on resources are granted to roles; there are several different types of resources in Cassandra and each type
+is modelled hierarchically:</p>
+<ul class="simple">
+<li>The hierarchy of Data resources, Keyspaces and Tables has the structure <code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code> -&gt;
+<code class="docutils literal notranslate"><span class="pre">TABLE</span></code>.</li>
+<li>Function resources have the structure <code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">FUNCTION</span></code></li>
+<li>Resources representing roles have the structure <code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">ROLES</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">ROLE</span></code></li>
+<li>Resources representing JMX ObjectNames, which map to sets of MBeans/MXBeans, have the structure <code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code> -&gt;
+<code class="docutils literal notranslate"><span class="pre">MBEAN</span></code></li>
+</ul>
+<p>Permissions can be granted at any level of these hierarchies and they flow downwards. So granting a permission on a
+resource higher up the chain automatically grants that same permission on all resources lower down. For example,
+granting <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> on a <code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code> automatically grants it on all <code class="docutils literal notranslate"><span class="pre">TABLES</span></code> in that <code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code>. Likewise, granting
+a permission on <code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code> grants it on every defined function, regardless of which keyspace it is scoped in. It
+is also possible to grant permissions on all functions scoped to a particular keyspace.</p>
+<p>Modifications to permissions are visible to existing client sessions; that is, connections need not be re-established
+following permissions changes.</p>
+<p>The full set of available permissions is:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">DROP</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></li>
+</ul>
+<p>Not all permissions are applicable to every type of resource. For instance, <code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code> is only relevant in the context
+of functions or mbeans; granting <code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code> on a resource representing a table is nonsensical. Attempting to <code class="docutils literal notranslate"><span class="pre">GRANT</span></code>
+a permission on resource to which it cannot be applied results in an error response. The following illustrates which
+permissions can be granted on which types of resource, and which statements are enabled by that permission.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="13%" />
+<col width="26%" />
+<col width="61%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Permission</th>
+<th class="head">Resource</th>
+<th class="head">Operations</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">KEYSPACE</span></code> and <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> in any keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> in specified keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> in any keyspace and <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> in any
+keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> in specified keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">CREATE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">KEYSPACE</span></code> and <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> in any keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">KEYSPACE</span></code> and <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> in specified keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">TABLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code>: replacing any existing</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code>: replacing existing in
+specified keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">FUNCTION</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code>: replacing existing</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">ROLE</span></code> on any role</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ALTER</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ROLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">ROLE</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">KEYSPACE</span></code> and <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">TABLE</span></code> in any keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">TABLE</span></code> in specified keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">TABLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">TABLE</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> in any keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code> and <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">AGGREGATE</span></code> in specified keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">FUNCTION</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">FUNCTION</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">ROLE</span></code> on any role</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DROP</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ROLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">ROLE</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> on any table</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> on any table in specified keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">TABLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code> on specified table</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
+<td>Call getter methods on any mbean</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEANS</span></code></td>
+<td>Call getter methods on any mbean matching a wildcard pattern</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEAN</span></code></td>
+<td>Call getter methods on named mbean</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">INSERT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> and <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code> on any table</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">INSERT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> and <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code> on any table in
+specified keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">TABLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">INSERT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> and <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code> on specified table</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
+<td>Call setter methods on any mbean</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEANS</span></code></td>
+<td>Call setter methods on any mbean matching a wildcard pattern</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">MODIFY</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEAN</span></code></td>
+<td>Call setter methods on named mbean</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">KEYSPACES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any table</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any table in
+specified keyspace</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">TABLE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on specified table</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any function</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> in specified keyspace</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">FUNCTION</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on specified function</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any mbean</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEANS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on any mbean matching
+a wildcard pattern</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEAN</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> on named mbean</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">ROLE</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">ROLE</span></code> on any role</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">AUTHORIZE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ROLES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">ROLE</span></code> and <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">ROLE</span></code> on specified roles</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">ROLES</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">LIST</span> <span class="pre">ROLES</span></code> on all roles or only roles granted to another,
+specified role</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
+<td>Retrieve metadata about any mbean from the platform’s MBeanServer</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEANS</span></code></td>
+<td>Retrieve metadata about any mbean matching a wildcard patter from the
+platform’s MBeanServer</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEAN</span></code></td>
+<td>Retrieve metadata about a named mbean from the platform’s MBeanServer</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> using any function, and use of
+any function in <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">FUNCTIONS</span> <span class="pre">IN</span> <span class="pre">KEYSPACE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> using any function in specified
+keyspace and use of any function in keyspace in <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">FUNCTION</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">SELECT</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> using specified function and use
+of the function in <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">ALL</span> <span class="pre">MBEANS</span></code></td>
+<td>Execute operations on any mbean</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEANS</span></code></td>
+<td>Execute operations on any mbean matching a wildcard pattern</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">EXECUTE</span></code></td>
+<td><code class="docutils literal notranslate"><span class="pre">MBEAN</span></code></td>
+<td>Execute operations on named mbean</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="grant-permission">
+<span id="grant-permission-statement"></span><h3>GRANT PERMISSION<a class="headerlink" href="#grant-permission" title="Permalink to this headline">¶</a></h3>
+<p>Granting a permission uses the <code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">PERMISSION</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-grant-permission-statement">grant_permission_statement</strong> ::=  GRANT <a class="reference internal" href="#grammar-token-permissions"><code class="xref docutils literal notranslate"><span class="pre">permissions</span></code></a> ON <a class="reference internal" href="#grammar-token-resource"><code class="xref docutils literal notranslate"><span class="pre">resource</span></code></a> TO <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+<strong id="grammar-token-permissions">permissions               </strong> ::=  ALL [ PERMISSIONS ] | <a class="reference internal" href="#grammar-token-permission"><code class="xref docutils literal notranslate"><span class="pre">permission</span></code></a> [ PERMISSION ]
+<strong id="grammar-token-permission">permission                </strong> ::=  CREATE | ALTER | DROP | SELECT | MODIFY | AUTHORIZE | DESCRIBE | EXECUTE
+<strong id="grammar-token-resource">resource                  </strong> ::=  ALL KEYSPACES
+                               | KEYSPACE <a class="reference internal" href="ddl.html#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a>
+                               | [ TABLE ] <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+                               | ALL ROLES
+                               | ROLE <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+                               | ALL FUNCTIONS [ IN KEYSPACE <a class="reference internal" href="ddl.html#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a> ]
+                               | FUNCTION <a class="reference internal" href="functions.html#grammar-token-function-name"><code class="xref docutils literal notranslate"><span class="pre">function_name</span></code></a> '(' [ <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="types.html#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> )* ] ')'
+                               | ALL MBEANS
+                               | ( MBEAN | MBEANS ) <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">SELECT</span> <span class="k">ON</span> <span class="k">ALL</span> <span class="k">KEYSPACES</span> <span class="k">TO</span> <span class="n">data_reader</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This gives any user with the role <code class="docutils literal notranslate"><span class="pre">data_reader</span></code> permission to execute <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statements on any table across all
+keyspaces:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">MODIFY</span> <span class="k">ON</span> <span class="k">KEYSPACE</span> <span class="n">keyspace1</span> <span class="k">TO</span> <span class="n">data_writer</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This give any user with the role <code class="docutils literal notranslate"><span class="pre">data_writer</span></code> permission to perform <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, <code class="docutils literal notranslate"><span class="pre">DELETE</span></code>
+and <code class="docutils literal notranslate"><span class="pre">TRUNCATE</span></code> queries on all tables in the <code class="docutils literal notranslate"><span class="pre">keyspace1</span></code> keyspace:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">DROP</span> <span class="k">ON</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">table1</span> <span class="k">TO</span> <span class="n">schema_owner</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This gives any user with the <code class="docutils literal notranslate"><span class="pre">schema_owner</span></code> role permissions to <code class="docutils literal notranslate"><span class="pre">DROP</span></code> <code class="docutils literal notranslate"><span class="pre">keyspace1.table1</span></code>:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">EXECUTE</span> <span class="k">ON</span> <span class="k">FUNCTION</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">user_function</span><span class="p">(</span> <span class="nb">int</span> <span class="p">)</span> <span class="k">TO</span> <span class="n">report_writer</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This grants any user with the <code class="docutils literal notranslate"><span class="pre">report_writer</span></code> role permission to execute <code class="docutils literal notranslate"><span class="pre">SELECT</span></code>, <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> queries
+which use the function <code class="docutils literal notranslate"><span class="pre">keyspace1.user_function(</span> <span class="pre">int</span> <span class="pre">)</span></code>:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">GRANT</span> <span class="k">DESCRIBE</span> <span class="k">ON</span> <span class="k">ALL</span> <span class="k">ROLES</span> <span class="k">TO</span> <span class="n">role_admin</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This grants any user with the <code class="docutils literal notranslate"><span class="pre">role_admin</span></code> role permission to view any and all roles in the system with a <code class="docutils literal notranslate"><span class="pre">LIST</span>
+<span class="pre">ROLES</span></code> statement</p>
+<div class="section" id="grant-all">
+<span id="id3"></span><h4>GRANT ALL<a class="headerlink" href="#grant-all" title="Permalink to this headline">¶</a></h4>
+<p>When the <code class="docutils literal notranslate"><span class="pre">GRANT</span> <span class="pre">ALL</span></code> form is used, the appropriate set of permissions is determined automatically based on the target
+resource.</p>
+</div>
+<div class="section" id="automatic-granting">
+<h4>Automatic Granting<a class="headerlink" href="#automatic-granting" title="Permalink to this headline">¶</a></h4>
+<p>When a resource is created, via a <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">KEYSPACE</span></code>, <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code>, <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">FUNCTION</span></code>, <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">AGGREGATE</span></code> or
+<code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">ROLE</span></code> statement, the creator (the role the database user who issues the statement is identified as), is
+automatically granted all applicable permissions on the new resource.</p>
+</div>
+</div>
+<div class="section" id="revoke-permission">
+<span id="revoke-permission-statement"></span><h3>REVOKE PERMISSION<a class="headerlink" href="#revoke-permission" title="Permalink to this headline">¶</a></h3>
+<p>Revoking a permission from a role uses the <code class="docutils literal notranslate"><span class="pre">REVOKE</span> <span class="pre">PERMISSION</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-revoke-permission-statement">revoke_permission_statement</strong> ::=  REVOKE <a class="reference internal" href="#grammar-token-permissions"><code class="xref docutils literal notranslate"><span class="pre">permissions</span></code></a> ON <a class="reference internal" href="#grammar-token-resource"><code class="xref docutils literal notranslate"><span class="pre">resource</span></code></a> FROM <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">REVOKE</span> <span class="k">SELECT</span> <span class="k">ON</span> <span class="k">ALL</span> <span class="k">KEYSPACES</span> <span class="k">FROM</span> <span class="n">data_reader</span><span class="p">;</span>
+<span class="k">REVOKE</span> <span class="k">MODIFY</span> <span class="k">ON</span> <span class="k">KEYSPACE</span> <span class="n">keyspace1</span> <span class="k">FROM</span> <span class="n">data_writer</span><span class="p">;</span>
+<span class="k">REVOKE</span> <span class="k">DROP</span> <span class="k">ON</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">table1</span> <span class="k">FROM</span> <span class="n">schema_owner</span><span class="p">;</span>
+<span class="k">REVOKE</span> <span class="k">EXECUTE</span> <span class="k">ON</span> <span class="k">FUNCTION</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">user_function</span><span class="p">(</span> <span class="nb">int</span> <span class="p">)</span> <span class="k">FROM</span> <span class="n">report_writer</span><span class="p">;</span>
+<span class="k">REVOKE</span> <span class="k">DESCRIBE</span> <span class="k">ON</span> <span class="k">ALL</span> <span class="k">ROLES</span> <span class="k">FROM</span> <span class="n">role_admin</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Because of their function in normal driver operations, certain tables cannot have their <cite>SELECT</cite> permissions
+revoked. The following tables will be available to all authorized users regardless of their assigned role:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="o">*</span> <span class="o">`</span><span class="n">system_schema</span><span class="mf">.</span><span class="k">keyspaces</span><span class="o">`</span>
+<span class="o">*</span> <span class="o">`</span><span class="n">system_schema</span><span class="mf">.</span><span class="n">columns</span><span class="o">`</span>
+<span class="o">*</span> <span class="o">`</span><span class="n">system_schema</span><span class="mf">.</span><span class="n">tables</span><span class="o">`</span>
+<span class="o">*</span> <span class="o">`</span><span class="n">system</span><span class="mf">.</span><span class="n">local</span><span class="o">`</span>
+<span class="o">*</span> <span class="o">`</span><span class="n">system</span><span class="mf">.</span><span class="n">peers</span><span class="o">`</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="list-permissions">
+<span id="list-permissions-statement"></span><h3>LIST PERMISSIONS<a class="headerlink" href="#list-permissions" title="Permalink to this headline">¶</a></h3>
+<p>Listing granted permissions uses the <code class="docutils literal notranslate"><span class="pre">LIST</span> <span class="pre">PERMISSIONS</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-list-permissions-statement">list_permissions_statement</strong> ::=  LIST <a class="reference internal" href="#grammar-token-permissions"><code class="xref docutils literal notranslate"><span class="pre">permissions</span></code></a> [ ON <a class="reference internal" href="#grammar-token-resource"><code class="xref docutils literal notranslate"><span class="pre">resource</span></code></a> ] [ OF <a class="reference internal" href="#grammar-token-role-name"><code class="xref docutils literal notranslate"><span class="pre">role_name</span></code></a> [ NORECURSIVE ] ]
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ALL</span> <span class="k">PERMISSIONS</span> <span class="k">OF</span> <span class="n">alice</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Show all permissions granted to <code class="docutils literal notranslate"><span class="pre">alice</span></code>, including those acquired transitively from any other roles:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">ALL</span> <span class="k">PERMISSIONS</span> <span class="k">ON</span> <span class="n">keyspace1</span><span class="mf">.</span><span class="n">table1</span> <span class="k">OF</span> <span class="n">bob</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Show all permissions on <code class="docutils literal notranslate"><span class="pre">keyspace1.table1</span></code> granted to <code class="docutils literal notranslate"><span class="pre">bob</span></code>, including those acquired transitively from any other
+roles. This also includes any permissions higher up the resource hierarchy which can be applied to <code class="docutils literal notranslate"><span class="pre">keyspace1.table1</span></code>.
+For example, should <code class="docutils literal notranslate"><span class="pre">bob</span></code> have <code class="docutils literal notranslate"><span class="pre">ALTER</span></code> permission on <code class="docutils literal notranslate"><span class="pre">keyspace1</span></code>, that would be included in the results of this
+query. Adding the <code class="docutils literal notranslate"><span class="pre">NORECURSIVE</span></code> switch restricts the results to only those permissions which were directly granted to
+<code class="docutils literal notranslate"><span class="pre">bob</span></code> or one of <code class="docutils literal notranslate"><span class="pre">bob</span></code>’s roles:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">LIST</span> <span class="k">SELECT</span> <span class="k">PERMISSIONS</span> <span class="k">OF</span> <span class="n">carlos</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Show any permissions granted to <code class="docutils literal notranslate"><span class="pre">carlos</span></code> or any of <code class="docutils literal notranslate"><span class="pre">carlos</span></code>’s roles, limited to <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> permissions on any
+resource.</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="functions.html" class="btn btn-default pull-right " role="button" title="Functions" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="mvs.html" class="btn btn-default" role="button" title="Materialized Views" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/triggers.html b/src/doc/4.0-rc1/cql/triggers.html
new file mode 100644
index 0000000..a2dcde9
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/triggers.html
@@ -0,0 +1,156 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Triggers"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Appendices" href="appendices.html"/>
+      <link rel="prev" title="JSON Support" href="json.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="types.html">Data Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Triggers</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#create-trigger">CREATE TRIGGER</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#drop-trigger">DROP TRIGGER</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="triggers">
+<span id="cql-triggers"></span><h1>Triggers<a class="headerlink" href="#triggers" title="Permalink to this headline">¶</a></h1>
+<p>Triggers are identified by a name defined by:</p>
+<pre>
+<strong id="grammar-token-trigger-name">trigger_name</strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a>
+</pre>
+<div class="section" id="create-trigger">
+<span id="create-trigger-statement"></span><h2>CREATE TRIGGER<a class="headerlink" href="#create-trigger" title="Permalink to this headline">¶</a></h2>
+<p>Creating a new trigger uses the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TRIGGER</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-create-trigger-statement">create_trigger_statement</strong> ::=  CREATE TRIGGER [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-trigger-name"><code class="xref docutils literal notranslate"><span class="pre">trigger_name</span></code></a>
+                                  ON <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+                                  USING <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TRIGGER</span> <span class="n">myTrigger</span> <span class="k">ON</span> <span class="n">myTable</span> <span class="k">USING</span> <span class="s1">&#39;org.apache.cassandra.triggers.InvertedIndex&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The actual logic that makes up the trigger can be written in any Java (JVM) language and exists outside the database.
+You place the trigger code in a <code class="docutils literal notranslate"><span class="pre">lib/triggers</span></code> subdirectory of the Cassandra installation directory, it loads during
+cluster startup, and exists on every node that participates in a cluster. The trigger defined on a table fires before a
+requested DML statement occurs, which ensures the atomicity of the transaction.</p>
+</div>
+<div class="section" id="drop-trigger">
+<span id="drop-trigger-statement"></span><h2>DROP TRIGGER<a class="headerlink" href="#drop-trigger" title="Permalink to this headline">¶</a></h2>
+<p>Dropping a trigger uses the <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">TRIGGER</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-trigger-statement">drop_trigger_statement</strong> ::=  DROP TRIGGER [ IF EXISTS ] <a class="reference internal" href="#grammar-token-trigger-name"><code class="xref docutils literal notranslate"><span class="pre">trigger_name</span></code></a> ON <a class="reference internal" href="ddl.html#grammar-token-table-name"><code class="xref docutils literal notranslate"><span class="pre">table_name</span></code></a>
+</pre>
+<p>For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DROP</span> <span class="k">TRIGGER</span> <span class="n">myTrigger</span> <span class="k">ON</span> <span class="n">myTable</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="appendices.html" class="btn btn-default pull-right " role="button" title="Appendices" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="json.html" class="btn btn-default" role="button" title="JSON Support" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/cql/types.html b/src/doc/4.0-rc1/cql/types.html
new file mode 100644
index 0000000..6410cab
--- /dev/null
+++ b/src/doc/4.0-rc1/cql/types.html
@@ -0,0 +1,743 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "The Cassandra Query Language (CQL)"
+
+doc-title: "Data Types"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="The Cassandra Query Language (CQL)" href="index.html"/>
+      <link rel="next" title="Data Definition" href="ddl.html"/>
+      <link rel="prev" title="Definitions" href="definitions.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">The Cassandra Query Language (CQL)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="definitions.html">Definitions</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Data Types</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#native-types">Native Types</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#working-with-timestamps">Working with timestamps</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#working-with-dates">Working with dates</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#working-with-times">Working with times</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#working-with-durations">Working with durations</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#collections">Collections</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tuples">Tuples</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#user-defined-types">User-Defined Types</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#frozen-types">Frozen Types</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#custom-types">Custom Types</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="ddl.html">Data Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dml.html">Data Manipulation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="indexes.html">Secondary Indexes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="mvs.html">Materialized Views</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="functions.html">Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operators.html">Arithmetic Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="json.html">JSON Support</a></li>
+<li class="toctree-l2"><a class="reference internal" href="triggers.html">Triggers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="appendices.html">Appendices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changes.html">Changes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="data-types">
+<span id="id1"></span><h1>Data Types<a class="headerlink" href="#data-types" title="Permalink to this headline">¶</a></h1>
+<p>CQL is a typed language and supports a rich set of data types, including <a class="reference internal" href="#native-types"><span class="std std-ref">native types</span></a>,
+<a class="reference internal" href="#collections"><span class="std std-ref">collection types</span></a>, <a class="reference internal" href="#udts"><span class="std std-ref">user-defined types</span></a>, <a class="reference internal" href="#tuples"><span class="std std-ref">tuple types</span></a> and <a class="reference internal" href="#custom-types"><span class="std std-ref">custom
+types</span></a>:</p>
+<pre>
+<strong id="grammar-token-cql-type">cql_type</strong> ::=  <a class="reference internal" href="#grammar-token-native-type"><code class="xref docutils literal notranslate"><span class="pre">native_type</span></code></a> | <a class="reference internal" href="#grammar-token-collection-type"><code class="xref docutils literal notranslate"><span class="pre">collection_type</span></code></a> | <a class="reference internal" href="#grammar-token-user-defined-type"><code class="xref docutils literal notranslate"><span class="pre">user_defined_type</span></code></a> | <a class="reference internal" href="#grammar-token-tuple-type"><code class="xref docutils literal notranslate"><span class="pre">tuple_type</span></code></a> | <a class="reference internal" href="#grammar-token-custom-type"><code class="xref docutils literal notranslate"><span class="pre">custom_type</span></code></a>
+</pre>
+<div class="section" id="native-types">
+<span id="id2"></span><h2>Native Types<a class="headerlink" href="#native-types" title="Permalink to this headline">¶</a></h2>
+<p>The native types supported by CQL are:</p>
+<pre>
+<strong id="grammar-token-native-type">native_type</strong> ::=  ASCII
+                 | BIGINT
+                 | BLOB
+                 | BOOLEAN
+                 | COUNTER
+                 | DATE
+                 | DECIMAL
+                 | DOUBLE
+                 | DURATION
+                 | FLOAT
+                 | INET
+                 | INT
+                 | SMALLINT
+                 | TEXT
+                 | TIME
+                 | TIMESTAMP
+                 | TIMEUUID
+                 | TINYINT
+                 | UUID
+                 | VARCHAR
+                 | VARINT
+</pre>
+<p>The following table gives additional informations on the native data types, and on which kind of <a class="reference internal" href="definitions.html#constants"><span class="std std-ref">constants</span></a> each type supports:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="13%" />
+<col width="18%" />
+<col width="69%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">type</th>
+<th class="head">constants supported</th>
+<th class="head">description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">ascii</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>ASCII character string</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">bigint</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a></td>
+<td>64-bit signed long</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">blob</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-blob"><code class="xref std std-token docutils literal notranslate"><span class="pre">blob</span></code></a></td>
+<td>Arbitrary bytes (no validation)</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">boolean</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-boolean"><code class="xref std std-token docutils literal notranslate"><span class="pre">boolean</span></code></a></td>
+<td>Either <code class="docutils literal notranslate"><span class="pre">true</span></code> or <code class="docutils literal notranslate"><span class="pre">false</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">counter</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a></td>
+<td>Counter column (64-bit signed value). See <a class="reference internal" href="#counters"><span class="std std-ref">Counters</span></a> for details</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">date</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>,
+<a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>A date (with no corresponding time value). See <a class="reference internal" href="#dates"><span class="std std-ref">Working with dates</span></a> below for details</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">decimal</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>,
+<a class="reference internal" href="definitions.html#grammar-token-float"><code class="xref std std-token docutils literal notranslate"><span class="pre">float</span></code></a></td>
+<td>Variable-precision decimal</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">double</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>
+<a class="reference internal" href="definitions.html#grammar-token-float"><code class="xref std std-token docutils literal notranslate"><span class="pre">float</span></code></a></td>
+<td>64-bit IEEE-754 floating point</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">duration</span></code></td>
+<td><code class="xref std std-token docutils literal notranslate"><span class="pre">duration</span></code>,</td>
+<td>A duration with nanosecond precision. See <a class="reference internal" href="#durations"><span class="std std-ref">Working with durations</span></a> below for details</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">float</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>,
+<a class="reference internal" href="definitions.html#grammar-token-float"><code class="xref std std-token docutils literal notranslate"><span class="pre">float</span></code></a></td>
+<td>32-bit IEEE-754 floating point</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">inet</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>An IP address, either IPv4 (4 bytes long) or IPv6 (16 bytes long). Note that
+there is no <code class="docutils literal notranslate"><span class="pre">inet</span></code> constant, IP address should be input as strings</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">int</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a></td>
+<td>32-bit signed int</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">smallint</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a></td>
+<td>16-bit signed int</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">text</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>UTF8 encoded string</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">time</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>,
+<a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>A time (with no corresponding date value) with nanosecond precision. See
+<a class="reference internal" href="#times"><span class="std std-ref">Working with times</span></a> below for details</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">timestamp</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>,
+<a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>A timestamp (date and time) with millisecond precision. See <a class="reference internal" href="#timestamps"><span class="std std-ref">Working with timestamps</span></a>
+below for details</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">timeuuid</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-uuid"><code class="xref std std-token docutils literal notranslate"><span class="pre">uuid</span></code></a></td>
+<td>Version 1 <a class="reference external" href="https://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a>, generally used as a “conflict-free” timestamp. Also see
+<a class="reference internal" href="functions.html#timeuuid-functions"><span class="std std-ref">Timeuuid functions</span></a></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">tinyint</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a></td>
+<td>8-bit signed int</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">uuid</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-uuid"><code class="xref std std-token docutils literal notranslate"><span class="pre">uuid</span></code></a></td>
+<td>A <a class="reference external" href="https://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a> (of any version)</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">varchar</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a></td>
+<td>UTF8 encoded string</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">varint</span></code></td>
+<td><a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a></td>
+<td>Arbitrary-precision integer</td>
+</tr>
+</tbody>
+</table>
+<div class="section" id="counters">
+<span id="id3"></span><h3>Counters<a class="headerlink" href="#counters" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">counter</span></code> type is used to define <em>counter columns</em>. A counter column is a column whose value is a 64-bit signed
+integer and on which 2 operations are supported: incrementing and decrementing (see the <a class="reference internal" href="dml.html#update-statement"><span class="std std-ref">UPDATE statement</span></a> for syntax). Note that the value of a counter cannot be set: a counter does not exist until first
+incremented/decremented, and that first increment/decrement is made as if the prior value was 0.</p>
+<p id="counter-limitations">Counters have a number of important limitations:</p>
+<ul class="simple">
+<li>They cannot be used for columns part of the <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> of a table.</li>
+<li>A table that contains a counter can only contain counters. In other words, either all the columns of a table outside
+the <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code> have the <code class="docutils literal notranslate"><span class="pre">counter</span></code> type, or none of them have it.</li>
+<li>Counters do not support <span class="xref std std-ref">expiration</span>.</li>
+<li>The deletion of counters is supported, but is only guaranteed to work the first time you delete a counter. In other
+words, you should not re-update a counter that you have deleted (if you do, proper behavior is not guaranteed).</li>
+<li>Counter updates are, by nature, not <a class="reference external" href="https://en.wikipedia.org/wiki/Idempotence">idemptotent</a>. An important
+consequence is that if a counter update fails unexpectedly (timeout or loss of connection to the coordinator node),
+the client has no way to know if the update has been applied or not. In particular, replaying the update may or may
+not lead to an over count.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="working-with-timestamps">
+<span id="timestamps"></span><h2>Working with timestamps<a class="headerlink" href="#working-with-timestamps" title="Permalink to this headline">¶</a></h2>
+<p>Values of the <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> type are encoded as 64-bit signed integers representing a number of milliseconds since the
+standard base time known as <a class="reference external" href="https://en.wikipedia.org/wiki/Unix_time">the epoch</a>: January 1 1970 at 00:00:00 GMT.</p>
+<p>Timestamps can be input in CQL either using their value as an <a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a>, or using a <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a> that
+represents an <a class="reference external" href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> date. For instance, all of the values below are
+valid <code class="docutils literal notranslate"><span class="pre">timestamp</span></code> values for  Mar 2, 2011, at 04:05:00 AM, GMT:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">1299038700000</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'2011-02-03</span> <span class="pre">04:05+0000'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'2011-02-03</span> <span class="pre">04:05:00+0000'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'2011-02-03</span> <span class="pre">04:05:00.000+0000'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'2011-02-03T04:05+0000'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'2011-02-03T04:05:00+0000'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'2011-02-03T04:05:00.000+0000'</span></code></li>
+</ul>
+<p>The <code class="docutils literal notranslate"><span class="pre">+0000</span></code> above is an RFC 822 4-digit time zone specification; <code class="docutils literal notranslate"><span class="pre">+0000</span></code> refers to GMT. US Pacific Standard Time is
+<code class="docutils literal notranslate"><span class="pre">-0800</span></code>. The time zone may be omitted if desired (<code class="docutils literal notranslate"><span class="pre">'2011-02-03</span> <span class="pre">04:05:00'</span></code>), and if so, the date will be interpreted
+as being in the time zone under which the coordinating Cassandra node is configured. There are however difficulties
+inherent in relying on the time zone configuration being as expected, so it is recommended that the time zone always be
+specified for timestamps when feasible.</p>
+<p>The time of day may also be omitted (<code class="docutils literal notranslate"><span class="pre">'2011-02-03'</span></code> or <code class="docutils literal notranslate"><span class="pre">'2011-02-03+0000'</span></code>), in which case the time of day will
+default to 00:00:00 in the specified or default time zone. However, if only the date part is relevant, consider using
+the <a class="reference internal" href="#dates"><span class="std std-ref">date</span></a> type.</p>
+<p>Note: while Cassandra will parse and accept time literals with a greater number of digits, the value stored will be truncated to
+millisecond precision.</p>
+</div>
+<div class="section" id="working-with-dates">
+<span id="dates"></span><h2>Working with dates<a class="headerlink" href="#working-with-dates" title="Permalink to this headline">¶</a></h2>
+<p>Values of the <code class="docutils literal notranslate"><span class="pre">date</span></code> type are encoded as 32-bit unsigned integers representing a number of days with “the epoch” at
+the center of the range (2^31). Epoch is January 1st, 1970</p>
+<p>As for <a class="reference internal" href="#timestamps"><span class="std std-ref">timestamp</span></a>, a date can be input either as an <a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a> or using a date
+<a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a>. In the later case, the format should be <code class="docutils literal notranslate"><span class="pre">yyyy-mm-dd</span></code> (so <code class="docutils literal notranslate"><span class="pre">'2011-02-03'</span></code> for instance).</p>
+</div>
+<div class="section" id="working-with-times">
+<span id="times"></span><h2>Working with times<a class="headerlink" href="#working-with-times" title="Permalink to this headline">¶</a></h2>
+<p>Values of the <code class="docutils literal notranslate"><span class="pre">time</span></code> type are encoded as 64-bit signed integers representing the number of nanoseconds since midnight.</p>
+<p>As for <a class="reference internal" href="#timestamps"><span class="std std-ref">timestamp</span></a>, a time can be input either as an <a class="reference internal" href="definitions.html#grammar-token-integer"><code class="xref std std-token docutils literal notranslate"><span class="pre">integer</span></code></a> or using a <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a>
+representing the time. In the later case, the format should be <code class="docutils literal notranslate"><span class="pre">hh:mm:ss[.fffffffff]</span></code> (where the sub-second precision
+is optional and if provided, can be less than the nanosecond). So for instance, the following are valid inputs for a
+time:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">'08:12:54'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'08:12:54.123'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'08:12:54.123456'</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">'08:12:54.123456789'</span></code></li>
+</ul>
+</div>
+<div class="section" id="working-with-durations">
+<span id="durations"></span><h2>Working with durations<a class="headerlink" href="#working-with-durations" title="Permalink to this headline">¶</a></h2>
+<p>Values of the <code class="docutils literal notranslate"><span class="pre">duration</span></code> type are encoded as 3 signed integer of variable lengths. The first integer represents the
+number of months, the second the number of days and the third the number of nanoseconds. This is due to the fact that
+the number of days in a month can change, and a day can have 23 or 25 hours depending on the daylight saving.
+Internally, the number of months and days are decoded as 32 bits integers whereas the number of nanoseconds is decoded
+as a 64 bits integer.</p>
+<p>A duration can be input as:</p>
+<blockquote>
+<div><ol class="arabic">
+<li><p class="first"><code class="docutils literal notranslate"><span class="pre">(quantity</span> <span class="pre">unit)+</span></code> like <code class="docutils literal notranslate"><span class="pre">12h30m</span></code> where the unit can be:</p>
+<blockquote>
+<div><ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">y</span></code>: years (12 months)</li>
+<li><code class="docutils literal notranslate"><span class="pre">mo</span></code>: months (1 month)</li>
+<li><code class="docutils literal notranslate"><span class="pre">w</span></code>: weeks (7 days)</li>
+<li><code class="docutils literal notranslate"><span class="pre">d</span></code>: days (1 day)</li>
+<li><code class="docutils literal notranslate"><span class="pre">h</span></code>: hours (3,600,000,000,000 nanoseconds)</li>
+<li><code class="docutils literal notranslate"><span class="pre">m</span></code>: minutes (60,000,000,000 nanoseconds)</li>
+<li><code class="docutils literal notranslate"><span class="pre">s</span></code>: seconds (1,000,000,000 nanoseconds)</li>
+<li><code class="docutils literal notranslate"><span class="pre">ms</span></code>: milliseconds (1,000,000 nanoseconds)</li>
+<li><code class="docutils literal notranslate"><span class="pre">us</span></code> or <code class="docutils literal notranslate"><span class="pre">µs</span></code> : microseconds (1000 nanoseconds)</li>
+<li><code class="docutils literal notranslate"><span class="pre">ns</span></code>: nanoseconds (1 nanosecond)</li>
+</ul>
+</div></blockquote>
+</li>
+<li><p class="first">ISO 8601 format:  <code class="docutils literal notranslate"><span class="pre">P[n]Y[n]M[n]DT[n]H[n]M[n]S</span> <span class="pre">or</span> <span class="pre">P[n]W</span></code></p>
+</li>
+<li><p class="first">ISO 8601 alternative format: <code class="docutils literal notranslate"><span class="pre">P[YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]</span></code></p>
+</li>
+</ol>
+</div></blockquote>
+<p>For example:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">RiderResults</span> <span class="p">(</span><span class="n">rider</span><span class="p">,</span> <span class="n">race</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;Christopher Froome&#39;</span><span class="p">,</span> <span class="s1">&#39;Tour de France&#39;</span><span class="p">,</span> <span class="mf">89</span><span class="n">h4m48s</span><span class="p">);</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">RiderResults</span> <span class="p">(</span><span class="n">rider</span><span class="p">,</span> <span class="n">race</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;BARDET Romain&#39;</span><span class="p">,</span> <span class="s1">&#39;Tour de France&#39;</span><span class="p">,</span> <span class="n">PT89H8M53S</span><span class="p">);</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">RiderResults</span> <span class="p">(</span><span class="n">rider</span><span class="p">,</span> <span class="n">race</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;QUINTANA Nairo&#39;</span><span class="p">,</span> <span class="s1">&#39;Tour de France&#39;</span><span class="p">,</span> <span class="n">P0000</span><span class="o">-</span><span class="mf">00</span><span class="o">-</span><span class="mf">00</span><span class="n">T89</span><span class="p">:</span><span class="mf">09</span><span class="p">:</span><span class="mf">09</span><span class="p">);</span>
+</pre></div>
+</div>
+<p id="duration-limitation">Duration columns cannot be used in a table’s <code class="docutils literal notranslate"><span class="pre">PRIMARY</span> <span class="pre">KEY</span></code>. This limitation is due to the fact that
+durations cannot be ordered. It is effectively not possible to know if <code class="docutils literal notranslate"><span class="pre">1mo</span></code> is greater than <code class="docutils literal notranslate"><span class="pre">29d</span></code> without a date
+context.</p>
+<p>A <code class="docutils literal notranslate"><span class="pre">1d</span></code> duration is not equals to a <code class="docutils literal notranslate"><span class="pre">24h</span></code> one as the duration type has been created to be able to support daylight
+saving.</p>
+</div>
+<div class="section" id="collections">
+<span id="id4"></span><h2>Collections<a class="headerlink" href="#collections" title="Permalink to this headline">¶</a></h2>
+<p>CQL supports 3 kind of collections: <a class="reference internal" href="#maps"><span class="std std-ref">Maps</span></a>, <a class="reference internal" href="#sets"><span class="std std-ref">Sets</span></a> and <a class="reference internal" href="#lists"><span class="std std-ref">Lists</span></a>. The types of those collections is defined
+by:</p>
+<pre>
+<strong id="grammar-token-collection-type">collection_type</strong> ::=  MAP '&lt;' <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ',' <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> '&gt;'
+                     | SET '&lt;' <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> '&gt;'
+                     | LIST '&lt;' <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> '&gt;'
+</pre>
+<p>and their values can be inputd using collection literals:</p>
+<pre>
+<strong id="grammar-token-collection-literal">collection_literal</strong> ::=  <a class="reference internal" href="#grammar-token-map-literal"><code class="xref docutils literal notranslate"><span class="pre">map_literal</span></code></a> | <a class="reference internal" href="#grammar-token-set-literal"><code class="xref docutils literal notranslate"><span class="pre">set_literal</span></code></a> | <a class="reference internal" href="#grammar-token-list-literal"><code class="xref docutils literal notranslate"><span class="pre">list_literal</span></code></a>
+<strong id="grammar-token-map-literal">map_literal       </strong> ::=  '{' [ <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> ':' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> (',' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> : <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>)* ] '}'
+<strong id="grammar-token-set-literal">set_literal       </strong> ::=  '{' [ <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> (',' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>)* ] '}'
+<strong id="grammar-token-list-literal">list_literal      </strong> ::=  '[' [ <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> (',' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a>)* ] ']'
+</pre>
+<p>Note however that neither <a class="reference internal" href="definitions.html#grammar-token-bind-marker"><code class="xref std std-token docutils literal notranslate"><span class="pre">bind_marker</span></code></a> nor <code class="docutils literal notranslate"><span class="pre">NULL</span></code> are supported inside collection literals.</p>
+<div class="section" id="noteworthy-characteristics">
+<h3>Noteworthy characteristics<a class="headerlink" href="#noteworthy-characteristics" title="Permalink to this headline">¶</a></h3>
+<p>Collections are meant for storing/denormalizing relatively small amount of data. They work well for things like “the
+phone numbers of a given user”, “labels applied to an email”, etc. But when items are expected to grow unbounded (“all
+messages sent by a user”, “events registered by a sensor”…), then collections are not appropriate and a specific table
+(with clustering columns) should be used. Concretely, (non-frozen) collections have the following noteworthy
+characteristics and limitations:</p>
+<ul class="simple">
+<li>Individual collections are not indexed internally. Which means that even to access a single element of a collection,
+the while collection has to be read (and reading one is not paged internally).</li>
+<li>While insertion operations on sets and maps never incur a read-before-write internally, some operations on lists do.
+Further, some lists operations are not idempotent by nature (see the section on <a class="reference internal" href="#lists"><span class="std std-ref">lists</span></a> below for
+details), making their retry in case of timeout problematic. It is thus advised to prefer sets over lists when
+possible.</li>
+</ul>
+<p>Please note that while some of those limitations may or may not be removed/improved upon in the future, it is a
+anti-pattern to use a (single) collection to store large amounts of data.</p>
+</div>
+<div class="section" id="maps">
+<span id="id5"></span><h3>Maps<a class="headerlink" href="#maps" title="Permalink to this headline">¶</a></h3>
+<p>A <code class="docutils literal notranslate"><span class="pre">map</span></code> is a (sorted) set of key-value pairs, where keys are unique and the map is sorted by its keys. You can define
+and insert a map with:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="k">users</span> <span class="p">(</span>
+    <span class="n">id</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">name</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">favs</span> <span class="k">map</span><span class="o">&lt;</span><span class="nb">text</span><span class="p">,</span> <span class="nb">text</span><span class="o">&gt;</span> <span class="c1">// A map of text keys, and text values</span>
+<span class="p">);</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="k">users</span> <span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">favs</span><span class="p">)</span>
+           <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;jsmith&#39;</span><span class="p">,</span> <span class="s1">&#39;John Smith&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="s1">&#39;fruit&#39;</span> <span class="p">:</span> <span class="s1">&#39;Apple&#39;</span><span class="p">,</span> <span class="s1">&#39;band&#39;</span> <span class="p">:</span> <span class="s1">&#39;Beatles&#39;</span> <span class="p">});</span>
+
+<span class="c1">// Replace the existing map entirely.</span>
+<span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="n">favs</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;fruit&#39;</span> <span class="p">:</span> <span class="s1">&#39;Banana&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Further, maps support:</p>
+<ul>
+<li><p class="first">Updating or inserting one or more elements:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="n">favs</span><span class="p">[</span><span class="s1">&#39;author&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;Ed Poe&#39;</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
+<span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="n">favs</span> <span class="o">=</span> <span class="n">favs</span> <span class="o">+</span> <span class="p">{</span> <span class="s1">&#39;movie&#39;</span> <span class="p">:</span> <span class="s1">&#39;Cassablanca&#39;</span><span class="p">,</span> <span class="s1">&#39;band&#39;</span> <span class="p">:</span> <span class="s1">&#39;ZZ Top&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">Removing one or more element (if an element doesn’t exist, removing it is a no-op but no error is thrown):</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DELETE</span> <span class="n">favs</span><span class="p">[</span><span class="s1">&#39;author&#39;</span><span class="p">]</span> <span class="k">FROM</span> <span class="k">users</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
+<span class="k">UPDATE</span> <span class="k">users</span> <span class="k">SET</span> <span class="n">favs</span> <span class="o">=</span> <span class="n">favs</span> <span class="o">-</span> <span class="p">{</span> <span class="s1">&#39;movie&#39;</span><span class="p">,</span> <span class="s1">&#39;band&#39;</span><span class="p">}</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Note that for removing multiple elements in a <code class="docutils literal notranslate"><span class="pre">map</span></code>, you remove from it a <code class="docutils literal notranslate"><span class="pre">set</span></code> of keys.</p>
+</li>
+</ul>
+<p>Lastly, TTLs are allowed for both <code class="docutils literal notranslate"><span class="pre">INSERT</span></code> and <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code>, but in both case the TTL set only apply to the newly
+inserted/updated elements. In other words:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="k">users</span> <span class="k">USING</span> <span class="k">TTL</span> <span class="mf">10</span> <span class="k">SET</span> <span class="n">favs</span><span class="p">[</span><span class="s1">&#39;color&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;green&#39;</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>will only apply the TTL to the <code class="docutils literal notranslate"><span class="pre">{</span> <span class="pre">'color'</span> <span class="pre">:</span> <span class="pre">'green'</span> <span class="pre">}</span></code> record, the rest of the map remaining unaffected.</p>
+</div>
+<div class="section" id="sets">
+<span id="id6"></span><h3>Sets<a class="headerlink" href="#sets" title="Permalink to this headline">¶</a></h3>
+<p>A <code class="docutils literal notranslate"><span class="pre">set</span></code> is a (sorted) collection of unique values. You can define and insert a map with:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">images</span> <span class="p">(</span>
+    <span class="n">name</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">owner</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">tags</span> <span class="k">set</span><span class="o">&lt;</span><span class="nb">text</span><span class="o">&gt;</span> <span class="c1">// A set of text values</span>
+<span class="p">);</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">images</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">owner</span><span class="p">,</span> <span class="n">tags</span><span class="p">)</span>
+            <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;cat.jpg&#39;</span><span class="p">,</span> <span class="s1">&#39;jsmith&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="s1">&#39;pet&#39;</span><span class="p">,</span> <span class="s1">&#39;cute&#39;</span> <span class="p">});</span>
+
+<span class="c1">// Replace the existing set entirely</span>
+<span class="k">UPDATE</span> <span class="n">images</span> <span class="k">SET</span> <span class="n">tags</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;kitten&#39;</span><span class="p">,</span> <span class="s1">&#39;cat&#39;</span><span class="p">,</span> <span class="s1">&#39;lol&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">name</span> <span class="o">=</span> <span class="s1">&#39;cat.jpg&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Further, sets support:</p>
+<ul>
+<li><p class="first">Adding one or multiple elements (as this is a set, inserting an already existing element is a no-op):</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">images</span> <span class="k">SET</span> <span class="n">tags</span> <span class="o">=</span> <span class="n">tags</span> <span class="o">+</span> <span class="p">{</span> <span class="s1">&#39;gray&#39;</span><span class="p">,</span> <span class="s1">&#39;cuddly&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">name</span> <span class="o">=</span> <span class="s1">&#39;cat.jpg&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">Removing one or multiple elements (if an element doesn’t exist, removing it is a no-op but no error is thrown):</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">images</span> <span class="k">SET</span> <span class="n">tags</span> <span class="o">=</span> <span class="n">tags</span> <span class="o">-</span> <span class="p">{</span> <span class="s1">&#39;cat&#39;</span> <span class="p">}</span> <span class="k">WHERE</span> <span class="n">name</span> <span class="o">=</span> <span class="s1">&#39;cat.jpg&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+</ul>
+<p>Lastly, as for <a class="reference internal" href="#maps"><span class="std std-ref">maps</span></a>, TTLs if used only apply to the newly inserted values.</p>
+</div>
+<div class="section" id="lists">
+<span id="id7"></span><h3>Lists<a class="headerlink" href="#lists" title="Permalink to this headline">¶</a></h3>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">As mentioned above and further discussed at the end of this section, lists have limitations and specific
+performance considerations that you should take into account before using them. In general, if you can use a
+<a class="reference internal" href="#sets"><span class="std std-ref">set</span></a> instead of list, always prefer a set.</p>
+</div>
+<p>A <code class="docutils literal notranslate"><span class="pre">list</span></code> is a (sorted) collection of non-unique values where elements are ordered by there position in the list. You
+can define and insert a list with:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">plays</span> <span class="p">(</span>
+    <span class="n">id</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">game</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">players</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">scores</span> <span class="k">list</span><span class="o">&lt;</span><span class="nb">int</span><span class="o">&gt;</span> <span class="c1">// A list of integers</span>
+<span class="p">)</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">plays</span> <span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">game</span><span class="p">,</span> <span class="n">players</span><span class="p">,</span> <span class="n">scores</span><span class="p">)</span>
+           <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;123-afde&#39;</span><span class="p">,</span> <span class="s1">&#39;quake&#39;</span><span class="p">,</span> <span class="mf">3</span><span class="p">,</span> <span class="p">[</span><span class="mf">17</span><span class="p">,</span> <span class="mf">4</span><span class="p">,</span> <span class="mf">2</span><span class="p">]);</span>
+
+<span class="c1">// Replace the existing list entirely</span>
+<span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">scores</span> <span class="o">=</span> <span class="p">[</span> <span class="mf">3</span><span class="p">,</span> <span class="mf">9</span><span class="p">,</span> <span class="mf">4</span><span class="p">]</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Further, lists support:</p>
+<ul>
+<li><p class="first">Appending and prepending values to a list:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">players</span> <span class="o">=</span> <span class="mf">5</span><span class="p">,</span> <span class="n">scores</span> <span class="o">=</span> <span class="n">scores</span> <span class="o">+</span> <span class="p">[</span> <span class="mf">14</span><span class="p">,</span> <span class="mf">21</span> <span class="p">]</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
+<span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">players</span> <span class="o">=</span> <span class="mf">6</span><span class="p">,</span> <span class="n">scores</span> <span class="o">=</span> <span class="p">[</span> <span class="mf">3</span> <span class="p">]</span> <span class="o">+</span> <span class="n">scores</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">Setting the value at a particular position in the list. This imply that the list has a pre-existing element for that
+position or an error will be thrown that the list is too small:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">scores</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span> <span class="o">=</span> <span class="mf">7</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">Removing an element by its position in the list. This imply that the list has a pre-existing element for that position
+or an error will be thrown that the list is too small. Further, as the operation removes an element from the list, the
+list size will be diminished by 1, shifting the position of all the elements following the one deleted:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">DELETE</span> <span class="n">scores</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span> <span class="k">FROM</span> <span class="n">plays</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">Deleting <em>all</em> the occurrences of particular values in the list (if a particular element doesn’t occur at all in the
+list, it is simply ignored and no error is thrown):</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">plays</span> <span class="k">SET</span> <span class="n">scores</span> <span class="o">=</span> <span class="n">scores</span> <span class="o">-</span> <span class="p">[</span> <span class="mf">12</span><span class="p">,</span> <span class="mf">21</span> <span class="p">]</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="s1">&#39;123-afde&#39;</span><span class="p">;</span>
+</pre></div>
+</div>
+</li>
+</ul>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">The append and prepend operations are not idempotent by nature. So in particular, if one of these operation
+timeout, then retrying the operation is not safe and it may (or may not) lead to appending/prepending the value
+twice.</p>
+</div>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">Setting and removing an element by position and removing occurences of particular values incur an internal
+<em>read-before-write</em>. They will thus run more slowly and take more ressources than usual updates (with the exclusion
+of conditional write that have their own cost).</p>
+</div>
+<p>Lastly, as for <a class="reference internal" href="#maps"><span class="std std-ref">maps</span></a>, TTLs when used only apply to the newly inserted values.</p>
+</div>
+</div>
+<div class="section" id="tuples">
+<span id="id8"></span><h2>Tuples<a class="headerlink" href="#tuples" title="Permalink to this headline">¶</a></h2>
+<p>A tuple is a fixed-length set of values (fields) where each can be of a different data type. Tuple types and tuple
+literals are defined by:</p>
+<pre>
+<strong id="grammar-token-tuple-type">tuple_type   </strong> ::=  TUPLE '&lt;' <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a> )* '&gt;'
+<strong id="grammar-token-tuple-literal">tuple_literal</strong> ::=  '(' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> ( ',' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> )* ')'
+</pre>
+<p>and can be used thusly:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">contacts</span> <span class="p">(</span>
+    <span class="k">user</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">phones</span> <span class="k">tuple</span><span class="o">&lt;</span><span class="nb">text</span><span class="p">,</span> <span class="nb">text</span><span class="o">&gt;</span><span class="p">,</span>
+<span class="p">)</span>
+
+<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">contacts</span> <span class="p">(</span><span class="k">user</span><span class="p">,</span> <span class="n">phones</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;John Doe&#39;</span><span class="p">,</span> <span class="p">(</span><span class="s1">&#39;home&#39;</span><span class="p">,</span> <span class="s1">&#39;(555) 555-1234&#39;</span><span class="p">));</span>
+</pre></div>
+</div>
+<p>Unlike other “composed” types (collections and UDT), a tuple is always <a class="reference internal" href="#frozen"><span class="std std-ref">frozen</span></a>. It is not possible to
+update only some elements of a tuple (without updating the whole tuple). A tuple literal must have the same number of
+items as its declaring type (some of those values can be null but they must be explicitly declared).</p>
+</div>
+<div class="section" id="user-defined-types">
+<span id="udts"></span><h2>User-Defined Types<a class="headerlink" href="#user-defined-types" title="Permalink to this headline">¶</a></h2>
+<p>A User Defined Type (UDT) is a set data fields where each field is named and typed. UDTs allow to store related
+information together within one colum. UDTs can be created, modified and removed using token
+<a class="reference internal" href="#grammar-token-create-type-statement"><code class="xref std std-token docutils literal notranslate"><span class="pre">create_type_statement</span></code></a>, <a class="reference internal" href="#grammar-token-alter-type-statement"><code class="xref std std-token docutils literal notranslate"><span class="pre">alter_type_statement</span></code></a> and <a class="reference internal" href="#grammar-token-drop-type-statement"><code class="xref std std-token docutils literal notranslate"><span class="pre">drop_type_statement</span></code></a> described below. But
+once created, a UDT is simply referred to by its name:</p>
+<pre>
+<strong id="grammar-token-user-defined-type">user_defined_type</strong> ::=  <a class="reference internal" href="#grammar-token-udt-name"><code class="xref docutils literal notranslate"><span class="pre">udt_name</span></code></a>
+<strong id="grammar-token-udt-name">udt_name         </strong> ::=  [ <a class="reference internal" href="ddl.html#grammar-token-keyspace-name"><code class="xref docutils literal notranslate"><span class="pre">keyspace_name</span></code></a> '.' ] <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a>
+</pre>
+<div class="section" id="creating-a-udt">
+<h3>Creating a UDT<a class="headerlink" href="#creating-a-udt" title="Permalink to this headline">¶</a></h3>
+<p>Creating a new user-defined type is done using a <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TYPE</span></code> statement defined by:</p>
+<pre>
+<strong id="grammar-token-create-type-statement">create_type_statement</strong> ::=  CREATE TYPE [ IF NOT EXISTS ] <a class="reference internal" href="#grammar-token-udt-name"><code class="xref docutils literal notranslate"><span class="pre">udt_name</span></code></a>
+                               '(' <a class="reference internal" href="#grammar-token-field-definition"><code class="xref docutils literal notranslate"><span class="pre">field_definition</span></code></a> ( ',' <a class="reference internal" href="#grammar-token-field-definition"><code class="xref docutils literal notranslate"><span class="pre">field_definition</span></code></a> )* ')'
+<strong id="grammar-token-field-definition">field_definition     </strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> <a class="reference internal" href="#grammar-token-cql-type"><code class="xref docutils literal notranslate"><span class="pre">cql_type</span></code></a>
+</pre>
+<p>A UDT has a name (used to declared columns of that type) and is a set of named and typed fields. Fields name can be any
+type, including collections or other UDT. For instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">phone</span> <span class="p">(</span>
+    <span class="n">country_code</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">number</span> <span class="nb">text</span><span class="p">,</span>
+<span class="p">)</span>
+
+<span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">address</span> <span class="p">(</span>
+    <span class="n">street</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">city</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">zip</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">phones</span> <span class="k">map</span><span class="o">&lt;</span><span class="nb">text</span><span class="p">,</span> <span class="n">phone</span><span class="o">&gt;</span>
+<span class="p">)</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="k">user</span> <span class="p">(</span>
+    <span class="n">name</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">addresses</span> <span class="k">map</span><span class="o">&lt;</span><span class="nb">text</span><span class="p">,</span> <span class="k">frozen</span><span class="o">&lt;</span><span class="n">address</span><span class="o">&gt;&gt;</span>
+<span class="p">)</span>
+</pre></div>
+</div>
+<p>Note that:</p>
+<ul class="simple">
+<li>Attempting to create an already existing type will result in an error unless the <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">NOT</span> <span class="pre">EXISTS</span></code> option is used. If
+it is used, the statement will be a no-op if the type already exists.</li>
+<li>A type is intrinsically bound to the keyspace in which it is created, and can only be used in that keyspace. At
+creation, if the type name is prefixed by a keyspace name, it is created in that keyspace. Otherwise, it is created in
+the current keyspace.</li>
+<li>As of Cassandra 3.7, UDT have to be frozen in most cases, hence the <code class="docutils literal notranslate"><span class="pre">frozen&lt;address&gt;</span></code> in the table definition
+above. Please see the section on <a class="reference internal" href="#frozen"><span class="std std-ref">frozen</span></a> for more details.</li>
+</ul>
+</div>
+<div class="section" id="udt-literals">
+<h3>UDT literals<a class="headerlink" href="#udt-literals" title="Permalink to this headline">¶</a></h3>
+<p>Once a used-defined type has been created, value can be input using a UDT literal:</p>
+<pre>
+<strong id="grammar-token-udt-literal">udt_literal</strong> ::=  '{' <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> ':' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> ( ',' <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> ':' <a class="reference internal" href="definitions.html#grammar-token-term"><code class="xref docutils literal notranslate"><span class="pre">term</span></code></a> )* '}'
+</pre>
+<p>In other words, a UDT literal is like a <a class="reference internal" href="#maps"><span class="std std-ref">map</span></a> literal but its keys are the names of the fields of the type.
+For instance, one could insert into the table define in the previous section using:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">INSERT</span> <span class="k">INTO</span> <span class="k">user</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">addresses</span><span class="p">)</span>
+          <span class="k">VALUES</span> <span class="p">(</span><span class="s1">&#39;z3 Pr3z1den7&#39;</span><span class="p">,</span> <span class="p">{</span>
+              <span class="s1">&#39;home&#39;</span> <span class="p">:</span> <span class="p">{</span>
+                  <span class="n">street</span><span class="p">:</span> <span class="s1">&#39;1600 Pennsylvania Ave NW&#39;</span><span class="p">,</span>
+                  <span class="n">city</span><span class="p">:</span> <span class="s1">&#39;Washington&#39;</span><span class="p">,</span>
+                  <span class="n">zip</span><span class="p">:</span> <span class="s1">&#39;20500&#39;</span><span class="p">,</span>
+                  <span class="n">phones</span><span class="p">:</span> <span class="p">{</span> <span class="s1">&#39;cell&#39;</span> <span class="p">:</span> <span class="p">{</span> <span class="n">country_code</span><span class="p">:</span> <span class="mf">1</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="s1">&#39;202 456-1111&#39;</span> <span class="p">},</span>
+                            <span class="s1">&#39;landline&#39;</span> <span class="p">:</span> <span class="p">{</span> <span class="n">country_code</span><span class="p">:</span> <span class="mf">1</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="s1">&#39;...&#39;</span> <span class="p">}</span> <span class="p">}</span>
+              <span class="p">},</span>
+              <span class="s1">&#39;work&#39;</span> <span class="p">:</span> <span class="p">{</span>
+                  <span class="n">street</span><span class="p">:</span> <span class="s1">&#39;1600 Pennsylvania Ave NW&#39;</span><span class="p">,</span>
+                  <span class="n">city</span><span class="p">:</span> <span class="s1">&#39;Washington&#39;</span><span class="p">,</span>
+                  <span class="n">zip</span><span class="p">:</span> <span class="s1">&#39;20500&#39;</span><span class="p">,</span>
+                  <span class="n">phones</span><span class="p">:</span> <span class="p">{</span> <span class="s1">&#39;fax&#39;</span> <span class="p">:</span> <span class="p">{</span> <span class="n">country_code</span><span class="p">:</span> <span class="mf">1</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="s1">&#39;...&#39;</span> <span class="p">}</span> <span class="p">}</span>
+              <span class="p">}</span>
+          <span class="p">})</span>
+</pre></div>
+</div>
+<p>To be valid, a UDT literal should only include fields defined by the type it is a literal of, but it can omit some field
+(in which case those will be <code class="docutils literal notranslate"><span class="pre">null</span></code>).</p>
+</div>
+<div class="section" id="altering-a-udt">
+<h3>Altering a UDT<a class="headerlink" href="#altering-a-udt" title="Permalink to this headline">¶</a></h3>
+<p>An existing user-defined type can be modified using an <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TYPE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-alter-type-statement">alter_type_statement   </strong> ::=  ALTER TYPE <a class="reference internal" href="#grammar-token-udt-name"><code class="xref docutils literal notranslate"><span class="pre">udt_name</span></code></a> <a class="reference internal" href="#grammar-token-alter-type-modification"><code class="xref docutils literal notranslate"><span class="pre">alter_type_modification</span></code></a>
+<strong id="grammar-token-alter-type-modification">alter_type_modification</strong> ::=  ADD <a class="reference internal" href="#grammar-token-field-definition"><code class="xref docutils literal notranslate"><span class="pre">field_definition</span></code></a>
+                             | RENAME <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> TO <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> ( <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> TO <a class="reference internal" href="definitions.html#grammar-token-identifier"><code class="xref docutils literal notranslate"><span class="pre">identifier</span></code></a> )*
+</pre>
+<p>You can:</p>
+<ul class="simple">
+<li>add a new field to the type (<code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TYPE</span> <span class="pre">address</span> <span class="pre">ADD</span> <span class="pre">country</span> <span class="pre">text</span></code>). That new field will be <code class="docutils literal notranslate"><span class="pre">null</span></code> for any values
+of the type created before the addition.</li>
+<li>rename the fields of the type (<code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TYPE</span> <span class="pre">address</span> <span class="pre">RENAME</span> <span class="pre">zip</span> <span class="pre">TO</span> <span class="pre">zipcode</span></code>).</li>
+</ul>
+</div>
+<div class="section" id="dropping-a-udt">
+<h3>Dropping a UDT<a class="headerlink" href="#dropping-a-udt" title="Permalink to this headline">¶</a></h3>
+<p>You can drop an existing user-defined type using a <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">TYPE</span></code> statement:</p>
+<pre>
+<strong id="grammar-token-drop-type-statement">drop_type_statement</strong> ::=  DROP TYPE [ IF EXISTS ] <a class="reference internal" href="#grammar-token-udt-name"><code class="xref docutils literal notranslate"><span class="pre">udt_name</span></code></a>
+</pre>
+<p>Dropping a type results in the immediate, irreversible removal of that type. However, attempting to drop a type that is
+still in use by another type, table or function will result in an error.</p>
+<p>If the type dropped does not exist, an error will be returned unless <code class="docutils literal notranslate"><span class="pre">IF</span> <span class="pre">EXISTS</span></code> is used, in which case the operation
+is a no-op.</p>
+</div>
+</div>
+<div class="section" id="frozen-types">
+<span id="frozen"></span><h2>Frozen Types<a class="headerlink" href="#frozen-types" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">frozen</span></code> keyword is used to change the way a collection or user-defined type column is serialized. For non-frozen
+collections or UDTs, each value is serialized independently from the other values. This allow update or delete
+operations on a sub-set of the collections or UDTs values. For frozen collections or UDTs all the value are serialized
+as one, disabling the ability to perform partial updates on the values.</p>
+<p>To freeze a column, use the keyword, followed by the type in angle brackets, for instance:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">posts</span> <span class="p">(</span>
+    <span class="n">id</span> <span class="nb">int</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+    <span class="n">title</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">content</span> <span class="nb">text</span><span class="p">,</span>
+    <span class="n">tags</span> <span class="k">frozen</span><span class="o">&lt;</span><span class="k">set</span><span class="o">&lt;</span><span class="nb">text</span><span class="o">&gt;&gt;</span>
+<span class="p">);</span>
+</pre></div>
+</div>
+<p>To insert a frozen value, it’s just like a non-frozen column:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">posts</span> <span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">title</span><span class="p">,</span> <span class="n">content</span><span class="p">,</span> <span class="n">tags</span><span class="p">)</span>
+        <span class="k">VALUES</span> <span class="p">(</span><span class="mf">1</span><span class="p">,</span> <span class="s1">&#39;Even Higher Availability with 5x Faster Streaming in Cassandra 4.0&#39;</span><span class="p">,</span>
+                <span class="s1">&#39;Streaming is a process...&#39;</span><span class="p">,</span> <span class="p">{</span><span class="s1">&#39;cassandra&#39;</span><span class="p">,</span> <span class="s1">&#39;availability&#39;</span><span class="p">});</span>
+</pre></div>
+</div>
+<div class="section" id="updating-a-frozen-column">
+<h3>Updating a frozen column<a class="headerlink" href="#updating-a-frozen-column" title="Permalink to this headline">¶</a></h3>
+<p>It’s not possible to update an individual item of a collection:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">posts</span> <span class="k">SET</span> <span class="n">tags</span> <span class="o">=</span> <span class="n">tags</span> <span class="o">-</span> <span class="p">{</span><span class="s1">&#39;availability&#39;</span><span class="p">}</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="mf">1</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The above command would result in the following error:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="n">InvalidRequest</span><span class="p">:</span> <span class="n">Error</span> <span class="k">from</span> <span class="n">server</span><span class="p">:</span> <span class="n">code</span><span class="o">=</span><span class="mf">2200</span> <span class="p">[</span><span class="n">Invalid</span> <span class="n">query</span><span class="p">]</span> <span class="n">message</span><span class="o">=</span><span class="s s-Name">&quot;Invalid operation (tags = tags -</span>
+<span class="s s-Name">{&#39;availability&#39;}) for frozen collection column tags&quot;</span>
+</pre></div>
+</div>
+<p>When there’s a need to update, the full value must be provided:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">UPDATE</span> <span class="n">posts</span> <span class="k">SET</span> <span class="n">tags</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;cassandra&#39;</span><span class="p">}</span> <span class="k">WHERE</span> <span class="n">id</span> <span class="o">=</span> <span class="mf">1</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Note the whole value is being replaced, not just the unwanted item. The same is true for appending elements in a
+collection.</p>
+</div>
+</div>
+<div class="section" id="custom-types">
+<span id="id9"></span><h2>Custom Types<a class="headerlink" href="#custom-types" title="Permalink to this headline">¶</a></h2>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Custom types exists mostly for backward compatiliby purposes and their usage is discouraged. Their usage is
+complex, not user friendly and the other provided types, particularly <a class="reference internal" href="#udts"><span class="std std-ref">user-defined types</span></a>, should almost
+always be enough.</p>
+</div>
+<p>A custom type is defined by:</p>
+<pre>
+<strong id="grammar-token-custom-type">custom_type</strong> ::=  <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref docutils literal notranslate"><span class="pre">string</span></code></a>
+</pre>
+<p>A custom type is a <a class="reference internal" href="definitions.html#grammar-token-string"><code class="xref std std-token docutils literal notranslate"><span class="pre">string</span></code></a> that contains the name of Java class that extends the server side <code class="docutils literal notranslate"><span class="pre">AbstractType</span></code>
+class and that can be loaded by Cassandra (it should thus be in the <code class="docutils literal notranslate"><span class="pre">CLASSPATH</span></code> of every node running Cassandra). That
+class will define what values are valid for the type and how the time sorts when used for a clustering column. For any
+other purpose, a value of a custom type is the same than that of a <code class="docutils literal notranslate"><span class="pre">blob</span></code>, and can in particular be input using the
+<a class="reference internal" href="definitions.html#grammar-token-blob"><code class="xref std std-token docutils literal notranslate"><span class="pre">blob</span></code></a> literal syntax.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="ddl.html" class="btn btn-default pull-right " role="button" title="Data Definition" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="definitions.html" class="btn btn-default" role="button" title="Definitions" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/data_modeling/data_modeling_conceptual.html b/src/doc/4.0-rc1/data_modeling/data_modeling_conceptual.html
new file mode 100644
index 0000000..ecdb1e8
--- /dev/null
+++ b/src/doc/4.0-rc1/data_modeling/data_modeling_conceptual.html
@@ -0,0 +1,151 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Data Modeling"
+
+doc-title: "Conceptual Data Modeling"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Data Modeling" href="index.html"/>
+      <link rel="next" title="RDBMS Design" href="data_modeling_rdbms.html"/>
+      <link rel="prev" title="Introduction" href="intro.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Data Modeling</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="intro.html">Introduction</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Conceptual Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_rdbms.html">RDBMS Design</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_queries.html">Defining Application Queries</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_logical.html">Logical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_physical.html">Physical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_refining.html">Evaluating and Refining Data Models</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_schema.html">Defining Database Schema</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_tools.html">Cassandra Data Modeling Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="conceptual-data-modeling">
+<h1>Conceptual Data Modeling<a class="headerlink" href="#conceptual-data-modeling" title="Permalink to this headline">¶</a></h1>
+<p>First, let’s create a simple domain model that is easy to understand in
+the relational world, and then see how you might map it from a relational
+to a distributed hashtable model in Cassandra.</p>
+<p>Let’s use an example that is complex enough
+to show the various data structures and design patterns, but not
+something that will bog you down with details. Also, a domain that’s
+familiar to everyone will allow you to concentrate on how to work with
+Cassandra, not on what the application domain is all about.</p>
+<p>For example, let’s use a domain that is easily understood and that
+everyone can relate to: making hotel reservations.</p>
+<p>The conceptual domain includes hotels, guests that stay in the hotels, a
+collection of rooms for each hotel, the rates and availability of those
+rooms, and a record of reservations booked for guests. Hotels typically
+also maintain a collection of “points of interest,” which are parks,
+museums, shopping galleries, monuments, or other places near the hotel
+that guests might want to visit during their stay. Both hotels and
+points of interest need to maintain geolocation data so that they can be
+found on maps for mashups, and to calculate distances.</p>
+<p>The conceptual domain is depicted below using the entity–relationship
+model popularized by Peter Chen. This simple diagram represents the
+entities in the domain with rectangles, and attributes of those entities
+with ovals. Attributes that represent unique identifiers for items are
+underlined. Relationships between entities are represented as diamonds,
+and the connectors between the relationship and each entity show the
+multiplicity of the connection.</p>
+<img alt="../_images/data_modeling_hotel_erd.png" src="../_images/data_modeling_hotel_erd.png" />
+<p>Obviously, in the real world, there would be many more considerations
+and much more complexity. For example, hotel rates are notoriously
+dynamic, and calculating them involves a wide array of factors. Here
+you’re defining something complex enough to be interesting and touch on
+the important points, but simple enough to maintain the focus on
+learning Cassandra.</p>
+<p><em>Material adapted from Cassandra, The Definitive Guide. Published by
+O’Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.</em></p>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="data_modeling_rdbms.html" class="btn btn-default pull-right " role="button" title="RDBMS Design" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="intro.html" class="btn btn-default" role="button" title="Introduction" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/data_modeling/data_modeling_logical.html b/src/doc/4.0-rc1/data_modeling/data_modeling_logical.html
new file mode 100644
index 0000000..de2226e
--- /dev/null
+++ b/src/doc/4.0-rc1/data_modeling/data_modeling_logical.html
@@ -0,0 +1,285 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Data Modeling"
+
+doc-title: "Logical Data Modeling"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Data Modeling" href="index.html"/>
+      <link rel="next" title="Physical Data Modeling" href="data_modeling_physical.html"/>
+      <link rel="prev" title="Defining Application Queries" href="data_modeling_queries.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Data Modeling</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="intro.html">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_conceptual.html">Conceptual Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_rdbms.html">RDBMS Design</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_queries.html">Defining Application Queries</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Logical Data Modeling</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#hotel-logical-data-model">Hotel Logical Data Model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#reservation-logical-data-model">Reservation Logical Data Model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#patterns-and-anti-patterns">Patterns and Anti-Patterns</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_physical.html">Physical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_refining.html">Evaluating and Refining Data Models</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_schema.html">Defining Database Schema</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_tools.html">Cassandra Data Modeling Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="logical-data-modeling">
+<h1>Logical Data Modeling<a class="headerlink" href="#logical-data-modeling" title="Permalink to this headline">¶</a></h1>
+<p>Now that you have defined your queries, you’re ready to begin designing
+Cassandra tables. First, create a logical model containing a table
+for each query, capturing entities and relationships from the conceptual
+model.</p>
+<p>To name each table, you’ll identify the primary entity type for which you
+are querying and use that to start the entity name. If you are querying
+by attributes of other related entities, append those to the table
+name, separated with <code class="docutils literal notranslate"><span class="pre">_by_</span></code>. For example, <code class="docutils literal notranslate"><span class="pre">hotels_by_poi</span></code>.</p>
+<p>Next, you identify the primary key for the table, adding partition key
+columns based on the required query attributes, and clustering columns
+in order to guarantee uniqueness and support desired sort ordering.</p>
+<p>The design of the primary key is extremely important, as it will
+determine how much data will be stored in each partition and how that
+data is organized on disk, which in turn will affect how quickly
+Cassandra processes reads.</p>
+<p>Complete each table by adding any additional attributes identified by
+the query. If any of these additional attributes are the same for every
+instance of the partition key, mark the column as static.</p>
+<p>Now that was a pretty quick description of a fairly involved process, so
+it will be worthwhile to work through a detailed example. First,
+let’s introduce a notation that you can use to represent logical
+models.</p>
+<p>Several individuals within the Cassandra community have proposed
+notations for capturing data models in diagrammatic form. This document
+uses a notation popularized by Artem Chebotko which provides a simple,
+informative way to visualize the relationships between queries and
+tables in your designs. This figure shows the Chebotko notation for a
+logical data model.</p>
+<img alt="../_images/data_modeling_chebotko_logical.png" src="../_images/data_modeling_chebotko_logical.png" />
+<p>Each table is shown with its title and a list of columns. Primary key
+columns are identified via symbols such as <strong>K</strong> for partition key
+columns and <strong>C</strong>↑ or <strong>C</strong>↓ to represent clustering columns. Lines
+are shown entering tables or between tables to indicate the queries that
+each table is designed to support.</p>
+<div class="section" id="hotel-logical-data-model">
+<h2>Hotel Logical Data Model<a class="headerlink" href="#hotel-logical-data-model" title="Permalink to this headline">¶</a></h2>
+<p>The figure below shows a Chebotko logical data model for the queries
+involving hotels, points of interest, rooms, and amenities. One thing you’ll
+notice immediately is that the Cassandra design doesn’t include dedicated
+tables for rooms or amenities, as you had in the relational design. This
+is because the workflow didn’t identify any queries requiring this
+direct access.</p>
+<img alt="../_images/data_modeling_hotel_logical.png" src="../_images/data_modeling_hotel_logical.png" />
+<p>Let’s explore the details of each of these tables.</p>
+<p>The first query Q1 is to find hotels near a point of interest, so you’ll
+call this table <code class="docutils literal notranslate"><span class="pre">hotels_by_poi</span></code>. Searching by a named point of
+interest is a clue that the point of interest should be a part
+of the primary key. Let’s reference the point of interest by name,
+because according to the workflow that is how users will start their
+search.</p>
+<p>You’ll note that you certainly could have more than one hotel near a
+given point of interest, so you’ll need another component in the primary
+key in order to make sure you have a unique partition for each hotel. So
+you add the hotel key as a clustering column.</p>
+<p>An important consideration in designing your table’s primary key is
+making sure that it defines a unique data element. Otherwise you run the
+risk of accidentally overwriting data.</p>
+<p>Now for the second query (Q2), you’ll need a table to get information
+about a specific hotel. One approach would have been to put all of the
+attributes of a hotel in the <code class="docutils literal notranslate"><span class="pre">hotels_by_poi</span></code> table, but you added
+only those attributes that were required by the application workflow.</p>
+<p>From the workflow diagram, you know that the <code class="docutils literal notranslate"><span class="pre">hotels_by_poi</span></code> table is
+used to display a list of hotels with basic information on each hotel,
+and the application knows the unique identifiers of the hotels returned.
+When the user selects a hotel to view details, you can then use Q2, which
+is used to obtain details about the hotel. Because you already have the
+<code class="docutils literal notranslate"><span class="pre">hotel_id</span></code> from Q1, you use that as a reference to the hotel you’re
+looking for. Therefore the second table is just called <code class="docutils literal notranslate"><span class="pre">hotels</span></code>.</p>
+<p>Another option would have been to store a set of <code class="docutils literal notranslate"><span class="pre">poi_names</span></code> in the
+hotels table. This is an equally valid approach. You’ll learn through
+experience which approach is best for your application.</p>
+<p>Q3 is just a reverse of Q1—looking for points of interest near a hotel,
+rather than hotels near a point of interest. This time, however, you need
+to access the details of each point of interest, as represented by the
+<code class="docutils literal notranslate"><span class="pre">pois_by_hotel</span></code> table. As previously, you add the point of
+interest name as a clustering key to guarantee uniqueness.</p>
+<p>At this point, let’s now consider how to support query Q4 to help the
+user find available rooms at a selected hotel for the nights they are
+interested in staying. Note that this query involves both a start date
+and an end date. Because you’re querying over a range instead of a single
+date, you know that you’ll need to use the date as a clustering key.
+Use the <code class="docutils literal notranslate"><span class="pre">hotel_id</span></code> as a primary key to group room data for each hotel
+on a single partition, which should help searches be super fast. Let’s
+call this the <code class="docutils literal notranslate"><span class="pre">available_rooms_by_hotel_date</span></code> table.</p>
+<p>To support searching over a range, use <a class="reference internal" href="../cql/ddl.html#clustering-columns"><span class="std std-ref">clustering columns</span></a> to store
+attributes that you need to access in a range query. Remember that the
+order of the clustering columns is important.</p>
+<p>The design of the <code class="docutils literal notranslate"><span class="pre">available_rooms_by_hotel_date</span></code> table is an instance
+of the <strong>wide partition</strong> pattern. This
+pattern is sometimes called the <strong>wide row</strong> pattern when discussing
+databases that support similar models, but wide partition is a more
+accurate description from a Cassandra perspective. The essence of the
+pattern is to group multiple related rows in a partition in order to
+support fast access to multiple rows within the partition in a single
+query.</p>
+<p>In order to round out the shopping portion of the data model, add the
+<code class="docutils literal notranslate"><span class="pre">amenities_by_room</span></code> table to support Q5. This will allow users to
+view the amenities of one of the rooms that is available for the desired
+stay dates.</p>
+</div>
+<div class="section" id="reservation-logical-data-model">
+<h2>Reservation Logical Data Model<a class="headerlink" href="#reservation-logical-data-model" title="Permalink to this headline">¶</a></h2>
+<p>Now let’s switch gears to look at the reservation queries. The figure
+shows a logical data model for reservations. You’ll notice that these
+tables represent a denormalized design; the same data appears in
+multiple tables, with differing keys.</p>
+<img alt="../_images/data_modeling_reservation_logical.png" src="../_images/data_modeling_reservation_logical.png" />
+<p>In order to satisfy Q6, the <code class="docutils literal notranslate"><span class="pre">reservations_by_guest</span></code> table can be used
+to look up the reservation by guest name. You could envision query Q7
+being used on behalf of a guest on a self-serve website or a call center
+agent trying to assist the guest. Because the guest name might not be
+unique, you include the guest ID here as a clustering column as well.</p>
+<p>Q8 and Q9 in particular help to remind you to create queries
+that support various stakeholders of the application, not just customers
+but staff as well, and perhaps even the analytics team, suppliers, and so
+on.</p>
+<p>The hotel staff might wish to see a record of upcoming reservations by
+date in order to get insight into how the hotel is performing, such as
+what dates the hotel is sold out or undersold. Q8 supports the retrieval
+of reservations for a given hotel by date.</p>
+<p>Finally, you create a <code class="docutils literal notranslate"><span class="pre">guests</span></code> table. This provides a single
+location that used to store guest information. In this case, you specify a
+separate unique identifier for guest records, as it is not uncommon
+for guests to have the same name. In many organizations, a customer
+database such as the <code class="docutils literal notranslate"><span class="pre">guests</span></code> table would be part of a separate
+customer management application, which is why other guest
+access patterns were omitted from the example.</p>
+</div>
+<div class="section" id="patterns-and-anti-patterns">
+<h2>Patterns and Anti-Patterns<a class="headerlink" href="#patterns-and-anti-patterns" title="Permalink to this headline">¶</a></h2>
+<p>As with other types of software design, there are some well-known
+patterns and anti-patterns for data modeling in Cassandra. You’ve already
+used one of the most common patterns in this hotel model—the wide
+partition pattern.</p>
+<p>The <strong>time series</strong> pattern is an extension of the wide partition
+pattern. In this pattern, a series of measurements at specific time
+intervals are stored in a wide partition, where the measurement time is
+used as part of the partition key. This pattern is frequently used in
+domains including business analysis, sensor data management, and
+scientific experiments.</p>
+<p>The time series pattern is also useful for data other than measurements.
+Consider the example of a banking application. You could store each
+customer’s balance in a row, but that might lead to a lot of read and
+write contention as various customers check their balance or make
+transactions. You’d probably be tempted to wrap a transaction around
+writes just to protect the balance from being updated in error. In
+contrast, a time series–style design would store each transaction as a
+timestamped row and leave the work of calculating the current balance to
+the application.</p>
+<p>One design trap that many new users fall into is attempting to use
+Cassandra as a queue. Each item in the queue is stored with a timestamp
+in a wide partition. Items are appended to the end of the queue and read
+from the front, being deleted after they are read. This is a design that
+seems attractive, especially given its apparent similarity to the time
+series pattern. The problem with this approach is that the deleted items
+are now <a class="reference internal" href="../faq/index.html#asynch-deletes"><span class="std std-ref">tombstones</span></a> that Cassandra must scan past
+in order to read from the front of the queue. Over time, a growing number
+of tombstones begins to degrade read performance.</p>
+<p>The queue anti-pattern serves as a reminder that any design that relies
+on the deletion of data is potentially a poorly performing design.</p>
+<p><em>Material adapted from Cassandra, The Definitive Guide. Published by
+O’Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.</em></p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="data_modeling_physical.html" class="btn btn-default pull-right " role="button" title="Physical Data Modeling" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="data_modeling_queries.html" class="btn btn-default" role="button" title="Defining Application Queries" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/data_modeling/data_modeling_physical.html b/src/doc/4.0-rc1/data_modeling/data_modeling_physical.html
new file mode 100644
index 0000000..8cedfef
--- /dev/null
+++ b/src/doc/4.0-rc1/data_modeling/data_modeling_physical.html
@@ -0,0 +1,200 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Data Modeling"
+
+doc-title: "Physical Data Modeling"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Data Modeling" href="index.html"/>
+      <link rel="next" title="Evaluating and Refining Data Models" href="data_modeling_refining.html"/>
+      <link rel="prev" title="Logical Data Modeling" href="data_modeling_logical.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Data Modeling</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="intro.html">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_conceptual.html">Conceptual Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_rdbms.html">RDBMS Design</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_queries.html">Defining Application Queries</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_logical.html">Logical Data Modeling</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Physical Data Modeling</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#hotel-physical-data-model">Hotel Physical Data Model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#reservation-physical-data-model">Reservation Physical Data Model</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_refining.html">Evaluating and Refining Data Models</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_schema.html">Defining Database Schema</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_tools.html">Cassandra Data Modeling Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="physical-data-modeling">
+<h1>Physical Data Modeling<a class="headerlink" href="#physical-data-modeling" title="Permalink to this headline">¶</a></h1>
+<p>Once you have a logical data model defined, creating the physical model
+is a relatively simple process.</p>
+<p>You walk through each of the logical model tables, assigning types to
+each item. You can use any valid <a class="reference internal" href="../cql/types.html#data-types"><span class="std std-ref">CQL data type</span></a>,
+including the basic types, collections, and user-defined types. You may
+identify additional user-defined types that can be created to simplify
+your design.</p>
+<p>After you’ve assigned data types, you analyze the model by performing
+size calculations and testing out how the model works. You may make some
+adjustments based on your findings. Once again let’s cover the data
+modeling process in more detail by working through an example.</p>
+<p>Before getting started, let’s look at a few additions to the Chebotko
+notation for physical data models. To draw physical models, you need to
+be able to add the typing information for each column. This figure
+shows the addition of a type for each column in a sample table.</p>
+<img alt="../_images/data_modeling_chebotko_physical.png" src="../_images/data_modeling_chebotko_physical.png" />
+<p>The figure includes a designation of the keyspace containing each table
+and visual cues for columns represented using collections and
+user-defined types. Note the designation of static columns and
+secondary index columns. There is no restriction on assigning these as
+part of a logical model, but they are typically more of a physical data
+modeling concern.</p>
+<div class="section" id="hotel-physical-data-model">
+<h2>Hotel Physical Data Model<a class="headerlink" href="#hotel-physical-data-model" title="Permalink to this headline">¶</a></h2>
+<p>Now let’s get to work on the physical model. First, you need keyspaces
+to contain the tables. To keep the design relatively simple, create a
+<code class="docutils literal notranslate"><span class="pre">hotel</span></code> keyspace to contain tables for hotel and availability
+data, and a <code class="docutils literal notranslate"><span class="pre">reservation</span></code> keyspace to contain tables for reservation
+and guest data. In a real system, you might divide the tables across even
+more keyspaces in order to separate concerns.</p>
+<p>For the <code class="docutils literal notranslate"><span class="pre">hotels</span></code> table, use Cassandra’s <code class="docutils literal notranslate"><span class="pre">text</span></code> type to
+represent the hotel’s <code class="docutils literal notranslate"><span class="pre">id</span></code>. For the address, create an
+<code class="docutils literal notranslate"><span class="pre">address</span></code> user defined type. Use the <code class="docutils literal notranslate"><span class="pre">text</span></code> type to represent the
+phone number, as there is considerable variance in the formatting of
+numbers between countries.</p>
+<p>While it would make sense to use the <code class="docutils literal notranslate"><span class="pre">uuid</span></code> type for attributes such
+as the <code class="docutils literal notranslate"><span class="pre">hotel_id</span></code>, this document uses mostly <code class="docutils literal notranslate"><span class="pre">text</span></code> attributes as
+identifiers, to keep the samples simple and readable. For example, a
+common convention in the hospitality industry is to reference properties
+by short codes like “AZ123” or “NY229”. This example uses these values
+for <code class="docutils literal notranslate"><span class="pre">hotel_ids</span></code>, while acknowledging they are not necessarily globally
+unique.</p>
+<p>You’ll find that it’s often helpful to use unique IDs to uniquely
+reference elements, and to use these <code class="docutils literal notranslate"><span class="pre">uuids</span></code> as references in tables
+representing other entities. This helps to minimize coupling between
+different entity types. This may prove especially effective if you are
+using a microservice architectural style for your application, in which
+there are separate services responsible for each entity type.</p>
+<p>As you work to create physical representations of various tables in the
+logical hotel data model, you use the same approach. The resulting design
+is shown in this figure:</p>
+<img alt="../_images/data_modeling_hotel_physical.png" src="../_images/data_modeling_hotel_physical.png" />
+<p>Note that the <code class="docutils literal notranslate"><span class="pre">address</span></code> type is also included in the design. It
+is designated with an asterisk to denote that it is a user-defined type,
+and has no primary key columns identified. This type is used in
+the <code class="docutils literal notranslate"><span class="pre">hotels</span></code> and <code class="docutils literal notranslate"><span class="pre">hotels_by_poi</span></code> tables.</p>
+<p>User-defined types are frequently used to help reduce duplication of
+non-primary key columns, as was done with the <code class="docutils literal notranslate"><span class="pre">address</span></code>
+user-defined type. This can reduce complexity in the design.</p>
+<p>Remember that the scope of a UDT is the keyspace in which it is defined.
+To use <code class="docutils literal notranslate"><span class="pre">address</span></code> in the <code class="docutils literal notranslate"><span class="pre">reservation</span></code> keyspace defined below
+design, you’ll have to declare it again. This is just one of the many
+trade-offs you have to make in data model design.</p>
+</div>
+<div class="section" id="reservation-physical-data-model">
+<h2>Reservation Physical Data Model<a class="headerlink" href="#reservation-physical-data-model" title="Permalink to this headline">¶</a></h2>
+<p>Now, let’s examine reservation tables in the design.
+Remember that the logical model contained three denormalized tables to
+support queries for reservations by confirmation number, guest, and
+hotel and date. For the first iteration of your physical data model
+design, assume you’re going to manage this denormalization
+manually. Note that this design could be revised to use Cassandra’s
+(experimental) materialized view feature.</p>
+<img alt="../_images/data_modeling_reservation_physical.png" src="../_images/data_modeling_reservation_physical.png" />
+<p>Note that the <code class="docutils literal notranslate"><span class="pre">address</span></code> type is reproduced in this keyspace and
+<code class="docutils literal notranslate"><span class="pre">guest_id</span></code> is modeled as a <code class="docutils literal notranslate"><span class="pre">uuid</span></code> type in all of the tables.</p>
+<p><em>Material adapted from Cassandra, The Definitive Guide. Published by
+O’Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.</em></p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="data_modeling_refining.html" class="btn btn-default pull-right " role="button" title="Evaluating and Refining Data Models" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="data_modeling_logical.html" class="btn btn-default" role="button" title="Logical Data Modeling" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/data_modeling/data_modeling_queries.html b/src/doc/4.0-rc1/data_modeling/data_modeling_queries.html
new file mode 100644
index 0000000..e99a7c7
--- /dev/null
+++ b/src/doc/4.0-rc1/data_modeling/data_modeling_queries.html
@@ -0,0 +1,171 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Data Modeling"
+
+doc-title: "Defining Application Queries"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Data Modeling" href="index.html"/>
+      <link rel="next" title="Logical Data Modeling" href="data_modeling_logical.html"/>
+      <link rel="prev" title="RDBMS Design" href="data_modeling_rdbms.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Data Modeling</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="intro.html">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_conceptual.html">Conceptual Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_rdbms.html">RDBMS Design</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Defining Application Queries</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_logical.html">Logical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_physical.html">Physical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_refining.html">Evaluating and Refining Data Models</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_schema.html">Defining Database Schema</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_tools.html">Cassandra Data Modeling Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="defining-application-queries">
+<h1>Defining Application Queries<a class="headerlink" href="#defining-application-queries" title="Permalink to this headline">¶</a></h1>
+<p>Let’s try the query-first approach to start designing the data model for
+a hotel application. The user interface design for the application is
+often a great artifact to use to begin identifying queries. Let’s assume
+that you’ve talked with the project stakeholders and your UX designers
+have produced user interface designs or wireframes for the key use
+cases. You’ll likely have a list of shopping queries like the following:</p>
+<ul class="simple">
+<li>Q1. Find hotels near a given point of interest.</li>
+<li>Q2. Find information about a given hotel, such as its name and
+location.</li>
+<li>Q3. Find points of interest near a given hotel.</li>
+<li>Q4. Find an available room in a given date range.</li>
+<li>Q5. Find the rate and amenities for a room.</li>
+</ul>
+<p>It is often helpful to be able to refer
+to queries by a shorthand number rather that explaining them in full.
+The queries listed here are numbered Q1, Q2, and so on, which is how they
+are referenced in diagrams throughout the example.</p>
+<p>Now if the application is to be a success, you’ll certainly want
+customers to be able to book reservations at hotels. This includes
+steps such as selecting an available room and entering their guest
+information. So clearly you will also need some queries that address the
+reservation and guest entities from the conceptual data model. Even
+here, however, you’ll want to think not only from the customer
+perspective in terms of how the data is written, but also in terms of
+how the data will be queried by downstream use cases.</p>
+<p>You natural tendency as might be to focus first on
+designing the tables to store reservation and guest records, and only
+then start thinking about the queries that would access them. You may
+have felt a similar tension already when discussing the
+shopping queries before, thinking “but where did the hotel and point of
+interest data come from?” Don’t worry, you will see soon enough.
+Here are some queries that describe how users will access
+reservations:</p>
+<ul class="simple">
+<li>Q6. Lookup a reservation by confirmation number.</li>
+<li>Q7. Lookup a reservation by hotel, date, and guest name.</li>
+<li>Q8. Lookup all reservations by guest name.</li>
+<li>Q9. View guest details.</li>
+</ul>
+<p>All of the queries are shown in the context of the workflow of the
+application in the figure below. Each box on the diagram represents a
+step in the application workflow, with arrows indicating the flows
+between steps and the associated query. If you’ve modeled the application
+well, each step of the workflow accomplishes a task that “unlocks”
+subsequent steps. For example, the “View hotels near POI” task helps
+the application learn about several hotels, including their unique keys.
+The key for a selected hotel may be used as part of Q2, in order to
+obtain detailed description of the hotel. The act of booking a room
+creates a reservation record that may be accessed by the guest and
+hotel staff at a later time through various additional queries.</p>
+<img alt="../_images/data_modeling_hotel_queries.png" src="../_images/data_modeling_hotel_queries.png" />
+<p><em>Material adapted from Cassandra, The Definitive Guide. Published by
+O’Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.</em></p>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="data_modeling_logical.html" class="btn btn-default pull-right " role="button" title="Logical Data Modeling" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="data_modeling_rdbms.html" class="btn btn-default" role="button" title="RDBMS Design" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/data_modeling/data_modeling_rdbms.html b/src/doc/4.0-rc1/data_modeling/data_modeling_rdbms.html
new file mode 100644
index 0000000..beba8c3
--- /dev/null
+++ b/src/doc/4.0-rc1/data_modeling/data_modeling_rdbms.html
@@ -0,0 +1,252 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Data Modeling"
+
+doc-title: "RDBMS Design"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Data Modeling" href="index.html"/>
+      <link rel="next" title="Defining Application Queries" href="data_modeling_queries.html"/>
+      <link rel="prev" title="Conceptual Data Modeling" href="data_modeling_conceptual.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Data Modeling</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="intro.html">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_conceptual.html">Conceptual Data Modeling</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">RDBMS Design</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#design-differences-between-rdbms-and-cassandra">Design Differences Between RDBMS and Cassandra</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_queries.html">Defining Application Queries</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_logical.html">Logical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_physical.html">Physical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_refining.html">Evaluating and Refining Data Models</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_schema.html">Defining Database Schema</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_tools.html">Cassandra Data Modeling Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="rdbms-design">
+<h1>RDBMS Design<a class="headerlink" href="#rdbms-design" title="Permalink to this headline">¶</a></h1>
+<p>When you set out to build a new data-driven application that will use a
+relational database, you might start by modeling the domain as a set of
+properly normalized tables and use foreign keys to reference related
+data in other tables.</p>
+<p>The figure below shows how you might represent the data storage for your application
+using a relational database model. The relational model includes a
+couple of “join” tables in order to realize the many-to-many
+relationships from the conceptual model of hotels-to-points of interest,
+rooms-to-amenities, rooms-to-availability, and guests-to-rooms (via a
+reservation).</p>
+<img alt="../_images/data_modeling_hotel_relational.png" src="../_images/data_modeling_hotel_relational.png" />
+<div class="section" id="design-differences-between-rdbms-and-cassandra">
+<h2>Design Differences Between RDBMS and Cassandra<a class="headerlink" href="#design-differences-between-rdbms-and-cassandra" title="Permalink to this headline">¶</a></h2>
+<p>Let’s take a minute to highlight some of the key differences in doing
+ata modeling for Cassandra versus a relational database.</p>
+<div class="section" id="no-joins">
+<h3>No joins<a class="headerlink" href="#no-joins" title="Permalink to this headline">¶</a></h3>
+<p>You cannot perform joins in Cassandra. If you have designed a data model
+and find that you need something like a join, you’ll have to either do
+the work on the client side, or create a denormalized second table that
+represents the join results for you. This latter option is preferred in
+Cassandra data modeling. Performing joins on the client should be a very
+rare case; you really want to duplicate (denormalize) the data instead.</p>
+</div>
+<div class="section" id="no-referential-integrity">
+<h3>No referential integrity<a class="headerlink" href="#no-referential-integrity" title="Permalink to this headline">¶</a></h3>
+<p>Although Cassandra supports features such as lightweight transactions
+and batches, Cassandra itself has no concept of referential integrity
+across tables. In a relational database, you could specify foreign keys
+in a table to reference the primary key of a record in another table.
+But Cassandra does not enforce this. It is still a common design
+requirement to store IDs related to other entities in your tables, but
+operations such as cascading deletes are not available.</p>
+</div>
+<div class="section" id="denormalization">
+<h3>Denormalization<a class="headerlink" href="#denormalization" title="Permalink to this headline">¶</a></h3>
+<p>In relational database design, you are often taught the importance of
+normalization. This is not an advantage when working with Cassandra
+because it performs best when the data model is denormalized. It is
+often the case that companies end up denormalizing data in relational
+databases as well. There are two common reasons for this. One is
+performance. Companies simply can’t get the performance they need when
+they have to do so many joins on years’ worth of data, so they
+denormalize along the lines of known queries. This ends up working, but
+goes against the grain of how relational databases are intended to be
+designed, and ultimately makes one question whether using a relational
+database is the best approach in these circumstances.</p>
+<p>A second reason that relational databases get denormalized on purpose is
+a business document structure that requires retention. That is, you have
+an enclosing table that refers to a lot of external tables whose data
+could change over time, but you need to preserve the enclosing document
+as a snapshot in history. The common example here is with invoices. You
+already have customer and product tables, and you’d think that you could
+just make an invoice that refers to those tables. But this should never
+be done in practice. Customer or price information could change, and
+then you would lose the integrity of the invoice document as it was on
+the invoice date, which could violate audits, reports, or laws, and
+cause other problems.</p>
+<p>In the relational world, denormalization violates Codd’s normal forms,
+and you try to avoid it. But in Cassandra, denormalization is, well,
+perfectly normal. It’s not required if your data model is simple. But
+don’t be afraid of it.</p>
+<p>Historically, denormalization in Cassandra has required designing and
+managing multiple tables using techniques described in this documentation.
+Beginning with the 3.0 release, Cassandra provides a feature known
+as <a class="reference internal" href="../cql/mvs.html#materialized-views"><span class="std std-ref">materialized views</span></a>
+which allows you to create multiple denormalized
+views of data based on a base table design. Cassandra manages
+materialized views on the server, including the work of keeping the
+views in sync with the table.</p>
+</div>
+<div class="section" id="query-first-design">
+<h3>Query-first design<a class="headerlink" href="#query-first-design" title="Permalink to this headline">¶</a></h3>
+<p>Relational modeling, in simple terms, means that you start from the
+conceptual domain and then represent the nouns in the domain in tables.
+You then assign primary keys and foreign keys to model relationships.
+When you have a many-to-many relationship, you create the join tables
+that represent just those keys. The join tables don’t exist in the real
+world, and are a necessary side effect of the way relational models
+work. After you have all your tables laid out, you can start writing
+queries that pull together disparate data using the relationships
+defined by the keys. The queries in the relational world are very much
+secondary. It is assumed that you can always get the data you want as
+long as you have your tables modeled properly. Even if you have to use
+several complex subqueries or join statements, this is usually true.</p>
+<p>By contrast, in Cassandra you don’t start with the data model; you start
+with the query model. Instead of modeling the data first and then
+writing queries, with Cassandra you model the queries and let the data
+be organized around them. Think of the most common query paths your
+application will use, and then create the tables that you need to
+support them.</p>
+<p>Detractors have suggested that designing the queries first is overly
+constraining on application design, not to mention database modeling.
+But it is perfectly reasonable to expect that you should think hard
+about the queries in your application, just as you would, presumably,
+think hard about your relational domain. You may get it wrong, and then
+you’ll have problems in either world. Or your query needs might change
+over time, and then you’ll have to work to update your data set. But
+this is no different from defining the wrong tables, or needing
+additional tables, in an RDBMS.</p>
+</div>
+<div class="section" id="designing-for-optimal-storage">
+<h3>Designing for optimal storage<a class="headerlink" href="#designing-for-optimal-storage" title="Permalink to this headline">¶</a></h3>
+<p>In a relational database, it is frequently transparent to the user how
+tables are stored on disk, and it is rare to hear of recommendations
+about data modeling based on how the RDBMS might store tables on disk.
+However, that is an important consideration in Cassandra. Because
+Cassandra tables are each stored in separate files on disk, it’s
+important to keep related columns defined together in the same table.</p>
+<p>A key goal that you will see as you begin creating data models in
+Cassandra is to minimize the number of partitions that must be searched
+in order to satisfy a given query. Because the partition is a unit of
+storage that does not get divided across nodes, a query that searches a
+single partition will typically yield the best performance.</p>
+</div>
+<div class="section" id="sorting-is-a-design-decision">
+<h3>Sorting is a design decision<a class="headerlink" href="#sorting-is-a-design-decision" title="Permalink to this headline">¶</a></h3>
+<p>In an RDBMS, you can easily change the order in which records are
+returned to you by using <code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span></code> in your query. The default sort
+order is not configurable; by default, records are returned in the order
+in which they are written. If you want to change the order, you just
+modify your query, and you can sort by any list of columns.</p>
+<p>In Cassandra, however, sorting is treated differently; it is a design
+decision. The sort order available on queries is fixed, and is
+determined entirely by the selection of clustering columns you supply in
+the <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> command. The CQL <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement does support
+<code class="docutils literal notranslate"><span class="pre">ORDER</span> <span class="pre">BY</span></code> semantics, but only in the order specified by the
+clustering columns.</p>
+<p><em>Material adapted from Cassandra, The Definitive Guide. Published by
+O’Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.</em></p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="data_modeling_queries.html" class="btn btn-default pull-right " role="button" title="Defining Application Queries" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="data_modeling_conceptual.html" class="btn btn-default" role="button" title="Conceptual Data Modeling" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/data_modeling/data_modeling_refining.html b/src/doc/4.0-rc1/data_modeling/data_modeling_refining.html
new file mode 100644
index 0000000..3887abb
--- /dev/null
+++ b/src/doc/4.0-rc1/data_modeling/data_modeling_refining.html
@@ -0,0 +1,288 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Data Modeling"
+
+doc-title: "Evaluating and Refining Data Models"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Data Modeling" href="index.html"/>
+      <link rel="next" title="Defining Database Schema" href="data_modeling_schema.html"/>
+      <link rel="prev" title="Physical Data Modeling" href="data_modeling_physical.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Data Modeling</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="intro.html">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_conceptual.html">Conceptual Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_rdbms.html">RDBMS Design</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_queries.html">Defining Application Queries</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_logical.html">Logical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_physical.html">Physical Data Modeling</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Evaluating and Refining Data Models</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#calculating-partition-size">Calculating Partition Size</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#calculating-size-on-disk">Calculating Size on Disk</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#breaking-up-large-partitions">Breaking Up Large Partitions</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_schema.html">Defining Database Schema</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_tools.html">Cassandra Data Modeling Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="evaluating-and-refining-data-models">
+<h1>Evaluating and Refining Data Models<a class="headerlink" href="#evaluating-and-refining-data-models" title="Permalink to this headline">¶</a></h1>
+<p>Once you’ve created a physical model, there are some steps you’ll want
+to take to evaluate and refine table designs to help ensure optimal
+performance.</p>
+<div class="section" id="calculating-partition-size">
+<h2>Calculating Partition Size<a class="headerlink" href="#calculating-partition-size" title="Permalink to this headline">¶</a></h2>
+<p>The first thing that you want to look for is whether your tables will have
+partitions that will be overly large, or to put it another way, too
+wide. Partition size is measured by the number of cells (values) that
+are stored in the partition. Cassandra’s hard limit is 2 billion cells
+per partition, but you’ll likely run into performance issues before
+reaching that limit.</p>
+<p>In order to calculate the size of partitions, use the following
+formula:</p>
+<div class="math notranslate nohighlight">
+\[N_v = N_r (N_c - N_{pk} - N_s) + N_s\]</div>
+<p>The number of values (or cells) in the partition (N<sub>v</sub>) is equal to
+the number of static columns (N<sub>s</sub>) plus the product of the number
+of rows (N<sub>r</sub>) and the number of of values per row. The number of
+values per row is defined as the number of columns (N<sub>c</sub>) minus the
+number of primary key columns (N<sub>pk</sub>) and static columns
+(N<sub>s</sub>).</p>
+<p>The number of columns tends to be relatively static, although it
+is possible to alter tables at runtime. For this reason, a
+primary driver of partition size is the number of rows in the partition.
+This is a key factor that you must consider in determining whether a
+partition has the potential to get too large. Two billion values sounds
+like a lot, but in a sensor system where tens or hundreds of values are
+measured every millisecond, the number of values starts to add up pretty
+fast.</p>
+<p>Let’s take a look at one of the tables to analyze the partition size.
+Because it has a wide partition design with one partition per hotel,
+look at the <code class="docutils literal notranslate"><span class="pre">available_rooms_by_hotel_date</span></code> table. The table has
+four columns total (N<sub>c</sub> = 4), including three primary key columns
+(N<sub>pk</sub> = 3) and no static columns (N<sub>s</sub> = 0). Plugging these
+values into the formula, the result is:</p>
+<div class="math notranslate nohighlight">
+\[N_v = N_r (4 - 3 - 0) + 0 = 1N_r\]</div>
+<p>Therefore the number of values for this table is equal to the number of
+rows. You still need to determine a number of rows. To do this, make
+estimates based on the application design. The table is
+storing a record for each room, in each of hotel, for every night.
+Let’s assume the system will be used to store two years of
+inventory at a time, and there are 5,000 hotels in the system, with an
+average of 100 rooms in each hotel.</p>
+<p>Since there is a partition for each hotel, the estimated number of rows
+per partition is as follows:</p>
+<div class="math notranslate nohighlight">
+\[N_r = 100 rooms/hotel \times 730 days = 73,000 rows\]</div>
+<p>This relatively small number of rows per partition is not going to get
+you in too much trouble, but if you start storing more dates of inventory,
+or don’t manage the size of the inventory well using TTL, you could start
+having issues. You still might want to look at breaking up this large
+partition, which you’ll see how to do shortly.</p>
+<p>When performing sizing calculations, it is tempting to assume the
+nominal or average case for variables such as the number of rows.
+Consider calculating the worst case as well, as these sorts of
+predictions have a way of coming true in successful systems.</p>
+</div>
+<div class="section" id="calculating-size-on-disk">
+<h2>Calculating Size on Disk<a class="headerlink" href="#calculating-size-on-disk" title="Permalink to this headline">¶</a></h2>
+<p>In addition to calculating the size of a partition, it is also an
+excellent idea to estimate the amount of disk space that will be
+required for each table you plan to store in the cluster. In order to
+determine the size, use the following formula to determine the size
+S<sub>t</sub> of a partition:</p>
+<div class="math notranslate nohighlight">
+\[S_t = \displaystyle\sum_i sizeOf\big (c_{k_i}\big) + \displaystyle\sum_j sizeOf\big(c_{s_j}\big) + N_r\times \bigg(\displaystyle\sum_k sizeOf\big(c_{r_k}\big) + \displaystyle\sum_l sizeOf\big(c_{c_l}\big)\bigg) +\]</div>
+<div class="math notranslate nohighlight">
+\[N_v\times sizeOf\big(t_{avg}\big)\]</div>
+<p>This is a bit more complex than the previous formula, but let’s break it
+down a bit at a time. Let’s take a look at the notation first:</p>
+<ul class="simple">
+<li>In this formula, c<sub>k</sub> refers to partition key columns,
+c<sub>s</sub> to static columns, c<sub>r</sub> to regular columns, and
+c<sub>c</sub> to clustering columns.</li>
+<li>The term t<sub>avg</sub> refers to the average number of bytes of
+metadata stored per cell, such as timestamps. It is typical to use an
+estimate of 8 bytes for this value.</li>
+<li>You’ll recognize the number of rows N<sub>r</sub> and number of values
+N<sub>v</sub> from previous calculations.</li>
+<li>The <strong>sizeOf()</strong> function refers to the size in bytes of the CQL data
+type of each referenced column.</li>
+</ul>
+<p>The first term asks you to sum the size of the partition key columns. For
+this example, the <code class="docutils literal notranslate"><span class="pre">available_rooms_by_hotel_date</span></code> table has a single
+partition key column, the <code class="docutils literal notranslate"><span class="pre">hotel_id</span></code>, which is of type
+<code class="docutils literal notranslate"><span class="pre">text</span></code>. Assuming that hotel identifiers are simple 5-character codes,
+you have a 5-byte value, so the sum of the partition key column sizes is
+5 bytes.</p>
+<p>The second term asks you to sum the size of the static columns. This table
+has no static columns, so the size is 0 bytes.</p>
+<p>The third term is the most involved, and for good reason—it is
+calculating the size of the cells in the partition. Sum the size of
+the clustering columns and regular columns. The two clustering columns
+are the <code class="docutils literal notranslate"><span class="pre">date</span></code>, which is 4 bytes, and the <code class="docutils literal notranslate"><span class="pre">room_number</span></code>,
+which is a 2-byte short integer, giving a sum of 6 bytes.
+There is only a single regular column, the boolean <code class="docutils literal notranslate"><span class="pre">is_available</span></code>,
+which is 1 byte in size. Summing the regular column size
+(1 byte) plus the clustering column size (6 bytes) gives a total of 7
+bytes. To finish up the term, multiply this value by the number of
+rows (73,000), giving a result of 511,000 bytes (0.51 MB).</p>
+<p>The fourth term is simply counting the metadata that that Cassandra
+stores for each cell. In the storage format used by Cassandra 3.0 and
+later, the amount of metadata for a given cell varies based on the type
+of data being stored, and whether or not custom timestamp or TTL values
+are specified for individual cells. For this table, reuse the number
+of values from the previous calculation (73,000) and multiply by 8,
+which gives 0.58 MB.</p>
+<p>Adding these terms together, you get a final estimate:</p>
+<div class="math notranslate nohighlight">
+\[Partition size = 16 bytes + 0 bytes + 0.51 MB + 0.58 MB = 1.1 MB\]</div>
+<p>This formula is an approximation of the actual size of a partition on
+disk, but is accurate enough to be quite useful. Remembering that the
+partition must be able to fit on a single node, it looks like the table
+design will not put a lot of strain on disk storage.</p>
+<p>Cassandra’s storage engine was re-implemented for the 3.0 release,
+including a new format for SSTable files. The previous format stored a
+separate copy of the clustering columns as part of the record for each
+cell. The newer format eliminates this duplication, which reduces the
+size of stored data and simplifies the formula for computing that size.</p>
+<p>Keep in mind also that this estimate only counts a single replica of
+data. You will need to multiply the value obtained here by the number of
+partitions and the number of replicas specified by the keyspace’s
+replication strategy in order to determine the total required total
+capacity for each table. This will come in handy when you
+plan your cluster.</p>
+</div>
+<div class="section" id="breaking-up-large-partitions">
+<h2>Breaking Up Large Partitions<a class="headerlink" href="#breaking-up-large-partitions" title="Permalink to this headline">¶</a></h2>
+<p>As discussed previously, the goal is to design tables that can provide
+the data you need with queries that touch a single partition, or failing
+that, the minimum possible number of partitions. However, as shown in
+the examples, it is quite possible to design wide
+partition-style tables that approach Cassandra’s built-in limits.
+Performing sizing analysis on tables may reveal partitions that are
+potentially too large, either in number of values, size on disk, or
+both.</p>
+<p>The technique for splitting a large partition is straightforward: add an
+additional column to the partition key. In most cases, moving one of the
+existing columns into the partition key will be sufficient. Another
+option is to introduce an additional column to the table to act as a
+sharding key, but this requires additional application logic.</p>
+<p>Continuing to examine the available rooms example, if you add the <code class="docutils literal notranslate"><span class="pre">date</span></code>
+column to the partition key for the <code class="docutils literal notranslate"><span class="pre">available_rooms_by_hotel_date</span></code>
+table, each partition would then represent the availability of rooms
+at a specific hotel on a specific date. This will certainly yield
+partitions that are significantly smaller, perhaps too small, as the
+data for consecutive days will likely be on separate nodes.</p>
+<p>Another technique known as <strong>bucketing</strong> is often used to break the data
+into moderate-size partitions. For example, you could bucketize the
+<code class="docutils literal notranslate"><span class="pre">available_rooms_by_hotel_date</span></code> table by adding a <code class="docutils literal notranslate"><span class="pre">month</span></code> column to
+the partition key, perhaps represented as an integer. The comparision
+with the original design is shown in the figure below. While the
+<code class="docutils literal notranslate"><span class="pre">month</span></code> column is partially duplicative of the <code class="docutils literal notranslate"><span class="pre">date</span></code>, it provides
+a nice way of grouping related data in a partition that will not get
+too large.</p>
+<img alt="../_images/data_modeling_hotel_bucketing.png" src="../_images/data_modeling_hotel_bucketing.png" />
+<p>If you really felt strongly about preserving a wide partition design, you
+could instead add the <code class="docutils literal notranslate"><span class="pre">room_id</span></code> to the partition key, so that each
+partition would represent the availability of the room across all
+dates. Because there was no query identified that involves searching
+availability of a specific room, the first or second design approach
+is most suitable to the application needs.</p>
+<p><em>Material adapted from Cassandra, The Definitive Guide. Published by
+O’Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.</em></p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="data_modeling_schema.html" class="btn btn-default pull-right " role="button" title="Defining Database Schema" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="data_modeling_physical.html" class="btn btn-default" role="button" title="Physical Data Modeling" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/data_modeling/data_modeling_schema.html b/src/doc/4.0-rc1/data_modeling/data_modeling_schema.html
new file mode 100644
index 0000000..78612c2
--- /dev/null
+++ b/src/doc/4.0-rc1/data_modeling/data_modeling_schema.html
@@ -0,0 +1,236 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Data Modeling"
+
+doc-title: "Defining Database Schema"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Data Modeling" href="index.html"/>
+      <link rel="next" title="Cassandra Data Modeling Tools" href="data_modeling_tools.html"/>
+      <link rel="prev" title="Evaluating and Refining Data Models" href="data_modeling_refining.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Data Modeling</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="intro.html">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_conceptual.html">Conceptual Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_rdbms.html">RDBMS Design</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_queries.html">Defining Application Queries</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_logical.html">Logical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_physical.html">Physical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_refining.html">Evaluating and Refining Data Models</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Defining Database Schema</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_tools.html">Cassandra Data Modeling Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="defining-database-schema">
+<h1>Defining Database Schema<a class="headerlink" href="#defining-database-schema" title="Permalink to this headline">¶</a></h1>
+<p>Once you have finished evaluating and refining the physical model, you’re
+ready to implement the schema in CQL. Here is the schema for the
+<code class="docutils literal notranslate"><span class="pre">hotel</span></code> keyspace, using CQL’s comment feature to document the query
+pattern supported by each table:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">hotel</span> <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span>
+  <span class="p">{</span><span class="err">‘</span><span class="n">class</span><span class="err">’</span><span class="p">:</span> <span class="err">‘</span><span class="n">SimpleStrategy</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">replication_factor</span><span class="err">’</span> <span class="p">:</span> <span class="mf">3</span><span class="p">};</span>
+
+<span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">hotel</span><span class="mf">.</span><span class="n">address</span> <span class="p">(</span>
+  <span class="n">street</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">city</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">state_or_province</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">postal_code</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">country</span> <span class="nb">text</span> <span class="p">);</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">hotel</span><span class="mf">.</span><span class="n">hotels_by_poi</span> <span class="p">(</span>
+  <span class="n">poi_name</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">hotel_id</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">name</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">phone</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">address</span> <span class="k">frozen</span><span class="o">&lt;</span><span class="n">address</span><span class="o">&gt;</span><span class="p">,</span>
+  <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">((</span><span class="n">poi_name</span><span class="p">),</span> <span class="n">hotel_id</span><span class="p">)</span> <span class="p">)</span>
+  <span class="k">WITH</span> <span class="n">comment</span> <span class="o">=</span> <span class="err">‘</span><span class="n">Q1</span><span class="mf">.</span> <span class="n">Find</span> <span class="n">hotels</span> <span class="n">near</span> <span class="n">given</span> <span class="n">poi</span><span class="err">’</span>
+  <span class="k">AND</span> <span class="k">CLUSTERING</span> <span class="k">ORDER</span> <span class="k">BY</span> <span class="p">(</span><span class="n">hotel_id</span> <span class="k">ASC</span><span class="p">)</span> <span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">hotel</span><span class="mf">.</span><span class="n">hotels</span> <span class="p">(</span>
+  <span class="n">id</span> <span class="nb">text</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+  <span class="n">name</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">phone</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">address</span> <span class="k">frozen</span><span class="o">&lt;</span><span class="n">address</span><span class="o">&gt;</span><span class="p">,</span>
+  <span class="n">pois</span> <span class="k">set</span> <span class="p">)</span>
+  <span class="k">WITH</span> <span class="n">comment</span> <span class="o">=</span> <span class="err">‘</span><span class="n">Q2</span><span class="mf">.</span> <span class="n">Find</span> <span class="n">information</span> <span class="n">about</span> <span class="n">a</span> <span class="n">hotel</span><span class="err">’</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">hotel</span><span class="mf">.</span><span class="n">pois_by_hotel</span> <span class="p">(</span>
+  <span class="n">poi_name</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">hotel_id</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">description</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">((</span><span class="n">hotel_id</span><span class="p">),</span> <span class="n">poi_name</span><span class="p">)</span> <span class="p">)</span>
+  <span class="k">WITH</span> <span class="n">comment</span> <span class="o">=</span> <span class="n">Q3</span><span class="mf">.</span> <span class="n">Find</span> <span class="n">pois</span> <span class="n">near</span> <span class="n">a</span> <span class="n">hotel</span><span class="err">’</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">hotel</span><span class="mf">.</span><span class="n">available_rooms_by_hotel_date</span> <span class="p">(</span>
+  <span class="n">hotel_id</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="nb">date</span> <span class="nb">date</span><span class="p">,</span>
+  <span class="n">room_number</span> <span class="nb">smallint</span><span class="p">,</span>
+  <span class="n">is_available</span> <span class="nb">boolean</span><span class="p">,</span>
+  <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">((</span><span class="n">hotel_id</span><span class="p">),</span> <span class="nb">date</span><span class="p">,</span> <span class="n">room_number</span><span class="p">)</span> <span class="p">)</span>
+  <span class="k">WITH</span> <span class="n">comment</span> <span class="o">=</span> <span class="err">‘</span><span class="n">Q4</span><span class="mf">.</span> <span class="n">Find</span> <span class="n">available</span> <span class="n">rooms</span> <span class="k">by</span> <span class="n">hotel</span> <span class="nb">date</span><span class="err">’</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">hotel</span><span class="mf">.</span><span class="n">amenities_by_room</span> <span class="p">(</span>
+  <span class="n">hotel_id</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">room_number</span> <span class="nb">smallint</span><span class="p">,</span>
+  <span class="n">amenity_name</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">description</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">((</span><span class="n">hotel_id</span><span class="p">,</span> <span class="n">room_number</span><span class="p">),</span> <span class="n">amenity_name</span><span class="p">)</span> <span class="p">)</span>
+  <span class="k">WITH</span> <span class="n">comment</span> <span class="o">=</span> <span class="err">‘</span><span class="n">Q5</span><span class="mf">.</span> <span class="n">Find</span> <span class="n">amenities</span> <span class="n">for</span> <span class="n">a</span> <span class="n">room</span><span class="err">’</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Notice that the elements of the partition key are surrounded
+with parentheses, even though the partition key consists
+of the single column <code class="docutils literal notranslate"><span class="pre">poi_name</span></code>. This is a best practice that makes
+the selection of partition key more explicit to others reading your CQL.</p>
+<p>Similarly, here is the schema for the <code class="docutils literal notranslate"><span class="pre">reservation</span></code> keyspace:</p>
+<div class="highlight-cql notranslate"><div class="highlight"><pre><span></span><span class="k">CREATE</span> <span class="k">KEYSPACE</span> <span class="n">reservation</span> <span class="k">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="err">‘</span><span class="n">class</span><span class="err">’</span><span class="p">:</span>
+  <span class="err">‘</span><span class="n">SimpleStrategy</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">replication_factor</span><span class="err">’</span> <span class="p">:</span> <span class="mf">3</span><span class="p">};</span>
+
+<span class="k">CREATE</span> <span class="k">TYPE</span> <span class="n">reservation</span><span class="mf">.</span><span class="n">address</span> <span class="p">(</span>
+  <span class="n">street</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">city</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">state_or_province</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">postal_code</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">country</span> <span class="nb">text</span> <span class="p">);</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">reservation</span><span class="mf">.</span><span class="n">reservations_by_confirmation</span> <span class="p">(</span>
+  <span class="n">confirm_number</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">hotel_id</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">start_date</span> <span class="nb">date</span><span class="p">,</span>
+  <span class="n">end_date</span> <span class="nb">date</span><span class="p">,</span>
+  <span class="n">room_number</span> <span class="nb">smallint</span><span class="p">,</span>
+  <span class="n">guest_id</span> <span class="nb">uuid</span><span class="p">,</span>
+  <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">confirm_number</span><span class="p">)</span> <span class="p">)</span>
+  <span class="k">WITH</span> <span class="n">comment</span> <span class="o">=</span> <span class="err">‘</span><span class="n">Q6</span><span class="mf">.</span> <span class="n">Find</span> <span class="n">reservations</span> <span class="k">by</span> <span class="n">confirmation</span> <span class="n">number</span><span class="err">’</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">reservation</span><span class="mf">.</span><span class="n">reservations_by_hotel_date</span> <span class="p">(</span>
+  <span class="n">hotel_id</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">start_date</span> <span class="nb">date</span><span class="p">,</span>
+  <span class="n">end_date</span> <span class="nb">date</span><span class="p">,</span>
+  <span class="n">room_number</span> <span class="nb">smallint</span><span class="p">,</span>
+  <span class="n">confirm_number</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">guest_id</span> <span class="nb">uuid</span><span class="p">,</span>
+  <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">((</span><span class="n">hotel_id</span><span class="p">,</span> <span class="n">start_date</span><span class="p">),</span> <span class="n">room_number</span><span class="p">)</span> <span class="p">)</span>
+  <span class="k">WITH</span> <span class="n">comment</span> <span class="o">=</span> <span class="err">‘</span><span class="n">Q7</span><span class="mf">.</span> <span class="n">Find</span> <span class="n">reservations</span> <span class="k">by</span> <span class="n">hotel</span> <span class="k">and</span> <span class="nb">date</span><span class="err">’</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">reservation</span><span class="mf">.</span><span class="n">reservations_by_guest</span> <span class="p">(</span>
+  <span class="n">guest_last_name</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">hotel_id</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">start_date</span> <span class="nb">date</span><span class="p">,</span>
+  <span class="n">end_date</span> <span class="nb">date</span><span class="p">,</span>
+  <span class="n">room_number</span> <span class="nb">smallint</span><span class="p">,</span>
+  <span class="n">confirm_number</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">guest_id</span> <span class="nb">uuid</span><span class="p">,</span>
+  <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">((</span><span class="n">guest_last_name</span><span class="p">),</span> <span class="n">hotel_id</span><span class="p">)</span> <span class="p">)</span>
+  <span class="k">WITH</span> <span class="n">comment</span> <span class="o">=</span> <span class="err">‘</span><span class="n">Q8</span><span class="mf">.</span> <span class="n">Find</span> <span class="n">reservations</span> <span class="k">by</span> <span class="n">guest</span> <span class="n">name</span><span class="err">’</span><span class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">reservation</span><span class="mf">.</span><span class="n">guests</span> <span class="p">(</span>
+  <span class="n">guest_id</span> <span class="nb">uuid</span> <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+  <span class="n">first_name</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">last_name</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">title</span> <span class="nb">text</span><span class="p">,</span>
+  <span class="n">emails</span> <span class="k">set</span><span class="p">,</span>
+  <span class="n">phone_numbers</span> <span class="k">list</span><span class="p">,</span>
+  <span class="n">addresses</span> <span class="k">map</span><span class="o">&lt;</span><span class="nb">text</span><span class="p">,</span>
+  <span class="k">frozen</span><span class="o">&lt;</span><span class="n">address</span><span class="o">&gt;</span><span class="p">,</span>
+  <span class="n">confirm_number</span> <span class="nb">text</span> <span class="p">)</span>
+  <span class="k">WITH</span> <span class="n">comment</span> <span class="o">=</span> <span class="err">‘</span><span class="n">Q9</span><span class="mf">.</span> <span class="n">Find</span> <span class="n">guest</span> <span class="k">by</span> <span class="n">ID</span><span class="err">’</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>You now have a complete Cassandra schema for storing data for a hotel
+application.</p>
+<p><em>Material adapted from Cassandra, The Definitive Guide. Published by
+O’Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.</em></p>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="data_modeling_tools.html" class="btn btn-default pull-right " role="button" title="Cassandra Data Modeling Tools" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="data_modeling_refining.html" class="btn btn-default" role="button" title="Evaluating and Refining Data Models" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/data_modeling/data_modeling_tools.html b/src/doc/4.0-rc1/data_modeling/data_modeling_tools.html
new file mode 100644
index 0000000..fdad05d
--- /dev/null
+++ b/src/doc/4.0-rc1/data_modeling/data_modeling_tools.html
@@ -0,0 +1,157 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Data Modeling"
+
+doc-title: "Cassandra Data Modeling Tools"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Data Modeling" href="index.html"/>
+      <link rel="next" title="Configuring Cassandra" href="../configuration/index.html"/>
+      <link rel="prev" title="Defining Database Schema" href="data_modeling_schema.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Data Modeling</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="intro.html">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_conceptual.html">Conceptual Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_rdbms.html">RDBMS Design</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_queries.html">Defining Application Queries</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_logical.html">Logical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_physical.html">Physical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_refining.html">Evaluating and Refining Data Models</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_schema.html">Defining Database Schema</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Cassandra Data Modeling Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cassandra-data-modeling-tools">
+<h1>Cassandra Data Modeling Tools<a class="headerlink" href="#cassandra-data-modeling-tools" title="Permalink to this headline">¶</a></h1>
+<p>There are several tools available to help you design and
+manage your Cassandra schema and build queries.</p>
+<ul class="simple">
+<li><a class="reference external" href="https://hackolade.com/nosqldb.html#cassandra">Hackolade</a>
+is a data modeling tool that supports schema design for Cassandra and
+many other NoSQL databases. Hackolade supports the unique concepts of
+CQL such as partition keys and clustering columns, as well as data types
+including collections and UDTs. It also provides the ability to create
+Chebotko diagrams.</li>
+<li><a class="reference external" href="http://kdm.dataview.org/">Kashlev Data Modeler</a> is a Cassandra
+data modeling tool that automates the data modeling methodology
+described in this documentation, including identifying
+access patterns, conceptual, logical, and physical data modeling, and
+schema generation. It also includes model patterns that you can
+optionally leverage as a starting point for your designs.</li>
+<li>DataStax DevCenter is a tool for managing
+schema, executing queries and viewing results. While the tool is no
+longer actively supported, it is still popular with many developers and
+is available as a <a class="reference external" href="https://academy.datastax.com/downloads">free download</a>.
+DevCenter features syntax highlighting for CQL commands, types, and name
+literals. DevCenter provides command completion as you type out CQL
+commands and interprets the commands you type, highlighting any errors
+you make. The tool provides panes for managing multiple CQL scripts and
+connections to multiple clusters. The connections are used to run CQL
+commands against live clusters and view the results. The tool also has a
+query trace feature that is useful for gaining insight into the
+performance of your queries.</li>
+<li>IDE Plugins - There are CQL plugins available for several Integrated
+Development Environments (IDEs), such as IntelliJ IDEA and Apache
+NetBeans. These plugins typically provide features such as schema
+management and query execution.</li>
+</ul>
+<p>Some IDEs and tools that claim to support Cassandra do not actually support
+CQL natively, but instead access Cassandra using a JDBC/ODBC driver and
+interact with Cassandra as if it were a relational database with SQL
+support. Wnen selecting tools for working with Cassandra you’ll want to
+make sure they support CQL and reinforce Cassandra best practices for
+data modeling as presented in this documentation.</p>
+<p><em>Material adapted from Cassandra, The Definitive Guide. Published by
+O’Reilly Media, Inc. Copyright © 2020 Jeff Carpenter, Eben Hewitt.
+All rights reserved. Used with permission.</em></p>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../configuration/index.html" class="btn btn-default pull-right " role="button" title="Configuring Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="data_modeling_schema.html" class="btn btn-default" role="button" title="Defining Database Schema" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/data_modeling/index.html b/src/doc/4.0-rc1/data_modeling/index.html
new file mode 100644
index 0000000..06447e2
--- /dev/null
+++ b/src/doc/4.0-rc1/data_modeling/index.html
@@ -0,0 +1,154 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Data Modeling"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="next" title="Introduction" href="intro.html"/>
+      <link rel="prev" title="Changes" href="../cql/changes.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Data Modeling</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="intro.html">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_conceptual.html">Conceptual Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_rdbms.html">RDBMS Design</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_queries.html">Defining Application Queries</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_logical.html">Logical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_physical.html">Physical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_refining.html">Evaluating and Refining Data Models</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_schema.html">Defining Database Schema</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_tools.html">Cassandra Data Modeling Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="data-modeling">
+<h1>Data Modeling<a class="headerlink" href="#data-modeling" title="Permalink to this headline">¶</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="intro.html#what-is-data-modeling">What is Data Modeling?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="intro.html#query-driven-modeling">Query-driven modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="intro.html#goals">Goals</a></li>
+<li class="toctree-l2"><a class="reference internal" href="intro.html#partitions">Partitions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="intro.html#comparing-with-relational-data-model">Comparing with Relational Data Model</a></li>
+<li class="toctree-l2"><a class="reference internal" href="intro.html#examples-of-data-modeling">Examples of Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="intro.html#designing-schema">Designing Schema</a></li>
+<li class="toctree-l2"><a class="reference internal" href="intro.html#data-model-analysis">Data Model Analysis</a></li>
+<li class="toctree-l2"><a class="reference internal" href="intro.html#using-materialized-views">Using Materialized Views</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling_conceptual.html">Conceptual Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling_rdbms.html">RDBMS Design</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_rdbms.html#design-differences-between-rdbms-and-cassandra">Design Differences Between RDBMS and Cassandra</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling_queries.html">Defining Application Queries</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling_logical.html">Logical Data Modeling</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_logical.html#hotel-logical-data-model">Hotel Logical Data Model</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_logical.html#reservation-logical-data-model">Reservation Logical Data Model</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_logical.html#patterns-and-anti-patterns">Patterns and Anti-Patterns</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling_physical.html">Physical Data Modeling</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_physical.html#hotel-physical-data-model">Hotel Physical Data Model</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_physical.html#reservation-physical-data-model">Reservation Physical Data Model</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling_refining.html">Evaluating and Refining Data Models</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_refining.html#calculating-partition-size">Calculating Partition Size</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_refining.html#calculating-size-on-disk">Calculating Size on Disk</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_refining.html#breaking-up-large-partitions">Breaking Up Large Partitions</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling_schema.html">Defining Database Schema</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling_tools.html">Cassandra Data Modeling Tools</a></li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="intro.html" class="btn btn-default pull-right " role="button" title="Introduction" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../cql/changes.html" class="btn btn-default" role="button" title="Changes" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/data_modeling/intro.html b/src/doc/4.0-rc1/data_modeling/intro.html
new file mode 100644
index 0000000..364782d
--- /dev/null
+++ b/src/doc/4.0-rc1/data_modeling/intro.html
@@ -0,0 +1,230 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Data Modeling"
+
+doc-title: "Introduction"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Data Modeling" href="index.html"/>
+      <link rel="next" title="Conceptual Data Modeling" href="data_modeling_conceptual.html"/>
+      <link rel="prev" title="Data Modeling" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Data Modeling</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Introduction</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#what-is-data-modeling">What is Data Modeling?</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#query-driven-modeling">Query-driven modeling</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#goals">Goals</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#partitions">Partitions</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#comparing-with-relational-data-model">Comparing with Relational Data Model</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#examples-of-data-modeling">Examples of Data Modeling</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#designing-schema">Designing Schema</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#data-model-analysis">Data Model Analysis</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#using-materialized-views">Using Materialized Views</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_conceptual.html">Conceptual Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_rdbms.html">RDBMS Design</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_queries.html">Defining Application Queries</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_logical.html">Logical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_physical.html">Physical Data Modeling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_refining.html">Evaluating and Refining Data Models</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_schema.html">Defining Database Schema</a></li>
+<li class="toctree-l2"><a class="reference internal" href="data_modeling_tools.html">Cassandra Data Modeling Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="introduction">
+<h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h1>
+<p>Apache Cassandra stores data in tables, with each table consisting of rows and columns. CQL (Cassandra Query Language) is used to query the data stored in tables. Apache Cassandra data model is based around and optimized for querying. Cassandra does not support relational data modeling intended for relational databases.</p>
+<div class="section" id="what-is-data-modeling">
+<h2>What is Data Modeling?<a class="headerlink" href="#what-is-data-modeling" title="Permalink to this headline">¶</a></h2>
+<p>Data modeling is the process of identifying entities and their relationships. In relational databases, data is placed in normalized tables with foreign keys used to reference related data in other tables. Queries that the application will make are driven by the structure of the tables and related data are queried as table joins.</p>
+<p>In Cassandra, data modeling is query-driven. The data access patterns and application queries determine the structure and organization of data which then used to design the database tables.</p>
+<p>Data is modeled around specific queries. Queries are best designed to access a single table, which implies that all entities involved in a query must be in the same table to make data access (reads) very fast. Data is modeled to best suit a query or a set of queries. A table could have one or more entities as best suits a query. As entities do typically have relationships among them and queries could involve entities with relationships among them, a single entity may be included in multiple tables.</p>
+</div>
+<div class="section" id="query-driven-modeling">
+<h2>Query-driven modeling<a class="headerlink" href="#query-driven-modeling" title="Permalink to this headline">¶</a></h2>
+<p>Unlike a relational database model in which queries make use of table joins to get data from multiple tables, joins are not supported in Cassandra so all required fields (columns) must be grouped together in a single table. Since each query is backed by a table, data is duplicated across multiple tables in a process known as denormalization. Data duplication and a high write throughput are used to achieve a high read performance.</p>
+</div>
+<div class="section" id="goals">
+<h2>Goals<a class="headerlink" href="#goals" title="Permalink to this headline">¶</a></h2>
+<p>The choice of the primary key and partition key is important to distribute data evenly across the cluster. Keeping the number of partitions read for a query to a minimum is also important because different partitions could be located on different nodes and the coordinator would need to send a request to each node adding to the request overhead and latency. Even if the different partitions involved in a query are on the same node, fewer partitions make for a more efficient query.</p>
+</div>
+<div class="section" id="partitions">
+<h2>Partitions<a class="headerlink" href="#partitions" title="Permalink to this headline">¶</a></h2>
+<p>Apache Cassandra is a distributed database that stores data across a cluster of nodes. A partition key is used to partition data among the nodes. Cassandra partitions data over the storage nodes using a variant of consistent hashing for data distribution. Hashing is a technique used to map data with which given a key, a hash function generates a hash value (or simply a hash) that is stored in a hash table. A partition key is generated from the first field of a primary key.   Data partitioned into hash tables using partition keys provides for rapid lookup.  Fewer the partitions used for a query faster is the response time for the query.</p>
+<p>As an example of partitioning, consider table <code class="docutils literal notranslate"><span class="pre">t</span></code> in which <code class="docutils literal notranslate"><span class="pre">id</span></code> is the only field in the primary key.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">CREATE</span> <span class="n">TABLE</span> <span class="n">t</span> <span class="p">(</span>
+   <span class="nb">id</span> <span class="nb">int</span><span class="p">,</span>
+   <span class="n">k</span> <span class="nb">int</span><span class="p">,</span>
+   <span class="n">v</span> <span class="n">text</span><span class="p">,</span>
+   <span class="n">PRIMARY</span> <span class="n">KEY</span> <span class="p">(</span><span class="nb">id</span><span class="p">)</span>
+<span class="p">);</span>
+</pre></div>
+</div>
+<p>The partition key is generated from the primary key <code class="docutils literal notranslate"><span class="pre">id</span></code> for data distribution across the nodes in a cluster.</p>
+<p>Consider a variation of table <code class="docutils literal notranslate"><span class="pre">t</span></code> that has two fields constituting the primary key to make a composite or compound primary key.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">CREATE</span> <span class="n">TABLE</span> <span class="n">t</span> <span class="p">(</span>
+   <span class="nb">id</span> <span class="nb">int</span><span class="p">,</span>
+   <span class="n">c</span> <span class="n">text</span><span class="p">,</span>
+   <span class="n">k</span> <span class="nb">int</span><span class="p">,</span>
+   <span class="n">v</span> <span class="n">text</span><span class="p">,</span>
+   <span class="n">PRIMARY</span> <span class="n">KEY</span> <span class="p">(</span><span class="nb">id</span><span class="p">,</span><span class="n">c</span><span class="p">)</span>
+<span class="p">);</span>
+</pre></div>
+</div>
+<p>For the table <code class="docutils literal notranslate"><span class="pre">t</span></code> with a composite primary key the first field <code class="docutils literal notranslate"><span class="pre">id</span></code> is used to generate the partition key and the second field <code class="docutils literal notranslate"><span class="pre">c</span></code> is the clustering key used for sorting within a partition.  Using clustering keys to sort data makes retrieval of adjacent data more efficient.</p>
+<p>In general,  the first field or component of a primary key is hashed to generate the partition key and the remaining fields or components are the clustering keys that are used to sort data within a partition. Partitioning data  improves the efficiency of reads and writes. The other fields that are not primary key fields may be indexed separately to further improve query performance.</p>
+<p>The partition key could be generated from multiple fields if they are grouped as the first component of a primary key.  As another variation of the table <code class="docutils literal notranslate"><span class="pre">t</span></code>, consider a table with the first component of the primary key made of two fields grouped using parentheses.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">CREATE</span> <span class="n">TABLE</span> <span class="n">t</span> <span class="p">(</span>
+   <span class="n">id1</span> <span class="nb">int</span><span class="p">,</span>
+   <span class="n">id2</span> <span class="nb">int</span><span class="p">,</span>
+   <span class="n">c1</span> <span class="n">text</span><span class="p">,</span>
+   <span class="n">c2</span> <span class="n">text</span>
+   <span class="n">k</span> <span class="nb">int</span><span class="p">,</span>
+   <span class="n">v</span> <span class="n">text</span><span class="p">,</span>
+   <span class="n">PRIMARY</span> <span class="n">KEY</span> <span class="p">((</span><span class="n">id1</span><span class="p">,</span><span class="n">id2</span><span class="p">),</span><span class="n">c1</span><span class="p">,</span><span class="n">c2</span><span class="p">)</span>
+<span class="p">);</span>
+</pre></div>
+</div>
+<p>For the preceding table <code class="docutils literal notranslate"><span class="pre">t</span></code> the first component of the primary key constituting fields <code class="docutils literal notranslate"><span class="pre">id1</span></code> and <code class="docutils literal notranslate"><span class="pre">id2</span></code> is used to generate the partition key and the rest of the fields <code class="docutils literal notranslate"><span class="pre">c1</span></code> and <code class="docutils literal notranslate"><span class="pre">c2</span></code> are the clustering keys used for sorting within a partition.</p>
+</div>
+<div class="section" id="comparing-with-relational-data-model">
+<h2>Comparing with Relational Data Model<a class="headerlink" href="#comparing-with-relational-data-model" title="Permalink to this headline">¶</a></h2>
+<p>Relational databases store data in tables that have relations with other tables using foreign keys. A relational database’s approach to data modeling is table-centric. Queries must use table joins to get data from multiple tables that have a relation between them. Apache Cassandra does not have the concept of foreign keys or relational integrity. Apache Cassandra’s data model is based around designing efficient queries; queries that don’t involve multiple tables. Relational databases normalize data to avoid duplication. Apache Cassandra in contrast de-normalizes data by duplicating data in multiple tables for a query-centric data model. If a Cassandra data model cannot fully integrate the complexity of relationships between the different entities for a particular query, client-side joins in application code may be used.</p>
+</div>
+<div class="section" id="examples-of-data-modeling">
+<h2>Examples of Data Modeling<a class="headerlink" href="#examples-of-data-modeling" title="Permalink to this headline">¶</a></h2>
+<p>As an example, a <code class="docutils literal notranslate"><span class="pre">magazine</span></code> data set consists of data for magazines with attributes such as magazine id, magazine name, publication frequency, publication date, and publisher.  A basic query (Q1) for magazine data is to list all the magazine names including their publication frequency. As not all data attributes are needed for Q1 the data model would only consist of <code class="docutils literal notranslate"><span class="pre">id</span></code> ( for partition key), magazine name and publication frequency as shown in Figure 1.</p>
+<div class="figure">
+<img alt="../_images/Figure_1_data_model.jpg" src="../_images/Figure_1_data_model.jpg" />
+</div>
+<p>Figure 1. Data Model for Q1</p>
+<p>Another query (Q2)  is to list all the magazine names by publisher.  For Q2 the data model would consist of an additional attribute <code class="docutils literal notranslate"><span class="pre">publisher</span></code> for the partition key. The <code class="docutils literal notranslate"><span class="pre">id</span></code> would become the clustering key for sorting within a partition.   Data model for Q2 is illustrated in Figure 2.</p>
+<div class="figure">
+<img alt="../_images/Figure_2_data_model.jpg" src="../_images/Figure_2_data_model.jpg" />
+</div>
+<p>Figure 2. Data Model for Q2</p>
+</div>
+<div class="section" id="designing-schema">
+<h2>Designing Schema<a class="headerlink" href="#designing-schema" title="Permalink to this headline">¶</a></h2>
+<p>After the conceptual data model has been created a schema may be  designed for a query. For Q1 the following schema may be used.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">CREATE</span> <span class="n">TABLE</span> <span class="n">magazine_name</span> <span class="p">(</span><span class="nb">id</span> <span class="nb">int</span> <span class="n">PRIMARY</span> <span class="n">KEY</span><span class="p">,</span> <span class="n">name</span> <span class="n">text</span><span class="p">,</span> <span class="n">publicationFrequency</span> <span class="n">text</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>For Q2 the schema definition would include a clustering key for sorting.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">CREATE</span> <span class="n">TABLE</span> <span class="n">magazine_publisher</span> <span class="p">(</span><span class="n">publisher</span> <span class="n">text</span><span class="p">,</span><span class="nb">id</span> <span class="nb">int</span><span class="p">,</span><span class="n">name</span> <span class="n">text</span><span class="p">,</span> <span class="n">publicationFrequency</span> <span class="n">text</span><span class="p">,</span>
+<span class="n">PRIMARY</span> <span class="n">KEY</span> <span class="p">(</span><span class="n">publisher</span><span class="p">,</span> <span class="nb">id</span><span class="p">))</span> <span class="n">WITH</span> <span class="n">CLUSTERING</span> <span class="n">ORDER</span> <span class="n">BY</span> <span class="p">(</span><span class="nb">id</span> <span class="n">DESC</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="data-model-analysis">
+<h2>Data Model Analysis<a class="headerlink" href="#data-model-analysis" title="Permalink to this headline">¶</a></h2>
+<p>The data model is a conceptual model that must be analyzed and optimized based on storage, capacity, redundancy and consistency.  A data model may need to be modified as a result of the analysis. Considerations or limitations that are used in data model analysis include:</p>
+<ul class="simple">
+<li>Partition Size</li>
+<li>Data Redundancy</li>
+<li>Disk space</li>
+<li>Lightweight Transactions (LWT)</li>
+</ul>
+<p>The two measures of partition size are the number of values in a partition and partition size on disk. Though requirements for these measures may vary based on the application a general guideline is to keep number of values per partition to below 100,000 and disk space per partition to below 100MB.</p>
+<p>Data redundancies as duplicate data in tables and multiple partition replicates are to be expected in the design of a data model , but nevertheless should be kept in consideration as a parameter to keep to the minimum. LWT transactions (compare-and-set, conditional update) could affect performance and queries using LWT should be kept to the minimum.</p>
+</div>
+<div class="section" id="using-materialized-views">
+<h2>Using Materialized Views<a class="headerlink" href="#using-materialized-views" title="Permalink to this headline">¶</a></h2>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">Materialized views (MVs) are experimental in the latest (4.0) release.</p>
+</div>
+<p>Materialized views (MVs) could be used to implement multiple queries for a single table. A materialized view is a table built from data from another table, the base table, with new primary key and new properties. Changes to the base table data automatically add and update data in a MV.  Different queries may be implemented using a materialized view as an MV’s primary key differs from the base table. Queries are optimized by the primary key definition.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="data_modeling_conceptual.html" class="btn btn-default pull-right " role="button" title="Conceptual Data Modeling" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Data Modeling" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/development/ci.html b/src/doc/4.0-rc1/development/ci.html
new file mode 100644
index 0000000..bc9106d
--- /dev/null
+++ b/src/doc/4.0-rc1/development/ci.html
@@ -0,0 +1,171 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Contributing to Cassandra"
+
+doc-title: "Jenkins CI Environment"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Contributing to Cassandra" href="index.html"/>
+      <link rel="next" title="Dependency Management" href="dependencies.html"/>
+      <link rel="prev" title="Working on Documentation" href="documentation.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Jenkins CI Environment</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#about-ci-testing-and-apache-cassandra">About CI testing and Apache Cassandra</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#setting-up-your-own-jenkins-server">Setting up your own Jenkins server</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="jenkins-ci-environment">
+<h1>Jenkins CI Environment<a class="headerlink" href="#jenkins-ci-environment" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="about-ci-testing-and-apache-cassandra">
+<h2>About CI testing and Apache Cassandra<a class="headerlink" href="#about-ci-testing-and-apache-cassandra" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra can be automatically tested using various test suites, that are either implemented based on JUnit or the <a class="reference external" href="https://github.com/riptano/cassandra-dtest">dtest</a> scripts written in Python. As outlined in <a class="reference internal" href="testing.html"><span class="doc">Testing</span></a>, each kind of test suite addresses a different way how to test Cassandra. But in the end, all of them will be executed together on our CI platform at <a class="reference external" href="https://builds.apache.org">builds.apache.org</a>, running <a class="reference external" href="http://jenkins-ci.org">Jenkins</a>.</p>
+</div>
+<div class="section" id="setting-up-your-own-jenkins-server">
+<h2>Setting up your own Jenkins server<a class="headerlink" href="#setting-up-your-own-jenkins-server" title="Permalink to this headline">¶</a></h2>
+<p>Jenkins is an open source solution that can be installed on a large number of platforms. Setting up a custom Jenkins instance for Cassandra may be desirable for users who have hardware to spare, or organizations that want to run Cassandra tests for custom patches before contribution.</p>
+<p>Please refer to the Jenkins download and documentation pages for details on how to get Jenkins running, possibly also including slave build executor instances. The rest of the document will focus on how to setup Cassandra jobs in your Jenkins environment.</p>
+<div class="section" id="required-plugins">
+<h3>Required plugins<a class="headerlink" href="#required-plugins" title="Permalink to this headline">¶</a></h3>
+<p>The following plugins need to be installed additionally to the standard plugins (git, ant, ..).</p>
+<p>You can install any missing plugins through the install manager.</p>
+<p>Go to <code class="docutils literal notranslate"><span class="pre">Manage</span> <span class="pre">Jenkins</span> <span class="pre">-&gt;</span> <span class="pre">Manage</span> <span class="pre">Plugins</span> <span class="pre">-&gt;</span> <span class="pre">Available</span></code> and install the following plugins and respective dependencies:</p>
+<ul class="simple">
+<li>Copy Artifact Plugin</li>
+<li>description setter plugin</li>
+<li>Javadoc Plugin</li>
+<li>Job DSL</li>
+<li>Post build task</li>
+<li>Publish Over SSH</li>
+<li>JMH Report</li>
+<li>Slack Notification Plugin</li>
+<li>Test stability history</li>
+<li>Throttle Concurrent Builds Plug-in</li>
+<li>Timestamper</li>
+</ul>
+</div>
+<div class="section" id="configure-throttle-category">
+<h3>Configure Throttle Category<a class="headerlink" href="#configure-throttle-category" title="Permalink to this headline">¶</a></h3>
+<p>Builds that are not containerized (e.g. cqlshlib tests and in-jvm dtests) use local resources for Cassandra (ccm). To prevent these builds running concurrently the <code class="docutils literal notranslate"><span class="pre">Cassandra</span></code> throttle category needs to be created.</p>
+<p>This is done under <code class="docutils literal notranslate"><span class="pre">Manage</span> <span class="pre">Jenkins</span> <span class="pre">-&gt;</span> <span class="pre">System</span> <span class="pre">Configuration</span> <span class="pre">-&gt;</span> <span class="pre">Throttle</span> <span class="pre">Concurrent</span> <span class="pre">Builds</span></code>. Enter “Cassandra” for the <code class="docutils literal notranslate"><span class="pre">Category</span> <span class="pre">Name</span></code> and “1” for <code class="docutils literal notranslate"><span class="pre">Maximum</span> <span class="pre">Concurrent</span> <span class="pre">Builds</span> <span class="pre">Per</span> <span class="pre">Node</span></code>.</p>
+</div>
+<div class="section" id="setup-seed-job">
+<h3>Setup seed job<a class="headerlink" href="#setup-seed-job" title="Permalink to this headline">¶</a></h3>
+<p>Config <code class="docutils literal notranslate"><span class="pre">New</span> <span class="pre">Item</span></code></p>
+<ul class="simple">
+<li>Name it <code class="docutils literal notranslate"><span class="pre">Cassandra-Job-DSL</span></code></li>
+<li>Select <code class="docutils literal notranslate"><span class="pre">Freestyle</span> <span class="pre">project</span></code></li>
+</ul>
+<p>Under <code class="docutils literal notranslate"><span class="pre">Source</span> <span class="pre">Code</span> <span class="pre">Management</span></code> select Git using the repository: <code class="docutils literal notranslate"><span class="pre">https://github.com/apache/cassandra-builds</span></code></p>
+<p>Under <code class="docutils literal notranslate"><span class="pre">Build</span></code>, confirm <code class="docutils literal notranslate"><span class="pre">Add</span> <span class="pre">build</span> <span class="pre">step</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">Process</span> <span class="pre">Job</span> <span class="pre">DSLs</span></code> and enter at <code class="docutils literal notranslate"><span class="pre">Look</span> <span class="pre">on</span> <span class="pre">Filesystem</span></code>: <code class="docutils literal notranslate"><span class="pre">jenkins-dsl/cassandra_job_dsl_seed.groovy</span></code></p>
+<p>Generated jobs will be created based on the Groovy script’s default settings. You may want to override settings by checking <code class="docutils literal notranslate"><span class="pre">This</span> <span class="pre">project</span> <span class="pre">is</span> <span class="pre">parameterized</span></code> and add <code class="docutils literal notranslate"><span class="pre">String</span> <span class="pre">Parameter</span></code> for on the variables that can be found in the top of the script. This will allow you to setup jobs for your own repository and branches (e.g. working branches).</p>
+<p><strong>When done, confirm “Save”</strong></p>
+<p>You should now find a new entry with the given name in your project list. However, building the project will still fail and abort with an error message <cite>“Processing DSL script cassandra_job_dsl_seed.groovy ERROR: script not yet approved for use”</cite>. Goto <code class="docutils literal notranslate"><span class="pre">Manage</span> <span class="pre">Jenkins</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">In-process</span> <span class="pre">Script</span> <span class="pre">Approval</span></code> to fix this issue. Afterwards you should be able to run the script and have it generate numerous new jobs based on the found branches and configured templates.</p>
+<p>Jobs are triggered by either changes in Git or are scheduled to execute periodically, e.g. on daily basis. Jenkins will use any available executor with the label “cassandra”, once the job is to be run. Please make sure to make any executors available by selecting <code class="docutils literal notranslate"><span class="pre">Build</span> <span class="pre">Executor</span> <span class="pre">Status</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">Configure</span></code> -&gt; Add “<code class="docutils literal notranslate"><span class="pre">cassandra</span></code>” as label and save.</p>
+<p>Executors need to have “JDK 1.8 (latest)” installed. This is done under <code class="docutils literal notranslate"><span class="pre">Manage</span> <span class="pre">Jenkins</span> <span class="pre">-&gt;</span> <span class="pre">Global</span> <span class="pre">Tool</span> <span class="pre">Configuration</span> <span class="pre">-&gt;</span> <span class="pre">JDK</span> <span class="pre">Installations…</span></code>. Executors also need to have the virtualenv package installed on their system.</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="dependencies.html" class="btn btn-default pull-right " role="button" title="Dependency Management" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="documentation.html" class="btn btn-default" role="button" title="Working on Documentation" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/development/code_style.html b/src/doc/4.0-rc1/development/code_style.html
new file mode 100644
index 0000000..6226949
--- /dev/null
+++ b/src/doc/4.0-rc1/development/code_style.html
@@ -0,0 +1,215 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Contributing to Cassandra"
+
+doc-title: "Code Style"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Contributing to Cassandra" href="index.html"/>
+      <link rel="next" title="License Compliance" href="license_compliance.html"/>
+      <link rel="prev" title="Contributing Code Changes" href="patches.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Code Style</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#general-code-conventions">General Code Conventions</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#exception-handling">Exception handling</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#boilerplate">Boilerplate</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#multiline-statements">Multiline statements</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#whitespace">Whitespace</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#imports">Imports</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#format-files-for-ides">Format files for IDEs</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="code-style">
+<h1>Code Style<a class="headerlink" href="#code-style" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="general-code-conventions">
+<h2>General Code Conventions<a class="headerlink" href="#general-code-conventions" title="Permalink to this headline">¶</a></h2>
+<blockquote>
+<div><ul class="simple">
+<li>The Cassandra project follows <a class="reference external" href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Sun’s Java coding conventions</a> with an important exception: <code class="docutils literal notranslate"><span class="pre">{</span></code> and <code class="docutils literal notranslate"><span class="pre">}</span></code> are always placed on a new line</li>
+</ul>
+</div></blockquote>
+</div>
+<div class="section" id="exception-handling">
+<h2>Exception handling<a class="headerlink" href="#exception-handling" title="Permalink to this headline">¶</a></h2>
+<blockquote>
+<div><ul class="simple">
+<li>Never ever write <code class="docutils literal notranslate"><span class="pre">catch</span> <span class="pre">(...)</span> <span class="pre">{}</span></code> or <code class="docutils literal notranslate"><span class="pre">catch</span> <span class="pre">(...)</span> <span class="pre">{</span> <span class="pre">logger.error()</span> <span class="pre">}</span></code> merely to satisfy Java’s compile-time exception checking. Always propagate the exception up or throw <code class="docutils literal notranslate"><span class="pre">RuntimeException</span></code> (or, if it “can’t happen,” <code class="docutils literal notranslate"><span class="pre">AssertionError</span></code>). This makes the exceptions visible to automated tests.</li>
+<li>Avoid propagating up checked exceptions that no caller handles. Rethrow as <code class="docutils literal notranslate"><span class="pre">RuntimeException</span></code> (or <code class="docutils literal notranslate"><span class="pre">IOError</span></code>, if that is more applicable).</li>
+<li>Similarly, logger.warn() is often a cop-out: is this an error or not? If it is don’t hide it behind a warn; if it isn’t, no need for the warning.</li>
+<li>If you genuinely know an exception indicates an expected condition, it’s okay to ignore it BUT this must be explicitly explained in a comment.</li>
+</ul>
+</div></blockquote>
+</div>
+<div class="section" id="boilerplate">
+<h2>Boilerplate<a class="headerlink" href="#boilerplate" title="Permalink to this headline">¶</a></h2>
+<blockquote>
+<div><ul class="simple">
+<li>Do not implement equals or hashcode methods unless they are actually needed.</li>
+<li>Prefer public final fields to private fields with getters. (But prefer encapsulating behavior in “real” methods to either.)</li>
+<li>Prefer requiring initialization in the constructor to setters.</li>
+<li>Avoid redundant <code class="docutils literal notranslate"><span class="pre">this</span></code> references to member fields or methods.</li>
+<li>Do not extract interfaces (or abstract classes) unless you actually need multiple implementations of it.</li>
+<li>Always include braces for nested levels of conditionals and loops. Only avoid braces for single level.</li>
+</ul>
+</div></blockquote>
+</div>
+<div class="section" id="multiline-statements">
+<h2>Multiline statements<a class="headerlink" href="#multiline-statements" title="Permalink to this headline">¶</a></h2>
+<blockquote>
+<div><ul class="simple">
+<li>Try to keep lines under 120 characters, but use good judgement – it’s better to exceed 120 by a little, than split a line that has no natural splitting points.</li>
+<li>When splitting inside a method call, use one line per parameter and align them, like this:</li>
+</ul>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>SSTableWriter writer = new SSTableWriter(cfs.getTempSSTablePath(),
+                                         columnFamilies.size(),
+                                         StorageService.getPartitioner());
+</pre></div>
+</div>
+<ul class="simple">
+<li>When splitting a ternary, use one line per clause, carry the operator, and align like this:</li>
+</ul>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>var = bar == null
+    ? doFoo()
+    : doBar();
+</pre></div>
+</div>
+</div></blockquote>
+</div>
+<div class="section" id="whitespace">
+<h2>Whitespace<a class="headerlink" href="#whitespace" title="Permalink to this headline">¶</a></h2>
+<blockquote>
+<div><ul class="simple">
+<li>Please make sure to use 4 spaces instead of the tab character for all your indentation.</li>
+<li>Many lines in many files have a bunch of trailing whitespace… Please either clean these up in a separate patch, or leave them alone, so that reviewers now and anyone reading code history later doesn’t have to pay attention to whitespace diffs.</li>
+</ul>
+</div></blockquote>
+</div>
+<div class="section" id="imports">
+<h2>Imports<a class="headerlink" href="#imports" title="Permalink to this headline">¶</a></h2>
+<p>Please observe the following order for your imports:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>java
+[blank line]
+com.google.common
+org.apache.commons
+org.junit
+org.slf4j
+[blank line]
+everything else alphabetically
+</pre></div>
+</div>
+</div>
+<div class="section" id="format-files-for-ides">
+<h2>Format files for IDEs<a class="headerlink" href="#format-files-for-ides" title="Permalink to this headline">¶</a></h2>
+<blockquote>
+<div><ul class="simple">
+<li>IntelliJ: <a class="reference external" href="https://wiki.apache.org/cassandra/CodeStyle?action=AttachFile&amp;do=view&amp;target=intellij-codestyle.jar">intellij-codestyle.jar</a></li>
+<li>IntelliJ 13: <a class="reference external" href="https://gist.github.com/jdsumsion/9ab750a05c2a567c6afc">gist for IntelliJ 13</a> (this is a work in progress, still working on javadoc, ternary style, line continuations, etc)</li>
+<li>Eclipse (<a class="reference external" href="https://github.com/tjake/cassandra-style-eclipse">https://github.com/tjake/cassandra-style-eclipse</a>)</li>
+</ul>
+</div></blockquote>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="license_compliance.html" class="btn btn-default pull-right " role="button" title="License Compliance" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="patches.html" class="btn btn-default" role="button" title="Contributing Code Changes" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/development/dependencies.html b/src/doc/4.0-rc1/development/dependencies.html
new file mode 100644
index 0000000..5d4d2b7
--- /dev/null
+++ b/src/doc/4.0-rc1/development/dependencies.html
@@ -0,0 +1,156 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Contributing to Cassandra"
+
+doc-title: "Dependency Management"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Contributing to Cassandra" href="index.html"/>
+      <link rel="next" title="Release Process" href="release_process.html"/>
+      <link rel="prev" title="Jenkins CI Environment" href="ci.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Dependency Management</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#required-steps-to-add-or-update-libraries">Required steps to add or update libraries</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#pom-file-types">POM file types</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#troubleshooting-and-conflict-resolution">Troubleshooting and conflict resolution</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="dependency-management">
+<h1>Dependency Management<a class="headerlink" href="#dependency-management" title="Permalink to this headline">¶</a></h1>
+<p>Managing libraries for Cassandra is a bit less straight forward compared to other projects, as the build process is based on ant, maven and manually managed jars. Make sure to follow the steps below carefully and pay attention to any emerging issues in the <a class="reference internal" href="ci.html"><span class="doc">Jenkins CI Environment</span></a> and reported related issues on Jira/ML, in case of any project dependency changes.</p>
+<p>As Cassandra is an Apache product, all included libraries must follow Apache’s <a class="reference external" href="https://www.apache.org/legal/resolved.html">software license requirements</a>.</p>
+<div class="section" id="required-steps-to-add-or-update-libraries">
+<h2>Required steps to add or update libraries<a class="headerlink" href="#required-steps-to-add-or-update-libraries" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Add or replace jar file in <code class="docutils literal notranslate"><span class="pre">lib</span></code> directory</li>
+<li>Add or update <code class="docutils literal notranslate"><span class="pre">lib/license</span></code> files</li>
+<li>Update dependencies in <code class="docutils literal notranslate"><span class="pre">build.xml</span></code><ul>
+<li>Add to <code class="docutils literal notranslate"><span class="pre">parent-pom</span></code> with correct version</li>
+<li>Add to <code class="docutils literal notranslate"><span class="pre">all-pom</span></code> if simple Cassandra dependency (see below)</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="pom-file-types">
+<h2>POM file types<a class="headerlink" href="#pom-file-types" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><strong>parent-pom</strong> - contains all dependencies with the respective version. All other poms will refer to the artifacts with specified versions listed here.</li>
+<li><strong>build-deps-pom(-sources)</strong> + <strong>coverage-deps-pom</strong> - used by <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">build</span></code> compile target. Listed dependenices will be resolved and copied to <code class="docutils literal notranslate"><span class="pre">build/lib/{jar,sources}</span></code> by executing the <code class="docutils literal notranslate"><span class="pre">maven-ant-tasks-retrieve-build</span></code> target. This should contain libraries that are required for build tools (grammar, docs, instrumentation), but are not shipped as part of the Cassandra distribution.</li>
+<li><strong>test-deps-pom</strong> - refered by <code class="docutils literal notranslate"><span class="pre">maven-ant-tasks-retrieve-test</span></code> to retrieve and save dependencies to <code class="docutils literal notranslate"><span class="pre">build/test/lib</span></code>. Exclusively used during JUnit test execution.</li>
+<li><strong>all-pom</strong> - pom for <a class="reference external" href="https://mvnrepository.com/artifact/org.apache.cassandra/cassandra-all">cassandra-all.jar</a> that can be installed or deployed to public maven repos via <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">publish</span></code></li>
+</ul>
+</div>
+<div class="section" id="troubleshooting-and-conflict-resolution">
+<h2>Troubleshooting and conflict resolution<a class="headerlink" href="#troubleshooting-and-conflict-resolution" title="Permalink to this headline">¶</a></h2>
+<p>Here are some useful commands that may help you out resolving conflicts.</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">realclean</span></code> - gets rid of the build directory, including build artifacts.</li>
+<li><code class="docutils literal notranslate"><span class="pre">mvn</span> <span class="pre">dependency:tree</span> <span class="pre">-f</span> <span class="pre">build/apache-cassandra-*-SNAPSHOT.pom</span> <span class="pre">-Dverbose</span> <span class="pre">-Dincludes=org.slf4j</span></code> - shows transitive dependency tree for artifacts, e.g. org.slf4j. In case the command above fails due to a missing parent pom file, try running <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">mvn-install</span></code>.</li>
+<li><code class="docutils literal notranslate"><span class="pre">rm</span> <span class="pre">~/.m2/repository/org/apache/cassandra/apache-cassandra/</span></code> - removes cached local Cassandra maven artifacts</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="release_process.html" class="btn btn-default pull-right " role="button" title="Release Process" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="ci.html" class="btn btn-default" role="button" title="Jenkins CI Environment" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/development/documentation.html b/src/doc/4.0-rc1/development/documentation.html
new file mode 100644
index 0000000..dab8d73
--- /dev/null
+++ b/src/doc/4.0-rc1/development/documentation.html
@@ -0,0 +1,194 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Contributing to Cassandra"
+
+doc-title: "Working on Documentation"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Contributing to Cassandra" href="index.html"/>
+      <link rel="next" title="Jenkins CI Environment" href="ci.html"/>
+      <link rel="prev" title="How-to Commit" href="how_to_commit.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Working on Documentation</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#how-cassandra-is-documented">How Cassandra is documented</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#github-based-work-flow">GitHub based work flow</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#jira-based-work-flow">Jira based work flow</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#working-on-documents-locally-using-sphinx">Working on documents locally using Sphinx</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#notes-for-committers">Notes for committers</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="working-on-documentation">
+<h1>Working on Documentation<a class="headerlink" href="#working-on-documentation" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="how-cassandra-is-documented">
+<h2>How Cassandra is documented<a class="headerlink" href="#how-cassandra-is-documented" title="Permalink to this headline">¶</a></h2>
+<p>The official Cassandra documentation lives in the project’s git repository. We use a static site generator, <a class="reference external" href="http://www.sphinx-doc.org/">Sphinx</a>, to create pages hosted at <a class="reference external" href="https://cassandra.apache.org/doc/latest/">cassandra.apache.org</a>. You’ll also find developer centric content about Cassandra internals in our retired <a class="reference external" href="https://wiki.apache.org/cassandra">wiki</a> (not covered by this guide).</p>
+<p>Using a static site generator often requires to use a markup language instead of visual editors (which some people would call good news). Sphinx, the tool-set we use to generate our documentation, uses <a class="reference external" href="http://www.sphinx-doc.org/en/stable/rest.html">reStructuredText</a> for that. Markup languages allow you to format text by making use of certain syntax elements. Your document structure will also have to follow specific conventions. Feel free to take a look at <a class="reference external" href="..">existing documents</a> to get a better idea how we use reStructuredText to write our documents.</p>
+<p>So how do you actually start making contributions?</p>
+</div>
+<div class="section" id="github-based-work-flow">
+<h2>GitHub based work flow<a class="headerlink" href="#github-based-work-flow" title="Permalink to this headline">¶</a></h2>
+<p><em>Recommended for shorter documents and minor changes on existing content (e.g. fixing typos or updating descriptions)</em></p>
+<p>Follow these steps to contribute using GitHub. It’s assumed that you’re logged in with an existing account.</p>
+<ol class="arabic simple">
+<li>Fork the GitHub mirror of the <a class="reference external" href="https://github.com/apache/cassandra">Cassandra repository</a></li>
+</ol>
+<img alt="../_images/docs_fork.png" src="../_images/docs_fork.png" />
+<ol class="arabic simple" start="2">
+<li>Create a new branch that you can use to make your edits. It’s recommended to have a separate branch for each of your working projects. It will also make it easier to create a pull request later to when you decide you’re ready to contribute your work.</li>
+</ol>
+<img alt="../_images/docs_create_branch.png" src="../_images/docs_create_branch.png" />
+<ol class="arabic simple" start="3">
+<li>Navigate to document sources <code class="docutils literal notranslate"><span class="pre">doc/source</span></code> to find the <code class="docutils literal notranslate"><span class="pre">.rst</span></code> file to edit. The URL of the document should correspond  to the directory structure. New files can be created using the “Create new file” button:</li>
+</ol>
+<img alt="../_images/docs_create_file.png" src="../_images/docs_create_file.png" />
+<ol class="arabic simple" start="4">
+<li>At this point you should be able to edit the file using the GitHub web editor. Start by naming your file and add some content. Have a look at other existing <code class="docutils literal notranslate"><span class="pre">.rst</span></code> files to get a better idea what format elements to use.</li>
+</ol>
+<img alt="../_images/docs_editor.png" src="../_images/docs_editor.png" />
+<p>Make sure to preview added content before committing any changes.</p>
+<img alt="../_images/docs_preview.png" src="../_images/docs_preview.png" />
+<ol class="arabic simple" start="5">
+<li>Commit your work when you’re done. Make sure to add a short description of all your edits since the last time you committed before.</li>
+</ol>
+<img alt="../_images/docs_commit.png" src="../_images/docs_commit.png" />
+<ol class="arabic simple" start="6">
+<li>Finally if you decide that you’re done working on your branch, it’s time to create a pull request!</li>
+</ol>
+<img alt="../_images/docs_pr.png" src="../_images/docs_pr.png" />
+<p>Afterwards the GitHub Cassandra mirror will list your pull request and you’re done. Congratulations! Please give us some time to look at your suggested changes before we get back to you.</p>
+</div>
+<div class="section" id="jira-based-work-flow">
+<h2>Jira based work flow<a class="headerlink" href="#jira-based-work-flow" title="Permalink to this headline">¶</a></h2>
+<p><em>Recommended for major changes</em></p>
+<p>Significant changes to the documentation are best managed through our Jira issue tracker. Please follow the same <a class="reference external" href="https://cassandra.apache.org/doc/latest/development/patches.html">contribution guides</a> as for regular code contributions. Creating high quality content takes a lot of effort. It’s therefor always a good idea to create a ticket before you start and explain what you’re planing to do. This will create the opportunity for other contributors and committers to comment on your ideas and work so far. Eventually your patch gets a formal review before it is committed.</p>
+</div>
+<div class="section" id="working-on-documents-locally-using-sphinx">
+<h2>Working on documents locally using Sphinx<a class="headerlink" href="#working-on-documents-locally-using-sphinx" title="Permalink to this headline">¶</a></h2>
+<p><em>Recommended for advanced editing</em></p>
+<p>Using the GitHub web interface should allow you to use most common layout elements including images. More advanced formatting options and navigation elements depend on Sphinx to render correctly. Therefor it’s a good idea to setup Sphinx locally for any serious editing. Please follow the instructions in the Cassandra source directory at <code class="docutils literal notranslate"><span class="pre">doc/README.md</span></code>. Setup is very easy (at least on OSX and Linux).</p>
+</div>
+<div class="section" id="notes-for-committers">
+<h2>Notes for committers<a class="headerlink" href="#notes-for-committers" title="Permalink to this headline">¶</a></h2>
+<p>Please feel free to get involved and merge pull requests created on the GitHub mirror if you’re a committer. As this is a read-only repository,  you won’t be able to merge a PR directly on GitHub. You’ll have to commit the changes against the Apache repository with a comment that will close the PR when the committ syncs with GitHub.</p>
+<p>You may use a git work flow like this:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">remote</span> <span class="n">add</span> <span class="n">github</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">apache</span><span class="o">/</span><span class="n">cassandra</span><span class="o">.</span><span class="n">git</span>
+<span class="n">git</span> <span class="n">fetch</span> <span class="n">github</span> <span class="n">pull</span><span class="o">/&lt;</span><span class="n">PR</span><span class="o">-</span><span class="n">ID</span><span class="o">&gt;/</span><span class="n">head</span><span class="p">:</span><span class="o">&lt;</span><span class="n">PR</span><span class="o">-</span><span class="n">ID</span><span class="o">&gt;</span>
+<span class="n">git</span> <span class="n">checkout</span> <span class="o">&lt;</span><span class="n">PR</span><span class="o">-</span><span class="n">ID</span><span class="o">&gt;</span>
+</pre></div>
+</div>
+<p>Now either rebase or squash the commit, e.g. for squashing:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">reset</span> <span class="o">--</span><span class="n">soft</span> <span class="n">origin</span><span class="o">/</span><span class="n">trunk</span>
+<span class="n">git</span> <span class="n">commit</span> <span class="o">--</span><span class="n">author</span> <span class="o">&lt;</span><span class="n">PR</span> <span class="n">Author</span><span class="o">&gt;</span>
+</pre></div>
+</div>
+<p>Make sure to add a proper commit message including a “Closes #&lt;PR-ID&gt;” text to automatically close the PR.</p>
+<div class="section" id="publishing">
+<h3>Publishing<a class="headerlink" href="#publishing" title="Permalink to this headline">¶</a></h3>
+<p>Details for building and publishing of the site at cassandra.apache.org can be found <a class="reference external" href="https://github.com/apache/cassandra-website/blob/trunk/README.md">here</a>.</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="ci.html" class="btn btn-default pull-right " role="button" title="Jenkins CI Environment" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="how_to_commit.html" class="btn btn-default" role="button" title="How-to Commit" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/development/gettingstarted.html b/src/doc/4.0-rc1/development/gettingstarted.html
new file mode 100644
index 0000000..c87d826
--- /dev/null
+++ b/src/doc/4.0-rc1/development/gettingstarted.html
@@ -0,0 +1,162 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Contributing to Cassandra"
+
+doc-title: "Getting Started"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Contributing to Cassandra" href="index.html"/>
+      <link rel="next" title="Building and IDE Integration" href="ide.html"/>
+      <link rel="prev" title="Contributing to Cassandra" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Getting Started</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#initial-contributions">Initial Contributions</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#updating-documentation">Updating documentation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#answering-questions-on-the-user-list">Answering questions on the user list</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#reviewing-and-testing-a-submitted-patch">Reviewing and testing a submitted patch</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#investigate-and-or-fix-a-reported-bug">Investigate and/or fix a reported bug</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#create-unit-tests-and-dtests">Create unit tests and Dtests</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getting-started">
+<span id="gettingstarted"></span><h1>Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="initial-contributions">
+<h2>Initial Contributions<a class="headerlink" href="#initial-contributions" title="Permalink to this headline">¶</a></h2>
+<dl class="docutils">
+<dt>Writing a new feature is just one way to contribute to the Cassandra project.  In fact, making sure that supporting tasks, such as QA, documentation and helping users, keep up with the development of new features is an ongoing challenge for the project (and most open source projects). So, before firing up your IDE to create that new feature, we’d suggest you consider some of the following activities as a way of introducing yourself to the project and getting to know how things work.</dt>
+<dd><ul class="first last simple">
+<li>Add to or update the documentation</li>
+<li>Answer questions on the user list</li>
+<li>Review and test a submitted patch</li>
+<li>Investigate and fix a reported bug</li>
+<li>Create unit tests and d-tests</li>
+</ul>
+</dd>
+</dl>
+</div>
+<div class="section" id="updating-documentation">
+<h2>Updating documentation<a class="headerlink" href="#updating-documentation" title="Permalink to this headline">¶</a></h2>
+<p>The Cassandra documentation is maintained in the Cassandra source repository along with the Cassandra code base. To submit changes to the documentation, follow the standard process for submitting a patch (<a class="reference internal" href="patches.html#patches"><span class="std std-ref">Contributing Code Changes</span></a>).</p>
+</div>
+<div class="section" id="answering-questions-on-the-user-list">
+<h2>Answering questions on the user list<a class="headerlink" href="#answering-questions-on-the-user-list" title="Permalink to this headline">¶</a></h2>
+<p>Subscribe to the user list, look out for some questions you know the answer to and reply with an answer. Simple as that!
+See the <a class="reference external" href="http://cassandra.apache.org/community/">community</a> page for details on how to subscribe to the mailing list.</p>
+</div>
+<div class="section" id="reviewing-and-testing-a-submitted-patch">
+<h2>Reviewing and testing a submitted patch<a class="headerlink" href="#reviewing-and-testing-a-submitted-patch" title="Permalink to this headline">¶</a></h2>
+<p>Reviewing patches is not the sole domain of committers, if others have reviewed a patch it can reduce the load on the committers allowing them to write more great features or review more patches. Follow the instructions in <span class="xref std std-ref">_development_how_to_review</span> or create a build with the patch and test it with your own workload. Add a comment to the JIRA ticket to let others know what you have done and the results of your work. (For example, “I tested this performance enhacement on our application’s standard production load test and found a 3% improvement.”)</p>
+</div>
+<div class="section" id="investigate-and-or-fix-a-reported-bug">
+<h2>Investigate and/or fix a reported bug<a class="headerlink" href="#investigate-and-or-fix-a-reported-bug" title="Permalink to this headline">¶</a></h2>
+<p>Often, the hardest work in fixing a bug is reproducing it. Even if you don’t have the knowledge to produce a fix, figuring out a way to reliable reproduce an issues can be a massive contribution to getting a bug fixed. Document your method of reproduction in a JIRA comment or, better yet, produce an automated test that reproduces the issue and attach it to the ticket. If you go as far as producing a fix, follow the process for submitting a patch (<a class="reference internal" href="patches.html#patches"><span class="std std-ref">Contributing Code Changes</span></a>).</p>
+</div>
+<div class="section" id="create-unit-tests-and-dtests">
+<h2>Create unit tests and Dtests<a class="headerlink" href="#create-unit-tests-and-dtests" title="Permalink to this headline">¶</a></h2>
+<p>Test coverage in Cassandra is improving but, as with most code bases, it could benefit from more automated test coverage. Before starting work in an area, consider reviewing and enhancing the existing test coverage. This will both improve your knowledge of the code before you start on an enhancement and reduce the chances of your change in introducing new issues. See <a class="reference internal" href="testing.html#testing"><span class="std std-ref">Testing</span></a> and <a class="reference internal" href="patches.html#patches"><span class="std std-ref">Contributing Code Changes</span></a> for more detail.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="ide.html" class="btn btn-default pull-right " role="button" title="Building and IDE Integration" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Contributing to Cassandra" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/development/how_to_commit.html b/src/doc/4.0-rc1/development/how_to_commit.html
new file mode 100644
index 0000000..b5e4bcd
--- /dev/null
+++ b/src/doc/4.0-rc1/development/how_to_commit.html
@@ -0,0 +1,220 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Contributing to Cassandra"
+
+doc-title: "How-to Commit"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Contributing to Cassandra" href="index.html"/>
+      <link rel="next" title="Working on Documentation" href="documentation.html"/>
+      <link rel="prev" title="Review Checklist" href="how_to_review.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">How-to Commit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="how-to-commit">
+<h1>How-to Commit<a class="headerlink" href="#how-to-commit" title="Permalink to this headline">¶</a></h1>
+<p>If you are a committer, feel free to pick any process that works for you - so long as you are planning to commit the work yourself.</p>
+<p>Here is how committing and merging will usually look for merging and pushing for tickets that follow the convention (if patch-based):</p>
+<p>Hypothetical CASSANDRA-12345 ticket is a cassandra-3.0 based bug fix that requires different code for cassandra-3.3, and trunk. Contributor Jackie supplied a patch for the root branch (12345-3.0.patch), and patches for the remaining branches (12345-3.3.patch, 12345-trunk.patch).</p>
+<dl class="docutils">
+<dt>On cassandra-3.0:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">am</span> <span class="pre">-3</span> <span class="pre">12345-3.0.patch</span></code> (if we have a problem b/c of CHANGES.txt not merging anymore, we fix  it ourselves, in place)</li>
+<li><code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">realclean</span> <span class="pre">&amp;&amp;</span> <span class="pre">ant</span> <span class="pre">jar</span> <span class="pre">build-test</span></code> (rebuild to make sure code compiles)</li>
+</ol>
+</dd>
+<dt>On cassandra-3.3:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">merge</span> <span class="pre">cassandra-3.0</span> <span class="pre">-s</span> <span class="pre">ours</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">apply</span> <span class="pre">-3</span> <span class="pre">12345-3.3.patch</span></code> (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)</li>
+<li><code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">realclean</span> <span class="pre">&amp;&amp;</span> <span class="pre">ant</span> <span class="pre">jar</span> <span class="pre">build-test</span></code> (rebuild to make sure code compiles)</li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">commit</span> <span class="pre">--amend</span></code></li>
+</ol>
+</dd>
+<dt>On trunk:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">merge</span> <span class="pre">cassandra-3.3</span> <span class="pre">-s</span> <span class="pre">ours</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">apply</span> <span class="pre">-3</span> <span class="pre">12345-trunk.patch</span></code> (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)</li>
+<li><code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">realclean</span> <span class="pre">&amp;&amp;</span> <span class="pre">ant</span> <span class="pre">jar</span> <span class="pre">build-test</span></code> (rebuild to make sure code compiles)</li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">commit</span> <span class="pre">--amend</span></code></li>
+</ol>
+</dd>
+<dt>On any branch:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">push</span> <span class="pre">origin</span> <span class="pre">cassandra-3.0</span> <span class="pre">cassandra-3.3</span> <span class="pre">trunk</span> <span class="pre">--atomic</span></code></li>
+</ol>
+</dd>
+</dl>
+<p>Same scenario, but a branch-based contribution:</p>
+<dl class="docutils">
+<dt>On cassandra-3.0:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">cherry-pick</span> <span class="pre">&lt;sha-of-3.0-commit&gt;</span></code> (if we have a problem b/c of CHANGES.txt not merging anymore, we fix it ourselves, in place)</li>
+<li><code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">realclean</span> <span class="pre">&amp;&amp;</span> <span class="pre">ant</span> <span class="pre">jar</span> <span class="pre">build-test</span></code> (rebuild to make sure code compiles)</li>
+</ol>
+</dd>
+<dt>On cassandra-3.3:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">merge</span> <span class="pre">cassandra-3.0</span> <span class="pre">-s</span> <span class="pre">ours</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">format-patch</span> <span class="pre">-1</span> <span class="pre">&lt;sha-of-3.3-commit&gt;</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">apply</span> <span class="pre">-3</span> <span class="pre">&lt;sha-of-3.3-commit&gt;.patch</span></code> (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)</li>
+<li><code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">realclean</span> <span class="pre">&amp;&amp;</span> <span class="pre">ant</span> <span class="pre">jar</span> <span class="pre">build-test</span></code> (rebuild to make sure code compiles)</li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">commit</span> <span class="pre">--amend</span></code></li>
+</ol>
+</dd>
+<dt>On trunk:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">merge</span> <span class="pre">cassandra-3.3</span> <span class="pre">-s</span> <span class="pre">ours</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">format-patch</span> <span class="pre">-1</span> <span class="pre">&lt;sha-of-trunk-commit&gt;</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">apply</span> <span class="pre">-3</span> <span class="pre">&lt;sha-of-trunk-commit&gt;.patch</span></code> (likely to have an issue with CHANGES.txt here: fix it ourselves, then git add CHANGES.txt)</li>
+<li><code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">realclean</span> <span class="pre">&amp;&amp;</span> <span class="pre">ant</span> <span class="pre">jar</span> <span class="pre">build-test</span></code> (rebuild to make sure code compiles)</li>
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">commit</span> <span class="pre">--amend</span></code></li>
+</ol>
+</dd>
+<dt>On any branch:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">push</span> <span class="pre">origin</span> <span class="pre">cassandra-3.0</span> <span class="pre">cassandra-3.3</span> <span class="pre">trunk</span> <span class="pre">--atomic</span></code></li>
+</ol>
+</dd>
+</dl>
+<p>If the patch is for an older branch, and doesn’t impact later branches (such as trunk), we still need to merge up.</p>
+<dl class="docutils">
+<dt>On cassandra-3.0:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">cherry-pick</span> <span class="pre">&lt;sha-of-3.0-commit&gt;</span></code> (if we have a problem b/c of CHANGES.txt not merging anymore, we fix it ourselves, in place)</li>
+<li><code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">realclean</span> <span class="pre">&amp;&amp;</span> <span class="pre">ant</span> <span class="pre">jar</span> <span class="pre">build-test</span></code> (rebuild to make sure code compiles)</li>
+</ol>
+</dd>
+<dt>On cassandra-3.3:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">merge</span> <span class="pre">cassandra-3.0</span> <span class="pre">-s</span> <span class="pre">ours</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">realclean</span> <span class="pre">&amp;&amp;</span> <span class="pre">ant</span> <span class="pre">jar</span> <span class="pre">build-test</span></code> (rebuild to make sure code compiles)</li>
+</ol>
+</dd>
+<dt>On trunk:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">merge</span> <span class="pre">cassandra-3.3</span> <span class="pre">-s</span> <span class="pre">ours</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">realclean</span> <span class="pre">&amp;&amp;</span> <span class="pre">ant</span> <span class="pre">jar</span> <span class="pre">build-test</span></code> (rebuild to make sure code compiles)</li>
+</ol>
+</dd>
+<dt>On any branch:</dt>
+<dd><ol class="first last arabic simple">
+<li><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">push</span> <span class="pre">origin</span> <span class="pre">cassandra-3.0</span> <span class="pre">cassandra-3.3</span> <span class="pre">trunk</span> <span class="pre">--atomic</span></code></li>
+</ol>
+</dd>
+</dl>
+<div class="admonition tip">
+<p class="first admonition-title">Tip</p>
+<p>Notes on git flags:
+<code class="docutils literal notranslate"><span class="pre">-3</span></code> flag to am and apply will instruct git to perform a 3-way merge for you. If a conflict is detected, you can either resolve it manually or invoke git mergetool - for both am and apply.</p>
+<p class="last"><code class="docutils literal notranslate"><span class="pre">--atomic</span></code> flag to git push does the obvious thing: pushes all or nothing. Without the flag, the command is equivalent to running git push once per each branch. This is nifty in case a race condition happens - you won’t push half the branches, blocking other committers’ progress while you are resolving the issue.</p>
+</div>
+<div class="admonition tip">
+<p class="first admonition-title">Tip</p>
+<p class="last">The fastest way to get a patch from someone’s commit in a branch on GH - if you don’t have their repo in remotes -  is to append .patch to the commit url, e.g.
+curl -O <a class="reference external" href="https://github.com/apache/cassandra/commit/7374e9b5ab08c1f1e612bf72293ea14c959b0c3c.patch">https://github.com/apache/cassandra/commit/7374e9b5ab08c1f1e612bf72293ea14c959b0c3c.patch</a></p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="documentation.html" class="btn btn-default pull-right " role="button" title="Working on Documentation" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="how_to_review.html" class="btn btn-default" role="button" title="Review Checklist" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/development/how_to_review.html b/src/doc/4.0-rc1/development/how_to_review.html
new file mode 100644
index 0000000..8303272
--- /dev/null
+++ b/src/doc/4.0-rc1/development/how_to_review.html
@@ -0,0 +1,180 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Contributing to Cassandra"
+
+doc-title: "Review Checklist"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Contributing to Cassandra" href="index.html"/>
+      <link rel="next" title="How-to Commit" href="how_to_commit.html"/>
+      <link rel="prev" title="License Compliance" href="license_compliance.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="review-checklist">
+<span id="how-to-review"></span><h1>Review Checklist<a class="headerlink" href="#review-checklist" title="Permalink to this headline">¶</a></h1>
+<p>When reviewing tickets in Apache JIRA, the following items should be covered as part of the review process:</p>
+<p><strong>General</strong></p>
+<blockquote>
+<div><ul class="simple">
+<li>Does it conform to the <a class="reference internal" href="code_style.html"><span class="doc">Code Style</span></a> guidelines?</li>
+<li>Is there any redundant or duplicate code?</li>
+<li>Is the code as modular as possible?</li>
+<li>Can any singletons be avoided?</li>
+<li>Can any of the code be replaced with library functions?</li>
+<li>Are units of measurement used in the code consistent, both internally and with the rest of the ecosystem?</li>
+</ul>
+</div></blockquote>
+<p><strong>Error-Handling</strong></p>
+<blockquote>
+<div><ul class="simple">
+<li>Are all data inputs and outputs checked (for the correct type, length, format, and range) and encoded?</li>
+<li>Where third-party utilities are used, are returning errors being caught?</li>
+<li>Are invalid parameter values handled?</li>
+<li>Are any Throwable/Exceptions passed to the JVMStabilityInspector?</li>
+<li>Are errors well-documented? Does the error message tell the user how to proceed?</li>
+<li>Do exceptions propagate to the appropriate level in the code?</li>
+</ul>
+</div></blockquote>
+<p><strong>Documentation</strong></p>
+<blockquote>
+<div><ul class="simple">
+<li>Do comments exist and describe the intent of the code (the “why”, not the “how”)?</li>
+<li>Are javadocs added where appropriate?</li>
+<li>Is any unusual behavior or edge-case handling described?</li>
+<li>Are data structures and units of measurement explained?</li>
+<li>Is there any incomplete code? If so, should it be removed or flagged with a suitable marker like ‘TODO’?</li>
+<li>Does the code self-document via clear naming, abstractions, and flow control?</li>
+<li>Have NEWS.txt, the cql3 docs, and the native protocol spec been updated if needed?</li>
+<li>Is the ticket tagged with “client-impacting” and “doc-impacting”, where appropriate?</li>
+<li>Has lib/licences been updated for third-party libs? Are they Apache License compatible?</li>
+<li>Is the Component on the JIRA ticket set appropriately?</li>
+</ul>
+</div></blockquote>
+<p><strong>Testing</strong></p>
+<blockquote>
+<div><ul class="simple">
+<li>Is the code testable? i.e. don’t add too many or hide dependencies, unable to initialize objects, test frameworks can use methods etc.</li>
+<li>Do tests exist and are they comprehensive?</li>
+<li>Do unit tests actually test that the code is performing the intended functionality?</li>
+<li>Could any test code use common functionality (e.g. ccm, dtest, or CqlTester methods) or abstract it there for reuse?</li>
+<li>If the code may be affected by multi-node clusters, are there dtests?</li>
+<li>If the code may take a long time to test properly, are there CVH tests?</li>
+<li>Is the test passing on CI for all affected branches (up to trunk, if applicable)? Are there any regressions?</li>
+<li>If patch affects read/write path, did we test for performance regressions w/multiple workloads?</li>
+<li>If adding a new feature, were tests added and performed confirming it meets the expected SLA/use-case requirements for the feature?</li>
+</ul>
+</div></blockquote>
+<p><strong>Logging</strong></p>
+<blockquote>
+<div><ul class="simple">
+<li>Are logging statements logged at the correct level?</li>
+<li>Are there logs in the critical path that could affect performance?</li>
+<li>Is there any log that could be added to communicate status or troubleshoot potential problems in this feature?</li>
+<li>Can any unnecessary logging statement be removed?</li>
+</ul>
+</div></blockquote>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="how_to_commit.html" class="btn btn-default pull-right " role="button" title="How-to Commit" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="license_compliance.html" class="btn btn-default" role="button" title="License Compliance" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/development/ide.html b/src/doc/4.0-rc1/development/ide.html
new file mode 100644
index 0000000..9739635
--- /dev/null
+++ b/src/doc/4.0-rc1/development/ide.html
@@ -0,0 +1,269 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Contributing to Cassandra"
+
+doc-title: "Building and IDE Integration"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Contributing to Cassandra" href="index.html"/>
+      <link rel="next" title="Testing" href="testing.html"/>
+      <link rel="prev" title="Getting Started" href="gettingstarted.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Building and IDE Integration</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#building-from-source">Building From Source</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#setting-up-cassandra-in-intellij-idea">Setting up Cassandra in IntelliJ IDEA</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#opening-cassandra-in-apache-netbeans">Opening Cassandra in Apache NetBeans</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#setting-up-cassandra-in-eclipse">Setting up Cassandra in Eclipse</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="building-and-ide-integration">
+<h1>Building and IDE Integration<a class="headerlink" href="#building-and-ide-integration" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="building-from-source">
+<h2>Building From Source<a class="headerlink" href="#building-from-source" title="Permalink to this headline">¶</a></h2>
+<p>Getting started with Cassandra and IntelliJ IDEA or Eclipse is simple, once you manage to build Cassandra from source using <a class="reference external" href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java 8</a>, <a class="reference external" href="https://git-scm.com/">Git</a> and <a class="reference external" href="http://ant.apache.org/">Ant</a>.</p>
+<p>The source code for Cassandra is shared through the central Apache Git repository and organized by different branches. You can access the code for the current development branch through git as follows:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">gitbox</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="o">/</span><span class="n">repos</span><span class="o">/</span><span class="n">asf</span><span class="o">/</span><span class="n">cassandra</span><span class="o">.</span><span class="n">git</span> <span class="n">cassandra</span><span class="o">-</span><span class="n">trunk</span>
+</pre></div>
+</div>
+<p>Other branches will point to different versions of Cassandra. Switching to a different branch requires checking out the branch by its name:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">checkout</span> <span class="n">cassandra</span><span class="o">-</span><span class="mf">3.0</span>
+</pre></div>
+</div>
+<p>You can get a list of available branches with <code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">branch</span></code>.</p>
+<p>Finally build Cassandra using ant:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ant</span>
+</pre></div>
+</div>
+<p>This may take a significant amount of time depending on whether artifacts have to be downloaded and the number of classes that need to be compiled.</p>
+<div class="admonition hint">
+<p class="first admonition-title">Hint</p>
+<p class="last">You can setup multiple working trees for different Cassandra versions from the same repository using <a class="reference external" href="https://git-scm.com/docs/git-worktree">git-worktree</a>.</p>
+</div>
+<div class="line-block">
+<div class="line"><br /></div>
+</div>
+</div>
+<div class="section" id="setting-up-cassandra-in-intellij-idea">
+<h2>Setting up Cassandra in IntelliJ IDEA<a class="headerlink" href="#setting-up-cassandra-in-intellij-idea" title="Permalink to this headline">¶</a></h2>
+<p><a class="reference external" href="https://www.jetbrains.com/idea/">IntelliJ IDEA</a> by JetBrains is one of the most popular IDEs for Cassandra and Java development in general. The Community Edition is provided as a free download with all features needed to get started developing Cassandra.</p>
+<div class="section" id="setup-cassandra-as-a-project-c-2-1-and-newer">
+<h3>Setup Cassandra as a Project (C* 2.1 and newer)<a class="headerlink" href="#setup-cassandra-as-a-project-c-2-1-and-newer" title="Permalink to this headline">¶</a></h3>
+<p>Since 2.1.5, there is a new ant target: <code class="docutils literal notranslate"><span class="pre">generate-idea-files</span></code>. Please see our <a class="reference external" href="https://wiki.apache.org/cassandra/RunningCassandraInIDEA">wiki</a> for instructions for older Cassandra versions.</p>
+<p>Please clone and build Cassandra as described above and execute the following steps:</p>
+<ol class="arabic simple">
+<li>Once Cassandra is built, generate the IDEA files using ant:</li>
+</ol>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ant</span> <span class="n">generate</span><span class="o">-</span><span class="n">idea</span><span class="o">-</span><span class="n">files</span>
+</pre></div>
+</div>
+<ol class="arabic simple" start="2">
+<li>Start IDEA</li>
+<li>Open the IDEA project from the checked out Cassandra directory using the menu item Open in IDEA’s File menu</li>
+</ol>
+<p>The project generated by the ant task <code class="docutils literal notranslate"><span class="pre">generate-idea-files</span></code> contains nearly everything you need to debug Cassandra and execute unit tests.</p>
+<blockquote>
+<div><ul class="simple">
+<li>Run/debug defaults for JUnit</li>
+<li>Run/debug configuration for Cassandra daemon</li>
+<li>License header for Java source files</li>
+<li>Cassandra code style</li>
+<li>Inspections</li>
+</ul>
+</div></blockquote>
+<div class="line-block">
+<div class="line"><br /></div>
+</div>
+</div>
+</div>
+<div class="section" id="opening-cassandra-in-apache-netbeans">
+<h2>Opening Cassandra in Apache NetBeans<a class="headerlink" href="#opening-cassandra-in-apache-netbeans" title="Permalink to this headline">¶</a></h2>
+<p><a class="reference external" href="https://netbeans.apache.org/">Apache NetBeans</a> is the elder of the open sourced java IDEs, and can be used for Cassandra development. There is no project setup or generation required to open Cassandra in NetBeans.</p>
+<div class="section" id="open-cassandra-as-a-project-c-4-0-and-newer">
+<h3>Open Cassandra as a Project (C* 4.0 and newer)<a class="headerlink" href="#open-cassandra-as-a-project-c-4-0-and-newer" title="Permalink to this headline">¶</a></h3>
+<p>Please clone and build Cassandra as described above and execute the following steps:</p>
+<ol class="arabic simple">
+<li>Start Apache NetBeans</li>
+<li>Open the NetBeans project from the <cite>ide/</cite> folder of the checked out Cassandra directory using the menu item “Open Project…” in NetBeans’ File menu</li>
+</ol>
+<p>The project opened supports building, running, debugging, and profiling Cassandra from within the IDE. These actions delegate to the ant <cite>build.xml</cite> script.</p>
+<blockquote>
+<div><ul class="simple">
+<li>Build/Run/Debug Project is available via the Run/Debug menus, or the project context menu.</li>
+<li>Profile Project is available via the Profile menu. In the opened Profiler tab, click the green “Profile” button.</li>
+<li>Cassandra’s code style is honored in <cite>ide/nbproject/project.properties</cite></li>
+</ul>
+</div></blockquote>
+<p>The <cite>JAVA8_HOME</cite> system variable must be set in the environment that NetBeans starts in for the Run/Debug/Profile ant targets to execute.</p>
+<div class="line-block">
+<div class="line"><br /></div>
+</div>
+</div>
+</div>
+<div class="section" id="setting-up-cassandra-in-eclipse">
+<h2>Setting up Cassandra in Eclipse<a class="headerlink" href="#setting-up-cassandra-in-eclipse" title="Permalink to this headline">¶</a></h2>
+<p>Eclipse is a popular open source IDE that can be used for Cassandra development. Various Eclipse environments are available from the <a class="reference external" href="https://www.eclipse.org/downloads/eclipse-packages/">download page</a>. The following guide was created with “Eclipse IDE for Java Developers”.</p>
+<p>These instructions were tested on Ubuntu 16.04 with Eclipse Neon (4.6) using Cassandra 2.1, 2.2 and 3.x.</p>
+<div class="section" id="project-settings">
+<h3>Project Settings<a class="headerlink" href="#project-settings" title="Permalink to this headline">¶</a></h3>
+<p><strong>It is important that you generate the Eclipse files with Ant before trying to set up the Eclipse project.</strong></p>
+<blockquote>
+<div><ul class="simple">
+<li>Clone and build Cassandra as described above.</li>
+<li>Run <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">generate-eclipse-files</span></code> to create the Eclipse settings.</li>
+<li>Start Eclipse.</li>
+<li>Select <code class="docutils literal notranslate"><span class="pre">File-&gt;Import-&gt;Existing</span> <span class="pre">Projects</span> <span class="pre">into</span> <span class="pre">Workspace-&gt;Select</span> <span class="pre">git</span> <span class="pre">directory</span></code>.</li>
+<li>Make sure “cassandra-trunk” is recognized and selected as a project (assuming you checked the code out into the folder cassandra-trunk as described above).</li>
+<li>Confirm “Finish” to have your project imported.</li>
+</ul>
+</div></blockquote>
+<p>You should now be able to find the project as part of the “Package Explorer” or “Project Explorer” without having Eclipse complain about any errors after building the project automatically.</p>
+</div>
+<div class="section" id="unit-tests">
+<h3>Unit Tests<a class="headerlink" href="#unit-tests" title="Permalink to this headline">¶</a></h3>
+<p>Unit tests can be run from Eclipse by simply right-clicking the class file or method and selecting <code class="docutils literal notranslate"><span class="pre">Run</span> <span class="pre">As-&gt;JUnit</span> <span class="pre">Test</span></code>. Tests can be debugged this way as well by defining breakpoints (double-click line number) and selecting <code class="docutils literal notranslate"><span class="pre">Debug</span> <span class="pre">As-&gt;JUnit</span> <span class="pre">Test</span></code>.</p>
+<p>Alternatively all unit tests can be run from the command line as described in <a class="reference internal" href="testing.html"><span class="doc">Testing</span></a></p>
+</div>
+<div class="section" id="debugging-cassandra-using-eclipse">
+<h3>Debugging Cassandra Using Eclipse<a class="headerlink" href="#debugging-cassandra-using-eclipse" title="Permalink to this headline">¶</a></h3>
+<p>There are two ways how to start and debug a local Cassandra instance with Eclipse. You can either start Cassandra just as you normally would by using the <code class="docutils literal notranslate"><span class="pre">./bin/cassandra</span></code> script and connect to the JVM through <a class="reference external" href="https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/introclientissues005.html">remotely</a> from Eclipse or start Cassandra from Eclipse right away.</p>
+<div class="section" id="starting-cassandra-from-command-line">
+<h4>Starting Cassandra From Command Line<a class="headerlink" href="#starting-cassandra-from-command-line" title="Permalink to this headline">¶</a></h4>
+<blockquote>
+<div><ul class="simple">
+<li>Set environment variable to define remote debugging options for the JVM:
+<code class="docutils literal notranslate"><span class="pre">export</span> <span class="pre">JVM_EXTRA_OPTS=&quot;-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1414&quot;</span></code></li>
+<li>Start Cassandra by executing the <code class="docutils literal notranslate"><span class="pre">./bin/cassandra</span></code></li>
+</ul>
+</div></blockquote>
+<p>Afterwards you should be able to connect to the running Cassandra process through the following steps:</p>
+<p>From the menu, select <code class="docutils literal notranslate"><span class="pre">Run-&gt;Debug</span> <span class="pre">Configurations..</span></code></p>
+<img alt="../_images/eclipse_debug0.png" src="../_images/eclipse_debug0.png" />
+<p>Create new remote application</p>
+<img alt="../_images/eclipse_debug1.png" src="../_images/eclipse_debug1.png" />
+<p>Configure connection settings by specifying a name and port 1414</p>
+<img alt="../_images/eclipse_debug2.png" src="../_images/eclipse_debug2.png" />
+<p>Afterwards confirm “Debug” to connect to the JVM and start debugging Cassandra!</p>
+</div>
+<div class="section" id="starting-cassandra-from-eclipse">
+<h4>Starting Cassandra From Eclipse<a class="headerlink" href="#starting-cassandra-from-eclipse" title="Permalink to this headline">¶</a></h4>
+<p>Cassandra can also be started directly from Eclipse if you don’t want to use the command line.</p>
+<p>From the menu, select <code class="docutils literal notranslate"><span class="pre">Run-&gt;Run</span> <span class="pre">Configurations..</span></code></p>
+<img alt="../_images/eclipse_debug3.png" src="../_images/eclipse_debug3.png" />
+<p>Create new application</p>
+<img alt="../_images/eclipse_debug4.png" src="../_images/eclipse_debug4.png" />
+<p>Specify name, project and main class <code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.service.CassandraDaemon</span></code></p>
+<img alt="../_images/eclipse_debug5.png" src="../_images/eclipse_debug5.png" />
+<p>Configure additional JVM specific parameters that will start Cassandra with some of the settings created by the regular startup script. Change heap related values as needed.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-</span><span class="n">Xms1024M</span> <span class="o">-</span><span class="n">Xmx1024M</span> <span class="o">-</span><span class="n">Xmn220M</span> <span class="o">-</span><span class="n">Xss256k</span> <span class="o">-</span><span class="n">ea</span> <span class="o">-</span><span class="n">XX</span><span class="p">:</span><span class="o">+</span><span class="n">UseThreadPriorities</span> <span class="o">-</span><span class="n">XX</span><span class="p">:</span><span class="n">ThreadPriorityPolicy</span><span class="o">=</span><span class="mi">42</span> <span class="o">-</span><span class="n">XX</span><span class="p">:</span><span class="o">+</span><span class="n">UseParNewGC</span> <span class="o">-</span><span class="n">XX</span><span class="p">:</span><span class="o">+</span><span class="n">UseConcMarkSweepGC</span> <span class="o">-</span><span class="n">XX</span><span class="p">:</span><span class="o">+</span><span class="n">CMSParallelRemarkEnabled</span> <span class="o">-</span><span class="n">XX</span><span class="p">:</span><span class="o">+</span><span class="n">UseCondCardMark</span> <span class="o">-</span><span class="n">javaagent</span><span class="p">:</span><span class="o">./</span><span class="n">lib</span><span class="o">/</span><span class="n">jamm</span><span class="o">-</span><span class="mf">0.3</span><span class="o">.</span><span class="mf">0.</span><span class="n">jar</span> <span class="o">-</span><span class="n">Djava</span><span class="o">.</span><span class="n">net</span><span class="o">.</span><span class="n">preferIPv4Stack</span><span class="o">=</span><span class="n">true</span>
+</pre></div>
+</div>
+<img alt="../_images/eclipse_debug6.png" src="../_images/eclipse_debug6.png" />
+<p>Now just confirm “Debug” and you should see the output of Cassandra starting up in the Eclipse console and should be able to set breakpoints and start debugging!</p>
+</div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="testing.html" class="btn btn-default pull-right " role="button" title="Testing" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="gettingstarted.html" class="btn btn-default" role="button" title="Getting Started" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/development/index.html b/src/doc/4.0-rc1/development/index.html
new file mode 100644
index 0000000..7155450
--- /dev/null
+++ b/src/doc/4.0-rc1/development/index.html
@@ -0,0 +1,187 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Contributing to Cassandra"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="next" title="Getting Started" href="gettingstarted.html"/>
+      <link rel="prev" title="Diving Deep, Use External Tools" href="../troubleshooting/use_tools.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Contributing to Cassandra</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="contributing-to-cassandra">
+<h1>Contributing to Cassandra<a class="headerlink" href="#contributing-to-cassandra" title="Permalink to this headline">¶</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="gettingstarted.html">Getting Started</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#initial-contributions">Initial Contributions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#updating-documentation">Updating documentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#answering-questions-on-the-user-list">Answering questions on the user list</a></li>
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#reviewing-and-testing-a-submitted-patch">Reviewing and testing a submitted patch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#investigate-and-or-fix-a-reported-bug">Investigate and/or fix a reported bug</a></li>
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#create-unit-tests-and-dtests">Create unit tests and Dtests</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="ide.html">Building and IDE Integration</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="ide.html#building-from-source">Building From Source</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html#setting-up-cassandra-in-intellij-idea">Setting up Cassandra in IntelliJ IDEA</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html#opening-cassandra-in-apache-netbeans">Opening Cassandra in Apache NetBeans</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html#setting-up-cassandra-in-eclipse">Setting up Cassandra in Eclipse</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="testing.html">Testing</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="testing.html#unit-testing">Unit Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html#dtests">DTests</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html#performance-testing">Performance Testing</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="patches.html">Contributing Code Changes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="patches.html#choosing-what-to-work-on">Choosing What to Work on</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html#before-you-start-coding">Before You Start Coding</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html#creating-a-patch">Creating a Patch</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="code_style.html">Code Style</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#general-code-conventions">General Code Conventions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#exception-handling">Exception handling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#boilerplate">Boilerplate</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#multiline-statements">Multiline statements</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#whitespace">Whitespace</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#imports">Imports</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html#format-files-for-ides">Format files for IDEs</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l1"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l1"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+<li class="toctree-l1"><a class="reference internal" href="documentation.html">Working on Documentation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html#how-cassandra-is-documented">How Cassandra is documented</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html#github-based-work-flow">GitHub based work flow</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html#jira-based-work-flow">Jira based work flow</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html#working-on-documents-locally-using-sphinx">Working on documents locally using Sphinx</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html#notes-for-committers">Notes for committers</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="ci.html">Jenkins CI Environment</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="ci.html#about-ci-testing-and-apache-cassandra">About CI testing and Apache Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ci.html#setting-up-your-own-jenkins-server">Setting up your own Jenkins server</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="dependencies.html">Dependency Management</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html#required-steps-to-add-or-update-libraries">Required steps to add or update libraries</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html#pom-file-types">POM file types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html#troubleshooting-and-conflict-resolution">Troubleshooting and conflict resolution</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="release_process.html">Release Process</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html#prerequisites">Prerequisites</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html#create-release-artifacts">Create Release Artifacts</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html#call-for-a-vote">Call for a Vote</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html#post-vote-operations">Post-vote operations</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="gettingstarted.html" class="btn btn-default pull-right " role="button" title="Getting Started" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../troubleshooting/use_tools.html" class="btn btn-default" role="button" title="Diving Deep, Use External Tools" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/development/license_compliance.html b/src/doc/4.0-rc1/development/license_compliance.html
new file mode 100644
index 0000000..57771bd
--- /dev/null
+++ b/src/doc/4.0-rc1/development/license_compliance.html
@@ -0,0 +1,129 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Contributing to Cassandra"
+
+doc-title: "License Compliance"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Contributing to Cassandra" href="index.html"/>
+      <link rel="next" title="Review Checklist" href="how_to_review.html"/>
+      <link rel="prev" title="Code Style" href="code_style.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="license-compliance">
+<span id="id1"></span><h1>License Compliance<a class="headerlink" href="#license-compliance" title="Permalink to this headline">¶</a></h1>
+<p>The target of this document is to provide an overview and guidance how the Apache Cassandra project’s source code and
+artifacts maintain compliance with the <cite>ASF Licensing policy &lt;http://www.apache.org/legal/release-policy.html#licensing&gt;</cite>.</p>
+<p>The repository contains a LICENSE file, and a NOTICE file.</p>
+<p>The Apache Cassandra project enforces and verifies ASF License header conformance on all source files using the Apache RAT tool.</p>
+<p>With a few exceptions, source files consisting of works submitted directly to the ASF by the copyright owner or owner’s
+agent must contain the appropriate ASF license header. Files without any degree of creativity don’t require a license header.</p>
+<p>Currently, RAT checks all .bat, .btm, .cql, .css, .g, .hmtl, .iml, .java, .jflex, .jks, .md, .mod, .name, .pom, .py, .sh, .spec, .textile, .yml, .yaml, .xml files for a LICENSE header.</p>
+<p>If there is an incompliance, the build will fail with the following warning:</p>
+<blockquote>
+<div>Some files have missing or incorrect license information. Check RAT report in build/rat.txt for more details!</div></blockquote>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="how_to_review.html" class="btn btn-default pull-right " role="button" title="Review Checklist" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="code_style.html" class="btn btn-default" role="button" title="Code Style" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/development/patches.html b/src/doc/4.0-rc1/development/patches.html
new file mode 100644
index 0000000..d30c95e
--- /dev/null
+++ b/src/doc/4.0-rc1/development/patches.html
@@ -0,0 +1,275 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Contributing to Cassandra"
+
+doc-title: "Contributing Code Changes"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Contributing to Cassandra" href="index.html"/>
+      <link rel="next" title="Code Style" href="code_style.html"/>
+      <link rel="prev" title="Testing" href="testing.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Contributing Code Changes</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#choosing-what-to-work-on">Choosing What to Work on</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#before-you-start-coding">Before You Start Coding</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#creating-a-patch">Creating a Patch</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="contributing-code-changes">
+<span id="patches"></span><h1>Contributing Code Changes<a class="headerlink" href="#contributing-code-changes" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="choosing-what-to-work-on">
+<h2>Choosing What to Work on<a class="headerlink" href="#choosing-what-to-work-on" title="Permalink to this headline">¶</a></h2>
+<p>Submitted patches can include bug fixes, changes to the Java code base, improvements for tooling (both Java or Python), documentation, testing or any other changes that requires changing the code base. Although the process of contributing code is always the same, the amount of work and time it takes to get a patch accepted also depends on the kind of issue you’re addressing.</p>
+<dl class="docutils">
+<dt>As a general rule of thumb:</dt>
+<dd><ul class="first last simple">
+<li>Major new features and significant changes to the code based will likely not going to be accepted without deeper discussion within the <a class="reference external" href="http://cassandra.apache.org/community/">developer community</a></li>
+<li>Bug fixes take higher priority compared to features</li>
+<li>The extend to which tests are required depend on how likely your changes will effect the stability of Cassandra in production. Tooling changes requires fewer tests than storage engine changes.</li>
+<li>Less complex patches will be faster to review: consider breaking up an issue into individual tasks and contributions that can be reviewed separately</li>
+</ul>
+</dd>
+</dl>
+<div class="admonition hint">
+<p class="first admonition-title">Hint</p>
+<p class="last">Not sure what to work? Just pick an issue marked as <a class="reference external" href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20CASSANDRA%20AND%20Complexity%20%3D%20%22Low%20Hanging%20Fruit%22%20and%20status%20!%3D%20resolved">Low Hanging Fruit</a> Complexity in JIRA, which we use to flag issues that could turn out to be good starter tasks for beginners.</p>
+</div>
+</div>
+<div class="section" id="before-you-start-coding">
+<h2>Before You Start Coding<a class="headerlink" href="#before-you-start-coding" title="Permalink to this headline">¶</a></h2>
+<p>Although contributions are highly appreciated, we do not guarantee that each contribution will become a part of Cassandra. Therefore it’s generally a good idea to first get some feedback on the things you plan to work on, especially about any new features or major changes to the code base. You can reach out to other developers on the mailing list or <a class="reference internal" href="../contactus.html#slack"><span class="std std-ref">Slack</span></a>.</p>
+<dl class="docutils">
+<dt>You should also</dt>
+<dd><ul class="first last simple">
+<li>Avoid redundant work by searching for already reported issues in <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA">JIRA</a></li>
+<li>Create a new issue early in the process describing what you’re working on - not just after finishing your patch</li>
+<li>Link related JIRA issues with your own ticket to provide a better context</li>
+<li>Update your ticket from time to time by giving feedback on your progress and link a GitHub WIP branch with your current code</li>
+<li>Ping people who you actively like to ask for advice on JIRA by <a class="reference external" href="https://confluence.atlassian.com/conf54/confluence-user-s-guide/sharing-content/using-mentions">mentioning users</a></li>
+</ul>
+</dd>
+<dt>There are also some fixed rules that you need to be aware:</dt>
+<dd><ul class="first last simple">
+<li>Patches will only be applied to branches by following the release model</li>
+<li>Code must be testable</li>
+<li>Code must follow the <a class="reference internal" href="code_style.html"><span class="doc">Code Style</span></a> convention</li>
+<li>Changes must not break compatibility between different Cassandra versions</li>
+<li>Contributions must be covered by the Apache License</li>
+</ul>
+</dd>
+</dl>
+<div class="section" id="choosing-the-right-branches-to-work-on">
+<h3>Choosing the Right Branches to Work on<a class="headerlink" href="#choosing-the-right-branches-to-work-on" title="Permalink to this headline">¶</a></h3>
+<p>There are currently multiple Cassandra versions maintained in individual branches:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="77%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Version</th>
+<th class="head">Policy</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>4.0</td>
+<td>Code freeze (see below)</td>
+</tr>
+<tr class="row-odd"><td>3.11</td>
+<td>Critical bug fixes only</td>
+</tr>
+<tr class="row-even"><td>3.0</td>
+<td>Critical bug fixes only</td>
+</tr>
+<tr class="row-odd"><td>2.2</td>
+<td>Critical bug fixes only</td>
+</tr>
+<tr class="row-even"><td>2.1</td>
+<td>Critical bug fixes only</td>
+</tr>
+</tbody>
+</table>
+<p>Corresponding branches in git are easy to recognize as they are named <code class="docutils literal notranslate"><span class="pre">cassandra-&lt;release&gt;</span></code> (e.g. <code class="docutils literal notranslate"><span class="pre">cassandra-3.0</span></code>). The <code class="docutils literal notranslate"><span class="pre">trunk</span></code> branch is an exception, as it contains the most recent commits from all other branches and is used for creating new branches for future tick-tock releases.</p>
+<div class="section" id="code-freeze">
+<h4>4.0 Code Freeze<a class="headerlink" href="#code-freeze" title="Permalink to this headline">¶</a></h4>
+<p>Patches for new features are currently not accepted for 4.0 or any earlier versions. Starting with the code freeze in September, all efforts should focus on stabilizing the 4.0 branch before the first official release. During that time, only the following patches will be considered for acceptance:</p>
+<blockquote>
+<div><ul class="simple">
+<li>Bug fixes</li>
+<li>Measurable performance improvements</li>
+<li>Changes not distributed as part of the release such as:</li>
+<li>Testing related improvements and fixes</li>
+<li>Build and infrastructure related changes</li>
+<li>Documentation</li>
+</ul>
+</div></blockquote>
+</div>
+<div class="section" id="bug-fixes">
+<h4>Bug Fixes<a class="headerlink" href="#bug-fixes" title="Permalink to this headline">¶</a></h4>
+<p>Creating patches for bug fixes is a bit more complicated as this will depend on how many different versions of Cassandra are affected. In each case, the order for merging such changes will be <code class="docutils literal notranslate"><span class="pre">cassandra-2.1</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">cassandra-2.2</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">cassandra-3.0</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">cassandra-3.x</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">trunk</span></code>. But don’t worry, merging from 2.1 would be the worst case for bugs that affect all currently supported versions, which isn’t very common. As a contributor, you’re also not expected to provide a single patch for each version. What you need to do however is:</p>
+<blockquote>
+<div><ul class="simple">
+<li>Be clear about which versions you could verify to be affected by the bug</li>
+<li>For 2.x: ask if a bug qualifies to be fixed in this release line, as this may be handled on case by case bases</li>
+<li>If possible, create a patch against the lowest version in the branches listed above (e.g. if you found the bug in 3.9 you should try to fix it already in 3.0)</li>
+<li>Test if the patch can be merged cleanly across branches in the direction listed above</li>
+<li>Be clear which branches may need attention by the committer or even create custom patches for those if you can</li>
+</ul>
+</div></blockquote>
+</div>
+</div>
+</div>
+<div class="section" id="creating-a-patch">
+<h2>Creating a Patch<a class="headerlink" href="#creating-a-patch" title="Permalink to this headline">¶</a></h2>
+<p>So you’ve finished coding and the great moment arrives: it’s time to submit your patch!</p>
+<blockquote>
+<div><ol class="arabic simple">
+<li>Create a branch for your changes if you haven’t done already. Many contributors name their branches based on ticket number and Cassandra version, e.g. <code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">checkout</span> <span class="pre">-b</span> <span class="pre">12345-3.0</span></code></li>
+<li>Verify that you follow Cassandra’s <a class="reference internal" href="code_style.html"><span class="doc">Code Style</span></a></li>
+<li>Make sure all tests (including yours) pass using ant as described in <a class="reference internal" href="testing.html"><span class="doc">Testing</span></a>. If you suspect a test failure is unrelated to your change, it may be useful to check the test’s status by searching the issue tracker or looking at <a class="reference external" href="https://builds.apache.org/">CI</a> results for the relevant upstream version.  Note that the full test suites take many hours to complete, so it is common to only run specific relevant tests locally before uploading a patch.  Once a patch has been uploaded, the reviewer or committer can help setup CI jobs to run the full test suites.</li>
+<li>Consider going through the <a class="reference internal" href="how_to_review.html"><span class="doc">Review Checklist</span></a> for your code. This will help you to understand how others will consider your change for inclusion.</li>
+<li>Don’t make the committer squash commits for you in the root branch either. Multiple commits are fine - and often preferable - during review stage, especially for incremental review, but once +1d, do either:</li>
+</ol>
+<blockquote>
+<div><ol class="loweralpha simple">
+<li>Attach a patch to JIRA with a single squashed commit in it (per branch), or</li>
+<li>Squash the commits in-place in your branches into one</li>
+</ol>
+</div></blockquote>
+<ol class="arabic" start="6">
+<li><p class="first">Include a CHANGES.txt entry (put it at the top of the list), and format the commit message appropriately in your patch as below. Please note that only user-impacting items <a class="reference external" href="https://lists.apache.org/thread.html/rde1128131a621e43b0a9c88778398c053a234da0f4c654b82dcbbe0e%40%3Cdev.cassandra.apache.org%3E">should</a> be listed in CHANGES.txt. If you fix a test that does not affect users and does not require changes in runtime code, then no CHANGES.txt entry is necessary.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>&lt;One sentence description, usually Jira title and CHANGES.txt summary&gt;
+&lt;Optional lengthier description&gt;
+patch by &lt;Authors&gt;; reviewed by &lt;Reviewers&gt; for CASSANDRA-#####
+</pre></div>
+</div>
+</li>
+<li><p class="first">When you’re happy with the result, create a patch:</p>
+</li>
+</ol>
+<blockquote>
+<div><div class="highlight-none notranslate"><div class="highlight"><pre><span></span>git add &lt;any new or modified file&gt;
+git commit -m &#39;&lt;message&gt;&#39;
+git format-patch HEAD~1
+mv &lt;patch-file&gt; &lt;ticket-branchname.txt&gt; (e.g. 12345-trunk.txt, 12345-3.0.txt)
+</pre></div>
+</div>
+<p>Alternatively, many contributors prefer to make their branch available on GitHub. In this case, fork the Cassandra repository on GitHub and push your branch:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>git push --set-upstream origin 12345-3.0
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="8">
+<li>To make life easier for your reviewer/committer, you may want to make sure your patch applies cleanly to later branches and create additional patches/branches for later Cassandra versions to which your original patch does not apply cleanly. That said, this is not critical, and you will receive feedback on your patch regardless.</li>
+<li>Attach the newly generated patch to the ticket/add a link to your branch and click “Submit Patch” at the top of the ticket. This will move the ticket into “Patch Available” status, indicating that your submission is ready for review.</li>
+<li>Wait for other developers or committers to review it and hopefully +1 the ticket (see <a class="reference internal" href="how_to_review.html"><span class="doc">Review Checklist</span></a>). If your change does not receive a +1, do not be discouraged. If possible, the reviewer will give suggestions to improve your patch or explain why it is not suitable.</li>
+<li>If the reviewer has given feedback to improve the patch, make the necessary changes and move the ticket into “Patch Available” once again.</li>
+</ol>
+</div></blockquote>
+<p>Once the review process is complete, you will receive a +1. Wait for a committer to commit it. Do not delete your branches immediately after they’ve been committed - keep them on GitHub for a while. Alternatively, attach a patch to JIRA for historical record. It’s not that uncommon for a committer to mess up a merge. In case of that happening, access to the original code is required, or else you’ll have to redo some of the work.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="code_style.html" class="btn btn-default pull-right " role="button" title="Code Style" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="testing.html" class="btn btn-default" role="button" title="Testing" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/development/release_process.html b/src/doc/4.0-rc1/development/release_process.html
new file mode 100644
index 0000000..bab0483
--- /dev/null
+++ b/src/doc/4.0-rc1/development/release_process.html
@@ -0,0 +1,360 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Contributing to Cassandra"
+
+doc-title: "Release Process"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Contributing to Cassandra" href="index.html"/>
+      <link rel="next" title="Frequently Asked Questions" href="../faq/index.html"/>
+      <link rel="prev" title="Dependency Management" href="dependencies.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Release Process</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#prerequisites">Prerequisites</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#create-release-artifacts">Create Release Artifacts</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#call-for-a-vote">Call for a Vote</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#post-vote-operations">Post-vote operations</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="release-process">
+<h1><a class="toc-backref" href="#id1">Release Process</a><a class="headerlink" href="#release-process" title="Permalink to this headline">¶</a></h1>
+<div class="contents topic" id="contents">
+<p class="topic-title">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#release-process" id="id1">Release Process</a><ul>
+<li><a class="reference internal" href="#prerequisites" id="id2">Prerequisites</a><ul>
+<li><a class="reference internal" href="#create-and-publish-your-gpg-key" id="id3">Create and publish your GPG key</a></li>
+<li><a class="reference internal" href="#bintray-account-with-access-to-apache-organisation" id="id4">Bintray account with access to Apache organisation</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#create-release-artifacts" id="id5">Create Release Artifacts</a><ul>
+<li><a class="reference internal" href="#perform-the-release" id="id6">Perform the Release</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#call-for-a-vote" id="id7">Call for a Vote</a></li>
+<li><a class="reference internal" href="#post-vote-operations" id="id8">Post-vote operations</a><ul>
+<li><a class="reference internal" href="#publish-artifacts" id="id9">Publish Artifacts</a></li>
+<li><a class="reference internal" href="#promote-nexus-repository" id="id10">Promote Nexus Repository</a></li>
+<li><a class="reference internal" href="#publish-the-bintray-uploaded-distribution-packages" id="id11">Publish the Bintray Uploaded Distribution Packages</a></li>
+<li><a class="reference internal" href="#update-and-publish-website" id="id12">Update and Publish Website</a></li>
+<li><a class="reference internal" href="#release-version-in-jira" id="id13">Release version in JIRA</a></li>
+<li><a class="reference internal" href="#update-to-next-development-version" id="id14">Update to Next Development Version</a></li>
+<li><a class="reference internal" href="#wait-for-artifacts-to-sync" id="id15">Wait for Artifacts to Sync</a></li>
+<li><a class="reference internal" href="#send-release-announcement" id="id16">Send Release Announcement</a></li>
+<li><a class="reference internal" href="#update-slack-cassandra-topic" id="id17">Update Slack Cassandra topic</a></li>
+<li><a class="reference internal" href="#tweet-from-cassandra" id="id18">Tweet from &#64;Cassandra</a></li>
+<li><a class="reference internal" href="#delete-old-releases" id="id19">Delete Old Releases</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="line-block">
+<div class="line"><br /></div>
+<div class="line"><br /></div>
+</div>
+<p>The steps for Release Managers to create, vote and publish releases for Apache Cassandra.</p>
+<p>While a committer can perform the initial steps of creating and calling a vote on a proposed release, only a PMC member can complete the process of publishing and announcing the release.</p>
+<div class="section" id="prerequisites">
+<h2><a class="toc-backref" href="#id2">Prerequisites</a><a class="headerlink" href="#prerequisites" title="Permalink to this headline">¶</a></h2>
+<dl class="docutils">
+<dt>Background docs</dt>
+<dd><ul class="first last simple">
+<li><a class="reference external" href="http://www.apache.org/legal/release-policy.html">ASF Release Policy</a></li>
+<li><a class="reference external" href="http://www.apache.org/dev/release-distribution">ASF Release Distribution Policy</a></li>
+<li><a class="reference external" href="http://www.eu.apache.org/dev/release-publishing.html">ASF Release Best Practices</a></li>
+</ul>
+</dd>
+</dl>
+<p>A debian based linux OS is required to run the release steps from. Debian-based distros provide the required RPM, dpkg and repository management tools.</p>
+<div class="section" id="create-and-publish-your-gpg-key">
+<h3><a class="toc-backref" href="#id3">Create and publish your GPG key</a><a class="headerlink" href="#create-and-publish-your-gpg-key" title="Permalink to this headline">¶</a></h3>
+<p>To create a GPG key, follow the <a class="reference external" href="http://www.apache.org/dev/openpgp.html">guidelines</a>.
+The key must be 4096 bit RSA.
+Include your public key in:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>https://dist.apache.org/repos/dist/release/cassandra/KEYS
+</pre></div>
+</div>
+<p>Publish your GPG key in a PGP key server, such as <a class="reference external" href="http://pgp.mit.edu/">MIT Keyserver</a>.</p>
+</div>
+<div class="section" id="bintray-account-with-access-to-apache-organisation">
+<h3><a class="toc-backref" href="#id4">Bintray account with access to Apache organisation</a><a class="headerlink" href="#bintray-account-with-access-to-apache-organisation" title="Permalink to this headline">¶</a></h3>
+<p>Publishing a successfully voted upon release requires bintray access to the Apache organisation. Please verify that you have a bintray account and the Apache organisation is listed <a class="reference external" href="https://bintray.com/profile/edit/organizations">here</a>.</p>
+</div>
+</div>
+<div class="section" id="create-release-artifacts">
+<h2><a class="toc-backref" href="#id5">Create Release Artifacts</a><a class="headerlink" href="#create-release-artifacts" title="Permalink to this headline">¶</a></h2>
+<p>Any committer can perform the following steps to create and call a vote on a proposed release.</p>
+<p>Check that there are no open urgent jira tickets currently being worked on. Also check with the PMC that there’s security vulnerabilities currently being worked on in private.’
+Current project habit is to check the timing for a new release on the dev mailing lists.</p>
+<div class="section" id="perform-the-release">
+<h3><a class="toc-backref" href="#id6">Perform the Release</a><a class="headerlink" href="#perform-the-release" title="Permalink to this headline">¶</a></h3>
+<p>Run the following commands to generate and upload release artifacts, to the ASF nexus staging repository and dev distribution location:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cd ~/git
+git clone https://github.com/apache/cassandra-builds.git
+git clone https://github.com/apache/cassandra.git
+
+# Edit the variables at the top of the `prepare_release.sh` file
+edit cassandra-builds/cassandra-release/prepare_release.sh
+
+# Ensure your 4096 RSA key is the default secret key
+edit ~/.gnupg/gpg.conf # update the `default-key` line
+edit ~/.rpmmacros # update the `%gpg_name &lt;key_id&gt;` line
+
+# Ensure DEBFULLNAME and DEBEMAIL is defined and exported, in the debian scripts configuration
+edit ~/.devscripts
+
+# The prepare_release.sh is run from the actual cassandra git checkout,
+# on the branch/commit that we wish to tag for the tentative release along with version number to tag.
+cd cassandra
+git switch cassandra-&lt;version-branch&gt;
+
+# The following cuts the release artifacts (including deb and rpm packages) and deploy to staging environments
+../cassandra-builds/cassandra-release/prepare_release.sh -v &lt;version&gt;
+</pre></div>
+</div>
+<p>Follow the prompts.</p>
+<p>If building the deb or rpm packages fail, those steps can be repeated individually using the <cite>-d</cite> and <cite>-r</cite> flags, respectively.</p>
+</div>
+</div>
+<div class="section" id="call-for-a-vote">
+<h2><a class="toc-backref" href="#id7">Call for a Vote</a><a class="headerlink" href="#call-for-a-vote" title="Permalink to this headline">¶</a></h2>
+<p>Fill out the following email template and send to the dev mailing list:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>I propose the following artifacts for release as &lt;version&gt;.
+
+sha1: &lt;git-sha&gt;
+
+Git: https://gitbox.apache.org/repos/asf?p=cassandra.git;a=shortlog;h=refs/tags/&lt;version&gt;-tentative
+
+Artifacts: https://repository.apache.org/content/repositories/orgapachecassandra-&lt;nexus-id&gt;/org/apache/cassandra/apache-cassandra/&lt;version&gt;/
+
+Staging repository: https://repository.apache.org/content/repositories/orgapachecassandra-&lt;nexus-id&gt;/
+
+The distribution packages are available here: https://dist.apache.org/repos/dist/dev/cassandra/${version}/
+
+The vote will be open for 72 hours (longer if needed).
+
+[1]: (CHANGES.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=&lt;version&gt;-tentative
+[2]: (NEWS.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=&lt;version&gt;-tentative
+</pre></div>
+</div>
+</div>
+<div class="section" id="post-vote-operations">
+<h2><a class="toc-backref" href="#id8">Post-vote operations</a><a class="headerlink" href="#post-vote-operations" title="Permalink to this headline">¶</a></h2>
+<p>Any PMC member can perform the following steps to formalize and publish a successfully voted release.</p>
+<div class="section" id="publish-artifacts">
+<h3><a class="toc-backref" href="#id9">Publish Artifacts</a><a class="headerlink" href="#publish-artifacts" title="Permalink to this headline">¶</a></h3>
+<p>Run the following commands to publish the voted release artifacts:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cd ~/git
+# edit the variables at the top of the `finish_release.sh` file
+edit cassandra-builds/cassandra-release/finish_release.sh
+
+# After cloning cassandra-builds repo, `finish_release.sh` is run from the actual cassandra git checkout,
+# on the tentative release tag that we wish to tag for the final release version number tag.
+cd ~/git/cassandra/
+git checkout &lt;version&gt;-tentative
+../cassandra-builds/cassandra-release/finish_release.sh -v &lt;version&gt;
+</pre></div>
+</div>
+<p>If successful, take note of the email text output which can be used in the next section “Send Release Announcement”.
+The output will also list the next steps that are required.</p>
+</div>
+<div class="section" id="promote-nexus-repository">
+<h3><a class="toc-backref" href="#id10">Promote Nexus Repository</a><a class="headerlink" href="#promote-nexus-repository" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>Login to <a class="reference external" href="https://repository.apache.org">Nexus repository</a> again.</li>
+<li>Click on “Staging” and then on the repository with id “cassandra-staging”.</li>
+<li>Find your closed staging repository, right click on it and choose “Promote”.</li>
+<li>Select the “Releases” repository and click “Promote”.</li>
+<li>Next click on “Repositories”, select the “Releases” repository and validate that your artifacts exist as you expect them.</li>
+</ul>
+</div>
+<div class="section" id="publish-the-bintray-uploaded-distribution-packages">
+<h3><a class="toc-backref" href="#id11">Publish the Bintray Uploaded Distribution Packages</a><a class="headerlink" href="#publish-the-bintray-uploaded-distribution-packages" title="Permalink to this headline">¶</a></h3>
+<p>Log into bintray and publish the uploaded artifacts.</p>
+</div>
+<div class="section" id="update-and-publish-website">
+<h3><a class="toc-backref" href="#id12">Update and Publish Website</a><a class="headerlink" href="#update-and-publish-website" title="Permalink to this headline">¶</a></h3>
+<p>See <a class="reference external" href="https://svn.apache.org/repos/asf/cassandra/site/src/README">docs</a> for building and publishing the website.</p>
+<p>Also update the CQL doc if appropriate.</p>
+</div>
+<div class="section" id="release-version-in-jira">
+<h3><a class="toc-backref" href="#id13">Release version in JIRA</a><a class="headerlink" href="#release-version-in-jira" title="Permalink to this headline">¶</a></h3>
+<p>Release the JIRA version.</p>
+<ul class="simple">
+<li>In JIRA go to the version that you want to release and release it.</li>
+<li>Create a new version, if it has not been done before.</li>
+</ul>
+</div>
+<div class="section" id="update-to-next-development-version">
+<h3><a class="toc-backref" href="#id14">Update to Next Development Version</a><a class="headerlink" href="#update-to-next-development-version" title="Permalink to this headline">¶</a></h3>
+<p>Update the codebase to point to the next development version:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cd ~/git/cassandra/
+git checkout cassandra-&lt;version-branch&gt;
+edit build.xml          # update `&lt;property name=&quot;base.version&quot; value=&quot;…&quot;/&gt; `
+edit debian/changelog   # add entry for new version
+edit CHANGES.txt        # add entry for new version, move up any entries that were added after the release was cut and staged
+git commit -m &quot;Increment version to &lt;next-version&gt;&quot; build.xml debian/changelog CHANGES.txt
+
+# …and forward merge and push per normal procedure
+</pre></div>
+</div>
+</div>
+<div class="section" id="wait-for-artifacts-to-sync">
+<h3><a class="toc-backref" href="#id15">Wait for Artifacts to Sync</a><a class="headerlink" href="#wait-for-artifacts-to-sync" title="Permalink to this headline">¶</a></h3>
+<p>Wait for the artifacts to sync at <a class="reference external" href="https://downloads.apache.org/cassandra/">https://downloads.apache.org/cassandra/</a></p>
+</div>
+<div class="section" id="send-release-announcement">
+<h3><a class="toc-backref" href="#id16">Send Release Announcement</a><a class="headerlink" href="#send-release-announcement" title="Permalink to this headline">¶</a></h3>
+<p>Fill out the following email template and send to both user and dev mailing lists:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>The Cassandra team is pleased to announce the release of Apache Cassandra version &lt;version&gt;.
+
+Apache Cassandra is a fully distributed database. It is the right choice
+when you need scalability and high availability without compromising
+performance.
+
+ http://cassandra.apache.org/
+
+Downloads of source and binary distributions are listed in our download
+section:
+
+ http://cassandra.apache.org/download/
+
+This version is &lt;the first|a bug fix&gt; release[1] on the &lt;version-base&gt; series. As always,
+please pay attention to the release notes[2] and let us know[3] if you
+were to encounter any problem.
+
+Enjoy!
+
+[1]: (CHANGES.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=&lt;version&gt;
+[2]: (NEWS.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=&lt;version&gt;
+[3]: https://issues.apache.org/jira/browse/CASSANDRA
+</pre></div>
+</div>
+</div>
+<div class="section" id="update-slack-cassandra-topic">
+<h3><a class="toc-backref" href="#id17">Update Slack Cassandra topic</a><a class="headerlink" href="#update-slack-cassandra-topic" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt>Update topic in <code class="docutils literal notranslate"><span class="pre">cassandra</span></code> <a class="reference internal" href="../contactus.html#slack"><span class="std std-ref">Slack room</span></a></dt>
+<dd>/topic cassandra.apache.org | Latest releases: 3.11.4, 3.0.18, 2.2.14, 2.1.21 | ask, don’t ask to ask</dd>
+</dl>
+</div>
+<div class="section" id="tweet-from-cassandra">
+<h3><a class="toc-backref" href="#id18">Tweet from &#64;Cassandra</a><a class="headerlink" href="#tweet-from-cassandra" title="Permalink to this headline">¶</a></h3>
+<p>Tweet the new release, from the &#64;Cassandra account</p>
+</div>
+<div class="section" id="delete-old-releases">
+<h3><a class="toc-backref" href="#id19">Delete Old Releases</a><a class="headerlink" href="#delete-old-releases" title="Permalink to this headline">¶</a></h3>
+<p>As described in <a class="reference external" href="http://www.apache.org/dev/release.html#when-to-archive">When to Archive</a>.</p>
+<p>An example of removing old releases:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>svn rm https://dist.apache.org/repos/dist/release/cassandra/&lt;previous_version&gt;
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../faq/index.html" class="btn btn-default pull-right " role="button" title="Frequently Asked Questions" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="dependencies.html" class="btn btn-default" role="button" title="Dependency Management" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/development/testing.html b/src/doc/4.0-rc1/development/testing.html
new file mode 100644
index 0000000..a9af648
--- /dev/null
+++ b/src/doc/4.0-rc1/development/testing.html
@@ -0,0 +1,186 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Contributing to Cassandra"
+
+doc-title: "Testing"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Contributing to Cassandra" href="index.html"/>
+      <link rel="next" title="Contributing Code Changes" href="patches.html"/>
+      <link rel="prev" title="Building and IDE Integration" href="ide.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Testing</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#unit-testing">Unit Testing</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#dtests">DTests</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#performance-testing">Performance Testing</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
+<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
+<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
+<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="testing">
+<span id="id1"></span><h1>Testing<a class="headerlink" href="#testing" title="Permalink to this headline">¶</a></h1>
+<p>Creating tests is one of the most important and also most difficult parts of developing Cassandra. There are different ways to test your code depending on what you’re working on.</p>
+<div class="section" id="unit-testing">
+<h2>Unit Testing<a class="headerlink" href="#unit-testing" title="Permalink to this headline">¶</a></h2>
+<p>The most simple way to test code in Cassandra is probably by writing a unit test. Cassandra uses JUnit as a testing framework and test cases can be found in the <code class="docutils literal notranslate"><span class="pre">test/unit</span></code> directory. Ideally you’d be able to create a unit test for your implementation that would exclusively cover the class you created (the unit under test). Unfortunately this is not always possible and Cassandra doesn’t have a very mock friendly code base. Often you’ll find yourself in a situation where you have to make use of an embedded Cassandra instance that you’ll be able to interact with in your test. If you want to make use of CQL in your test, you can simply extend CQLTester and use some of the convenient helper methods such as in the following example.</p>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="nd">@Test</span>
+<span class="kd">public</span> <span class="kt">void</span> <span class="nf">testBatchAndList</span><span class="p">()</span> <span class="kd">throws</span> <span class="n">Throwable</span>
+<span class="p">{</span>
+   <span class="n">createTable</span><span class="p">(</span><span class="s">&quot;CREATE TABLE %s (k int PRIMARY KEY, l list&lt;int&gt;)&quot;</span><span class="p">);</span>
+   <span class="n">execute</span><span class="p">(</span><span class="s">&quot;BEGIN BATCH &quot;</span> <span class="o">+</span>
+           <span class="s">&quot;UPDATE %1$s SET l = l +[ 1 ] WHERE k = 0; &quot;</span> <span class="o">+</span>
+           <span class="s">&quot;UPDATE %1$s SET l = l + [ 2 ] WHERE k = 0; &quot;</span> <span class="o">+</span>
+           <span class="s">&quot;UPDATE %1$s SET l = l + [ 3 ] WHERE k = 0; &quot;</span> <span class="o">+</span>
+           <span class="s">&quot;APPLY BATCH&quot;</span><span class="p">);</span>
+
+   <span class="n">assertRows</span><span class="p">(</span><span class="n">execute</span><span class="p">(</span><span class="s">&quot;SELECT l FROM %s WHERE k = 0&quot;</span><span class="p">),</span>
+              <span class="n">row</span><span class="p">(</span><span class="n">list</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)));</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Unit tests can be run from the command line using the <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">test</span></code> command, <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">test</span> <span class="pre">-Dtest.name=&lt;simple_classname&gt;</span></code> to execute a test suite or <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">testsome</span> <span class="pre">-Dtest.name=&lt;FQCN&gt;</span> <span class="pre">-Dtest.methods=&lt;testmethod1&gt;[,testmethod2]</span></code> for individual tests.  For example, to run all test methods in the <code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.cql3.SimpleQueryTest</span></code> class, you would run:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ant test -Dtest.name=SimpleQueryTest
+</pre></div>
+</div>
+<p>To run only the <code class="docutils literal notranslate"><span class="pre">testTableWithOneClustering()</span></code> test method from that class, you would run:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ant testsome -Dtest.name=org.apache.cassandra.cql3.SimpleQueryTest -Dtest.methods=testTableWithOneClustering
+</pre></div>
+</div>
+<p>If you see an error like this:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Throws: cassandra-trunk/build.xml:1134: taskdef A class needed by class org.krummas.junit.JStackJUnitTask cannot be found:
+org/apache/tools/ant/taskdefs/optional/junit/JUnitTask  using the classloader
+AntClassLoader[/.../cassandra-trunk/lib/jstackjunit-0.0.1.jar]
+</pre></div>
+</div>
+<p>You will need to install the ant-optional package since it contains the <code class="docutils literal notranslate"><span class="pre">JUnitTask</span></code> class.</p>
+<div class="section" id="long-running-tests">
+<h3>Long running tests<a class="headerlink" href="#long-running-tests" title="Permalink to this headline">¶</a></h3>
+<p>Test that consume a significant amount of time during execution can be found in the <code class="docutils literal notranslate"><span class="pre">test/long</span></code> directory and executed as a regular JUnit test or standalone program. Except for the execution time, there’s nothing really special about them. However, ant will execute tests under <code class="docutils literal notranslate"><span class="pre">test/long</span></code> only when using the <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">long-test</span></code> target.</p>
+</div>
+</div>
+<div class="section" id="dtests">
+<h2>DTests<a class="headerlink" href="#dtests" title="Permalink to this headline">¶</a></h2>
+<p>One way of doing integration or system testing at larger scale is by using <a class="reference external" href="https://github.com/apache/cassandra-dtest">dtest</a>, which stands for “Cassandra Distributed Tests”. The idea is to automatically setup Cassandra clusters using various configurations and simulate certain use cases you want to test. This is done using Python scripts and <code class="docutils literal notranslate"><span class="pre">ccmlib</span></code> from the <a class="reference external" href="https://github.com/pcmanus/ccm">ccm</a> project. Dtests will setup clusters using this library just as you do running ad-hoc <code class="docutils literal notranslate"><span class="pre">ccm</span></code> commands on your local machine. Afterwards dtests will use the <a class="reference external" href="http://datastax.github.io/python-driver/installation.html">Python driver</a> to interact with the nodes, manipulate the file system, analyze logs or mess with individual nodes.</p>
+<p>Using dtests helps us to prevent regression bugs by continually executing tests on the <a class="reference external" href="https://builds.apache.org/">CI server</a> against new patches. Committers will be able to set up build branches there and your reviewer may use the CI environment to run tests for your patch.</p>
+<p>The best way to learn how to write dtests is probably by reading the introduction “<a class="reference external" href="http://www.datastax.com/dev/blog/how-to-write-a-dtest">How to Write a Dtest</a>” and by looking at existing, recently updated tests in the project. New tests must follow certain <a class="reference external" href="https://github.com/apache/cassandra-dtest/blob/trunk/CONTRIBUTING.md">style conventions</a> that are being checked before accepting contributions. In contrast to Cassandra, dtest issues and pull-requests are managed on github, therefor you should make sure to link any created dtests in your Cassandra ticket and also refer to the ticket number in your dtest PR.</p>
+<p>Creating a good dtest can be tough, but it should not prevent you from submitting patches! Please ask in the corresponding JIRA ticket how to write a good dtest for the patch. In most cases a reviewer or committer will able to support you, and in some cases they may offer to write a dtest for you.</p>
+</div>
+<div class="section" id="performance-testing">
+<h2>Performance Testing<a class="headerlink" href="#performance-testing" title="Permalink to this headline">¶</a></h2>
+<p>Performance tests for Cassandra are a special breed of tests that are not part of the usual patch contribution process. In fact you can contribute tons of patches to Cassandra without ever running performance tests. They are important however when working on performance improvements, as such improvements must be measurable.</p>
+<div class="section" id="cassandra-stress-tool">
+<h3>Cassandra Stress Tool<a class="headerlink" href="#cassandra-stress-tool" title="Permalink to this headline">¶</a></h3>
+<p>See <a class="reference internal" href="../tools/cassandra_stress.html#cassandra-stress"><span class="std std-ref">Cassandra Stress</span></a></p>
+</div>
+<div class="section" id="cstar-perf">
+<h3>cstar_perf<a class="headerlink" href="#cstar-perf" title="Permalink to this headline">¶</a></h3>
+<p>Another tool available on github is <a class="reference external" href="https://github.com/datastax/cstar_perf">cstar_perf</a> that can be used for intensive performance testing in large clusters or locally. Please refer to the project page on how to set it up and how to use it.</p>
+</div>
+<div class="section" id="circleci">
+<h3>CircleCI<a class="headerlink" href="#circleci" title="Permalink to this headline">¶</a></h3>
+<p>Cassandra ships with a default <a class="reference external" href="https://circleci.com">CircleCI</a> configuration, to enable running tests on your branches, you need to go the CircleCI website, click “Login” and log in with your github account. Then you need to give CircleCI permission to watch your repositories. Once you have done that, you can optionally configure CircleCI to run tests in parallel - click “Projects”, then your github account and then click the settings for the project. If you leave the parallelism at 1 for Cassandra, only <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">eclipse-warnings</span></code> and <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">test</span></code> will be run. If you up the parallelism to 4, it also runs <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">long-test</span></code>, <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">test-compression</span></code> and <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">stress-test</span></code></p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="patches.html" class="btn btn-default pull-right " role="button" title="Contributing Code Changes" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="ide.html" class="btn btn-default" role="button" title="Building and IDE Integration" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/faq/index.html b/src/doc/4.0-rc1/faq/index.html
new file mode 100644
index 0000000..ae22410
--- /dev/null
+++ b/src/doc/4.0-rc1/faq/index.html
@@ -0,0 +1,318 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Frequently Asked Questions"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="next" title="Third-Party Plugins" href="../plugins/index.html"/>
+      <link rel="prev" title="Release Process" href="../development/release_process.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Frequently Asked Questions</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#why-can-t-i-set-listen-address-to-listen-on-0-0-0-0-all-my-addresses">Why can’t I set <code class="docutils literal notranslate"><span class="pre">listen_address</span></code> to listen on 0.0.0.0 (all my addresses)?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#what-ports-does-cassandra-use">What ports does Cassandra use?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#what-happens-to-existing-data-in-my-cluster-when-i-add-new-nodes">What happens to existing data in my cluster when I add new nodes?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#i-delete-data-from-cassandra-but-disk-usage-stays-the-same-what-gives">I delete data from Cassandra, but disk usage stays the same. What gives?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#why-does-nodetool-ring-only-show-one-entry-even-though-my-nodes-logged-that-they-see-each-other-joining-the-ring">Why does nodetool ring only show one entry, even though my nodes logged that they see each other joining the ring?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#can-i-change-the-replication-factor-a-a-keyspace-on-a-live-cluster">Can I change the replication factor (a a keyspace) on a live cluster?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#can-i-store-large-blobs-in-cassandra">Can I Store (large) BLOBs in Cassandra?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#nodetool-says-connection-refused-to-host-127-0-1-1-for-any-remote-host-what-gives">Nodetool says “Connection refused to host: 127.0.1.1” for any remote host. What gives?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#will-batching-my-operations-speed-up-my-bulk-load">Will batching my operations speed up my bulk load?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#on-rhel-nodes-are-unable-to-join-the-ring">On RHEL nodes are unable to join the ring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#how-do-i-unsubscribe-from-the-email-list">How do I unsubscribe from the email list?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#why-does-top-report-that-cassandra-is-using-a-lot-more-memory-than-the-java-heap-max">Why does top report that Cassandra is using a lot more memory than the Java heap max?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#what-are-seeds">What are seeds?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#does-single-seed-mean-single-point-of-failure">Does single seed mean single point of failure?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#why-can-t-i-call-jmx-method-x-on-jconsole">Why can’t I call jmx method X on jconsole?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#why-do-i-see-messages-dropped-in-the-logs">Why do I see “… messages dropped …” in the logs?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#cassandra-dies-with-java-lang-outofmemoryerror-map-failed">Cassandra dies with <code class="docutils literal notranslate"><span class="pre">java.lang.OutOfMemoryError:</span> <span class="pre">Map</span> <span class="pre">failed</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="#what-happens-if-two-updates-are-made-with-the-same-timestamp">What happens if two updates are made with the same timestamp?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#why-bootstrapping-a-new-node-fails-with-a-stream-failed-error">Why bootstrapping a new node fails with a “Stream failed” error?</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="frequently-asked-questions">
+<h1>Frequently Asked Questions<a class="headerlink" href="#frequently-asked-questions" title="Permalink to this headline">¶</a></h1>
+<ul class="simple">
+<li><a class="reference internal" href="#why-cant-list-all"><span class="std std-ref">Why can’t I set listen_address to listen on 0.0.0.0 (all my addresses)?</span></a></li>
+<li><a class="reference internal" href="#what-ports"><span class="std std-ref">What ports does Cassandra use?</span></a></li>
+<li><a class="reference internal" href="#what-happens-on-joins"><span class="std std-ref">What happens to existing data in my cluster when I add new nodes?</span></a></li>
+<li><a class="reference internal" href="#asynch-deletes"><span class="std std-ref">I delete data from Cassandra, but disk usage stays the same. What gives?</span></a></li>
+<li><a class="reference internal" href="#one-entry-ring"><span class="std std-ref">Why does nodetool ring only show one entry, even though my nodes logged that they see each other joining the ring?</span></a></li>
+<li><a class="reference internal" href="#can-large-blob"><span class="std std-ref">Can I Store (large) BLOBs in Cassandra?</span></a></li>
+<li><a class="reference internal" href="#nodetool-connection-refused"><span class="std std-ref">Nodetool says “Connection refused to host: 127.0.1.1” for any remote host. What gives?</span></a></li>
+<li><a class="reference internal" href="#to-batch-or-not-to-batch"><span class="std std-ref">Will batching my operations speed up my bulk load?</span></a></li>
+<li><a class="reference internal" href="#selinux"><span class="std std-ref">On RHEL nodes are unable to join the ring</span></a></li>
+<li><a class="reference internal" href="#how-to-unsubscribe"><span class="std std-ref">How do I unsubscribe from the email list?</span></a></li>
+<li><a class="reference internal" href="#cassandra-eats-all-my-memory"><span class="std std-ref">Why does top report that Cassandra is using a lot more memory than the Java heap max?</span></a></li>
+<li><a class="reference internal" href="#what-are-seeds"><span class="std std-ref">What are seeds?</span></a></li>
+<li><a class="reference internal" href="#are-seeds-spof"><span class="std std-ref">Does single seed mean single point of failure?</span></a></li>
+<li><a class="reference internal" href="#why-message-dropped"><span class="std std-ref">Why do I see “… messages dropped …” in the logs?</span></a></li>
+<li><a class="reference internal" href="#oom-map-failed"><span class="std std-ref">Cassandra dies with java.lang.OutOfMemoryError: Map failed</span></a></li>
+<li><a class="reference internal" href="#what-on-same-timestamp-update"><span class="std std-ref">What happens if two updates are made with the same timestamp?</span></a></li>
+<li><a class="reference internal" href="#why-bootstrapping-stream-error"><span class="std std-ref">Why bootstrapping a new node fails with a “Stream failed” error?</span></a></li>
+</ul>
+<div class="section" id="why-can-t-i-set-listen-address-to-listen-on-0-0-0-0-all-my-addresses">
+<span id="why-cant-list-all"></span><h2>Why can’t I set <code class="docutils literal notranslate"><span class="pre">listen_address</span></code> to listen on 0.0.0.0 (all my addresses)?<a class="headerlink" href="#why-can-t-i-set-listen-address-to-listen-on-0-0-0-0-all-my-addresses" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra is a gossip-based distributed system and <code class="docutils literal notranslate"><span class="pre">listen_address</span></code> is the address a node tells other nodes to reach
+it at. Telling other nodes “contact me on any of my addresses” is a bad idea; if different nodes in the cluster pick
+different addresses for you, Bad Things happen.</p>
+<p>If you don’t want to manually specify an IP to <code class="docutils literal notranslate"><span class="pre">listen_address</span></code> for each node in your cluster (understandable!), leave
+it blank and Cassandra will use <code class="docutils literal notranslate"><span class="pre">InetAddress.getLocalHost()</span></code> to pick an address. Then it’s up to you or your ops team
+to make things resolve correctly (<code class="docutils literal notranslate"><span class="pre">/etc/hosts/</span></code>, dns, etc).</p>
+<p>One exception to this process is JMX, which by default binds to 0.0.0.0 (Java bug 6425769).</p>
+<p>See <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-256">CASSANDRA-256</a> and <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-43">CASSANDRA-43</a> for more gory details.</p>
+</div>
+<div class="section" id="what-ports-does-cassandra-use">
+<span id="what-ports"></span><h2>What ports does Cassandra use?<a class="headerlink" href="#what-ports-does-cassandra-use" title="Permalink to this headline">¶</a></h2>
+<p>By default, Cassandra uses 7000 for cluster communication (7001 if SSL is enabled),  9042 for native protocol clients,
+and 7199 for JMX. The internode communication and native protocol ports
+are configurable in the <a class="reference internal" href="../configuration/cassandra_config_file.html#cassandra-yaml"><span class="std std-ref">Cassandra Configuration File</span></a>. The JMX port is configurable in <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> (through JVM
+options). All ports are TCP.</p>
+</div>
+<div class="section" id="what-happens-to-existing-data-in-my-cluster-when-i-add-new-nodes">
+<span id="what-happens-on-joins"></span><h2>What happens to existing data in my cluster when I add new nodes?<a class="headerlink" href="#what-happens-to-existing-data-in-my-cluster-when-i-add-new-nodes" title="Permalink to this headline">¶</a></h2>
+<p>When a new nodes joins a cluster, it will automatically contact the other nodes in the cluster and copy the right data
+to itself. See <a class="reference internal" href="../operating/topo_changes.html#topology-changes"><span class="std std-ref">Adding, replacing, moving and removing nodes</span></a>.</p>
+</div>
+<div class="section" id="i-delete-data-from-cassandra-but-disk-usage-stays-the-same-what-gives">
+<span id="asynch-deletes"></span><h2>I delete data from Cassandra, but disk usage stays the same. What gives?<a class="headerlink" href="#i-delete-data-from-cassandra-but-disk-usage-stays-the-same-what-gives" title="Permalink to this headline">¶</a></h2>
+<p>Data you write to Cassandra gets persisted to SSTables. Since SSTables are immutable, the data can’t actually be removed
+when you perform a delete, instead, a marker (also called a “tombstone”) is written to indicate the value’s new status.
+Never fear though, on the first compaction that occurs between the data and the tombstone, the data will be expunged
+completely and the corresponding disk space recovered. See <a class="reference internal" href="../operating/compaction/index.html#compaction"><span class="std std-ref">Compaction</span></a> for more detail.</p>
+</div>
+<div class="section" id="why-does-nodetool-ring-only-show-one-entry-even-though-my-nodes-logged-that-they-see-each-other-joining-the-ring">
+<span id="one-entry-ring"></span><h2>Why does nodetool ring only show one entry, even though my nodes logged that they see each other joining the ring?<a class="headerlink" href="#why-does-nodetool-ring-only-show-one-entry-even-though-my-nodes-logged-that-they-see-each-other-joining-the-ring" title="Permalink to this headline">¶</a></h2>
+<p>This happens when you have the same token assigned to each node. Don’t do that.</p>
+<p>Most often this bites people who deploy by installing Cassandra on a VM (especially when using the Debian package, which
+auto-starts Cassandra after installation, thus generating and saving a token), then cloning that VM to other nodes.</p>
+<p>The easiest fix is to wipe the data and commitlog directories, thus making sure that each node will generate a random
+token on the next restart.</p>
+</div>
+<div class="section" id="can-i-change-the-replication-factor-a-a-keyspace-on-a-live-cluster">
+<span id="change-replication-factor"></span><h2>Can I change the replication factor (a a keyspace) on a live cluster?<a class="headerlink" href="#can-i-change-the-replication-factor-a-a-keyspace-on-a-live-cluster" title="Permalink to this headline">¶</a></h2>
+<p>Yes, but it will require running a full repair (or cleanup) to change the replica count of existing data:</p>
+<ul class="simple">
+<li><a class="reference internal" href="../cql/ddl.html#alter-keyspace-statement"><span class="std std-ref">Alter</span></a> the replication factor for desired keyspace (using cqlsh for instance).</li>
+<li>If you’re reducing the replication factor, run <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">cleanup</span></code> on the cluster to remove surplus replicated data.
+Cleanup runs on a per-node basis.</li>
+<li>If you’re increasing the replication factor, run <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">repair</span> <span class="pre">-full</span></code> to ensure data is replicated according to the new
+configuration. Repair runs on a per-replica set basis. This is an intensive process that may result in adverse cluster
+performance. It’s highly recommended to do rolling repairs, as an attempt to repair the entire cluster at once will
+most likely swamp it. Note that you will need to run a full repair (<code class="docutils literal notranslate"><span class="pre">-full</span></code>) to make sure that already repaired
+sstables are not skipped.</li>
+</ul>
+</div>
+<div class="section" id="can-i-store-large-blobs-in-cassandra">
+<span id="can-large-blob"></span><h2>Can I Store (large) BLOBs in Cassandra?<a class="headerlink" href="#can-i-store-large-blobs-in-cassandra" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra isn’t optimized for large file or BLOB storage and a single <code class="docutils literal notranslate"><span class="pre">blob</span></code> value is always read and send to the
+client entirely. As such, storing small blobs (less than single digit MB) should not be a problem, but it is advised to
+manually split large blobs into smaller chunks.</p>
+<p>Please note in particular that by default, any value greater than 16MB will be rejected by Cassandra due the
+<code class="docutils literal notranslate"><span class="pre">max_mutation_size_in_kb</span></code> configuration of the <a class="reference internal" href="../configuration/cassandra_config_file.html#cassandra-yaml"><span class="std std-ref">Cassandra Configuration File</span></a> file (which default to half of
+<code class="docutils literal notranslate"><span class="pre">commitlog_segment_size_in_mb</span></code>, which itself default to 32MB).</p>
+</div>
+<div class="section" id="nodetool-says-connection-refused-to-host-127-0-1-1-for-any-remote-host-what-gives">
+<span id="nodetool-connection-refused"></span><h2>Nodetool says “Connection refused to host: 127.0.1.1” for any remote host. What gives?<a class="headerlink" href="#nodetool-says-connection-refused-to-host-127-0-1-1-for-any-remote-host-what-gives" title="Permalink to this headline">¶</a></h2>
+<p>Nodetool relies on JMX, which in turn relies on RMI, which in turn sets up its own listeners and connectors as needed on
+each end of the exchange. Normally all of this happens behind the scenes transparently, but incorrect name resolution
+for either the host connecting, or the one being connected to, can result in crossed wires and confusing exceptions.</p>
+<p>If you are not using DNS, then make sure that your <code class="docutils literal notranslate"><span class="pre">/etc/hosts</span></code> files are accurate on both ends. If that fails, try
+setting the <code class="docutils literal notranslate"><span class="pre">-Djava.rmi.server.hostname=&lt;public</span> <span class="pre">name&gt;</span></code> JVM option near the bottom of <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> to an
+interface that you can reach from the remote machine.</p>
+</div>
+<div class="section" id="will-batching-my-operations-speed-up-my-bulk-load">
+<span id="to-batch-or-not-to-batch"></span><h2>Will batching my operations speed up my bulk load?<a class="headerlink" href="#will-batching-my-operations-speed-up-my-bulk-load" title="Permalink to this headline">¶</a></h2>
+<p>No. Using batches to load data will generally just add “spikes” of latency. Use asynchronous INSERTs instead, or use
+true <a class="reference internal" href="../operating/bulk_loading.html#bulk-loading"><span class="std std-ref">Bulk Loading</span></a>.</p>
+<p>An exception is batching updates to a single partition, which can be a Good Thing (as long as the size of a single batch
+stay reasonable). But never ever blindly batch everything!</p>
+</div>
+<div class="section" id="on-rhel-nodes-are-unable-to-join-the-ring">
+<span id="selinux"></span><h2>On RHEL nodes are unable to join the ring<a class="headerlink" href="#on-rhel-nodes-are-unable-to-join-the-ring" title="Permalink to this headline">¶</a></h2>
+<p>Check if <a class="reference external" href="https://en.wikipedia.org/wiki/Security-Enhanced_Linux">SELinux</a> is on; if it is, turn it off.</p>
+</div>
+<div class="section" id="how-do-i-unsubscribe-from-the-email-list">
+<span id="how-to-unsubscribe"></span><h2>How do I unsubscribe from the email list?<a class="headerlink" href="#how-do-i-unsubscribe-from-the-email-list" title="Permalink to this headline">¶</a></h2>
+<p>Send an email to <code class="docutils literal notranslate"><span class="pre">user-unsubscribe&#64;cassandra.apache.org</span></code>.</p>
+</div>
+<div class="section" id="why-does-top-report-that-cassandra-is-using-a-lot-more-memory-than-the-java-heap-max">
+<span id="cassandra-eats-all-my-memory"></span><h2>Why does top report that Cassandra is using a lot more memory than the Java heap max?<a class="headerlink" href="#why-does-top-report-that-cassandra-is-using-a-lot-more-memory-than-the-java-heap-max" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra uses <a class="reference external" href="https://en.wikipedia.org/wiki/Memory-mapped_file">Memory Mapped Files</a> (mmap) internally. That is, we
+use the operating system’s virtual memory system to map a number of on-disk files into the Cassandra process’ address
+space. This will “use” virtual memory; i.e. address space, and will be reported by tools like top accordingly, but on 64
+bit systems virtual address space is effectively unlimited so you should not worry about that.</p>
+<p>What matters from the perspective of “memory use” in the sense as it is normally meant, is the amount of data allocated
+on brk() or mmap’d /dev/zero, which represent real memory used. The key issue is that for a mmap’d file, there is never
+a need to retain the data resident in physical memory. Thus, whatever you do keep resident in physical memory is
+essentially just there as a cache, in the same way as normal I/O will cause the kernel page cache to retain data that
+you read/write.</p>
+<p>The difference between normal I/O and mmap() is that in the mmap() case the memory is actually mapped to the process,
+thus affecting the virtual size as reported by top. The main argument for using mmap() instead of standard I/O is the
+fact that reading entails just touching memory - in the case of the memory being resident, you just read it - you don’t
+even take a page fault (so no overhead in entering the kernel and doing a semi-context switch). This is covered in more
+detail <a class="reference external" href="http://www.varnish-cache.org/trac/wiki/ArchitectNotes">here</a>.</p>
+</div>
+<div class="section" id="what-are-seeds">
+<span id="id1"></span><h2>What are seeds?<a class="headerlink" href="#what-are-seeds" title="Permalink to this headline">¶</a></h2>
+<p>Seeds are used during startup to discover the cluster.</p>
+<p>If you configure your nodes to refer some node as seed, nodes in your ring tend to send Gossip message to seeds more
+often (also see the <a class="reference internal" href="../architecture/dynamo.html#gossip"><span class="std std-ref">section on gossip</span></a>) than to non-seeds. In other words, seeds are worked as hubs of
+Gossip network. With seeds, each node can detect status changes of other nodes quickly.</p>
+<p>Seeds are also referred by new nodes on bootstrap to learn other nodes in ring. When you add a new node to ring, you
+need to specify at least one live seed to contact. Once a node join the ring, it learns about the other nodes, so it
+doesn’t need seed on subsequent boot.</p>
+<p>You can make a seed a node at any time. There is nothing special about seed nodes. If you list the node in seed list it
+is a seed</p>
+<p>Seeds do not auto bootstrap (i.e. if a node has itself in its seed list it will not automatically transfer data to itself)
+If you want a node to do that, bootstrap it first and then add it to seeds later. If you have no data (new install) you
+do not have to worry about bootstrap at all.</p>
+<p>Recommended usage of seeds:</p>
+<ul class="simple">
+<li>pick two (or more) nodes per data center as seed nodes.</li>
+<li>sync the seed list to all your nodes</li>
+</ul>
+</div>
+<div class="section" id="does-single-seed-mean-single-point-of-failure">
+<span id="are-seeds-spof"></span><h2>Does single seed mean single point of failure?<a class="headerlink" href="#does-single-seed-mean-single-point-of-failure" title="Permalink to this headline">¶</a></h2>
+<p>The ring can operate or boot without a seed; however, you will not be able to add new nodes to the cluster. It is
+recommended to configure multiple seeds in production system.</p>
+</div>
+<div class="section" id="why-can-t-i-call-jmx-method-x-on-jconsole">
+<span id="cant-call-jmx-method"></span><h2>Why can’t I call jmx method X on jconsole?<a class="headerlink" href="#why-can-t-i-call-jmx-method-x-on-jconsole" title="Permalink to this headline">¶</a></h2>
+<p>Some of JMX operations use array argument and as jconsole doesn’t support array argument, those operations can’t be
+called with jconsole (the buttons are inactive for them). You need to write a JMX client to call such operations or need
+array-capable JMX monitoring tool.</p>
+</div>
+<div class="section" id="why-do-i-see-messages-dropped-in-the-logs">
+<span id="why-message-dropped"></span><h2>Why do I see “… messages dropped …” in the logs?<a class="headerlink" href="#why-do-i-see-messages-dropped-in-the-logs" title="Permalink to this headline">¶</a></h2>
+<p>This is a symptom of load shedding – Cassandra defending itself against more requests than it can handle.</p>
+<p>Internode messages which are received by a node, but do not get not to be processed within their proper timeout (see
+<code class="docutils literal notranslate"><span class="pre">read_request_timeout</span></code>, <code class="docutils literal notranslate"><span class="pre">write_request_timeout</span></code>, … in the <a class="reference internal" href="../configuration/cassandra_config_file.html#cassandra-yaml"><span class="std std-ref">Cassandra Configuration File</span></a>), are dropped rather than
+processed (since the as the coordinator node will no longer be waiting for a response).</p>
+<p>For writes, this means that the mutation was not applied to all replicas it was sent to. The inconsistency will be
+repaired by read repair, hints or a manual repair. The write operation may also have timeouted as a result.</p>
+<p>For reads, this means a read request may not have completed.</p>
+<p>Load shedding is part of the Cassandra architecture, if this is a persistent issue it is generally a sign of an
+overloaded node or cluster.</p>
+</div>
+<div class="section" id="cassandra-dies-with-java-lang-outofmemoryerror-map-failed">
+<span id="oom-map-failed"></span><h2>Cassandra dies with <code class="docutils literal notranslate"><span class="pre">java.lang.OutOfMemoryError:</span> <span class="pre">Map</span> <span class="pre">failed</span></code><a class="headerlink" href="#cassandra-dies-with-java-lang-outofmemoryerror-map-failed" title="Permalink to this headline">¶</a></h2>
+<p>If Cassandra is dying <strong>specifically</strong> with the “Map failed” message, it means the OS is denying java the ability to
+lock more memory. In linux, this typically means memlock is limited. Check <code class="docutils literal notranslate"><span class="pre">/proc/&lt;pid</span> <span class="pre">of</span> <span class="pre">cassandra&gt;/limits</span></code> to verify
+this and raise it (eg, via ulimit in bash). You may also need to increase <code class="docutils literal notranslate"><span class="pre">vm.max_map_count.</span></code> Note that the debian
+package handles this for you automatically.</p>
+</div>
+<div class="section" id="what-happens-if-two-updates-are-made-with-the-same-timestamp">
+<span id="what-on-same-timestamp-update"></span><h2>What happens if two updates are made with the same timestamp?<a class="headerlink" href="#what-happens-if-two-updates-are-made-with-the-same-timestamp" title="Permalink to this headline">¶</a></h2>
+<p>Updates must be commutative, since they may arrive in different orders on different replicas. As long as Cassandra has a
+deterministic way to pick the winner (in a timestamp tie), the one selected is as valid as any other, and the specifics
+should be treated as an implementation detail. That said, in the case of a timestamp tie, Cassandra follows two rules:
+first, deletes take precedence over inserts/updates. Second, if there are two updates, the one with the lexically larger
+value is selected.</p>
+</div>
+<div class="section" id="why-bootstrapping-a-new-node-fails-with-a-stream-failed-error">
+<span id="why-bootstrapping-stream-error"></span><h2>Why bootstrapping a new node fails with a “Stream failed” error?<a class="headerlink" href="#why-bootstrapping-a-new-node-fails-with-a-stream-failed-error" title="Permalink to this headline">¶</a></h2>
+<p>Two main possibilities:</p>
+<ol class="arabic simple">
+<li>the GC may be creating long pauses disrupting the streaming process</li>
+<li>compactions happening in the background hold streaming long enough that the TCP connection fails</li>
+</ol>
+<p>In the first case, regular GC tuning advices apply. In the second case, you need to set TCP keepalive to a lower value
+(default is very high on Linux). Try to just run the following:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo /sbin/sysctl -w net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_intvl=60 net.ipv4.tcp_keepalive_probes=5
+</pre></div>
+</div>
+<p>To make those settings permanent, add them to your <code class="docutils literal notranslate"><span class="pre">/etc/sysctl.conf</span></code> file.</p>
+<p>Note: <a class="reference external" href="https://cloud.google.com/compute/">GCE</a>’s firewall will always interrupt TCP connections that are inactive for
+more than 10 min. Running the above command is highly recommended in that environment.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../plugins/index.html" class="btn btn-default pull-right " role="button" title="Third-Party Plugins" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../development/release_process.html" class="btn btn-default" role="button" title="Release Process" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/genindex.html b/src/doc/4.0-rc1/genindex.html
new file mode 100644
index 0000000..e2c483d
--- /dev/null
+++ b/src/doc/4.0-rc1/genindex.html
@@ -0,0 +1,95 @@
+
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Index"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="index.html"/>
+'
+doc-search-path: "search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+ 
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/getting_started/configuring.html b/src/doc/4.0-rc1/getting_started/configuring.html
new file mode 100644
index 0000000..50db097
--- /dev/null
+++ b/src/doc/4.0-rc1/getting_started/configuring.html
@@ -0,0 +1,176 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Getting Started"
+
+doc-title: "Configuring Cassandra"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Getting Started" href="index.html"/>
+      <link rel="next" title="Inserting and querying" href="querying.html"/>
+      <link rel="prev" title="Installing Cassandra" href="installing.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="installing.html">Installing Cassandra</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Configuring Cassandra</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#main-runtime-properties">Main runtime properties</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#changing-the-location-of-directories">Changing the location of directories</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#environment-variables">Environment variables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#logging">Logging</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="querying.html">Inserting and querying</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html">Client drivers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="production.html">Production Recommendations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="configuring-cassandra">
+<h1>Configuring Cassandra<a class="headerlink" href="#configuring-cassandra" title="Permalink to this headline">¶</a></h1>
+<p>The <span class="xref std std-term">Cassandra</span> configuration files location varies, depending on the type of installation:</p>
+<ul class="simple">
+<li>tarball: <code class="docutils literal notranslate"><span class="pre">conf</span></code> directory within the tarball install location</li>
+<li>package: <code class="docutils literal notranslate"><span class="pre">/etc/cassandra</span></code> directory</li>
+</ul>
+<p>Cassandra’s default configuration file, <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>, is sufficient to explore a simple single-node <span class="xref std std-term">cluster</span>.
+However, anything beyond running a single-node cluster locally requires additional configuration to various Cassandra configuration files.
+Some examples that require non-default configuration are deploying a multi-node cluster or using clients that are not running on a cluster node.</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>: the main configuration file for Cassandra</li>
+<li><code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code>:  environment variables can be set</li>
+<li><code class="docutils literal notranslate"><span class="pre">cassandra-rackdc.properties</span></code> OR <code class="docutils literal notranslate"><span class="pre">cassandra-topology.properties</span></code>: set rack and datacenter information for a cluster</li>
+<li><code class="docutils literal notranslate"><span class="pre">logback.xml</span></code>: logging configuration including logging levels</li>
+<li><code class="docutils literal notranslate"><span class="pre">jvm-*</span></code>: a number of JVM configuration files for both the server and clients</li>
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_archiving.properties</span></code>: set archiving parameters for the <span class="xref std std-term">commitlog</span></li>
+</ul>
+<p>Two sample configuration files can also be found in <code class="docutils literal notranslate"><span class="pre">./conf</span></code>:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">metrics-reporter-config-sample.yaml</span></code>: configuring what the metrics-report will collect</li>
+<li><code class="docutils literal notranslate"><span class="pre">cqlshrc.sample</span></code>: how the CQL shell, cqlsh, can be configured</li>
+</ul>
+<div class="section" id="main-runtime-properties">
+<h2>Main runtime properties<a class="headerlink" href="#main-runtime-properties" title="Permalink to this headline">¶</a></h2>
+<p>Configuring Cassandra is done by setting yaml properties in the <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> file. At a minimum you
+should consider setting the following properties:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">cluster_name</span></code>: Set the name of your cluster.</li>
+<li><code class="docutils literal notranslate"><span class="pre">seeds</span></code>: A comma separated list of the IP addresses of your cluster <span class="xref std std-term">seed nodes</span>.</li>
+<li><code class="docutils literal notranslate"><span class="pre">storage_port</span></code>: Check that you don’t have the default port of 7000 blocked by a firewall.</li>
+<li><code class="docutils literal notranslate"><span class="pre">listen_address</span></code>: The <span class="xref std std-term">listen address</span> is the IP address of a node that allows it to communicate with other nodes in the cluster. Set to <cite>localhost</cite> by default. Alternatively, you can set <code class="docutils literal notranslate"><span class="pre">listen_interface</span></code> to tell Cassandra which interface to use, and consecutively which address to use. Set one property, not both.</li>
+<li><code class="docutils literal notranslate"><span class="pre">native_transport_port</span></code>: Check that you don’t have the default port of 9042 blocked by a firewall, so that clients like cqlsh can communicate with Cassandra on this port.</li>
+</ul>
+</div>
+<div class="section" id="changing-the-location-of-directories">
+<h2>Changing the location of directories<a class="headerlink" href="#changing-the-location-of-directories" title="Permalink to this headline">¶</a></h2>
+<p>The following yaml properties control the location of directories:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">data_file_directories</span></code>: One or more directories where data files, like <span class="xref std std-term">SSTables</span> are located.</li>
+<li><code class="docutils literal notranslate"><span class="pre">commitlog_directory</span></code>: The directory where commitlog files are located.</li>
+<li><code class="docutils literal notranslate"><span class="pre">saved_caches_directory</span></code>: The directory where saved caches are located.</li>
+<li><code class="docutils literal notranslate"><span class="pre">hints_directory</span></code>: The directory where <span class="xref std std-term">hints</span> are located.</li>
+</ul>
+<p>For performance reasons, if you have multiple disks, consider putting commitlog and data files on different disks.</p>
+</div>
+<div class="section" id="environment-variables">
+<h2>Environment variables<a class="headerlink" href="#environment-variables" title="Permalink to this headline">¶</a></h2>
+<p>JVM-level settings such as heap size can be set in <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code>.  You can add any additional JVM command line
+argument to the <code class="docutils literal notranslate"><span class="pre">JVM_OPTS</span></code> environment variable; when Cassandra starts, these arguments will be passed to the JVM.</p>
+</div>
+<div class="section" id="logging">
+<h2>Logging<a class="headerlink" href="#logging" title="Permalink to this headline">¶</a></h2>
+<p>The default logger is <cite>logback</cite>. By default it will log:</p>
+<ul class="simple">
+<li><strong>INFO</strong> level in <code class="docutils literal notranslate"><span class="pre">system.log</span></code></li>
+<li><strong>DEBUG</strong> level in <code class="docutils literal notranslate"><span class="pre">debug.log</span></code></li>
+</ul>
+<p>When running in the foreground, it will also log at INFO level to the console. You can change logging properties by editing <code class="docutils literal notranslate"><span class="pre">logback.xml</span></code> or by running the <cite>nodetool setlogginglevel</cite> command.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="querying.html" class="btn btn-default pull-right " role="button" title="Inserting and querying" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="installing.html" class="btn btn-default" role="button" title="Installing Cassandra" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/getting_started/drivers.html b/src/doc/4.0-rc1/getting_started/drivers.html
new file mode 100644
index 0000000..d27862a
--- /dev/null
+++ b/src/doc/4.0-rc1/getting_started/drivers.html
@@ -0,0 +1,248 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Getting Started"
+
+doc-title: "Client drivers"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Getting Started" href="index.html"/>
+      <link rel="next" title="Production Recommendations" href="production.html"/>
+      <link rel="prev" title="Inserting and querying" href="querying.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="installing.html">Installing Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="querying.html">Inserting and querying</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Client drivers</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#java">Java</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#python">Python</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#ruby">Ruby</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#c-net">C# / .NET</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#nodejs">Nodejs</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#php">PHP</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#c">C++</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#scala">Scala</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#clojure">Clojure</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#erlang">Erlang</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#go">Go</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#haskell">Haskell</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#rust">Rust</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#perl">Perl</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#elixir">Elixir</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#dart">Dart</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="production.html">Production Recommendations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="client-drivers">
+<span id="id1"></span><h1>Client drivers<a class="headerlink" href="#client-drivers" title="Permalink to this headline">¶</a></h1>
+<p>Here are known Cassandra client drivers organized by language. Before choosing a driver, you should verify the Cassandra
+version and functionality supported by a specific driver.</p>
+<div class="section" id="java">
+<h2>Java<a class="headerlink" href="#java" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="http://achilles.archinnov.info/">Achilles</a></li>
+<li><a class="reference external" href="https://github.com/Netflix/astyanax/wiki/Getting-Started">Astyanax</a></li>
+<li><a class="reference external" href="https://github.com/noorq/casser">Casser</a></li>
+<li><a class="reference external" href="https://github.com/datastax/java-driver">Datastax Java driver</a></li>
+<li><a class="reference external" href="https://github.com/impetus-opensource/Kundera">Kundera</a></li>
+<li><a class="reference external" href="https://github.com/deanhiller/playorm">PlayORM</a></li>
+</ul>
+</div>
+<div class="section" id="python">
+<h2>Python<a class="headerlink" href="#python" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/datastax/python-driver">Datastax Python driver</a></li>
+</ul>
+</div>
+<div class="section" id="ruby">
+<h2>Ruby<a class="headerlink" href="#ruby" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/datastax/ruby-driver">Datastax Ruby driver</a></li>
+</ul>
+</div>
+<div class="section" id="c-net">
+<h2>C# / .NET<a class="headerlink" href="#c-net" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/pchalamet/cassandra-sharp">Cassandra Sharp</a></li>
+<li><a class="reference external" href="https://github.com/datastax/csharp-driver">Datastax C# driver</a></li>
+<li><a class="reference external" href="https://github.com/managedfusion/fluentcassandra">Fluent Cassandra</a></li>
+</ul>
+</div>
+<div class="section" id="nodejs">
+<h2>Nodejs<a class="headerlink" href="#nodejs" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/datastax/nodejs-driver">Datastax Nodejs driver</a></li>
+<li><a class="reference external" href="https://github.com/jorgebay/node-cassandra-cql">Node-Cassandra-CQL</a></li>
+</ul>
+</div>
+<div class="section" id="php">
+<h2>PHP<a class="headerlink" href="#php" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="http://code.google.com/a/apache-extras.org/p/cassandra-pdo">CQL | PHP</a></li>
+<li><a class="reference external" href="https://github.com/datastax/php-driver/">Datastax PHP driver</a></li>
+<li><a class="reference external" href="https://github.com/aparkhomenko/php-cassandra">PHP-Cassandra</a></li>
+<li><a class="reference external" href="http://evseevnn.github.io/php-cassandra-binary/">PHP Library for Cassandra</a></li>
+</ul>
+</div>
+<div class="section" id="c">
+<h2>C++<a class="headerlink" href="#c" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/datastax/cpp-driver">Datastax C++ driver</a></li>
+<li><a class="reference external" href="http://sourceforge.net/projects/libqtcassandra">libQTCassandra</a></li>
+</ul>
+</div>
+<div class="section" id="scala">
+<h2>Scala<a class="headerlink" href="#scala" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/datastax/spark-cassandra-connector">Datastax Spark connector</a></li>
+<li><a class="reference external" href="https://github.com/newzly/phantom">Phantom</a></li>
+<li><a class="reference external" href="https://github.com/getquill/quill">Quill</a></li>
+</ul>
+</div>
+<div class="section" id="clojure">
+<h2>Clojure<a class="headerlink" href="#clojure" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/mpenet/alia">Alia</a></li>
+<li><a class="reference external" href="https://github.com/clojurewerkz/cassaforte">Cassaforte</a></li>
+<li><a class="reference external" href="https://github.com/mpenet/hayt">Hayt</a></li>
+</ul>
+</div>
+<div class="section" id="erlang">
+<h2>Erlang<a class="headerlink" href="#erlang" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/matehat/cqerl">CQerl</a></li>
+<li><a class="reference external" href="https://github.com/silviucpp/erlcass">Erlcass</a></li>
+</ul>
+</div>
+<div class="section" id="go">
+<h2>Go<a class="headerlink" href="#go" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="http://relops.com/cqlc/">CQLc</a></li>
+<li><a class="reference external" href="https://github.com/hailocab/gocassa">Gocassa</a></li>
+<li><a class="reference external" href="https://github.com/gocql/gocql">GoCQL</a></li>
+</ul>
+</div>
+<div class="section" id="haskell">
+<h2>Haskell<a class="headerlink" href="#haskell" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/ozataman/cassy">Cassy</a></li>
+</ul>
+</div>
+<div class="section" id="rust">
+<h2>Rust<a class="headerlink" href="#rust" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/neich/rust-cql">Rust CQL</a></li>
+</ul>
+</div>
+<div class="section" id="perl">
+<h2>Perl<a class="headerlink" href="#perl" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/tvdw/perl-dbd-cassandra">Cassandra::Client and DBD::Cassandra</a></li>
+</ul>
+</div>
+<div class="section" id="elixir">
+<h2>Elixir<a class="headerlink" href="#elixir" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lexhide/xandra">Xandra</a></li>
+<li><a class="reference external" href="https://github.com/matehat/cqex">CQEx</a></li>
+</ul>
+</div>
+<div class="section" id="dart">
+<h2>Dart<a class="headerlink" href="#dart" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/achilleasa/dart_cassandra_cql">dart_cassandra_cql</a></li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="production.html" class="btn btn-default pull-right " role="button" title="Production Recommendations" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="querying.html" class="btn btn-default" role="button" title="Inserting and querying" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/getting_started/index.html b/src/doc/4.0-rc1/getting_started/index.html
new file mode 100644
index 0000000..c9ee29f
--- /dev/null
+++ b/src/doc/4.0-rc1/getting_started/index.html
@@ -0,0 +1,165 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Getting Started"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="next" title="Installing Cassandra" href="installing.html"/>
+      <link rel="prev" title="Welcome to Apache Cassandra’s documentation!" href="../index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Getting Started</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installing.html">Installing Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="querying.html">Inserting and querying</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html">Client drivers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="production.html">Production Recommendations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getting-started">
+<h1>Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this headline">¶</a></h1>
+<p>This section covers how to get started using Apache Cassandra and should be the first thing to read if you are new to
+Cassandra.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="installing.html">Installing Cassandra</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installing.html#prerequisites">Prerequisites</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installing.html#choosing-an-installation-method">Choosing an installation method</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installing.html#installing-the-binary-tarball">Installing the binary tarball</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installing.html#installing-the-debian-packages">Installing the Debian packages</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installing.html#installing-the-rpm-packages">Installing the RPM packages</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installing.html#further-installation-info">Further installation info</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="configuring.html">Configuring Cassandra</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html#main-runtime-properties">Main runtime properties</a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html#changing-the-location-of-directories">Changing the location of directories</a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html#environment-variables">Environment variables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html#logging">Logging</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="querying.html">Inserting and querying</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="querying.html#cqlsh">CQLSH</a></li>
+<li class="toctree-l2"><a class="reference internal" href="querying.html#client-drivers">Client drivers</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="drivers.html">Client drivers</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#java">Java</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#python">Python</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#ruby">Ruby</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#c-net">C# / .NET</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#nodejs">Nodejs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#php">PHP</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#c">C++</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#scala">Scala</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#clojure">Clojure</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#erlang">Erlang</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#go">Go</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#haskell">Haskell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#rust">Rust</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#perl">Perl</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#elixir">Elixir</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html#dart">Dart</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="production.html">Production Recommendations</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="production.html#tokens">Tokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="production.html#read-ahead">Read Ahead</a></li>
+<li class="toctree-l2"><a class="reference internal" href="production.html#compression">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="production.html#compaction">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="production.html#encryption">Encryption</a></li>
+<li class="toctree-l2"><a class="reference internal" href="production.html#ensure-keyspaces-are-created-with-networktopologystrategy">Ensure Keyspaces are Created with NetworkTopologyStrategy</a></li>
+<li class="toctree-l2"><a class="reference internal" href="production.html#configure-racks-and-snitch">Configure Racks and Snitch</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="installing.html" class="btn btn-default pull-right " role="button" title="Installing Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../index.html" class="btn btn-default" role="button" title="Welcome to Apache Cassandra’s documentation!" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/getting_started/installing.html b/src/doc/4.0-rc1/getting_started/installing.html
new file mode 100644
index 0000000..252824d
--- /dev/null
+++ b/src/doc/4.0-rc1/getting_started/installing.html
@@ -0,0 +1,388 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Getting Started"
+
+doc-title: "Installing Cassandra"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Getting Started" href="index.html"/>
+      <link rel="next" title="Configuring Cassandra" href="configuring.html"/>
+      <link rel="prev" title="Getting Started" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Installing Cassandra</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#prerequisites">Prerequisites</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#choosing-an-installation-method">Choosing an installation method</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#installing-the-binary-tarball">Installing the binary tarball</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#installing-the-debian-packages">Installing the Debian packages</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#installing-the-rpm-packages">Installing the RPM packages</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#further-installation-info">Further installation info</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="querying.html">Inserting and querying</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html">Client drivers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="production.html">Production Recommendations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="installing-cassandra">
+<h1>Installing Cassandra<a class="headerlink" href="#installing-cassandra" title="Permalink to this headline">¶</a></h1>
+<p>These are the instructions for deploying the supported releases of Apache Cassandra on Linux servers.</p>
+<p>Cassandra runs on a wide array of Linux distributions including (but not limited to):</p>
+<ul class="simple">
+<li>Ubuntu, most notably LTS releases 16.04 to 18.04</li>
+<li>CentOS &amp; RedHat Enterprise Linux (RHEL) including 6.6 to 7.7</li>
+<li>Amazon Linux AMIs including 2016.09 through to Linux 2</li>
+<li>Debian versions 8 &amp; 9</li>
+<li>SUSE Enterprise Linux 12</li>
+</ul>
+<p>This is not an exhaustive list of operating system platforms, nor is it prescriptive. However users will be
+well-advised to conduct exhaustive tests of their own particularly for less-popular distributions of Linux.
+Deploying on older versions is not recommended unless you have previous experience with the older distribution
+in a production environment.</p>
+<div class="section" id="prerequisites">
+<h2>Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Install the latest version of Java 8, either the <a class="reference external" href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Oracle Java Standard Edition 8</a> or <a class="reference external" href="http://openjdk.java.net/">OpenJDK 8</a>. To
+verify that you have the correct version of java installed, type <code class="docutils literal notranslate"><span class="pre">java</span> <span class="pre">-version</span></code>.</li>
+<li><strong>NOTE</strong>: <em>Experimental</em> support for Java 11 was added in Cassandra 4.0 (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-9608">CASSANDRA-9608</a>).
+Running Cassandra on Java 11 is <em>experimental</em>. Do so at your own risk. For more information, see
+<a class="reference external" href="https://github.com/apache/cassandra/blob/trunk/NEWS.txt">NEWS.txt</a>.</li>
+<li>For using cqlsh, the latest version of <a class="reference external" href="https://www.python.org/downloads/">Python 3.6+</a> or Python 2.7 (support deprecated). To verify that you have
+the correct version of Python installed, type <code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">--version</span></code>.</li>
+</ul>
+</div>
+<div class="section" id="choosing-an-installation-method">
+<h2>Choosing an installation method<a class="headerlink" href="#choosing-an-installation-method" title="Permalink to this headline">¶</a></h2>
+<p>For most users, installing the binary tarball is the simplest choice. The tarball unpacks all its contents
+into a single location with binaries and configuration files located in their own subdirectories. The most
+obvious attribute of the tarball installation is it does not require <code class="docutils literal notranslate"><span class="pre">root</span></code> permissions and can be
+installed on any Linux distribution.</p>
+<p>Packaged installations require <code class="docutils literal notranslate"><span class="pre">root</span></code> permissions. Install the RPM build on CentOS and RHEL-based
+distributions if you want to install Cassandra using YUM. Install the Debian build on Ubuntu and other
+Debian-based distributions if you want to install Cassandra using APT. Note that both the YUM and APT
+methods required <code class="docutils literal notranslate"><span class="pre">root</span></code> permissions and will install the binaries and configuration files as the
+<code class="docutils literal notranslate"><span class="pre">cassandra</span></code> OS user.</p>
+</div>
+<div class="section" id="installing-the-binary-tarball">
+<h2>Installing the binary tarball<a class="headerlink" href="#installing-the-binary-tarball" title="Permalink to this headline">¶</a></h2>
+<ol class="arabic simple">
+<li>Verify the version of Java installed. For example:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ java -version
+openjdk version &quot;1.8.0_222&quot;
+OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~16.04.1-b10)
+OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
+</pre></div>
+</div>
+<ol class="arabic simple" start="2">
+<li>Download the binary tarball from one of the mirrors on the <a class="reference external" href="http://cassandra.apache.org/download/">Apache Cassandra Download</a>
+site. For example, to download 4.0:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ curl -OL http://apache.mirror.digitalpacific.com.au/cassandra/4.0-beta1/apache-cassandra-4.0-beta1-bin.tar.gz
+</pre></div>
+</div>
+<p>NOTE: The mirrors only host the latest versions of each major supported release. To download an earlier
+version of Cassandra, visit the <a class="reference external" href="http://archive.apache.org/dist/cassandra/">Apache Archives</a>.</p>
+<ol class="arabic simple" start="3">
+<li>OPTIONAL: Verify the integrity of the downloaded tarball using one of the methods <a class="reference external" href="https://www.apache.org/dyn/closer.cgi#verify">here</a>.
+For example, to verify the hash of the downloaded file using GPG:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ gpg --print-md SHA256 apache-cassandra-4.0-beta1-bin.tar.gz
+apache-cassandra-4.0-beta1-bin.tar.gz: 28757DDE 589F7041 0F9A6A95 C39EE7E6
+                                   CDE63440 E2B06B91 AE6B2006 14FA364D
+</pre></div>
+</div>
+<p>Compare the signature with the SHA256 file from the Downloads site:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ curl -L https://downloads.apache.org/cassandra/4.0-beta1/apache-cassandra-4.0-beta1-bin.tar.gz.sha256
+28757dde589f70410f9a6a95c39ee7e6cde63440e2b06b91ae6b200614fa364d
+</pre></div>
+</div>
+<ol class="arabic simple" start="4">
+<li>Unpack the tarball:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ tar xzvf apache-cassandra-4.0-beta1-bin.tar.gz
+</pre></div>
+</div>
+<p>The files will be extracted to the <code class="docutils literal notranslate"><span class="pre">apache-cassandra-4.0-beta1/</span></code> directory. This is the tarball installation
+location.</p>
+<ol class="arabic simple" start="5">
+<li>Located in the tarball installation location are the directories for the scripts, binaries, utilities, configuration, data and log files:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>&lt;tarball_installation&gt;/
+    bin/
+    conf/
+    data/
+    doc/
+    interface/
+    javadoc/
+    lib/
+    logs/
+    pylib/
+    tools/
+</pre></div>
+</div>
+<p>For information on how to configure your installation, see
+<a class="reference external" href="http://cassandra.apache.org/doc/latest/getting_started/configuring.html">Configuring Cassandra</a>.</p>
+<ol class="arabic simple" start="6">
+<li>Start Cassandra:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ cd apache-cassandra-4.0-beta1/
+$ bin/cassandra
+</pre></div>
+</div>
+<p>NOTE: This will run Cassandra as the authenticated Linux user.</p>
+<p>You can monitor the progress of the startup with:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ tail -f logs/system.log
+</pre></div>
+</div>
+<p>Cassandra is ready when you see an entry like this in the <code class="docutils literal notranslate"><span class="pre">system.log</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>INFO  [main] 2019-12-17 03:03:37,526 Server.java:156 - Starting listening for CQL clients on localhost/127.0.0.1:9042 (unencrypted)...
+</pre></div>
+</div>
+<ol class="arabic simple" start="7">
+<li>Check the status of Cassandra:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ bin/nodetool status
+</pre></div>
+</div>
+<p>The status column in the output should report UN which stands for “Up/Normal”.</p>
+<p>Alternatively, connect to the database with:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ bin/cqlsh
+</pre></div>
+</div>
+</div>
+<div class="section" id="installing-the-debian-packages">
+<h2>Installing the Debian packages<a class="headerlink" href="#installing-the-debian-packages" title="Permalink to this headline">¶</a></h2>
+<ol class="arabic simple">
+<li>Verify the version of Java installed. For example:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ java -version
+openjdk version &quot;1.8.0_222&quot;
+OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~16.04.1-b10)
+OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
+</pre></div>
+</div>
+<ol class="arabic simple" start="2">
+<li>Add the Apache repository of Cassandra to the file <code class="docutils literal notranslate"><span class="pre">cassandra.sources.list</span></code>. The latest major version
+is 4.0 and the corresponding distribution name is <code class="docutils literal notranslate"><span class="pre">40x</span></code> (with an “x” as the suffix).
+For older releases use <code class="docutils literal notranslate"><span class="pre">311x</span></code> for C* 3.11 series, <code class="docutils literal notranslate"><span class="pre">30x</span></code> for 3.0, <code class="docutils literal notranslate"><span class="pre">22x</span></code> for 2.2 and <code class="docutils literal notranslate"><span class="pre">21x</span></code> for 2.1.
+For example, to add the repository for version 4.0 (<code class="docutils literal notranslate"><span class="pre">40x</span></code>):</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ echo &quot;deb http://downloads.apache.org/cassandra/debian 40x main&quot; | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
+deb http://downloads.apache.org/cassandra/debian 40x main
+</pre></div>
+</div>
+<ol class="arabic simple" start="3">
+<li>Add the Apache Cassandra repository keys to the list of trusted keys on the server:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
+  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
+                                 Dload  Upload   Total   Spent    Left  Speed
+100  266k  100  266k    0     0   320k      0 --:--:-- --:--:-- --:--:--  320k
+OK
+</pre></div>
+</div>
+<ol class="arabic simple" start="4">
+<li>Update the package index from sources:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo apt-get update
+</pre></div>
+</div>
+<ol class="arabic simple" start="5">
+<li>Install Cassandra with APT:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo apt-get install cassandra
+</pre></div>
+</div>
+<p>NOTE: A new Linux user <code class="docutils literal notranslate"><span class="pre">cassandra</span></code> will get created as part of the installation. The Cassandra service
+will also be run as this user.</p>
+<ol class="arabic simple" start="6">
+<li>The Cassandra service gets started automatically after installation. Monitor the progress of
+the startup with:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ tail -f /var/log/cassandra/system.log
+</pre></div>
+</div>
+<p>Cassandra is ready when you see an entry like this in the <code class="docutils literal notranslate"><span class="pre">system.log</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>INFO  [main] 2019-12-17 03:03:37,526 Server.java:156 - Starting listening for CQL clients on localhost/127.0.0.1:9042 (unencrypted)...
+</pre></div>
+</div>
+<p>NOTE: For information on how to configure your installation, see
+<a class="reference external" href="http://cassandra.apache.org/doc/latest/getting_started/configuring.html">Configuring Cassandra</a>.</p>
+<ol class="arabic simple" start="7">
+<li>Check the status of Cassandra:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ nodetool status
+</pre></div>
+</div>
+<p>The status column in the output should report <code class="docutils literal notranslate"><span class="pre">UN</span></code> which stands for “Up/Normal”.</p>
+<p>Alternatively, connect to the database with:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ cqlsh
+</pre></div>
+</div>
+</div>
+<div class="section" id="installing-the-rpm-packages">
+<h2>Installing the RPM packages<a class="headerlink" href="#installing-the-rpm-packages" title="Permalink to this headline">¶</a></h2>
+<ol class="arabic simple">
+<li>Verify the version of Java installed. For example:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ java -version
+openjdk version &quot;1.8.0_222&quot;
+OpenJDK Runtime Environment (build 1.8.0_232-b09)
+OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
+</pre></div>
+</div>
+<ol class="arabic simple" start="2">
+<li>Add the Apache repository of Cassandra to the file <code class="docutils literal notranslate"><span class="pre">/etc/yum.repos.d/cassandra.repo</span></code> (as the <code class="docutils literal notranslate"><span class="pre">root</span></code>
+user). The latest major version is 4.0 and the corresponding distribution name is <code class="docutils literal notranslate"><span class="pre">40x</span></code> (with an “x” as the suffix).
+For older releases use <code class="docutils literal notranslate"><span class="pre">311x</span></code> for C* 3.11 series, <code class="docutils literal notranslate"><span class="pre">30x</span></code> for 3.0, <code class="docutils literal notranslate"><span class="pre">22x</span></code> for 2.2 and <code class="docutils literal notranslate"><span class="pre">21x</span></code> for 2.1.
+For example, to add the repository for version 4.0 (<code class="docutils literal notranslate"><span class="pre">40x</span></code>):</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[cassandra]
+name=Apache Cassandra
+baseurl=https://downloads.apache.org/cassandra/redhat/40x/
+gpgcheck=1
+repo_gpgcheck=1
+gpgkey=https://downloads.apache.org/cassandra/KEYS
+</pre></div>
+</div>
+<ol class="arabic simple" start="3">
+<li>Update the package index from sources:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo yum update
+</pre></div>
+</div>
+<ol class="arabic simple" start="4">
+<li>Install Cassandra with YUM:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo yum install cassandra
+</pre></div>
+</div>
+<p>NOTE: A new Linux user <code class="docutils literal notranslate"><span class="pre">cassandra</span></code> will get created as part of the installation. The Cassandra service
+will also be run as this user.</p>
+<ol class="arabic simple" start="5">
+<li>Start the Cassandra service:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ sudo service cassandra start
+</pre></div>
+</div>
+<ol class="arabic simple" start="6">
+<li>Monitor the progress of the startup with:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ tail -f /var/log/cassandra/system.log
+</pre></div>
+</div>
+<p>Cassandra is ready when you see an entry like this in the <code class="docutils literal notranslate"><span class="pre">system.log</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>INFO  [main] 2019-12-17 03:03:37,526 Server.java:156 - Starting listening for CQL clients on localhost/127.0.0.1:9042 (unencrypted)...
+</pre></div>
+</div>
+<p>NOTE: For information on how to configure your installation, see
+<a class="reference external" href="http://cassandra.apache.org/doc/latest/getting_started/configuring.html">Configuring Cassandra</a>.</p>
+<ol class="arabic simple" start="7">
+<li>Check the status of Cassandra:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ nodetool status
+</pre></div>
+</div>
+<p>The status column in the output should report <code class="docutils literal notranslate"><span class="pre">UN</span></code> which stands for “Up/Normal”.</p>
+<p>Alternatively, connect to the database with:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ cqlsh
+</pre></div>
+</div>
+</div>
+<div class="section" id="further-installation-info">
+<h2>Further installation info<a class="headerlink" href="#further-installation-info" title="Permalink to this headline">¶</a></h2>
+<p>For help with installation issues, see the <a class="reference external" href="http://cassandra.apache.org/doc/latest/troubleshooting/index.html">Troubleshooting</a> section.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="configuring.html" class="btn btn-default pull-right " role="button" title="Configuring Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Getting Started" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/getting_started/production.html b/src/doc/4.0-rc1/getting_started/production.html
new file mode 100644
index 0000000..4ebcd00
--- /dev/null
+++ b/src/doc/4.0-rc1/getting_started/production.html
@@ -0,0 +1,246 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Getting Started"
+
+doc-title: "Production Recommendations"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Getting Started" href="index.html"/>
+      <link rel="next" title="New Features in Apache Cassandra 4.0" href="../new/index.html"/>
+      <link rel="prev" title="Client drivers" href="drivers.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="installing.html">Installing Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="querying.html">Inserting and querying</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html">Client drivers</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Production Recommendations</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#tokens">Tokens</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#read-ahead">Read Ahead</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#compression">Compression</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#compaction">Compaction</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#encryption">Encryption</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#ensure-keyspaces-are-created-with-networktopologystrategy">Ensure Keyspaces are Created with NetworkTopologyStrategy</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#configure-racks-and-snitch">Configure Racks and Snitch</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="production-recommendations">
+<h1>Production Recommendations<a class="headerlink" href="#production-recommendations" title="Permalink to this headline">¶</a></h1>
+<p>The <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> and <code class="docutils literal notranslate"><span class="pre">jvm.options</span></code> files have a number of notes and recommendations for production usage.  This page
+expands on some of the notes in these files with additional information.</p>
+<div class="section" id="tokens">
+<h2>Tokens<a class="headerlink" href="#tokens" title="Permalink to this headline">¶</a></h2>
+<p>Using more than 1 token (referred to as vnodes) allows for more flexible expansion and more streaming peers when
+bootstrapping new nodes into the cluster.  This can limit the negative impact of streaming (I/O and CPU overhead)
+as well as allow for incremental cluster expansion.</p>
+<p>As a tradeoff, more tokens will lead to sharing data with more peers, which can result in decreased availability.  To learn more about this we
+recommend reading <a class="reference external" href="https://github.com/jolynch/python_performance_toolkit/raw/master/notebooks/cassandra_availability/whitepaper/cassandra-availability-virtual.pdf">this paper</a>.</p>
+<p>The number of tokens can be changed using the following setting:</p>
+<p><code class="docutils literal notranslate"><span class="pre">num_tokens:</span> <span class="pre">16</span></code></p>
+<p>Here are the most common token counts with a brief explanation of when and why you would use each one.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="12%" />
+<col width="88%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Token Count</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>1</td>
+<td>Maximum availablility, maximum cluster size, fewest peers,
+but inflexible expansion.  Must always
+double size of cluster to expand and remain balanced.</td>
+</tr>
+<tr class="row-odd"><td>4</td>
+<td>A healthy mix of elasticity and availability.  Recommended for clusters which will eventually
+reach over 30 nodes.  Requires adding approximately 20% more nodes to remain balanced.
+Shrinking a cluster may result in cluster imbalance.</td>
+</tr>
+<tr class="row-even"><td>16</td>
+<td>Best for heavily elastic clusters which expand and shrink regularly, but may have issues
+availability with larger clusters.  Not recommended for clusters over 50 nodes.</td>
+</tr>
+</tbody>
+</table>
+<p>In addition to setting the token count, it’s extremely important that <code class="docutils literal notranslate"><span class="pre">allocate_tokens_for_local_replication_factor</span></code> be
+set as well, to ensure even token allocation.</p>
+</div>
+<div class="section" id="read-ahead">
+<span id="id1"></span><h2>Read Ahead<a class="headerlink" href="#read-ahead" title="Permalink to this headline">¶</a></h2>
+<p>Read ahead is an operating system feature that attempts to keep as much data loaded in the page cache as possible.  The
+goal is to decrease latency by using additional throughput on reads where the latency penalty is high due to seek times
+on spinning disks.  By leveraging read ahead, the OS can pull additional data into memory without the cost of additional
+seeks.  This works well when available RAM is greater than the size of the hot dataset, but can be problematic when the
+hot dataset is much larger than available RAM.  The benefit of read ahead decreases as the size of your hot dataset gets
+bigger in proportion to available memory.</p>
+<p>With small partitions (usually tables with no partition key, but not limited to this case) and solid state drives, read
+ahead can increase disk usage without any of the latency benefits, and in some cases can result in up to
+a 5x latency and throughput performance penalty.  Read heavy, key/value tables with small (under 1KB) rows are especially
+prone to this problem.</p>
+<p>We recommend the following read ahead settings:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="39%" />
+<col width="61%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Hardware</th>
+<th class="head">Initial Recommendation</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Spinning Disks</td>
+<td>64KB</td>
+</tr>
+<tr class="row-odd"><td>SSD</td>
+<td>4KB</td>
+</tr>
+</tbody>
+</table>
+<p>Read ahead can be adjusted on Linux systems by using the <cite>blockdev</cite> tool.</p>
+<p>For example, we can set read ahead of <a href="#id2"><span class="problematic" id="id3">``</span></a>/dev/sda1` to 4KB by doing the following:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">blockdev</span> <span class="o">--</span><span class="n">setra</span> <span class="mi">8</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sda1</span>
+</pre></div>
+</div>
+<p><strong>Note</strong>: blockdev accepts the number of 512 byte sectors to read ahead.  The argument of 8 above is equivilent to 4KB.</p>
+<p>Since each system is different, use the above recommendations as a starting point and tuning based on your SLA and
+throughput requirements.  To understand how read ahead impacts disk resource usage we recommend carefully reading through the
+<a class="reference internal" href="../troubleshooting/use_tools.html#use-os-tools"><span class="std std-ref">troubleshooting</span></a> portion of the documentation.</p>
+</div>
+<div class="section" id="compression">
+<h2>Compression<a class="headerlink" href="#compression" title="Permalink to this headline">¶</a></h2>
+<p>Compressed data is stored by compressing fixed size byte buffers and writing the data to disk.  The buffer size is
+determined by the  <code class="docutils literal notranslate"><span class="pre">chunk_length_in_kb</span></code> element in the compression map of the schema settings.</p>
+<p>The default setting is 16KB starting with Cassandra 4.0.</p>
+<p>Since the entire compressed buffer must be read off disk, using too high of a compression chunk length can lead to
+significant overhead when reading small records.  Combined with the default read ahead setting this can result in massive
+read amplification for certain workloads.</p>
+<p>LZ4Compressor is the default and recommended compression algorithm.</p>
+<p>There is additional information on this topic on <a class="reference external" href="https://thelastpickle.com/blog/2018/08/08/compression_performance.html">The Last Pickle Blog</a>.</p>
+</div>
+<div class="section" id="compaction">
+<h2>Compaction<a class="headerlink" href="#compaction" title="Permalink to this headline">¶</a></h2>
+<p>There are different <a class="reference internal" href="../operating/compaction/index.html#compaction"><span class="std std-ref">compaction</span></a> strategies available for different workloads.
+We recommend reading up on the different strategies to understand which is the best for your environment.  Different tables
+may (and frequently do) use different compaction strategies on the same cluster.</p>
+</div>
+<div class="section" id="encryption">
+<h2>Encryption<a class="headerlink" href="#encryption" title="Permalink to this headline">¶</a></h2>
+<p>It is significantly easier to set up peer to peer encryption and client server encryption when setting up your production
+cluster as opposed to setting it up once the cluster is already serving production traffic.  If you are planning on using network encryption
+eventually (in any form), we recommend setting it up now.  Changing these configurations down the line is not impossible,
+but mistakes can result in downtime or data loss.</p>
+</div>
+<div class="section" id="ensure-keyspaces-are-created-with-networktopologystrategy">
+<h2>Ensure Keyspaces are Created with NetworkTopologyStrategy<a class="headerlink" href="#ensure-keyspaces-are-created-with-networktopologystrategy" title="Permalink to this headline">¶</a></h2>
+<p>Production clusters should never use SimpleStrategy.  Production keyspaces should use the NetworkTopologyStrategy (NTS).</p>
+<p>For example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">create</span> <span class="n">KEYSPACE</span> <span class="n">mykeyspace</span> <span class="n">WITH</span> <span class="n">replication</span> <span class="o">=</span>
+<span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;NetworkTopologyStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;datacenter1&#39;</span><span class="p">:</span> <span class="mi">3</span><span class="p">};</span>
+</pre></div>
+</div>
+<p>NetworkTopologyStrategy allows Cassandra to take advantage of multiple racks and data centers.</p>
+</div>
+<div class="section" id="configure-racks-and-snitch">
+<h2>Configure Racks and Snitch<a class="headerlink" href="#configure-racks-and-snitch" title="Permalink to this headline">¶</a></h2>
+<p><strong>Correctly configuring or changing racks after a cluster has been provisioned is an unsupported process</strong>.  Migrating from
+a single rack to multiple racks is also unsupported and can result in data loss.</p>
+<p>Using <code class="docutils literal notranslate"><span class="pre">GossipingPropertyFileSnitch</span></code> is the most flexible solution for on premise or mixed cloud environments.  <code class="docutils literal notranslate"><span class="pre">Ec2Snitch</span></code>
+is reliable for AWS EC2 only environments.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../new/index.html" class="btn btn-default pull-right " role="button" title="New Features in Apache Cassandra 4.0" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="drivers.html" class="btn btn-default" role="button" title="Client drivers" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/getting_started/querying.html b/src/doc/4.0-rc1/getting_started/querying.html
new file mode 100644
index 0000000..f90908b
--- /dev/null
+++ b/src/doc/4.0-rc1/getting_started/querying.html
@@ -0,0 +1,147 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Getting Started"
+
+doc-title: "Inserting and querying"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Getting Started" href="index.html"/>
+      <link rel="next" title="Client drivers" href="drivers.html"/>
+      <link rel="prev" title="Configuring Cassandra" href="configuring.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="installing.html">Installing Cassandra</a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuring.html">Configuring Cassandra</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Inserting and querying</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#cqlsh">CQLSH</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#client-drivers">Client drivers</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html">Client drivers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="production.html">Production Recommendations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="inserting-and-querying">
+<h1>Inserting and querying<a class="headerlink" href="#inserting-and-querying" title="Permalink to this headline">¶</a></h1>
+<p>The API to Cassandra is <a class="reference internal" href="../cql/index.html#cql"><span class="std std-ref">CQL</span></a>, the Cassandra Query Language. To use CQL, you will need to connect to the
+cluster, which can be done:</p>
+<ul class="simple">
+<li>either using cqlsh,</li>
+<li>or through a client driver for Cassandra.</li>
+</ul>
+<div class="section" id="cqlsh">
+<h2>CQLSH<a class="headerlink" href="#cqlsh" title="Permalink to this headline">¶</a></h2>
+<p>cqlsh is a command line shell for interacting with Cassandra through CQL. It is shipped with every Cassandra package,
+and can be found in the bin/ directory alongside the cassandra executable. It connects to the single node specified on
+the command line. For example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ bin/cqlsh localhost
+Connected to Test Cluster at localhost:9042.
+[cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
+Use HELP for help.
+cqlsh&gt; SELECT cluster_name, listen_address FROM system.local;
+
+ cluster_name | listen_address
+--------------+----------------
+ Test Cluster |      127.0.0.1
+
+(1 rows)
+cqlsh&gt;
+</pre></div>
+</div>
+<p>See the <a class="reference internal" href="../tools/cqlsh.html#cqlsh"><span class="std std-ref">cqlsh section</span></a> for full documentation.</p>
+</div>
+<div class="section" id="client-drivers">
+<h2>Client drivers<a class="headerlink" href="#client-drivers" title="Permalink to this headline">¶</a></h2>
+<p>A lot of client drivers are provided by the Community and a list of known drivers is provided in <a class="reference internal" href="drivers.html#client-drivers"><span class="std std-ref">the next section</span></a>. You should refer to the documentation of each drivers for more information on how to use them.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="drivers.html" class="btn btn-default pull-right " role="button" title="Client drivers" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="configuring.html" class="btn btn-default" role="button" title="Configuring Cassandra" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/glossary.html b/src/doc/4.0-rc1/glossary.html
new file mode 100644
index 0000000..a8e13c3
--- /dev/null
+++ b/src/doc/4.0-rc1/glossary.html
@@ -0,0 +1,119 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Glossary"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="index.html"/>
+'
+doc-search-path: "search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <dl class="glossary docutils">
+</dl>
+<div class="section" id="glossary">
+<h1>Glossary<a class="headerlink" href="#glossary" title="Permalink to this headline">¶</a></h1>
+<blockquote>
+<div><dl class="docutils">
+<dt>Cassandra</dt>
+<dd>Apache Cassandra is a distributed, high-available, eventually consistent NoSQL open-source database.</dd>
+<dt>cluster</dt>
+<dd>Two or more database instances that exchange messages using the gossip protocol.</dd>
+<dt>commitlog</dt>
+<dd>A file to which the database appends changed data for recovery in the event of a hardware failure.</dd>
+<dt>datacenter</dt>
+<dd>A group of related nodes that are configured together within a cluster for replication and workload segregation purposes.
+Not necessarily a separate location or physical data center. Datacenter names are case-sensitive and cannot be changed.</dd>
+<dt>gossip</dt>
+<dd>A peer-to-peer communication protocol for exchanging location and state information between nodes.</dd>
+<dt>hint</dt>
+<dd>One of the three ways, in addition to read-repair and full/incremental anti-entropy repair, that Cassandra implements the eventual consistency guarantee that all updates are eventually received by all replicas.</dd>
+<dt>listen address</dt>
+<dd>Address or interface to bind to and tell other Cassandra nodes to connect to</dd>
+<dt>seed node</dt>
+<dd>A seed node is used to bootstrap the gossip process for new nodes joining a cluster. To learn the topology of the ring, a joining node contacts one of the nodes in the -seeds list in cassandra. yaml. The first time you bring up a node in a new cluster, only one node is the seed node.</dd>
+<dt>snitch</dt>
+<dd>The mapping from the IP addresses of nodes to physical and virtual locations, such as racks and data centers. There are several types of snitches.
+The type of snitch affects the request routing mechanism.</dd>
+<dt>SSTable</dt>
+<dd>An SSTable provides a persistent,ordered immutable map from keys to values, where both keys and values are arbitrary byte strings.</dd>
+</dl>
+</div></blockquote>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/index.html b/src/doc/4.0-rc1/index.html
new file mode 100644
index 0000000..547b337
--- /dev/null
+++ b/src/doc/4.0-rc1/index.html
@@ -0,0 +1,167 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: ""
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="#"/>
+'
+doc-search-path: "search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <h1>Apache Cassandra Documentation v4.0-rc1</h1>
+  <p>
+  Welcome! This is the documentation for Apache Cassandra 4.0-rc1.
+  </p>
+<div id="wipwarning">This documentation is a work-in-progress.
+    <a href="bugs.html">Contributions</a> are welcome.</div>
+
+<h3>Main documentation</h3>
+
+<div>
+<form id="doc-search-form" action="search.html" method="get" role="search">
+  <div class="form-group">
+    Search the documentation:
+    <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </div>
+</form><br />
+</div>
+
+<table class="contentstable doc-landing-table" align="center">
+  <tr>
+    <td class="left-column">
+      <p class="biglink"><a class="biglink" href="getting_started/index.html">Getting started</a><br/>
+      <span class="linkdescr">Newbie friendly starting point</span></p>
+    </td>
+    <td class="right-column">
+      <p class="biglink"><a class="biglink" href="operating/index.html">Operating Cassandra</a><br/>
+      <span class="linkdescr">The operator's corner</span></p>
+    </td>
+  </tr>
+  <tr>
+    <td class="left-column">
+      <p class="biglink"><a class="biglink" href="architecture/index.html">Cassandra Architecture</a><br/>
+      <span class="linkdescr">Cassandra's big picture</span></p>
+    </td>
+    <td class="right-column">
+      <p class="biglink"><a class="biglink" href="tools/index.html">Cassandra's Tools</a><br/>
+      <span class="linkdescr">cqlsh, nodetool, ...</span></p>
+    </td>
+  </tr>
+  <tr>
+    <td class="left-column">
+      <p class="biglink"><a class="biglink" href="data_modeling/index.html">Data Modeling</a><br/>
+      <span class="linkdescr">Hint: it's not relational</span></p>
+    </td>
+    <td class="right-column">
+      <p class="biglink"><a class="biglink" href="troubleshooting/index.html">Troubleshooting</a><br/>
+      <span class="linkdescr">What to look for when you have a problem</span></p>
+    </td>
+  </tr>
+  <tr>
+    <td class="left-column">
+      <p class="biglink"><a class="biglink" href="cql/index.html">Cassandra Query Language</a><br/>
+      <span class="linkdescr">CQL reference documentation</span></p>
+    </td>
+    <td class="right-column">
+      <p class="biglink"><a class="biglink" href="development/index.html">Cassandra Development</a><br/>
+      <span class="linkdescr">Learn how to improve Cassandra and contribute patches</span></p>
+    </td>
+  </tr>
+  <tr>
+    <td class="left-column">
+      <p class="biglink"><a class="biglink" href="faq/index.html">FAQs</a><br/>
+      <span class="linkdescr">Frequently Asked Questions (with answers!)</span></p>
+    </td>
+    <td class="right-column">
+      <p class="biglink"><a class="biglink" href="configuration/index.html">Configuration</a><br/>
+      <span class="linkdescr">Cassandra's handles and knobs</span></p>
+    </td>
+  </tr>
+</table>
+
+<h3>Meta informations</h3>
+
+<ul>
+  <li><a class="biglink" href="bugs.html">Reporting bugs</a></li>
+  <li><a class="biglink" href="contactus.html">Contact us</a></li>
+</ul>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/new/auditlogging.html b/src/doc/4.0-rc1/new/auditlogging.html
new file mode 100644
index 0000000..5263aef
--- /dev/null
+++ b/src/doc/4.0-rc1/new/auditlogging.html
@@ -0,0 +1,567 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "New Features in Apache Cassandra 4.0"
+
+doc-title: "Audit Logging"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="New Features in Apache Cassandra 4.0" href="index.html"/>
+      <link rel="next" title="Full Query Logging (FQL)" href="fqllogging.html"/>
+      <link rel="prev" title="Virtual Tables" href="virtualtables.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">New Features in Apache Cassandra 4.0</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="java11.html">Support for Java 11</a></li>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html">Virtual Tables</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Audit Logging</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#what-does-audit-logging-log">What does Audit Logging Log?</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#what-audit-logging-does-not-log">What Audit Logging does not Log?</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#audit-logging-is-flexible-and-configurable">Audit Logging is Flexible and Configurable</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#configuring-audit-logging">Configuring Audit Logging</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#using-nodetool-to-enable-audit-logging">Using Nodetool to Enable Audit Logging</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#viewing-the-audit-logs">Viewing the Audit Logs</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#an-audit-logging-demo">An Audit Logging Demo</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#diagnostic-events-for-user-audit-logging">Diagnostic events for user audit logging</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html">Full Query Logging (FQL)</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html">Improved Internode Messaging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html">Improved Streaming</a></li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html">Transient Replication</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="audit-logging">
+<h1>Audit Logging<a class="headerlink" href="#audit-logging" title="Permalink to this headline">¶</a></h1>
+<p>Audit Logging is a new feature in Apache Cassandra 4.0 (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12151">CASSANDRA-12151</a>). All database activity is logged to a directory in the local filesystem and the audit log files are rolled periodically. All database operations are monitored and recorded.  Audit logs are stored in local directory files instead of the database itself as it provides several benefits, some of which are:</p>
+<ul class="simple">
+<li>No additional database capacity is needed to store audit logs</li>
+<li>No query tool is required while storing the audit logs in the database would require a query tool</li>
+<li>Latency of database operations is not affected; no performance impact</li>
+<li>It is easier to implement file based logging than database based logging</li>
+</ul>
+<div class="section" id="what-does-audit-logging-log">
+<h2>What does Audit Logging Log?<a class="headerlink" href="#what-does-audit-logging-log" title="Permalink to this headline">¶</a></h2>
+<p>Audit logging logs:</p>
+<ol class="arabic simple">
+<li>All authentication which includes successful and failed login attempts</li>
+<li>All database command requests to CQL. Both failed and successful CQL is logged</li>
+</ol>
+<p>More specifically an audit log entry could be one of two types:</p>
+<ol class="loweralpha simple">
+<li>CQL Audit Log Entry Type or</li>
+<li>Common Audit Log Entry Type</li>
+</ol>
+<p>Each of these types comprises of several database operations. The CQL Audit Log Entry Type could be one of the following; the category of the CQL audit log entry type is listed in parentheses.</p>
+<ol class="arabic simple">
+<li>SELECT(QUERY),</li>
+<li>UPDATE(DML),</li>
+<li>DELETE(DML),</li>
+<li>TRUNCATE(DDL),</li>
+<li>CREATE_KEYSPACE(DDL),</li>
+<li>ALTER_KEYSPACE(DDL),</li>
+<li>DROP_KEYSPACE(DDL),</li>
+<li>CREATE_TABLE(DDL),</li>
+<li>DROP_TABLE(DDL),</li>
+<li>PREPARE_STATEMENT(PREPARE),</li>
+<li>DROP_TRIGGER(DDL),</li>
+<li>LIST_USERS(DCL),</li>
+<li>CREATE_INDEX(DDL),</li>
+<li>DROP_INDEX(DDL),</li>
+<li>GRANT(DCL),</li>
+<li>REVOKE(DCL),</li>
+<li>CREATE_TYPE(DDL),</li>
+<li>DROP_AGGREGATE(DDL),</li>
+<li>ALTER_VIEW(DDL),</li>
+<li>CREATE_VIEW(DDL),</li>
+<li>DROP_ROLE(DCL),</li>
+<li>CREATE_FUNCTION(DDL),</li>
+<li>ALTER_TABLE(DDL),</li>
+<li>BATCH(DML),</li>
+<li>CREATE_AGGREGATE(DDL),</li>
+<li>DROP_VIEW(DDL),</li>
+<li>DROP_TYPE(DDL),</li>
+<li>DROP_FUNCTION(DDL),</li>
+<li>ALTER_ROLE(DCL),</li>
+<li>CREATE_TRIGGER(DDL),</li>
+<li>LIST_ROLES(DCL),</li>
+<li>LIST_PERMISSIONS(DCL),</li>
+<li>ALTER_TYPE(DDL),</li>
+<li>CREATE_ROLE(DCL),</li>
+<li>USE_KEYSPACE (OTHER).</li>
+</ol>
+<p>The Common Audit Log Entry Type could be one of the following; the category of the Common audit log entry type is listed in parentheses.</p>
+<ol class="arabic simple">
+<li>REQUEST_FAILURE(ERROR),</li>
+<li>LOGIN_ERROR(AUTH),</li>
+<li>UNAUTHORIZED_ATTEMPT(AUTH),</li>
+<li>LOGIN_SUCCESS (AUTH).</li>
+</ol>
+</div>
+<div class="section" id="what-audit-logging-does-not-log">
+<h2>What Audit Logging does not Log?<a class="headerlink" href="#what-audit-logging-does-not-log" title="Permalink to this headline">¶</a></h2>
+<p>Audit logging does not log:</p>
+<ol class="arabic simple">
+<li>Configuration changes made in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code></li>
+<li>Nodetool Commands</li>
+</ol>
+</div>
+<div class="section" id="audit-logging-is-flexible-and-configurable">
+<h2>Audit Logging is Flexible and Configurable<a class="headerlink" href="#audit-logging-is-flexible-and-configurable" title="Permalink to this headline">¶</a></h2>
+<p>Audit logging is flexible and configurable in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> as follows:</p>
+<ul class="simple">
+<li>Keyspaces and tables to be monitored and audited may be specified.</li>
+<li>Users to be included/excluded may be specified. By default all users are audit logged.</li>
+<li>Categories of operations to audit or exclude may be specified.</li>
+<li>The frequency at which to roll the log files may be specified. Default frequency is hourly.</li>
+</ul>
+</div>
+<div class="section" id="configuring-audit-logging">
+<h2>Configuring Audit Logging<a class="headerlink" href="#configuring-audit-logging" title="Permalink to this headline">¶</a></h2>
+<p>Audit Logging is configured on each node separately. Audit Logging is configured in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> in the <code class="docutils literal notranslate"><span class="pre">audit_logging_options</span></code> setting.
+The settings may be same/different on each node.</p>
+<div class="section" id="enabling-audit-logging">
+<h3>Enabling Audit Logging<a class="headerlink" href="#enabling-audit-logging" title="Permalink to this headline">¶</a></h3>
+<p>Audit logging is enabled by setting the <code class="docutils literal notranslate"><span class="pre">enabled</span></code>  option to <code class="docutils literal notranslate"><span class="pre">true</span></code> in the <code class="docutils literal notranslate"><span class="pre">audit_logging_options</span></code> setting.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">audit_logging_options</span><span class="p">:</span>
+   <span class="n">enabled</span><span class="p">:</span> <span class="n">true</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="setting-the-logger">
+<h3>Setting the Logger<a class="headerlink" href="#setting-the-logger" title="Permalink to this headline">¶</a></h3>
+<p>The audit logger is set with the <code class="docutils literal notranslate"><span class="pre">logger</span></code> option.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">logger</span><span class="p">:</span>
+<span class="o">-</span> <span class="n">class_name</span><span class="p">:</span> <span class="n">BinAuditLogger</span>
+</pre></div>
+</div>
+<p>Two types of audit loggers are supported: <code class="docutils literal notranslate"><span class="pre">FileAuditLogger</span></code> and <code class="docutils literal notranslate"><span class="pre">BinAuditLogger</span></code>.
+<code class="docutils literal notranslate"><span class="pre">BinAuditLogger</span></code> is the default setting.  The <code class="docutils literal notranslate"><span class="pre">BinAuditLogger</span></code> is an efficient way to log events to file in a binary format.</p>
+<p><code class="docutils literal notranslate"><span class="pre">FileAuditLogger</span></code> is synchronous, file-based audit logger; just uses the standard logging mechanism. <code class="docutils literal notranslate"><span class="pre">FileAuditLogger</span></code> logs events to <code class="docutils literal notranslate"><span class="pre">audit/audit.log</span></code> file using <code class="docutils literal notranslate"><span class="pre">slf4j</span></code> logger.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">NoOpAuditLogger</span></code> is a No-Op implementation of the audit logger to be used as a default audit logger when audit logging is disabled.</p>
+<p>It is possible to configure your custom logger implementation by injecting a map of property keys and their respective values. Default <cite>IAuditLogger</cite>
+implementations shipped with Cassandra do not react on these properties but your custom logger might. They would be present as
+a parameter of logger constructor (as <cite>Map&lt;String, String&gt;</cite>). In <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> file, you may configure it like this:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">logger</span><span class="p">:</span>
+<span class="o">-</span> <span class="n">class_name</span><span class="p">:</span> <span class="n">MyCustomAuditLogger</span>
+  <span class="n">parameters</span><span class="p">:</span>
+  <span class="o">-</span> <span class="n">key1</span><span class="p">:</span> <span class="n">value1</span>
+    <span class="n">key2</span><span class="p">:</span> <span class="n">value2</span>
+</pre></div>
+</div>
+<p>When it comes to configuring these parameters, you can use respective <code class="docutils literal notranslate"><span class="pre">enableAuditLog</span></code> method in <code class="docutils literal notranslate"><span class="pre">StorageServiceMBean</span></code>.
+There are two methods of same name with different signatures. The first one does not accept a map where your parameters would be. This method
+is used primarily e.g. from JConsole or similar tooling. JConsole can not accept a map to be sent over JMX so in order to be able to enable it
+from there, even without any parameters, use this method. <code class="docutils literal notranslate"><span class="pre">BinAuditLogger</span></code> does not need any parameters to run with so invoking this method is fine.
+The second one does accept a map with your custom parameters so you can pass them programmatically. <code class="docutils literal notranslate"><span class="pre">enableauditlog</span></code> command of <code class="docutils literal notranslate"><span class="pre">nodetool</span></code> uses
+the first <code class="docutils literal notranslate"><span class="pre">enableAuditLog</span></code> method mentioned. Hence, currently, there is not a way how to pass parameters to your custom audit logger from <code class="docutils literal notranslate"><span class="pre">nodetool</span></code>.</p>
+</div>
+<div class="section" id="setting-the-audit-logs-directory">
+<h3>Setting the Audit Logs Directory<a class="headerlink" href="#setting-the-audit-logs-directory" title="Permalink to this headline">¶</a></h3>
+<p>The audit logs directory is set with the <code class="docutils literal notranslate"><span class="pre">audit_logs_dir</span></code> option. A new directory is not created automatically and an existing directory must be set. Audit Logs directory can be configured using <code class="docutils literal notranslate"><span class="pre">cassandra.logdir.audit</span></code> system property or default is set to <code class="docutils literal notranslate"><span class="pre">cassandra.logdir</span> <span class="pre">+</span> <span class="pre">/audit/</span></code>. A user created directory may be set. As an example, create a directory for the audit logs and set its permissions.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sudo mkdir –p  /cassandra/audit/logs/hourly
+sudo chmod -R 777 /cassandra/audit/logs/hourly
+</pre></div>
+</div>
+<p>Set the directory for the audit logs directory using the <code class="docutils literal notranslate"><span class="pre">audit_logs_dir</span></code> option.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">audit_logs_dir</span><span class="p">:</span> <span class="s2">&quot;/cassandra/audit/logs/hourly&quot;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="setting-keyspaces-to-audit">
+<h3>Setting Keyspaces to Audit<a class="headerlink" href="#setting-keyspaces-to-audit" title="Permalink to this headline">¶</a></h3>
+<p>Set  the keyspaces to include with the <code class="docutils literal notranslate"><span class="pre">included_keyspaces</span></code> option and the keyspaces to exclude with the <code class="docutils literal notranslate"><span class="pre">excluded_keyspaces</span></code> option.  By default all keyspaces are included. By default, <code class="docutils literal notranslate"><span class="pre">system</span></code>, <code class="docutils literal notranslate"><span class="pre">system_schema</span></code> and <code class="docutils literal notranslate"><span class="pre">system_virtual_schema</span></code> are excluded.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># included_keyspaces:</span>
+<span class="c1"># excluded_keyspaces: system, system_schema, system_virtual_schema</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="setting-categories-to-audit">
+<h3>Setting Categories to Audit<a class="headerlink" href="#setting-categories-to-audit" title="Permalink to this headline">¶</a></h3>
+<p>The categories of database operations to be included are specified with the <code class="docutils literal notranslate"><span class="pre">included_categories</span></code>  option as a comma separated list.  By default all supported categories are included. The categories of database operations to be excluded are specified with <code class="docutils literal notranslate"><span class="pre">excluded_categories</span></code>  option as a comma separated list.  By default no category is excluded.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># included_categories:</span>
+<span class="c1"># excluded_categories:</span>
+</pre></div>
+</div>
+<p>The supported categories for audit log are:</p>
+<ol class="arabic simple">
+<li>QUERY</li>
+<li>DML</li>
+<li>DDL</li>
+<li>DCL</li>
+<li>OTHER</li>
+<li>AUTH</li>
+<li>ERROR</li>
+<li>PREPARE</li>
+</ol>
+</div>
+<div class="section" id="setting-users-to-audit">
+<h3>Setting Users to Audit<a class="headerlink" href="#setting-users-to-audit" title="Permalink to this headline">¶</a></h3>
+<p>Users to audit log are set with the <code class="docutils literal notranslate"><span class="pre">included_users</span></code> and  <code class="docutils literal notranslate"><span class="pre">excluded_users</span></code>  options.  The <code class="docutils literal notranslate"><span class="pre">included_users</span></code> option specifies a comma separated list of users to include explicitly and by default all users are included. The <code class="docutils literal notranslate"><span class="pre">excluded_users</span></code> option specifies a comma separated list of  users to exclude explicitly and by default no user is excluded.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># included_users:</span>
+<span class="c1"># excluded_users:</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="setting-the-roll-frequency">
+<h3>Setting the Roll Frequency<a class="headerlink" href="#setting-the-roll-frequency" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">roll_cycle</span></code> option sets the frequency at which the audit log file is rolled. Supported values are <code class="docutils literal notranslate"><span class="pre">MINUTELY</span></code>, <code class="docutils literal notranslate"><span class="pre">HOURLY</span></code>, and <code class="docutils literal notranslate"><span class="pre">DAILY</span></code>. Default value is <code class="docutils literal notranslate"><span class="pre">HOURLY</span></code>, which implies that after every hour a new audit log file is created.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">roll_cycle</span><span class="p">:</span> <span class="n">HOURLY</span>
+</pre></div>
+</div>
+<p>An audit log file could get rolled for other reasons as well such as a log file reaches the configured size threshold.</p>
+</div>
+<div class="section" id="setting-archiving-options">
+<h3>Setting Archiving Options<a class="headerlink" href="#setting-archiving-options" title="Permalink to this headline">¶</a></h3>
+<p>The archiving options are for archiving the rolled audit logs. The <code class="docutils literal notranslate"><span class="pre">archive</span></code> command to use is set with the <code class="docutils literal notranslate"><span class="pre">archive_command</span></code> option and the <code class="docutils literal notranslate"><span class="pre">max_archive_retries</span></code> sets the maximum # of tries of failed archive commands.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># archive_command:</span>
+<span class="c1"># max_archive_retries: 10</span>
+</pre></div>
+</div>
+<p>Default archive command is <code class="docutils literal notranslate"><span class="pre">&quot;/path/to/script.sh</span> <span class="pre">%path&quot;</span></code> where <code class="docutils literal notranslate"><span class="pre">%path</span></code> is replaced with the file being rolled:</p>
+</div>
+<div class="section" id="other-settings">
+<h3>Other Settings<a class="headerlink" href="#other-settings" title="Permalink to this headline">¶</a></h3>
+<p>The other audit logs settings are as follows.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># block: true</span>
+<span class="c1"># max_queue_weight: 268435456 # 256 MiB</span>
+<span class="c1"># max_log_size: 17179869184 # 16 GiB</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">block</span></code> option specifies whether the audit logging should block if the logging falls behind or should drop log records.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">max_queue_weight</span></code> option sets the maximum weight of in memory queue for records waiting to be written to the file before blocking or dropping.</p>
+<p>The  <code class="docutils literal notranslate"><span class="pre">max_log_size</span></code> option sets the maximum size of the rolled files to retain on disk before deleting the oldest.</p>
+</div>
+</div>
+<div class="section" id="using-nodetool-to-enable-audit-logging">
+<h2>Using Nodetool to Enable Audit Logging<a class="headerlink" href="#using-nodetool-to-enable-audit-logging" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">nodetool</span>&#160; <span class="pre">enableauditlog</span></code>  command may be used to enable audit logs and it overrides the settings in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>.  The <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">enableauditlog</span></code> command syntax is as follows.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+        <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+        <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+        <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enableauditlog</span>
+        <span class="p">[</span><span class="o">--</span><span class="n">excluded</span><span class="o">-</span><span class="n">categories</span> <span class="o">&lt;</span><span class="n">excluded_categories</span><span class="o">&gt;</span><span class="p">]</span>
+        <span class="p">[</span><span class="o">--</span><span class="n">excluded</span><span class="o">-</span><span class="n">keyspaces</span> <span class="o">&lt;</span><span class="n">excluded_keyspaces</span><span class="o">&gt;</span><span class="p">]</span>
+        <span class="p">[</span><span class="o">--</span><span class="n">excluded</span><span class="o">-</span><span class="n">users</span> <span class="o">&lt;</span><span class="n">excluded_users</span><span class="o">&gt;</span><span class="p">]</span>
+        <span class="p">[</span><span class="o">--</span><span class="n">included</span><span class="o">-</span><span class="n">categories</span> <span class="o">&lt;</span><span class="n">included_categories</span><span class="o">&gt;</span><span class="p">]</span>
+        <span class="p">[</span><span class="o">--</span><span class="n">included</span><span class="o">-</span><span class="n">keyspaces</span> <span class="o">&lt;</span><span class="n">included_keyspaces</span><span class="o">&gt;</span><span class="p">]</span>
+        <span class="p">[</span><span class="o">--</span><span class="n">included</span><span class="o">-</span><span class="n">users</span> <span class="o">&lt;</span><span class="n">included_users</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">logger</span> <span class="o">&lt;</span><span class="n">logger</span><span class="o">&gt;</span><span class="p">]</span>
+</pre></div>
+</div>
+<dl class="docutils">
+<dt>OPTIONS</dt>
+<dd><table class="first docutils option-list" frame="void" rules="none">
+<col class="option" />
+<col class="description" />
+<tbody valign="top">
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--excluded-categories <var>&lt;excluded_categories&gt;</var></span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Comma separated list of Audit Log Categories to be excluded for
+audit log. If not set the value from cassandra.yaml will be used</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--excluded-keyspaces <var>&lt;excluded_keyspaces&gt;</var></span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Comma separated list of keyspaces to be excluded for audit log. If
+not set the value from cassandra.yaml will be used</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--excluded-users <var>&lt;excluded_users&gt;</var></span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Comma separated list of users to be excluded for audit log. If not
+set the value from cassandra.yaml will be used</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">-h <var>&lt;host&gt;</var></span>, <span class="option">--host <var>&lt;host&gt;</var></span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Node hostname or ip address</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--included-categories <var>&lt;included_categories&gt;</var></span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Comma separated list of Audit Log Categories to be included for
+audit log. If not set the value from cassandra.yaml will be used</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--included-keyspaces <var>&lt;included_keyspaces&gt;</var></span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Comma separated list of keyspaces to be included for audit log. If
+not set the value from cassandra.yaml will be used</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--included-users <var>&lt;included_users&gt;</var></span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Comma separated list of users to be included for audit log. If not
+set the value from cassandra.yaml will be used</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">--logger <var>&lt;logger&gt;</var></span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Logger name to be used for AuditLogging. Default BinAuditLogger. If
+not set the value from cassandra.yaml will be used</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">-p <var>&lt;port&gt;</var></span>, <span class="option">--port <var>&lt;port&gt;</var></span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Remote jmx agent port number</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">-p<var>p</var></span>, <span class="option">--print-port</span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Operate in 4.0 mode with hosts disambiguated by port number</td></tr>
+</tbody>
+</table>
+<dl class="docutils">
+<dt>-pw &lt;password&gt;, –password &lt;password&gt;</dt>
+<dd>Remote jmx agent password</dd>
+<dt>-pwf &lt;passwordFilePath&gt;, –password-file &lt;passwordFilePath&gt;</dt>
+<dd>Path to the JMX password file</dd>
+</dl>
+<table class="last docutils option-list" frame="void" rules="none">
+<col class="option" />
+<col class="description" />
+<tbody valign="top">
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">-u <var>&lt;username&gt;</var></span>, <span class="option">--username <var>&lt;username&gt;</var></span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Remote jmx agent username</td></tr>
+</tbody>
+</table>
+</dd>
+</dl>
+<p>The <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">disableauditlog</span></code> command disables audit log. The command syntax is as follows.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+        <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+        <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+        <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disableauditlog</span>
+</pre></div>
+</div>
+<dl class="docutils">
+<dt>OPTIONS</dt>
+<dd><table class="first docutils option-list" frame="void" rules="none">
+<col class="option" />
+<col class="description" />
+<tbody valign="top">
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">-h <var>&lt;host&gt;</var></span>, <span class="option">--host <var>&lt;host&gt;</var></span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Node hostname or ip address</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">-p <var>&lt;port&gt;</var></span>, <span class="option">--port <var>&lt;port&gt;</var></span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Remote jmx agent port number</td></tr>
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">-p<var>p</var></span>, <span class="option">--print-port</span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Operate in 4.0 mode with hosts disambiguated by port number</td></tr>
+</tbody>
+</table>
+<dl class="docutils">
+<dt>-pw &lt;password&gt;, –password &lt;password&gt;</dt>
+<dd>Remote jmx agent password</dd>
+<dt>-pwf &lt;passwordFilePath&gt;, –password-file &lt;passwordFilePath&gt;</dt>
+<dd>Path to the JMX password file</dd>
+</dl>
+<table class="last docutils option-list" frame="void" rules="none">
+<col class="option" />
+<col class="description" />
+<tbody valign="top">
+<tr><td class="option-group" colspan="2">
+<kbd><span class="option">-u <var>&lt;username&gt;</var></span>, <span class="option">--username <var>&lt;username&gt;</var></span></kbd></td>
+</tr>
+<tr><td>&#160;</td><td>Remote jmx agent username</td></tr>
+</tbody>
+</table>
+</dd>
+</dl>
+</div>
+<div class="section" id="viewing-the-audit-logs">
+<h2>Viewing the Audit Logs<a class="headerlink" href="#viewing-the-audit-logs" title="Permalink to this headline">¶</a></h2>
+<p>An audit log event comprises of a keyspace that is being audited, the operation that is being logged, the scope and the user. An audit log entry comprises of the following attributes concatenated with a “|”.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nb">type</span> <span class="p">(</span><span class="n">AuditLogEntryType</span><span class="p">):</span> <span class="n">Type</span> <span class="n">of</span> <span class="n">request</span>
+<span class="n">source</span> <span class="p">(</span><span class="n">InetAddressAndPort</span><span class="p">):</span> <span class="n">Source</span> <span class="n">IP</span> <span class="n">Address</span> <span class="kn">from</span> <span class="nn">which</span> <span class="n">request</span> <span class="n">originated</span>
+<span class="n">user</span> <span class="p">(</span><span class="n">String</span><span class="p">):</span> <span class="n">User</span> <span class="n">name</span>
+<span class="n">timestamp</span> <span class="p">(</span><span class="n">long</span> <span class="p">):</span> <span class="n">Timestamp</span> <span class="n">of</span> <span class="n">the</span> <span class="n">request</span>
+<span class="n">batch</span> <span class="p">(</span><span class="n">UUID</span><span class="p">):</span> <span class="n">Batch</span> <span class="n">of</span> <span class="n">request</span>
+<span class="n">keyspace</span> <span class="p">(</span><span class="n">String</span><span class="p">):</span> <span class="n">Keyspace</span> <span class="n">on</span> <span class="n">which</span> <span class="n">request</span> <span class="ow">is</span> <span class="n">made</span>
+<span class="n">scope</span> <span class="p">(</span><span class="n">String</span><span class="p">):</span> <span class="n">Scope</span> <span class="n">of</span> <span class="n">request</span> <span class="n">such</span> <span class="k">as</span> <span class="n">Table</span><span class="o">/</span><span class="n">Function</span><span class="o">/</span><span class="n">Aggregate</span> <span class="n">name</span>
+<span class="n">operation</span> <span class="p">(</span><span class="n">String</span><span class="p">):</span> <span class="n">Database</span> <span class="n">operation</span> <span class="n">such</span> <span class="k">as</span> <span class="n">CQL</span> <span class="n">command</span>
+<span class="n">options</span> <span class="p">(</span><span class="n">QueryOptions</span><span class="p">):</span> <span class="n">CQL</span> <span class="n">Query</span> <span class="n">options</span>
+<span class="n">state</span> <span class="p">(</span><span class="n">QueryState</span><span class="p">):</span> <span class="n">State</span> <span class="n">related</span> <span class="n">to</span> <span class="n">a</span> <span class="n">given</span> <span class="n">query</span>
+</pre></div>
+</div>
+<p>Some of these attributes may not be applicable to a given request and not all of these options must be set.</p>
+</div>
+<div class="section" id="an-audit-logging-demo">
+<h2>An Audit Logging Demo<a class="headerlink" href="#an-audit-logging-demo" title="Permalink to this headline">¶</a></h2>
+<p>To demonstrate audit logging enable and configure audit logs with following settings.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">audit_logging_options</span><span class="p">:</span>
+   <span class="n">enabled</span><span class="p">:</span> <span class="n">true</span>
+   <span class="n">logger</span><span class="p">:</span>
+   <span class="o">-</span> <span class="n">class_name</span><span class="p">:</span> <span class="n">BinAuditLogger</span>
+   <span class="n">audit_logs_dir</span><span class="p">:</span> <span class="s2">&quot;/cassandra/audit/logs/hourly&quot;</span>
+   <span class="c1"># included_keyspaces:</span>
+   <span class="c1"># excluded_keyspaces: system, system_schema, system_virtual_schema</span>
+   <span class="c1"># included_categories:</span>
+   <span class="c1"># excluded_categories:</span>
+   <span class="c1"># included_users:</span>
+   <span class="c1"># excluded_users:</span>
+   <span class="n">roll_cycle</span><span class="p">:</span> <span class="n">HOURLY</span>
+   <span class="c1"># block: true</span>
+   <span class="c1"># max_queue_weight: 268435456 # 256 MiB</span>
+   <span class="c1"># max_log_size: 17179869184 # 16 GiB</span>
+   <span class="c1">## archive command is &quot;/path/to/script.sh %path&quot; where %path is replaced with the file being rolled:</span>
+   <span class="c1"># archive_command:</span>
+   <span class="c1"># max_archive_retries: 10</span>
+</pre></div>
+</div>
+<p>Create the audit log directory <code class="docutils literal notranslate"><span class="pre">/cassandra/audit/logs/hourly</span></code> and set its permissions as discussed earlier. Run some CQL commands such as create a keyspace, create a table and query a table. Any supported CQL commands may be run as discussed in section <strong>What does Audit Logging Log?</strong>.  Change directory (with <code class="docutils literal notranslate"><span class="pre">cd</span></code> command) to the audit logs directory.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">audit</span><span class="o">/</span><span class="n">logs</span><span class="o">/</span><span class="n">hourly</span>
+</pre></div>
+</div>
+<p>List the files/directories and some <code class="docutils literal notranslate"><span class="pre">.cq4</span></code> files should get listed. These are the audit logs files.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 hourly]$ ls -l
+total 28
+-rw-rw-r--. 1 ec2-user ec2-user 83886080 Aug  2 03:01 20190802-02.cq4
+-rw-rw-r--. 1 ec2-user ec2-user 83886080 Aug  2 03:01 20190802-03.cq4
+-rw-rw-r--. 1 ec2-user ec2-user    65536 Aug  2 03:01 metadata.cq4t
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">auditlogviewer</span></code> tool is used to dump audit logs. Run the <code class="docutils literal notranslate"><span class="pre">auditlogviewer</span></code> tool. Audit log files directory path is a required argument. The output should be similar to the following output.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 hourly]$ auditlogviewer /cassandra/audit/logs/hourly
+WARN  03:12:11,124 Using Pauser.sleepy() as not enough processors, have 2, needs 8+
+Type: AuditLog
+LogMessage:
+user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564711427328|type :USE_KEYSPACE|category:OTHER|ks:auditlogkeyspace|operation:USE AuditLogKeyspace;
+Type: AuditLog
+LogMessage:
+user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564711427329|type :USE_KEYSPACE|category:OTHER|ks:auditlogkeyspace|operation:USE &quot;auditlogkeyspace&quot;
+Type: AuditLog
+LogMessage:
+user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564711446279|type :SELECT|category:QUERY|ks:auditlogkeyspace|scope:t|operation:SELECT * FROM t;
+Type: AuditLog
+LogMessage:
+user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564713878834|type :DROP_TABLE|category:DDL|ks:auditlogkeyspace|scope:t|operation:DROP TABLE IF EXISTS
+AuditLogKeyspace.t;
+Type: AuditLog
+LogMessage:
+user:anonymous|host:10.0.2.238:7000|source:/3.91.56.164|port:42382|timestamp:1564714618360|ty
+pe:REQUEST_FAILURE|category:ERROR|operation:CREATE KEYSPACE AuditLogKeyspace
+WITH replication = {&#39;class&#39;: &#39;SimpleStrategy&#39;, &#39;replication_factor&#39; : 1};; Cannot add
+existing keyspace &quot;auditlogkeyspace&quot;
+Type: AuditLog
+LogMessage:
+user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564714690968|type :DROP_KEYSPACE|category:DDL|ks:auditlogkeyspace|operation:DROP KEYSPACE AuditLogKeyspace;
+Type: AuditLog
+LogMessage:
+user:anonymous|host:10.0.2.238:7000|source:/3.91.56.164|port:42406|timestamp:1564714708329|ty pe:CREATE_KEYSPACE|category:DDL|ks:auditlogkeyspace|operation:CREATE KEYSPACE
+AuditLogKeyspace
+WITH replication = {&#39;class&#39;: &#39;SimpleStrategy&#39;, &#39;replication_factor&#39; : 1};
+Type: AuditLog
+LogMessage:
+user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564714870678|type :USE_KEYSPACE|category:OTHER|ks:auditlogkeyspace|operation:USE auditlogkeyspace;
+[ec2-user@ip-10-0-2-238 hourly]$
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">auditlogviewer</span></code> tool usage syntax is as follows.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">auditlogviewer</span>
+<span class="n">Audit</span> <span class="n">log</span> <span class="n">files</span> <span class="n">directory</span> <span class="n">path</span> <span class="ow">is</span> <span class="n">a</span> <span class="n">required</span> <span class="n">argument</span><span class="o">.</span>
+<span class="n">usage</span><span class="p">:</span> <span class="n">auditlogviewer</span> <span class="o">&lt;</span><span class="n">path1</span><span class="o">&gt;</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">path2</span><span class="o">&gt;...&lt;</span><span class="n">pathN</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="n">options</span><span class="p">]</span>
+<span class="o">--</span>
+<span class="n">View</span> <span class="n">the</span> <span class="n">audit</span> <span class="n">log</span> <span class="n">contents</span> <span class="ow">in</span> <span class="n">human</span> <span class="n">readable</span> <span class="nb">format</span>
+<span class="o">--</span>
+<span class="n">Options</span> <span class="n">are</span><span class="p">:</span>
+<span class="o">-</span><span class="n">f</span><span class="p">,</span><span class="o">--</span><span class="n">follow</span>       <span class="n">Upon</span> <span class="n">reaching</span> <span class="n">the</span> <span class="n">end</span> <span class="n">of</span> <span class="n">the</span> <span class="n">log</span> <span class="k">continue</span> <span class="n">indefinitely</span>
+                  <span class="n">waiting</span> <span class="k">for</span> <span class="n">more</span> <span class="n">records</span>
+<span class="o">-</span><span class="n">h</span><span class="p">,</span><span class="o">--</span><span class="n">help</span>         <span class="n">display</span> <span class="n">this</span> <span class="n">help</span> <span class="n">message</span>
+<span class="o">-</span><span class="n">r</span><span class="p">,</span><span class="o">--</span><span class="n">roll_cycle</span>   <span class="n">How</span> <span class="n">often</span> <span class="n">to</span> <span class="n">roll</span> <span class="n">the</span> <span class="n">log</span> <span class="n">file</span> <span class="n">was</span> <span class="n">rolled</span><span class="o">.</span> <span class="n">May</span> <span class="n">be</span>
+                  <span class="n">necessary</span> <span class="k">for</span> <span class="n">Chronicle</span> <span class="n">to</span> <span class="n">correctly</span> <span class="n">parse</span> <span class="n">file</span> <span class="n">names</span><span class="o">.</span> <span class="p">(</span><span class="n">MINUTELY</span><span class="p">,</span> <span class="n">HOURLY</span><span class="p">,</span>
+                  <span class="n">DAILY</span><span class="p">)</span><span class="o">.</span> <span class="n">Default</span> <span class="n">HOURLY</span><span class="o">.</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="diagnostic-events-for-user-audit-logging">
+<h2>Diagnostic events for user audit logging<a class="headerlink" href="#diagnostic-events-for-user-audit-logging" title="Permalink to this headline">¶</a></h2>
+<p>Any native transport enabled client is able to subscribe to diagnostic events that are raised around authentication and CQL operations. These events can then be consumed and used by external tools to implement a Cassandra user auditing solution.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="fqllogging.html" class="btn btn-default pull-right " role="button" title="Full Query Logging (FQL)" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="virtualtables.html" class="btn btn-default" role="button" title="Virtual Tables" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/new/fqllogging.html b/src/doc/4.0-rc1/new/fqllogging.html
new file mode 100644
index 0000000..49e299a
--- /dev/null
+++ b/src/doc/4.0-rc1/new/fqllogging.html
@@ -0,0 +1,683 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "New Features in Apache Cassandra 4.0"
+
+doc-title: "Full Query Logging (FQL)"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="New Features in Apache Cassandra 4.0" href="index.html"/>
+      <link rel="next" title="Improved Internode Messaging" href="messaging.html"/>
+      <link rel="prev" title="Audit Logging" href="auditlogging.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">New Features in Apache Cassandra 4.0</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="java11.html">Support for Java 11</a></li>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html">Virtual Tables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html">Audit Logging</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Full Query Logging (FQL)</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#query-information-logged">Query information logged</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#logging-information-logged">Logging information logged</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#logging-sequence">Logging sequence</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#using-fql">Using FQL</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#configuring-fql-in-cassandra-yaml">Configuring FQL in cassandra.yaml</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#querying-the-state-of-fql">Querying the state of FQL</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#enabling-fql">Enabling FQL</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#disabling-or-resetting-fql">Disabling or resetting FQL</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#fqltool">fqltool</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#example">Example</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html">Improved Internode Messaging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html">Improved Streaming</a></li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html">Transient Replication</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="full-query-logging-fql">
+<h1>Full Query Logging (FQL)<a class="headerlink" href="#full-query-logging-fql" title="Permalink to this headline">¶</a></h1>
+<p>Apache Cassandra 4.0 adds a new highly performant feature that supports live query logging (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-13983">CASSANDRA-13983</a>).
+FQL is safe for production use, with configurable limits to heap memory and disk space to prevent out-of-memory errors.
+This feature is useful for live traffic capture, as well as traffic replay. The tool provided can be used for both debugging query traffic and migration.
+New <code class="docutils literal notranslate"><span class="pre">nodetool</span></code> options are also added to enable, disable or reset FQL, as well as a new tool to read and replay the binary logs.
+The full query logging (FQL) capability uses <a class="reference external" href="http://github.com/OpenHFT/Chronicle-Queue">Chronicle-Queue</a> to rotate a log of queries.
+Full query logs will be referred to as <em>logs</em> for the remainder of the page.</p>
+<p>Some of the features of FQL are:</p>
+<ul class="simple">
+<li>The impact on query latency is reduced by asynchronous single-thread log entry writes to disk.</li>
+<li>Heap memory usage is bounded by a weighted queue, with configurable maximum weight sitting in front of logging thread.</li>
+<li>If the weighted queue is full, producers can be blocked or samples can be dropped.</li>
+<li>Disk utilization is bounded by a configurable size, deleting old log segments once the limit is reached.</li>
+<li>A flexible schema binary format, <a class="reference external" href="http://github.com/OpenHFT/Chronicle-Wire">Chronicle-Wire</a>, for on-disk serialization that can skip unrecognized fields, add new ones, and omit old ones.</li>
+<li>Can be enabled, disabled, or reset (to delete on-disk data) using the JMX tool, <code class="docutils literal notranslate"><span class="pre">nodetool</span></code>.</li>
+<li>Can configure the settings in either the <cite>cassandra.yaml</cite> file or by using <code class="docutils literal notranslate"><span class="pre">nodetool</span></code>.</li>
+<li>Introduces new <code class="docutils literal notranslate"><span class="pre">fqltool</span></code> that currently can <code class="docutils literal notranslate"><span class="pre">Dump</span></code> the binary logs to a readable format. Other options are <code class="docutils literal notranslate"><span class="pre">Replay</span></code> and <code class="docutils literal notranslate"><span class="pre">Compare</span></code>.</li>
+</ul>
+<p>FQL logs all successful Cassandra Query Language (CQL) requests, both events that modify the data and those that query.
+While audit logs also include CQL requests, FQL logs only the CQL request. This difference means that FQL can be used to replay or compare logs, which audit logging cannot. FQL is useful for debugging, performance benchmarking, testing and auditing CQL queries, while audit logs are useful for compliance.</p>
+<p>In performance testing, FQL appears to have little or no overhead in <code class="docutils literal notranslate"><span class="pre">WRITE</span></code> only workloads, and a minor overhead in <code class="docutils literal notranslate"><span class="pre">MIXED</span></code> workload.</p>
+<div class="section" id="query-information-logged">
+<h2>Query information logged<a class="headerlink" href="#query-information-logged" title="Permalink to this headline">¶</a></h2>
+<p>The query log contains:</p>
+<ul class="simple">
+<li>all queries invoked</li>
+<li>approximate time they were invoked</li>
+<li>any parameters necessary to bind wildcard values</li>
+<li>all query options</li>
+</ul>
+<p>The logger writes single or batched CQL queries after they finish, so only successfully completed queries are logged. Failed or timed-out queries are not logged. Different data is logged, depending on the type of query.</p>
+<p>A single CQL query log entry contains:</p>
+<ul class="simple">
+<li>query - CQL query text</li>
+<li>queryOptions - Options associated with the query invocation</li>
+<li>queryState - Timestamp state associated with the query invocation</li>
+<li>queryTimeMillis - Approximate time in milliseconds since the epoch since the query was invoked</li>
+</ul>
+<p>A batch CQL query log entry contains:</p>
+<ul class="simple">
+<li>queries - CQL text of the queries</li>
+<li>queryOptions - Options associated with the query invocation</li>
+<li>queryState - Timestamp state associated with the query invocation</li>
+<li>batchTimeMillis - Approximate time in milliseconds since the epoch since the batch was invoked</li>
+<li>type - The type of the batch</li>
+<li>values - Values to bind to as parameters for the queries</li>
+</ul>
+<p>Because FQL is backed by <cite>Binlog</cite>, the performance and footprint are predictable, with minimal impact on log record producers.
+Performance safety prevents the producers from overloading the log, using a weighted queue to drop records if the logging falls behind.
+Single-thread asynchronous writing produces the logs. Chronicle-Queue provides an easy method of  rolling the logs.</p>
+</div>
+<div class="section" id="logging-information-logged">
+<h2>Logging information logged<a class="headerlink" href="#logging-information-logged" title="Permalink to this headline">¶</a></h2>
+<p>FQL also tracks information about the stored log files:</p>
+<ul class="simple">
+<li>Stored log files that are added and their storage impact. Deletes them if over storage limit.</li>
+<li>The log files in Chronicle-Queue that have already rolled</li>
+<li>The number of bytes in the log files that have already rolled</li>
+</ul>
+</div>
+<div class="section" id="logging-sequence">
+<h2>Logging sequence<a class="headerlink" href="#logging-sequence" title="Permalink to this headline">¶</a></h2>
+<p>The logger follows a well-defined sequence of events:</p>
+<ol class="arabic simple">
+<li>The consumer thread that writes log records is started. This action can occur only once.</li>
+<li>The consumer thread offers a record to the log. If the in-memory queue is full, the record will be dropped and offer returns a <cite>false</cite> value.</li>
+<li>If accepted, the record is entered into the log. If the in-memory queue is full, the putting thread will be blocked until there is space or it is interrupted.</li>
+<li>The buffers are cleaned up at thread exit. Finalization will check again, to ensure there are no stragglers in the queue.</li>
+<li>The consumer thread is stopped. It can be called multiple times.</li>
+</ol>
+</div>
+<div class="section" id="using-fql">
+<h2>Using FQL<a class="headerlink" href="#using-fql" title="Permalink to this headline">¶</a></h2>
+<p>To use FQL, two actions must be completed. FQL must be configured using either the <cite>cassandra.yaml</cite> file or <code class="docutils literal notranslate"><span class="pre">nodetool</span></code>, and logging must be enabled using <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">enablefullquerylog</span></code>.
+Both actions are completed on a per-node basis.
+With either method, at a minimum, the path to the log directory must be specified.
+Full query logs are generated on each enabled node, so logs on each node will have that node’s queries.</p>
+</div>
+<div class="section" id="configuring-fql-in-cassandra-yaml">
+<h2>Configuring FQL in cassandra.yaml<a class="headerlink" href="#configuring-fql-in-cassandra-yaml" title="Permalink to this headline">¶</a></h2>
+<p>The <cite>cassandra.yaml</cite> file can be used to configure FQL before enabling the feature with <code class="docutils literal notranslate"><span class="pre">nodetool</span></code>.</p>
+<p>The file includes the following options that can be uncommented for use:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># default options for full query logging - these can be overridden from command line</span>
+<span class="c1"># when executing nodetool enablefullquerylog</span>
+<span class="c1">#full_query_logging_options:</span>
+   <span class="c1"># log_dir:</span>
+   <span class="c1"># roll_cycle: HOURLY</span>
+   <span class="c1"># block: true</span>
+   <span class="c1"># max_queue_weight: 268435456 # 256 MiB</span>
+   <span class="c1"># max_log_size: 17179869184 # 16 GiB</span>
+   <span class="c1">## archive command is &quot;/path/to/script.sh %path&quot; where %path is replaced with the file being rolled:</span>
+   <span class="c1"># archive_command:</span>
+   <span class="c1"># max_archive_retries: 10</span>
+</pre></div>
+</div>
+<div class="section" id="log-dir">
+<h3>log_dir<a class="headerlink" href="#log-dir" title="Permalink to this headline">¶</a></h3>
+<p>To write logs, an existing directory must be set in <code class="docutils literal notranslate"><span class="pre">log_dir</span></code>.</p>
+<p>The directory must have appropriate permissions set to allow reading, writing, and executing.
+Logging will recursively delete the directory contents as needed.
+Do not place links in this directory to other sections of the filesystem.
+For example, <code class="docutils literal notranslate"><span class="pre">log_dir:</span> <span class="pre">/tmp/cassandrafullquerylog</span></code>.</p>
+</div>
+<div class="section" id="roll-cycle">
+<h3>roll_cycle<a class="headerlink" href="#roll-cycle" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">roll_cycle</span></code> defines the frequency with which the log segments are rolled.
+Supported values are <code class="docutils literal notranslate"><span class="pre">HOURLY</span></code> (default), <code class="docutils literal notranslate"><span class="pre">MINUTELY</span></code>, and <code class="docutils literal notranslate"><span class="pre">DAILY</span></code>.
+For example: <code class="docutils literal notranslate"><span class="pre">roll_cycle:</span> <span class="pre">DAILY</span></code></p>
+</div>
+<div class="section" id="block">
+<h3>block<a class="headerlink" href="#block" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">block</span></code> option specifies whether FQL should block writing or drop log records if FQL falls behind. Supported boolean values are <code class="docutils literal notranslate"><span class="pre">true</span></code> (default) or <code class="docutils literal notranslate"><span class="pre">false</span></code>.
+For example: <code class="docutils literal notranslate"><span class="pre">block:</span> <span class="pre">false</span></code> to drop records</p>
+</div>
+<div class="section" id="max-queue-weight">
+<h3>max_queue_weight<a class="headerlink" href="#max-queue-weight" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">max_queue_weight</span></code> option sets the maximum weight of in-memory queue for records waiting to be written to the file before blocking or dropping.  The option must be set to a positive value. The default value is 268435456, or 256 MiB.
+For example, to change the default: <code class="docutils literal notranslate"><span class="pre">max_queue_weight:</span> <span class="pre">134217728</span> <span class="pre">#</span> <span class="pre">128</span> <span class="pre">MiB</span></code></p>
+</div>
+<div class="section" id="max-log-size">
+<h3>max_log_size<a class="headerlink" href="#max-log-size" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">max_log_size</span></code> option sets the maximum size of the rolled files to retain on disk before deleting the oldest file.  The option must be set to a positive value. The default is 17179869184, or 16 GiB.
+For example, to change the default: <code class="docutils literal notranslate"><span class="pre">max_log_size:</span> <span class="pre">34359738368</span> <span class="pre">#</span> <span class="pre">32</span> <span class="pre">GiB</span></code></p>
+</div>
+<div class="section" id="archive-command">
+<h3>archive_command<a class="headerlink" href="#archive-command" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">archive_command</span></code> option sets the user-defined archive script to execute on rolled log files.
+When not defined, files are deleted, with a default of <code class="docutils literal notranslate"><span class="pre">&quot;&quot;</span></code> which then maps to <cite>org.apache.cassandra.utils.binlog.DeletingArchiver</cite>.
+For example: <code class="docutils literal notranslate"><span class="pre">archive_command:</span> <span class="pre">/usr/local/bin/archiveit.sh</span> <span class="pre">%path</span> <span class="pre">#</span> <span class="pre">%path</span> <span class="pre">is</span> <span class="pre">the</span> <span class="pre">file</span> <span class="pre">being</span> <span class="pre">rolled</span></code></p>
+</div>
+<div class="section" id="max-archive-retries">
+<h3>max_archive_retries<a class="headerlink" href="#max-archive-retries" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">max_archive_retries</span></code> option sets the max number of retries of failed archive commands. The default is 10.
+For example: <code class="docutils literal notranslate"><span class="pre">max_archive_retries:</span> <span class="pre">10</span></code></p>
+<p>FQL can also be configured using <code class="docutils literal notranslate"><span class="pre">nodetool</span></code> when enabling the feature, and will override any values set in the <cite>cassandra.yaml</cite> file, as discussed in the next section.</p>
+</div>
+</div>
+<div class="section" id="querying-the-state-of-fql">
+<h2>Querying the state of FQL<a class="headerlink" href="#querying-the-state-of-fql" title="Permalink to this headline">¶</a></h2>
+<p>In order to know what state FQL is in, you may use nodetool command <code class="docutils literal notranslate"><span class="pre">getfullquerylog</span></code>. It will print out whether FQL is enabled
+and with what configuration options; if you reset or stop FQL, the configuration displayed will be taken from
+configuration in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ nodetool getfullquerylog
+enabled             true
+log_dir             /path/to/fql/log/dir
+archive_command     /usr/local/bin/archiveit.sh %path
+roll_cycle          HOURLY
+block               true
+max_log_size        17179869184
+max_queue_weight    268435456
+max_archive_retries 10
+</pre></div>
+</div>
+</div>
+<div class="section" id="enabling-fql">
+<h2>Enabling FQL<a class="headerlink" href="#enabling-fql" title="Permalink to this headline">¶</a></h2>
+<p>FQL is enabled on a per-node basis using the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">enablefullquerylog</span></code> command. At a minimum, the path to the logging directory must be defined, if <code class="docutils literal notranslate"><span class="pre">log_dir</span></code> is not set in the <cite>cassandra.yaml</cite> file.</p>
+<p>The syntax of the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">enablefullquerylog</span></code> command has all the same options that can be set in the <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> file.
+In addition, <code class="docutils literal notranslate"><span class="pre">nodetool</span></code> has options to set which host and port to run the command on, and username and password if the command requires authentication.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+<span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+<span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+<span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enablefullquerylog</span>
+<span class="p">[</span><span class="o">--</span><span class="n">archive</span><span class="o">-</span><span class="n">command</span> <span class="o">&lt;</span><span class="n">archive_command</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">blocking</span><span class="p">]</span>
+<span class="p">[</span><span class="o">--</span><span class="nb">max</span><span class="o">-</span><span class="n">archive</span><span class="o">-</span><span class="n">retries</span> <span class="o">&lt;</span><span class="n">archive_retries</span><span class="o">&gt;</span><span class="p">]</span>
+<span class="p">[</span><span class="o">--</span><span class="nb">max</span><span class="o">-</span><span class="n">log</span><span class="o">-</span><span class="n">size</span> <span class="o">&lt;</span><span class="n">max_log_size</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="nb">max</span><span class="o">-</span><span class="n">queue</span><span class="o">-</span><span class="n">weight</span> <span class="o">&lt;</span><span class="n">max_queue_weight</span><span class="o">&gt;</span><span class="p">]</span>
+<span class="p">[</span><span class="o">--</span><span class="n">path</span> <span class="o">&lt;</span><span class="n">path</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">roll</span><span class="o">-</span><span class="n">cycle</span> <span class="o">&lt;</span><span class="n">roll_cycle</span><span class="o">&gt;</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+  <span class="o">--</span><span class="n">archive</span><span class="o">-</span><span class="n">command</span> <span class="o">&lt;</span><span class="n">archive_command</span><span class="o">&gt;</span>
+ <span class="n">Command</span> <span class="n">that</span> <span class="n">will</span> <span class="n">handle</span> <span class="n">archiving</span> <span class="n">rolled</span> <span class="n">full</span> <span class="n">query</span> <span class="n">log</span> <span class="n">files</span><span class="o">.</span>
+ <span class="n">Format</span> <span class="ow">is</span> <span class="s2">&quot;/path/to/script.sh %path&quot;</span> <span class="n">where</span> <span class="o">%</span><span class="n">path</span> <span class="n">will</span> <span class="n">be</span> <span class="n">replaced</span>
+ <span class="k">with</span> <span class="n">the</span> <span class="n">file</span> <span class="n">to</span> <span class="n">archive</span>
+
+  <span class="o">--</span><span class="n">blocking</span>
+ <span class="n">If</span> <span class="n">the</span> <span class="n">queue</span> <span class="ow">is</span> <span class="n">full</span> <span class="n">whether</span> <span class="n">to</span> <span class="n">block</span> <span class="n">producers</span> <span class="ow">or</span> <span class="n">drop</span> <span class="n">samples</span><span class="o">.</span>
+
+  <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+ <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+  <span class="o">--</span><span class="nb">max</span><span class="o">-</span><span class="n">archive</span><span class="o">-</span><span class="n">retries</span> <span class="o">&lt;</span><span class="n">archive_retries</span><span class="o">&gt;</span>
+ <span class="n">Max</span> <span class="n">number</span> <span class="n">of</span> <span class="n">archive</span> <span class="n">retries</span><span class="o">.</span>
+
+  <span class="o">--</span><span class="nb">max</span><span class="o">-</span><span class="n">log</span><span class="o">-</span><span class="n">size</span> <span class="o">&lt;</span><span class="n">max_log_size</span><span class="o">&gt;</span>
+ <span class="n">How</span> <span class="n">many</span> <span class="nb">bytes</span> <span class="n">of</span> <span class="n">log</span> <span class="n">data</span> <span class="n">to</span> <span class="n">store</span> <span class="n">before</span> <span class="n">dropping</span> <span class="n">segments</span><span class="o">.</span> <span class="n">Might</span>
+ <span class="ow">not</span> <span class="n">be</span> <span class="n">respected</span> <span class="k">if</span> <span class="n">a</span> <span class="n">log</span> <span class="n">file</span> <span class="n">hasn</span><span class="s1">&#39;t rolled so it can be deleted.</span>
+
+  <span class="o">--</span><span class="nb">max</span><span class="o">-</span><span class="n">queue</span><span class="o">-</span><span class="n">weight</span> <span class="o">&lt;</span><span class="n">max_queue_weight</span><span class="o">&gt;</span>
+ <span class="n">Maximum</span> <span class="n">number</span> <span class="n">of</span> <span class="nb">bytes</span> <span class="n">of</span> <span class="n">query</span> <span class="n">data</span> <span class="n">to</span> <span class="n">queue</span> <span class="n">to</span> <span class="n">disk</span> <span class="n">before</span>
+ <span class="n">blocking</span> <span class="ow">or</span> <span class="n">dropping</span> <span class="n">samples</span><span class="o">.</span>
+
+  <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+ <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+  <span class="o">--</span><span class="n">path</span> <span class="o">&lt;</span><span class="n">path</span><span class="o">&gt;</span>
+ <span class="n">Path</span> <span class="n">to</span> <span class="n">store</span> <span class="n">the</span> <span class="n">full</span> <span class="n">query</span> <span class="n">log</span> <span class="n">at</span><span class="o">.</span> <span class="n">Will</span> <span class="n">have</span> <span class="n">it</span><span class="s1">&#39;s contents</span>
+ <span class="n">recursively</span> <span class="n">deleted</span><span class="o">.</span>
+
+  <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+ <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+  <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+ <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+  <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+ <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+  <span class="o">--</span><span class="n">roll</span><span class="o">-</span><span class="n">cycle</span> <span class="o">&lt;</span><span class="n">roll_cycle</span><span class="o">&gt;</span>
+ <span class="n">How</span> <span class="n">often</span> <span class="n">to</span> <span class="n">roll</span> <span class="n">the</span> <span class="n">log</span> <span class="n">file</span> <span class="p">(</span><span class="n">MINUTELY</span><span class="p">,</span> <span class="n">HOURLY</span><span class="p">,</span> <span class="n">DAILY</span><span class="p">)</span><span class="o">.</span>
+
+  <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+ <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+</pre></div>
+</div>
+<p>To enable FQL, run the following command on each node in the cluster on which you want to enable logging:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">nodetool</span> <span class="n">enablefullquerylog</span> <span class="o">--</span><span class="n">path</span> <span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">cassandrafullquerylog</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="disabling-or-resetting-fql">
+<h2>Disabling or resetting FQL<a class="headerlink" href="#disabling-or-resetting-fql" title="Permalink to this headline">¶</a></h2>
+<p>Use the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">disablefullquerylog</span></code> to disable logging.
+Use <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">resetfullquerylog</span></code> to stop FQL and clear the log files in the configured directory.
+<strong>IMPORTANT:</strong> Using <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">resetfullquerylog</span></code> will delete the log files! Do not use this command unless you need to delete all log files.</p>
+</div>
+<div class="section" id="fqltool">
+<h2>fqltool<a class="headerlink" href="#fqltool" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">fqltool</span></code> command is used to view (dump), replay, or compare logs.
+<code class="docutils literal notranslate"><span class="pre">fqltool</span> <span class="pre">dump</span></code> converts the binary log files into human-readable format; only the log directory must be supplied as a command-line option.</p>
+<p><code class="docutils literal notranslate"><span class="pre">fqltool</span> <span class="pre">replay</span></code> (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14618">CASSANDRA-14618</a>) enables replay of logs.
+The command can run from a different machine or cluster for testing, debugging, or performance benchmarking.
+The command can also be used to recreate a dropped database object (keyspace, table), usually in a different cluster.
+The <code class="docutils literal notranslate"><span class="pre">fqltool</span> <span class="pre">replay</span></code> command does not replay DDL statements automatically; explicitly enable it with the <code class="docutils literal notranslate"><span class="pre">--replay-ddl-statements</span></code> flag.
+Use <code class="docutils literal notranslate"><span class="pre">fqltool</span> <span class="pre">replay</span></code> to record and compare different runs of production traffic against different versions/configurations of Cassandra or different clusters.
+Another use is to gather logs from several machines and replay them in “order” by the timestamps recorded.</p>
+<p>The syntax of <code class="docutils literal notranslate"><span class="pre">fqltool</span> <span class="pre">replay</span></code> is:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">fqltool</span> <span class="n">replay</span> <span class="p">[</span><span class="o">--</span><span class="n">keyspace</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">replay</span><span class="o">-</span><span class="n">ddl</span><span class="o">-</span><span class="n">statements</span><span class="p">]</span>
+ <span class="p">[</span><span class="o">--</span><span class="n">results</span> <span class="o">&lt;</span><span class="n">results</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">store</span><span class="o">-</span><span class="n">queries</span> <span class="o">&lt;</span><span class="n">store_queries</span><span class="o">&gt;</span><span class="p">]</span>
+ <span class="o">--</span><span class="n">target</span> <span class="o">&lt;</span><span class="n">target</span><span class="o">&gt;...</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">path1</span><span class="o">&gt;</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">path2</span><span class="o">&gt;...&lt;</span><span class="n">pathN</span><span class="o">&gt;</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+  <span class="o">--</span><span class="n">keyspace</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+ <span class="n">Only</span> <span class="n">replay</span> <span class="n">queries</span> <span class="n">against</span> <span class="n">this</span> <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">queries</span> <span class="n">without</span>
+ <span class="n">keyspace</span> <span class="nb">set</span><span class="o">.</span>
+
+  <span class="o">--</span><span class="n">replay</span><span class="o">-</span><span class="n">ddl</span><span class="o">-</span><span class="n">statements</span>
+  <span class="n">If</span> <span class="n">specified</span><span class="p">,</span> <span class="n">replays</span> <span class="n">DDL</span> <span class="n">statements</span> <span class="k">as</span> <span class="n">well</span><span class="p">,</span> <span class="n">they</span> <span class="n">are</span> <span class="n">excluded</span> <span class="kn">from</span>
+  <span class="nn">replaying</span> <span class="n">by</span> <span class="n">default</span><span class="o">.</span>
+
+  <span class="o">--</span><span class="n">results</span> <span class="o">&lt;</span><span class="n">results</span><span class="o">&gt;</span>
+ <span class="n">Where</span> <span class="n">to</span> <span class="n">store</span> <span class="n">the</span> <span class="n">results</span> <span class="n">of</span> <span class="n">the</span> <span class="n">queries</span><span class="p">,</span> <span class="n">this</span> <span class="n">should</span> <span class="n">be</span> <span class="n">a</span>
+ <span class="n">directory</span><span class="o">.</span> <span class="n">Leave</span> <span class="n">this</span> <span class="n">option</span> <span class="n">out</span> <span class="n">to</span> <span class="n">avoid</span> <span class="n">storing</span> <span class="n">results</span><span class="o">.</span>
+
+  <span class="o">--</span><span class="n">store</span><span class="o">-</span><span class="n">queries</span> <span class="o">&lt;</span><span class="n">store_queries</span><span class="o">&gt;</span>
+ <span class="n">Path</span> <span class="n">to</span> <span class="n">store</span> <span class="n">the</span> <span class="n">queries</span> <span class="n">executed</span><span class="o">.</span> <span class="n">Stores</span> <span class="n">queries</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">same</span> <span class="n">order</span>
+ <span class="k">as</span> <span class="n">the</span> <span class="n">result</span> <span class="n">sets</span> <span class="n">are</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">result</span> <span class="n">files</span><span class="o">.</span> <span class="n">Requires</span> <span class="o">--</span><span class="n">results</span>
+
+  <span class="o">--</span><span class="n">target</span> <span class="o">&lt;</span><span class="n">target</span><span class="o">&gt;</span>
+ <span class="n">Hosts</span> <span class="n">to</span> <span class="n">replay</span> <span class="n">the</span> <span class="n">logs</span> <span class="n">to</span><span class="p">,</span> <span class="n">can</span> <span class="n">be</span> <span class="n">repeated</span> <span class="n">to</span> <span class="n">replay</span> <span class="n">to</span> <span class="n">more</span>
+ <span class="n">hosts</span><span class="o">.</span>
+
+  <span class="o">--</span>
+ <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+ <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+ <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+  <span class="o">&lt;</span><span class="n">path1</span><span class="o">&gt;</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">path2</span><span class="o">&gt;...&lt;</span><span class="n">pathN</span><span class="o">&gt;</span><span class="p">]</span>
+ <span class="n">Paths</span> <span class="n">containing</span> <span class="n">the</span> <span class="n">FQ</span> <span class="n">logs</span> <span class="n">to</span> <span class="n">replay</span><span class="o">.</span>
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span class="pre">fqltool</span> <span class="pre">compare</span></code> (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14619">CASSANDRA-14619</a>) compares result files generated by <code class="docutils literal notranslate"><span class="pre">fqltool</span> <span class="pre">replay</span></code>.
+The command uses recorded runs from <code class="docutils literal notranslate"><span class="pre">fqltool</span> <span class="pre">replay</span></code> and compareslog, outputting any differences (potentially all queries).
+It also stores each row as a separate chronicle document to avoid reading the entire result from in-memory when comparing.</p>
+<p>The syntax of <code class="docutils literal notranslate"><span class="pre">fqltool</span> <span class="pre">compare</span></code> is:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ fqltool help compare
+</pre></div>
+</div>
+<blockquote>
+<div><dl class="docutils">
+<dt>NAME</dt>
+<dd>fqltool compare - Compare result files generated by fqltool replay</dd>
+<dt>SYNOPSIS</dt>
+<dd>fqltool compare –queries &lt;queries&gt; [–] &lt;path1&gt; [&lt;path2&gt;…&lt;pathN&gt;]</dd>
+<dt>OPTIONS</dt>
+<dd><blockquote class="first">
+<div>–queries &lt;queries&gt;</div></blockquote>
+<p>Directory to read the queries from. It is produced by the fqltool
+replay –store-queries option.</p>
+<blockquote>
+<div>–</div></blockquote>
+<p>This option can be used to separate command-line options from the
+list of argument, (useful when arguments might be mistaken for
+command-line options</p>
+<blockquote>
+<div>&lt;path1&gt; [&lt;path2&gt;…&lt;pathN&gt;]</div></blockquote>
+<p class="last">Directories containing result files to compare.</p>
+</dd>
+</dl>
+</div></blockquote>
+<p>The comparison sets the following marks:</p>
+<ul class="simple">
+<li>Mark the beginning of a query set:</li>
+</ul>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-------------------</span>
+<span class="n">version</span><span class="p">:</span> <span class="n">int16</span>
+<span class="nb">type</span><span class="p">:</span> <span class="n">column_definitions</span>
+<span class="n">column_count</span><span class="p">:</span> <span class="n">int32</span><span class="p">;</span>
+<span class="n">column_definition</span><span class="p">:</span> <span class="n">text</span><span class="p">,</span> <span class="n">text</span>
+<span class="n">column_definition</span><span class="p">:</span> <span class="n">text</span><span class="p">,</span> <span class="n">text</span>
+<span class="o">....</span>
+<span class="o">--------------------</span>
+</pre></div>
+</div>
+<ul class="simple">
+<li>Mark a failed query set:</li>
+</ul>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">---------------------</span>
+<span class="n">version</span><span class="p">:</span> <span class="n">int16</span>
+<span class="nb">type</span><span class="p">:</span> <span class="n">query_failed</span>
+<span class="n">message</span><span class="p">:</span> <span class="n">text</span>
+<span class="o">---------------------</span>
+</pre></div>
+</div>
+<ul class="simple">
+<li>Mark a row set:</li>
+</ul>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">--------------------</span>
+<span class="n">version</span><span class="p">:</span> <span class="n">int16</span>
+<span class="nb">type</span><span class="p">:</span> <span class="n">row</span>
+<span class="n">row_column_count</span><span class="p">:</span> <span class="n">int32</span>
+<span class="n">column</span><span class="p">:</span> <span class="nb">bytes</span>
+<span class="o">---------------------</span>
+</pre></div>
+</div>
+<ul class="simple">
+<li>Mark the end of a result set:</li>
+</ul>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-------------------</span>
+<span class="n">version</span><span class="p">:</span> <span class="n">int16</span>
+<span class="nb">type</span><span class="p">:</span> <span class="n">end_resultset</span>
+<span class="o">-------------------</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="example">
+<h2>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2>
+<ol class="arabic simple">
+<li>To demonstrate FQL, first configure and enable FQL on a node in your cluster:</li>
+</ol>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">nodetool</span> <span class="n">enablefullquerylog</span> <span class="o">--</span><span class="n">path</span> <span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">cassandrafullquerylog</span>
+</pre></div>
+</div>
+<ol class="arabic simple" start="2">
+<li>Now create a demo keyspace and table and insert some data using <code class="docutils literal notranslate"><span class="pre">cqlsh</span></code>:</li>
+</ol>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="o">&gt;</span> <span class="n">CREATE</span> <span class="n">KEYSPACE</span> <span class="n">querylogkeyspace</span>
+  <span class="o">...</span> <span class="n">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;SimpleStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;replication_factor&#39;</span> <span class="p">:</span> <span class="mi">1</span><span class="p">};</span>
+<span class="n">cqlsh</span><span class="o">&gt;</span> <span class="n">USE</span> <span class="n">querylogkeyspace</span><span class="p">;</span>
+<span class="n">cqlsh</span><span class="p">:</span><span class="n">querylogkeyspace</span><span class="o">&gt;</span> <span class="n">CREATE</span> <span class="n">TABLE</span> <span class="n">t</span> <span class="p">(</span>
+<span class="o">...</span><span class="n">id</span> <span class="nb">int</span><span class="p">,</span>
+<span class="o">...</span><span class="n">k</span> <span class="nb">int</span><span class="p">,</span>
+<span class="o">...</span><span class="n">v</span> <span class="n">text</span><span class="p">,</span>
+<span class="o">...</span><span class="n">PRIMARY</span> <span class="n">KEY</span> <span class="p">(</span><span class="nb">id</span><span class="p">)</span>
+<span class="o">...</span> <span class="p">);</span>
+<span class="n">cqlsh</span><span class="p">:</span><span class="n">querylogkeyspace</span><span class="o">&gt;</span> <span class="n">INSERT</span> <span class="n">INTO</span> <span class="n">t</span> <span class="p">(</span><span class="nb">id</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> <span class="n">VALUES</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">&#39;val0&#39;</span><span class="p">);</span>
+<span class="n">cqlsh</span><span class="p">:</span><span class="n">querylogkeyspace</span><span class="o">&gt;</span> <span class="n">INSERT</span> <span class="n">INTO</span> <span class="n">t</span> <span class="p">(</span><span class="nb">id</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> <span class="n">VALUES</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;val1&#39;</span><span class="p">);</span>
+</pre></div>
+</div>
+<ol class="arabic simple" start="3">
+<li>Then check that the data is inserted:</li>
+</ol>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="p">:</span><span class="n">querylogkeyspace</span><span class="o">&gt;</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">t</span><span class="p">;</span>
+
+<span class="nb">id</span> <span class="o">|</span> <span class="n">k</span> <span class="o">|</span> <span class="n">v</span>
+<span class="o">----+---+------</span>
+ <span class="mi">0</span> <span class="o">|</span> <span class="mi">1</span> <span class="o">|</span> <span class="n">val1</span>
+
+<span class="p">(</span><span class="mi">1</span> <span class="n">rows</span><span class="p">)</span>
+</pre></div>
+</div>
+<ol class="arabic simple" start="4">
+<li>Use the <code class="docutils literal notranslate"><span class="pre">fqltool</span> <span class="pre">dump</span></code> command to view the logs.</li>
+</ol>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ fqltool dump /tmp/cassandrafullquerylog
+</pre></div>
+</div>
+<p>This command will return a readable version of the log. Here is a partial sample of the log for the commands in this demo:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">WARN</span>  <span class="p">[</span><span class="n">main</span><span class="p">]</span> <span class="mi">2019</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">02</span> <span class="mi">03</span><span class="p">:</span><span class="mi">07</span><span class="p">:</span><span class="mi">53</span><span class="p">,</span><span class="mi">635</span> <span class="n">Slf4jExceptionHandler</span><span class="o">.</span><span class="n">java</span><span class="p">:</span><span class="mi">42</span> <span class="o">-</span> <span class="n">Using</span> <span class="n">Pauser</span><span class="o">.</span><span class="n">sleepy</span><span class="p">()</span> <span class="k">as</span> <span class="ow">not</span> <span class="n">enough</span> <span class="n">processors</span><span class="p">,</span> <span class="n">have</span> <span class="mi">2</span><span class="p">,</span> <span class="n">needs</span> <span class="mi">8</span><span class="o">+</span>
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708322030</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="mi">1564708322</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system</span><span class="o">.</span><span class="n">peers</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708322054</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="mi">1564708322</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system</span><span class="o">.</span><span class="n">local</span> <span class="n">WHERE</span> <span class="n">key</span><span class="o">=</span><span class="s1">&#39;local&#39;</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708322109</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="mi">1564708322</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system_schema</span><span class="o">.</span><span class="n">keyspaces</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708322116</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="mi">1564708322</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system_schema</span><span class="o">.</span><span class="n">tables</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708322139</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="mi">1564708322</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system_schema</span><span class="o">.</span><span class="n">columns</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708322142</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="mi">1564708322</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system_schema</span><span class="o">.</span><span class="n">functions</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708322141</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="mi">1564708322</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system_schema</span><span class="o">.</span><span class="n">aggregates</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708322143</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="mi">1564708322</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system_schema</span><span class="o">.</span><span class="n">types</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708322144</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="mi">1564708322</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system_schema</span><span class="o">.</span><span class="n">indexes</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708322145</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="mi">1564708322</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system_schema</span><span class="o">.</span><span class="n">views</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708345408</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="o">-</span><span class="mi">2147483648</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">CREATE</span> <span class="n">KEYSPACE</span> <span class="n">querylogkeyspace</span>
+<span class="n">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;SimpleStrategy&#39;</span><span class="p">,</span> <span class="s1">&#39;replication_factor&#39;</span> <span class="p">:</span> <span class="mi">1</span><span class="p">};</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708360873</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="o">-</span><span class="mi">2147483648</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">USE</span> <span class="n">querylogkeyspace</span><span class="p">;</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708360874</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="o">-</span><span class="mi">2147483648</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">USE</span> <span class="s2">&quot;querylogkeyspace&quot;</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708378837</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="o">-</span><span class="mi">2147483648</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">CREATE</span> <span class="n">TABLE</span> <span class="n">t</span> <span class="p">(</span>
+    <span class="nb">id</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">k</span> <span class="nb">int</span><span class="p">,</span>
+    <span class="n">v</span> <span class="n">text</span><span class="p">,</span>
+    <span class="n">PRIMARY</span> <span class="n">KEY</span> <span class="p">(</span><span class="nb">id</span><span class="p">)</span>
+<span class="p">);</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708379247</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="mi">1564708379</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system_schema</span><span class="o">.</span><span class="n">tables</span> <span class="n">WHERE</span> <span class="n">keyspace_name</span> <span class="o">=</span> <span class="s1">&#39;querylogkeyspace&#39;</span> <span class="n">AND</span> <span class="n">table_name</span> <span class="o">=</span> <span class="s1">&#39;t&#39;</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708397144</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="mi">1564708397</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">INSERT</span> <span class="n">INTO</span> <span class="n">t</span> <span class="p">(</span><span class="nb">id</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> <span class="n">VALUES</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">&#39;val0&#39;</span><span class="p">);</span>
+<span class="n">Values</span><span class="p">:</span>
+
+<span class="n">Type</span><span class="p">:</span> <span class="n">single</span><span class="o">-</span><span class="n">query</span>
+<span class="n">Query</span> <span class="n">start</span> <span class="n">time</span><span class="p">:</span> <span class="mi">1564708434782</span>
+<span class="n">Protocol</span> <span class="n">version</span><span class="p">:</span> <span class="mi">4</span>
+<span class="n">Generated</span> <span class="n">timestamp</span><span class="p">:</span><span class="o">-</span><span class="mi">9223372036854775808</span>
+<span class="n">Generated</span> <span class="n">nowInSeconds</span><span class="p">:</span><span class="mi">1564708434</span>
+<span class="n">Query</span><span class="p">:</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">t</span><span class="p">;</span>
+<span class="n">Values</span><span class="p">:</span>
+</pre></div>
+</div>
+<p>5. This example will demonstrate <code class="docutils literal notranslate"><span class="pre">fqltool</span> <span class="pre">replay</span></code> in a single cluster. However, the most common method of using <code class="docutils literal notranslate"><span class="pre">replay</span></code> is between clusters.
+To demonstrate in the same cluster, first drop the keyspace.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="p">:</span><span class="n">querylogkeyspace</span><span class="o">&gt;</span> <span class="n">DROP</span> <span class="n">KEYSPACE</span> <span class="n">querylogkeyspace</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>6. Now run <code class="docutils literal notranslate"><span class="pre">fqltool</span> <span class="pre">replay</span></code> specifying the directories in which to store the results of the queries and
+the list of queries run, respectively, in <cite>–results</cite> and <cite>–store-queries</cite>, and specifiying that the DDL statements to create the keyspace and tables will be executed:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ fqltool replay \
+--keyspace querylogkeyspace --replay-ddl-statements --results /cassandra/fql/logs/results/replay \
+--store-queries /cassandra/fql/logs/queries/replay \
+--target 3.91.56.164 \
+/tmp/cassandrafullquerylog
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">--results</span></code> and <code class="docutils literal notranslate"><span class="pre">--store-queries</span></code> directories are optional, but if <code class="docutils literal notranslate"><span class="pre">--store-queries</span></code> is set, then <code class="docutils literal notranslate"><span class="pre">--results</span></code> must also be set.
+The <code class="docutils literal notranslate"><span class="pre">--target</span></code> specifies the node on which to replay to logs.
+If <code class="docutils literal notranslate"><span class="pre">--replay-ddl-statements</span></code> is not specified, the keyspace and any tables must be created prior to the <code class="docutils literal notranslate"><span class="pre">replay</span></code>.</p>
+<ol class="arabic simple" start="7">
+<li>Check that the keyspace was replayed and exists again using the <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span> <span class="pre">KEYSPACES</span></code> command:</li>
+</ol>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="p">:</span><span class="n">querylogkeyspace</span><span class="o">&gt;</span> <span class="n">DESC</span> <span class="n">KEYSPACES</span><span class="p">;</span>
+
+<span class="n">system_schema</span>  <span class="n">system</span>  <span class="n">system_distributed</span>  <span class="n">system_virtual_schema</span>
+<span class="n">system_auth</span>    <span class="n">querylogkeyspace</span>  <span class="n">system_traces</span>  <span class="n">system_views</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="messaging.html" class="btn btn-default pull-right " role="button" title="Improved Internode Messaging" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="auditlogging.html" class="btn btn-default" role="button" title="Audit Logging" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/new/index.html b/src/doc/4.0-rc1/new/index.html
new file mode 100644
index 0000000..54e5be2
--- /dev/null
+++ b/src/doc/4.0-rc1/new/index.html
@@ -0,0 +1,191 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "New Features in Apache Cassandra 4.0"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="next" title="Support for Java 11" href="java11.html"/>
+      <link rel="prev" title="Production Recommendations" href="../getting_started/production.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">New Features in Apache Cassandra 4.0</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="java11.html">Support for Java 11</a></li>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html">Virtual Tables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html">Audit Logging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html">Full Query Logging (FQL)</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html">Improved Internode Messaging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html">Improved Streaming</a></li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html">Transient Replication</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="new-features-in-apache-cassandra-4-0">
+<h1>New Features in Apache Cassandra 4.0<a class="headerlink" href="#new-features-in-apache-cassandra-4-0" title="Permalink to this headline">¶</a></h1>
+<p>This section covers the new features in Apache Cassandra 4.0.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="java11.html">Support for Java 11</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="java11.html#support-matrix">Support Matrix</a></li>
+<li class="toctree-l2"><a class="reference internal" href="java11.html#using-java-8-to-build">Using Java 8 to Build</a></li>
+<li class="toctree-l2"><a class="reference internal" href="java11.html#using-java-11-to-build">Using Java 11 to Build</a></li>
+<li class="toctree-l2"><a class="reference internal" href="java11.html#common-issues">Common Issues</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="virtualtables.html">Virtual Tables</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html#definition">Definition</a></li>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html#objective">Objective</a></li>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html#how-are-virtual-tables-different-from-regular-tables">How  are Virtual Tables different from regular tables?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html#virtual-keyspaces">Virtual Keyspaces</a></li>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html#virtual-table-limitations">Virtual Table Limitations</a></li>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html#listing-and-describing-virtual-tables">Listing and Describing Virtual Tables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html#the-system-virtual-schema-keyspace">The system_virtual_schema keyspace</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="auditlogging.html">Audit Logging</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html#what-does-audit-logging-log">What does Audit Logging Log?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html#what-audit-logging-does-not-log">What Audit Logging does not Log?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html#audit-logging-is-flexible-and-configurable">Audit Logging is Flexible and Configurable</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html#configuring-audit-logging">Configuring Audit Logging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html#using-nodetool-to-enable-audit-logging">Using Nodetool to Enable Audit Logging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html#viewing-the-audit-logs">Viewing the Audit Logs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html#an-audit-logging-demo">An Audit Logging Demo</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html#diagnostic-events-for-user-audit-logging">Diagnostic events for user audit logging</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="fqllogging.html">Full Query Logging (FQL)</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html#query-information-logged">Query information logged</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html#logging-information-logged">Logging information logged</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html#logging-sequence">Logging sequence</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html#using-fql">Using FQL</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html#configuring-fql-in-cassandra-yaml">Configuring FQL in cassandra.yaml</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html#querying-the-state-of-fql">Querying the state of FQL</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html#enabling-fql">Enabling FQL</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html#disabling-or-resetting-fql">Disabling or resetting FQL</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html#fqltool">fqltool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html#example">Example</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="messaging.html">Improved Internode Messaging</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html#optimized-internode-messaging-protocol">Optimized Internode Messaging Protocol</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html#nio-messaging">NIO Messaging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html#resource-limits-on-queued-messages">Resource limits on Queued Messages</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html#virtual-tables-for-messaging-metrics">Virtual Tables for Messaging Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html#hint-messaging">Hint Messaging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html#internode-application-timeout">Internode Application Timeout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html#paxos-prepare-and-propose-stage-for-local-requests-optimized">Paxos prepare and propose stage for local requests optimized</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html#quality-assurance">Quality Assurance</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html#added-a-message-size-limit">Added a Message size limit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html#recover-from-unknown-table-when-deserializing-internode-messages">Recover from unknown table when deserializing internode messages</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="streaming.html">Improved Streaming</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html#streaming-based-on-netty">Streaming based on Netty</a></li>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html#zero-copy-streaming">Zero Copy Streaming</a></li>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html#repair-streaming-preview">Repair Streaming Preview</a></li>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html#parallelizing-of-streaming-of-keyspaces">Parallelizing of Streaming of Keyspaces</a></li>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html#unique-nodes-for-streaming-in-multi-dc-deployment">Unique nodes for Streaming in Multi-DC deployment</a></li>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html#stream-operation-types">Stream Operation Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html#disallow-decommission-when-number-of-replicas-will-drop-below-configured-rf">Disallow Decommission when number of Replicas will drop below configured RF</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="transientreplication.html">Transient Replication</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html#objective">Objective</a></li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html#enabling-transient-replication">Enabling Transient Replication</a></li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html#cheap-quorums">Cheap Quorums</a></li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html#speculative-write-option">Speculative Write Option</a></li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html#pending-ranges-and-transient-replicas">Pending Ranges and Transient Replicas</a></li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html#read-repair-and-transient-replicas">Read Repair and Transient Replicas</a></li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html#transitioning-between-full-replicas-and-transient-replicas">Transitioning between Full Replicas and Transient Replicas</a></li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html#transient-replication-supports-each-quorum">Transient Replication supports EACH_QUORUM</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="java11.html" class="btn btn-default pull-right " role="button" title="Support for Java 11" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../getting_started/production.html" class="btn btn-default" role="button" title="Production Recommendations" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/new/java11.html b/src/doc/4.0-rc1/new/java11.html
new file mode 100644
index 0000000..8026cc2
--- /dev/null
+++ b/src/doc/4.0-rc1/new/java11.html
@@ -0,0 +1,354 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "New Features in Apache Cassandra 4.0"
+
+doc-title: "Support for Java 11"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="New Features in Apache Cassandra 4.0" href="index.html"/>
+      <link rel="next" title="Virtual Tables" href="virtualtables.html"/>
+      <link rel="prev" title="New Features in Apache Cassandra 4.0" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">New Features in Apache Cassandra 4.0</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Support for Java 11</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#support-matrix">Support Matrix</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#using-java-8-to-build">Using Java 8 to Build</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#using-java-11-to-build">Using Java 11 to Build</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#common-issues">Common Issues</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html">Virtual Tables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html">Audit Logging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html">Full Query Logging (FQL)</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html">Improved Internode Messaging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html">Improved Streaming</a></li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html">Transient Replication</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="support-for-java-11">
+<h1>Support for Java 11<a class="headerlink" href="#support-for-java-11" title="Permalink to this headline">¶</a></h1>
+<p>In the new Java release cadence a new Java version is made available every six months. The more frequent release cycle
+is favored as it brings new Java features to the developers as and when they are developed without the wait that the
+earlier 3 year release model incurred.  Not every Java version is a Long Term Support (LTS) version. After Java 8 the
+next LTS version is Java 11. Java 9, 10, 12 and 13 are all non-LTS versions.</p>
+<p>One of the objectives of the Apache Cassandra 4.0 version is to support the recent LTS Java versions 8 and 11 (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-9608">CASSANDRA-9608</a>). Java 8 and
+Java 11 may be used to build and run Apache Cassandra 4.0.</p>
+<p><strong>Note</strong>: Support for JDK 11 in Apache Cassandra 4.0 is an experimental feature, and not recommended for production use.</p>
+<div class="section" id="support-matrix">
+<h2>Support Matrix<a class="headerlink" href="#support-matrix" title="Permalink to this headline">¶</a></h2>
+<p>The support matrix for the Java versions for compiling and running Apache Cassandra 4.0 is detailed in Table 1. The
+build version is along the vertical axis and the run version is along the horizontal axis.</p>
+<p>Table 1 : Support Matrix for Java</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="33%" />
+<col width="30%" />
+<col width="37%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>&#160;</td>
+<td>Java 8 (Run)</td>
+<td>Java 11 (Run)</td>
+</tr>
+<tr class="row-even"><td>Java 8 (Build)</td>
+<td>Supported</td>
+<td>Supported</td>
+</tr>
+<tr class="row-odd"><td>Java 11(Build)</td>
+<td>Not Supported</td>
+<td>Supported</td>
+</tr>
+</tbody>
+</table>
+<p>Essentially Apache 4.0 source code built with Java 11 cannot be run with Java 8. Next, we shall discuss using each of Java 8 and 11 to build and run Apache Cassandra 4.0.</p>
+</div>
+<div class="section" id="using-java-8-to-build">
+<h2>Using Java 8 to Build<a class="headerlink" href="#using-java-8-to-build" title="Permalink to this headline">¶</a></h2>
+<p>To start with, install Java 8. As an example, for installing Java 8 on RedHat Linux the command is as follows:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo yum install java-1.8.0-openjdk-devel
+</pre></div>
+</div>
+<p>Set <code class="docutils literal notranslate"><span class="pre">JAVA_HOME</span></code> and <code class="docutils literal notranslate"><span class="pre">JRE_HOME</span></code> environment variables in the shell bash script. First, open the bash script:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo vi ~/.bashrc
+</pre></div>
+</div>
+<p>Set the environment variables including the <code class="docutils literal notranslate"><span class="pre">PATH</span></code>.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
+$ export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk/jre
+$ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
+</pre></div>
+</div>
+<p>Download and install Apache Cassandra 4.0 source code from the Git along with the dependencies.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ git clone https://github.com/apache/cassandra.git
+</pre></div>
+</div>
+<p>If Cassandra is already running stop Cassandra with the following command.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-172-30-3-146 bin]$ ./nodetool stopdaemon
+</pre></div>
+</div>
+<p>Build the source code from the <code class="docutils literal notranslate"><span class="pre">cassandra</span></code> directory, which has the <code class="docutils literal notranslate"><span class="pre">build.xml</span></code> build script. The Apache Ant uses the Java version set in the <code class="docutils literal notranslate"><span class="pre">JAVA_HOME</span></code> environment variable.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cd ~/cassandra
+$ ant
+</pre></div>
+</div>
+<p>Apache Cassandra 4.0 gets built with Java 8.  Set the environment variable for <code class="docutils literal notranslate"><span class="pre">CASSANDRA_HOME</span></code> in the bash script. Also add the <code class="docutils literal notranslate"><span class="pre">CASSANDRA_HOME/bin</span></code> to the <code class="docutils literal notranslate"><span class="pre">PATH</span></code> variable.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ export CASSANDRA_HOME=~/cassandra
+$ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CASSANDRA_HOME/bin
+</pre></div>
+</div>
+<p>To run Apache Cassandra 4.0 with either of Java 8 or Java 11 run the Cassandra application in the <code class="docutils literal notranslate"><span class="pre">CASSANDRA_HOME/bin</span></code> directory, which is in the <code class="docutils literal notranslate"><span class="pre">PATH</span></code> env variable.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cassandra
+</pre></div>
+</div>
+<p>The Java version used to run Cassandra gets output as Cassandra is getting started. As an example if Java 11 is used, the run output should include similar to the following output snippet:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">INFO</span>  <span class="p">[</span><span class="n">main</span><span class="p">]</span> <span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span> <span class="mi">21</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">16</span><span class="p">,</span><span class="mi">862</span> <span class="n">CassandraDaemon</span><span class="o">.</span><span class="n">java</span><span class="p">:</span><span class="mi">480</span> <span class="o">-</span> <span class="n">Hostname</span><span class="p">:</span> <span class="n">ip</span><span class="o">-</span><span class="mi">172</span><span class="o">-</span><span class="mi">30</span><span class="o">-</span><span class="mi">3</span><span class="o">-</span>
+<span class="mf">146.</span><span class="n">ec2</span><span class="o">.</span><span class="n">internal</span><span class="p">:</span><span class="mi">7000</span><span class="p">:</span><span class="mi">7001</span>
+<span class="n">INFO</span>  <span class="p">[</span><span class="n">main</span><span class="p">]</span> <span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span> <span class="mi">21</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">16</span><span class="p">,</span><span class="mi">862</span> <span class="n">CassandraDaemon</span><span class="o">.</span><span class="n">java</span><span class="p">:</span><span class="mi">487</span> <span class="o">-</span> <span class="n">JVM</span> <span class="n">vendor</span><span class="o">/</span><span class="n">version</span><span class="p">:</span> <span class="n">OpenJDK</span>
+<span class="mi">64</span><span class="o">-</span><span class="n">Bit</span> <span class="n">Server</span> <span class="n">VM</span><span class="o">/</span><span class="mf">11.0</span><span class="o">.</span><span class="mi">3</span>
+<span class="n">INFO</span>  <span class="p">[</span><span class="n">main</span><span class="p">]</span> <span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span> <span class="mi">21</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">16</span><span class="p">,</span><span class="mi">863</span> <span class="n">CassandraDaemon</span><span class="o">.</span><span class="n">java</span><span class="p">:</span><span class="mi">488</span> <span class="o">-</span> <span class="n">Heap</span> <span class="n">size</span><span class="p">:</span>
+<span class="mf">1004.000</span><span class="n">MiB</span><span class="o">/</span><span class="mf">1004.000</span><span class="n">MiB</span>
+</pre></div>
+</div>
+<p>The following output indicates a single node Cassandra 4.0 cluster has started.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">INFO</span>  <span class="p">[</span><span class="n">main</span><span class="p">]</span> <span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span> <span class="mi">21</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">19</span><span class="p">,</span><span class="mi">687</span> <span class="n">InboundConnectionInitiator</span><span class="o">.</span><span class="n">java</span><span class="p">:</span><span class="mi">130</span> <span class="o">-</span> <span class="n">Listening</span> <span class="n">on</span>
+<span class="n">address</span><span class="p">:</span> <span class="p">(</span><span class="mf">127.0</span><span class="o">.</span><span class="mf">0.1</span><span class="p">:</span><span class="mi">7000</span><span class="p">),</span> <span class="n">nic</span><span class="p">:</span> <span class="n">lo</span><span class="p">,</span> <span class="n">encryption</span><span class="p">:</span> <span class="n">enabled</span> <span class="p">(</span><span class="n">openssl</span><span class="p">)</span>
+<span class="o">...</span>
+<span class="o">...</span>
+<span class="n">INFO</span>  <span class="p">[</span><span class="n">main</span><span class="p">]</span> <span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span> <span class="mi">21</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">19</span><span class="p">,</span><span class="mi">850</span> <span class="n">StorageService</span><span class="o">.</span><span class="n">java</span><span class="p">:</span><span class="mi">512</span> <span class="o">-</span> <span class="n">Unable</span> <span class="n">to</span> <span class="n">gossip</span> <span class="k">with</span> <span class="nb">any</span>
+<span class="n">peers</span> <span class="n">but</span> <span class="n">continuing</span> <span class="n">anyway</span> <span class="n">since</span> <span class="n">node</span> <span class="ow">is</span> <span class="ow">in</span> <span class="n">its</span> <span class="n">own</span> <span class="n">seed</span> <span class="nb">list</span>
+<span class="n">INFO</span>  <span class="p">[</span><span class="n">main</span><span class="p">]</span> <span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span> <span class="mi">21</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">19</span><span class="p">,</span><span class="mi">864</span> <span class="n">StorageService</span><span class="o">.</span><span class="n">java</span><span class="p">:</span><span class="mi">695</span> <span class="o">-</span> <span class="n">Loading</span> <span class="n">persisted</span> <span class="n">ring</span> <span class="n">state</span>
+<span class="n">INFO</span>  <span class="p">[</span><span class="n">main</span><span class="p">]</span> <span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span> <span class="mi">21</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">19</span><span class="p">,</span><span class="mi">865</span> <span class="n">StorageService</span><span class="o">.</span><span class="n">java</span><span class="p">:</span><span class="mi">814</span> <span class="o">-</span> <span class="n">Starting</span> <span class="n">up</span> <span class="n">server</span> <span class="n">gossip</span>
+<span class="n">INFO</span>  <span class="p">[</span><span class="n">main</span><span class="p">]</span> <span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span> <span class="mi">21</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">20</span><span class="p">,</span><span class="mi">088</span> <span class="n">BufferPool</span><span class="o">.</span><span class="n">java</span><span class="p">:</span><span class="mi">216</span> <span class="o">-</span> <span class="n">Global</span> <span class="n">buffer</span> <span class="n">pool</span> <span class="ow">is</span> <span class="n">enabled</span><span class="p">,</span>
+<span class="n">when</span> <span class="n">pool</span> <span class="ow">is</span> <span class="n">exhausted</span> <span class="p">(</span><span class="nb">max</span> <span class="ow">is</span> <span class="mf">251.000</span><span class="n">MiB</span><span class="p">)</span> <span class="n">it</span> <span class="n">will</span> <span class="n">allocate</span> <span class="n">on</span> <span class="n">heap</span>
+<span class="n">INFO</span>  <span class="p">[</span><span class="n">main</span><span class="p">]</span> <span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span> <span class="mi">21</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">20</span><span class="p">,</span><span class="mi">110</span> <span class="n">StorageService</span><span class="o">.</span><span class="n">java</span><span class="p">:</span><span class="mi">875</span> <span class="o">-</span> <span class="n">This</span> <span class="n">node</span> <span class="n">will</span> <span class="ow">not</span> <span class="n">auto</span>
+<span class="n">bootstrap</span> <span class="n">because</span> <span class="n">it</span> <span class="ow">is</span> <span class="n">configured</span> <span class="n">to</span> <span class="n">be</span> <span class="n">a</span> <span class="n">seed</span> <span class="n">node</span><span class="o">.</span>
+<span class="o">...</span>
+<span class="o">...</span>
+<span class="n">INFO</span>  <span class="p">[</span><span class="n">main</span><span class="p">]</span> <span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span> <span class="mi">21</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">20</span><span class="p">,</span><span class="mi">809</span> <span class="n">StorageService</span><span class="o">.</span><span class="n">java</span><span class="p">:</span><span class="mi">1507</span> <span class="o">-</span> <span class="n">JOINING</span><span class="p">:</span> <span class="n">Finish</span> <span class="n">joining</span> <span class="n">ring</span>
+<span class="n">INFO</span>  <span class="p">[</span><span class="n">main</span><span class="p">]</span> <span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span> <span class="mi">21</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">20</span><span class="p">,</span><span class="mi">921</span> <span class="n">StorageService</span><span class="o">.</span><span class="n">java</span><span class="p">:</span><span class="mi">2508</span> <span class="o">-</span> <span class="n">Node</span> <span class="mf">127.0</span><span class="o">.</span><span class="mf">0.1</span><span class="p">:</span><span class="mi">7000</span> <span class="n">state</span>
+<span class="n">jump</span> <span class="n">to</span> <span class="n">NORMAL</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="using-java-11-to-build">
+<h2>Using Java 11 to Build<a class="headerlink" href="#using-java-11-to-build" title="Permalink to this headline">¶</a></h2>
+<p>If Java 11 is used to build Apache Cassandra 4.0, first Java 11 must be installed and the environment variables set. As an example, to download and install Java 11 on RedHat Linux run the following command.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ yum install java-11-openjdk-devel
+</pre></div>
+</div>
+<p>Set the environment variables in the bash script for Java 11. The first command is to open the bash script.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo vi ~/.bashrc
+$ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
+$ export JRE_HOME=/usr/lib/jvm/java-11-openjdk/jre
+$ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
+</pre></div>
+</div>
+<p>To build source code with Java 11 one of the following two options must be used.</p>
+<blockquote>
+<div><ol class="arabic">
+<li><dl class="first docutils">
+<dt>Include Apache Ant command-line option <code class="docutils literal notranslate"><span class="pre">-Duse.jdk=11</span></code> as follows:</dt>
+<dd><div class="first last highlight-default notranslate"><div class="highlight"><pre><span></span>$ ant -Duse.jdk=11
+</pre></div>
+</div>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt>Set environment variable <code class="docutils literal notranslate"><span class="pre">CASSANDRA_USE_JDK11</span></code> to <code class="docutils literal notranslate"><span class="pre">true</span></code>:</dt>
+<dd><div class="first last highlight-default notranslate"><div class="highlight"><pre><span></span>$ export CASSANDRA_USE_JDK11=true
+</pre></div>
+</div>
+</dd>
+</dl>
+</li>
+</ol>
+</div></blockquote>
+<p>As an example, set the environment variable <code class="docutils literal notranslate"><span class="pre">CASSANDRA_USE_JDK11</span></code> to <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-172-30-3-146 cassandra]$ export CASSANDRA_USE_JDK11=true
+[ec2-user@ip-172-30-3-146 cassandra]$ ant
+Buildfile: /home/ec2-user/cassandra/build.xml
+</pre></div>
+</div>
+<p>Or, set the command-line option.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-172-30-3-146 cassandra]$ ant -Duse.jdk11=true
+</pre></div>
+</div>
+<p>The build output should include the following.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>_build_java:
+    [echo] Compiling for Java 11
+...
+...
+build:
+
+_main-jar:
+         [copy] Copying 1 file to /home/ec2-user/cassandra/build/classes/main/META-INF
+     [jar] Building jar: /home/ec2-user/cassandra/build/apache-cassandra-4.0-SNAPSHOT.jar
+...
+...
+_build-test:
+   [javac] Compiling 739 source files to /home/ec2-user/cassandra/build/test/classes
+    [copy] Copying 25 files to /home/ec2-user/cassandra/build/test/classes
+...
+...
+jar:
+   [mkdir] Created dir: /home/ec2-user/cassandra/build/classes/stress/META-INF
+   [mkdir] Created dir: /home/ec2-user/cassandra/build/tools/lib
+     [jar] Building jar: /home/ec2-user/cassandra/build/tools/lib/stress.jar
+   [mkdir] Created dir: /home/ec2-user/cassandra/build/classes/fqltool/META-INF
+     [jar] Building jar: /home/ec2-user/cassandra/build/tools/lib/fqltool.jar
+
+BUILD SUCCESSFUL
+Total time: 1 minute 3 seconds
+[ec2-user@ip-172-30-3-146 cassandra]$
+</pre></div>
+</div>
+</div>
+<div class="section" id="common-issues">
+<h2>Common Issues<a class="headerlink" href="#common-issues" title="Permalink to this headline">¶</a></h2>
+<p>One of the two options mentioned must be used to compile with JDK 11 or the build fails and the following error message is output.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-172-30-3-146 cassandra]$ ant
+Buildfile: /home/ec2-user/cassandra/build.xml
+validate-build-conf:
+
+BUILD FAILED
+/home/ec2-user/cassandra/build.xml:293: -Duse.jdk11=true or $CASSANDRA_USE_JDK11=true must
+be set when building from java 11
+Total time: 1 second
+[ec2-user@ip-172-30-3-146 cassandra]$
+</pre></div>
+</div>
+<p>The Java 11 built Apache Cassandra 4.0 source code may be run with Java 11 only. If a Java 11 built code is run with Java 8 the following error message gets output.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[root@localhost ~]# ssh -i cassandra.pem ec2-user@ec2-3-85-85-75.compute-1.amazonaws.com
+Last login: Wed Jul 31 20:47:26 2019 from 75.155.255.51
+[ec2-user@ip-172-30-3-146 ~]$ echo $JAVA_HOME
+/usr/lib/jvm/java-1.8.0-openjdk
+[ec2-user@ip-172-30-3-146 ~]$ cassandra
+...
+...
+Error: A JNI error has occurred, please check your installation and try again
+Exception in thread &quot;main&quot; java.lang.UnsupportedClassVersionError:
+org/apache/cassandra/service/CassandraDaemon has been compiled by a more recent version of
+the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes
+class file versions up to 52.0
+  at java.lang.ClassLoader.defineClass1(Native Method)
+  at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
+  at ...
+...
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">CASSANDRA_USE_JDK11</span></code> variable or the command-line option <code class="docutils literal notranslate"><span class="pre">-Duse.jdk11</span></code> cannot be used to build with Java 8. To demonstrate set <code class="docutils literal notranslate"><span class="pre">JAVA_HOME</span></code> to version 8.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[root@localhost ~]# ssh -i cassandra.pem ec2-user@ec2-3-85-85-75.compute-1.amazonaws.com
+Last login: Wed Jul 31 21:41:50 2019 from 75.155.255.51
+[ec2-user@ip-172-30-3-146 ~]$ echo $JAVA_HOME
+/usr/lib/jvm/java-1.8.0-openjdk
+</pre></div>
+</div>
+<p>Set the <code class="docutils literal notranslate"><span class="pre">CASSANDRA_USE_JDK11=true</span></code> or command-line option <code class="docutils literal notranslate"><span class="pre">-Duse.jdk11=true</span></code>. Subsequently, run Apache Ant to start the build. The build fails with error message listed.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-172-30-3-146 ~]$ cd
+cassandra
+[ec2-user@ip-172-30-3-146 cassandra]$ export CASSANDRA_USE_JDK11=true
+[ec2-user@ip-172-30-3-146 cassandra]$ ant
+Buildfile: /home/ec2-user/cassandra/build.xml
+
+validate-build-conf:
+
+BUILD FAILED
+/home/ec2-user/cassandra/build.xml:285: -Duse.jdk11=true or $CASSANDRA_USE_JDK11=true cannot
+be set when building from java 8
+
+Total time: 0 seconds
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="virtualtables.html" class="btn btn-default pull-right " role="button" title="Virtual Tables" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="New Features in Apache Cassandra 4.0" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/new/messaging.html b/src/doc/4.0-rc1/new/messaging.html
new file mode 100644
index 0000000..d505df2
--- /dev/null
+++ b/src/doc/4.0-rc1/new/messaging.html
@@ -0,0 +1,344 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "New Features in Apache Cassandra 4.0"
+
+doc-title: "Improved Internode Messaging"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="New Features in Apache Cassandra 4.0" href="index.html"/>
+      <link rel="next" title="Improved Streaming" href="streaming.html"/>
+      <link rel="prev" title="Full Query Logging (FQL)" href="fqllogging.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">New Features in Apache Cassandra 4.0</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="java11.html">Support for Java 11</a></li>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html">Virtual Tables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html">Audit Logging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html">Full Query Logging (FQL)</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Improved Internode Messaging</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#optimized-internode-messaging-protocol">Optimized Internode Messaging Protocol</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#nio-messaging">NIO Messaging</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#resource-limits-on-queued-messages">Resource limits on Queued Messages</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#virtual-tables-for-messaging-metrics">Virtual Tables for Messaging Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hint-messaging">Hint Messaging</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#internode-application-timeout">Internode Application Timeout</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#paxos-prepare-and-propose-stage-for-local-requests-optimized">Paxos prepare and propose stage for local requests optimized</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#quality-assurance">Quality Assurance</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#added-a-message-size-limit">Added a Message size limit</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#recover-from-unknown-table-when-deserializing-internode-messages">Recover from unknown table when deserializing internode messages</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html">Improved Streaming</a></li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html">Transient Replication</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="improved-internode-messaging">
+<h1>Improved Internode Messaging<a class="headerlink" href="#improved-internode-messaging" title="Permalink to this headline">¶</a></h1>
+<p>Apache Cassandra 4.0 has added several new improvements to internode messaging.</p>
+<div class="section" id="optimized-internode-messaging-protocol">
+<h2>Optimized Internode Messaging Protocol<a class="headerlink" href="#optimized-internode-messaging-protocol" title="Permalink to this headline">¶</a></h2>
+<p>The internode messaging protocol has been optimized (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14485">CASSANDRA-14485</a>). Previously the <code class="docutils literal notranslate"><span class="pre">IPAddressAndPort</span></code> of the sender was included with each message that was sent even though the <code class="docutils literal notranslate"><span class="pre">IPAddressAndPort</span></code> had already been sent once when the initial connection/session was established. In Cassandra 4.0 <code class="docutils literal notranslate"><span class="pre">IPAddressAndPort</span></code> has been removed from every separate message sent  and only sent when connection/session is initiated.</p>
+<p>Another improvement is that at several instances (listed) a fixed 4-byte integer value has been replaced with <code class="docutils literal notranslate"><span class="pre">vint</span></code> as a <code class="docutils literal notranslate"><span class="pre">vint</span></code> is almost always less than 1 byte:</p>
+<ul class="simple">
+<li>The <code class="docutils literal notranslate"><span class="pre">paramSize</span></code> (the number of parameters in the header)</li>
+<li>Each individual parameter value</li>
+<li>The <code class="docutils literal notranslate"><span class="pre">payloadSize</span></code></li>
+</ul>
+</div>
+<div class="section" id="nio-messaging">
+<h2>NIO Messaging<a class="headerlink" href="#nio-messaging" title="Permalink to this headline">¶</a></h2>
+<p>In Cassandra 4.0 peer-to-peer (internode) messaging has been switched to non-blocking I/O (NIO) via Netty (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-8457">CASSANDRA-8457</a>).</p>
+<p>As serialization format,  each message contains a header with several fixed fields, an optional key-value parameters section, and then the message payload itself. Note: the IP address in the header may be either IPv4 (4 bytes) or IPv6 (16 bytes).</p>
+<blockquote>
+<div>The diagram below shows the IPv4 address for brevity.</div></blockquote>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>           <span class="mi">1</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">2</span> <span class="mi">2</span> <span class="mi">2</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">3</span> <span class="mi">3</span> <span class="mi">3</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">4</span> <span class="mi">4</span> <span class="mi">4</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">5</span> <span class="mi">5</span> <span class="mi">5</span> <span class="mi">5</span> <span class="mi">6</span> <span class="mi">6</span>
+ <span class="mi">0</span> <span class="mi">2</span> <span class="mi">4</span> <span class="mi">6</span> <span class="mi">8</span> <span class="mi">0</span> <span class="mi">2</span> <span class="mi">4</span> <span class="mi">6</span> <span class="mi">8</span> <span class="mi">0</span> <span class="mi">2</span> <span class="mi">4</span> <span class="mi">6</span> <span class="mi">8</span> <span class="mi">0</span> <span class="mi">2</span> <span class="mi">4</span> <span class="mi">6</span> <span class="mi">8</span> <span class="mi">0</span> <span class="mi">2</span> <span class="mi">4</span> <span class="mi">6</span> <span class="mi">8</span> <span class="mi">0</span> <span class="mi">2</span> <span class="mi">4</span> <span class="mi">6</span> <span class="mi">8</span> <span class="mi">0</span> <span class="mi">2</span>
+<span class="o">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span>
+<span class="o">|</span>                       <span class="n">PROTOCOL</span> <span class="n">MAGIC</span>                          <span class="o">|</span>
+<span class="o">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span>
+<span class="o">|</span>                         <span class="n">Message</span> <span class="n">ID</span>                            <span class="o">|</span>
+<span class="o">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span>
+<span class="o">|</span>                         <span class="n">Timestamp</span>                             <span class="o">|</span>
+<span class="o">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span>
+<span class="o">|</span>  <span class="n">Addr</span> <span class="nb">len</span> <span class="o">|</span>           <span class="n">IP</span> <span class="n">Address</span> <span class="p">(</span><span class="n">IPv4</span><span class="p">)</span>                       <span class="o">/</span>
+<span class="o">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span>
+<span class="o">/</span>           <span class="o">|</span>                 <span class="n">Verb</span>                              <span class="o">/</span>
+<span class="o">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span>
+<span class="o">/</span>           <span class="o">|</span>            <span class="n">Parameters</span> <span class="n">size</span>                        <span class="o">/</span>
+<span class="o">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span>
+<span class="o">/</span>           <span class="o">|</span>             <span class="n">Parameter</span> <span class="n">data</span>                        <span class="o">/</span>
+<span class="o">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span>
+<span class="o">/</span>                                                               <span class="o">|</span>
+<span class="o">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span>
+<span class="o">|</span>                        <span class="n">Payload</span> <span class="n">size</span>                           <span class="o">|</span>
+<span class="o">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span>
+<span class="o">|</span>                                                               <span class="o">/</span>
+<span class="o">/</span>                           <span class="n">Payload</span>                             <span class="o">/</span>
+<span class="o">/</span>                                                               <span class="o">|</span>
+<span class="o">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span>
+</pre></div>
+</div>
+<p>An individual parameter has a String key and a byte array value. The key is serialized with its length, encoded as two bytes, followed by the UTF-8 byte encoding of the string. The body is serialized with its length, encoded as four bytes, followed by the bytes of the value.</p>
+</div>
+<div class="section" id="resource-limits-on-queued-messages">
+<h2>Resource limits on Queued Messages<a class="headerlink" href="#resource-limits-on-queued-messages" title="Permalink to this headline">¶</a></h2>
+<p>System stability is improved by enforcing strict resource limits (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-15066">CASSANDRA-15066</a>) on the number of outbound messages that are queued, measured by the <code class="docutils literal notranslate"><span class="pre">serializedSize</span></code> of the message. There are three separate limits imposed simultaneously to ensure that progress is always made without any reasonable combination of failures impacting a node’s stability.</p>
+<ol class="arabic simple">
+<li>Global, per-endpoint and per-connection limits are imposed on messages queued for delivery to other nodes and waiting to be processed on arrival from other nodes in the cluster.  These limits are applied to the on-wire size of the message being sent or received.</li>
+<li>The basic per-link limit is consumed in isolation before any endpoint or global limit is imposed. Each node-pair has three links: urgent, small and large.  So any given node may have a maximum of <code class="docutils literal notranslate"><span class="pre">N*3</span> <span class="pre">*</span> <span class="pre">(internode_application_send_queue_capacity_in_bytes</span> <span class="pre">+</span> <span class="pre">internode_application_receive_queue_capacity_in_bytes)</span></code> messages queued without any coordination between them although in practice, with token-aware routing, only RF*tokens nodes should need to communicate with significant bandwidth.</li>
+<li>The per-endpoint limit is imposed on all messages exceeding the per-link limit, simultaneously with the global limit, on all links to or from a single node in the cluster. The global limit is imposed on all messages exceeding the per-link limit, simultaneously with the per-endpoint limit, on all links to or from any node in the cluster. The following configuration settings have been added to <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> for resource limits on queued messages.</li>
+</ol>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">internode_application_send_queue_capacity_in_bytes</span><span class="p">:</span> <span class="mi">4194304</span> <span class="c1">#4MiB</span>
+<span class="n">internode_application_send_queue_reserve_endpoint_capacity_in_bytes</span><span class="p">:</span> <span class="mi">134217728</span>  <span class="c1">#128MiB</span>
+<span class="n">internode_application_send_queue_reserve_global_capacity_in_bytes</span><span class="p">:</span> <span class="mi">536870912</span>    <span class="c1">#512MiB</span>
+<span class="n">internode_application_receive_queue_capacity_in_bytes</span><span class="p">:</span> <span class="mi">4194304</span>                  <span class="c1">#4MiB</span>
+<span class="n">internode_application_receive_queue_reserve_endpoint_capacity_in_bytes</span><span class="p">:</span> <span class="mi">134217728</span> <span class="c1">#128MiB</span>
+<span class="n">internode_application_receive_queue_reserve_global_capacity_in_bytes</span><span class="p">:</span> <span class="mi">536870912</span>   <span class="c1">#512MiB</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="virtual-tables-for-messaging-metrics">
+<h2>Virtual Tables for Messaging Metrics<a class="headerlink" href="#virtual-tables-for-messaging-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics is improved by keeping metrics using virtual tables for inter-node inbound and outbound messaging (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-15066">CASSANDRA-15066</a>). For inbound messaging a  virtual table (<code class="docutils literal notranslate"><span class="pre">internode_inbound</span></code>) has been added to keep metrics for:</p>
+<ul class="simple">
+<li>Bytes and count of messages that could not be serialized or flushed due to an error</li>
+<li>Bytes and count of messages scheduled</li>
+<li>Bytes and count of messages successfully processed</li>
+<li>Bytes and count of messages successfully received</li>
+<li>Nanos and count of messages throttled</li>
+<li>Bytes and count of messages expired</li>
+<li>Corrupt frames recovered and unrecovered</li>
+</ul>
+<p>A separate virtual table (<code class="docutils literal notranslate"><span class="pre">internode_outbound</span></code>) has been added for outbound inter-node messaging. The outbound virtual table keeps metrics for:</p>
+<ul class="simple">
+<li>Bytes and count of messages  pending</li>
+<li>Bytes and count of messages  sent</li>
+<li>Bytes and count of messages  expired</li>
+<li>Bytes and count of messages that could not be sent due to an error</li>
+<li>Bytes and count of messages overloaded</li>
+<li>Active Connection Count</li>
+<li>Connection Attempts</li>
+<li>Successful Connection Attempts</li>
+</ul>
+</div>
+<div class="section" id="hint-messaging">
+<h2>Hint Messaging<a class="headerlink" href="#hint-messaging" title="Permalink to this headline">¶</a></h2>
+<p>A specialized version of hint message that takes an already encoded in a <code class="docutils literal notranslate"><span class="pre">ByteBuffer</span></code> hint and sends it verbatim has been added. It is an optimization for when dispatching a hint file of the current messaging version to a node of the same messaging version, which is the most common case. It saves on extra <code class="docutils literal notranslate"><span class="pre">ByteBuffer</span></code> allocations one redundant hint deserialization-serialization cycle.</p>
+</div>
+<div class="section" id="internode-application-timeout">
+<h2>Internode Application Timeout<a class="headerlink" href="#internode-application-timeout" title="Permalink to this headline">¶</a></h2>
+<p>A configuration setting has been added to <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> for the maximum continuous period a connection may be unwritable in application space.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># internode_application_timeout_in_ms = 30000</span>
+</pre></div>
+</div>
+<p>Some other new features include logging of message size to trace message for tracing a query.</p>
+</div>
+<div class="section" id="paxos-prepare-and-propose-stage-for-local-requests-optimized">
+<h2>Paxos prepare and propose stage for local requests optimized<a class="headerlink" href="#paxos-prepare-and-propose-stage-for-local-requests-optimized" title="Permalink to this headline">¶</a></h2>
+<p>In pre-4.0 Paxos prepare and propose messages always go through entire <code class="docutils literal notranslate"><span class="pre">MessagingService</span></code> stack in Cassandra even if request is to be served locally, we can enhance and make local requests severed w/o involving <code class="docutils literal notranslate"><span class="pre">MessagingService</span></code>. Similar things are done elsewhere in Cassandra which skips <code class="docutils literal notranslate"><span class="pre">MessagingService</span></code> stage for local requests.</p>
+<p>This is what it looks like in pre 4.0 if we have tracing on and run a light-weight transaction:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>Sending PAXOS_PREPARE message to /A.B.C.D [MessagingService-Outgoing-/A.B.C.D] | 2017-09-11
+21:55:18.971000 | A.B.C.D | 15045
+… REQUEST_RESPONSE message received from /A.B.C.D [MessagingService-Incoming-/A.B.C.D] |
+2017-09-11 21:55:18.976000 | A.B.C.D | 20270
+… Processing response from /A.B.C.D [SharedPool-Worker-4] | 2017-09-11 21:55:18.976000 |
+A.B.C.D | 20372
+</pre></div>
+</div>
+<p>Same thing applies for Propose stage as well.</p>
+<p>In version 4.0 Paxos prepare and propose stage for local requests are optimized (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-13862">CASSANDRA-13862</a>).</p>
+</div>
+<div class="section" id="quality-assurance">
+<h2>Quality Assurance<a class="headerlink" href="#quality-assurance" title="Permalink to this headline">¶</a></h2>
+<p>Several other quality assurance improvements have been made in version 4.0 (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-15066">CASSANDRA-15066</a>).</p>
+<div class="section" id="framing">
+<h3>Framing<a class="headerlink" href="#framing" title="Permalink to this headline">¶</a></h3>
+<p>Version 4.0 introduces framing to all internode messages, i.e. the grouping of messages into a single logical payload with headers and trailers; these frames are guaranteed to either contain at most one message, that is split into its own unique sequence of frames (for large messages), or that a frame contains only complete messages.</p>
+</div>
+<div class="section" id="corruption-prevention">
+<h3>Corruption prevention<a class="headerlink" href="#corruption-prevention" title="Permalink to this headline">¶</a></h3>
+<p>Previously, intra-datacenter internode messages would be unprotected from corruption by default, as only LZ4 provided any integrity checks. All messages to post 4.0 nodes are written to explicit frames, which may be:</p>
+<ul class="simple">
+<li>LZ4 encoded</li>
+<li>CRC protected</li>
+</ul>
+<p>The Unprotected option is still available.</p>
+</div>
+<div class="section" id="resilience">
+<h3>Resilience<a class="headerlink" href="#resilience" title="Permalink to this headline">¶</a></h3>
+<p>For resilience, all frames are written with a separate CRC protected header, of 8 and 6 bytes respectively. If corruption occurs in this header, the connection must be reset, as before. If corruption occurs anywhere outside of the header, the corrupt frame will be skipped, leaving the connection intact and avoiding the loss of any messages unnecessarily.</p>
+<p>Previously, any issue at any point in the stream would result in the connection being reset, with the loss of any in-flight messages.</p>
+</div>
+<div class="section" id="efficiency">
+<h3>Efficiency<a class="headerlink" href="#efficiency" title="Permalink to this headline">¶</a></h3>
+<p>The overall memory usage, and number of byte shuffles, on both inbound and outbound messages is reduced.</p>
+<p>Outbound the Netty LZ4 encoder maintains a chunk size buffer (64KiB), that is filled before any compressed frame can be produced. Our frame encoders avoid this redundant copy, as well as freeing 192KiB per endpoint.</p>
+<p>Inbound, frame decoders guarantee only to copy the number of bytes necessary to parse a frame, and to never store more bytes than necessary. This improvement applies twice to LZ4 connections, improving both the message decode and the LZ4 frame decode.</p>
+</div>
+<div class="section" id="inbound-path">
+<h3>Inbound Path<a class="headerlink" href="#inbound-path" title="Permalink to this headline">¶</a></h3>
+<p>Version 4.0 introduces several improvements to the inbound path.</p>
+<p>An appropriate message handler is used based on whether large or small messages are expected on a particular connection as set in a flag. <code class="docutils literal notranslate"><span class="pre">NonblockingBufferHandler</span></code>, running on event loop, is used for small messages, and <code class="docutils literal notranslate"><span class="pre">BlockingBufferHandler</span></code>, running off event loop, for large messages. The single implementation of <code class="docutils literal notranslate"><span class="pre">InboundMessageHandler</span></code> handles messages of any size effectively by deriving size of the incoming message from the byte stream. In addition to deriving size of the message from the stream, incoming message expiration time is proactively read, before attempting to deserialize the entire message. If it’s expired at the time when a message is encountered the message is just skipped in the byte stream altogether.
+And if a message fails to be deserialized while still on the receiving side - say, because of table id or column being unknown - bytes are skipped, without dropping the entire connection and losing all the buffered messages. An immediately reply back is sent to the coordinator node with the failure reason, rather than waiting for the coordinator callback to expire. This logic is extended to a corrupted frame; a corrupted frame is safely skipped over without dropping the connection.</p>
+<p>Inbound path imposes strict limits on memory utilization. Specifically, the memory occupied by all parsed, but unprocessed messages is bound - on per-connection, per-endpoint, and global basis. Once a connection exceeds its local unprocessed capacity and cannot borrow any permits from per-endpoint and global reserve, it simply stops processing further messages, providing natural backpressure - until sufficient capacity is regained.</p>
+</div>
+<div class="section" id="outbound-connections">
+<h3>Outbound Connections<a class="headerlink" href="#outbound-connections" title="Permalink to this headline">¶</a></h3>
+<div class="section" id="opening-a-connection">
+<h4>Opening a connection<a class="headerlink" href="#opening-a-connection" title="Permalink to this headline">¶</a></h4>
+<p>A consistent approach is adopted for all kinds of failure to connect, including: refused by endpoint, incompatible versions, or unexpected exceptions;</p>
+<ul class="simple">
+<li>Retry forever, until either success or no messages waiting to deliver.</li>
+<li>Wait incrementally longer periods before reconnecting, up to a maximum of 1s.</li>
+<li>While failing to connect, no reserve queue limits are acquired.</li>
+</ul>
+</div>
+<div class="section" id="closing-a-connection">
+<h4>Closing a connection<a class="headerlink" href="#closing-a-connection" title="Permalink to this headline">¶</a></h4>
+<ul class="simple">
+<li>Correctly drains outbound messages that are waiting to be delivered (unless disconnected and fail to reconnect).</li>
+<li>Messages written to a closing connection are either delivered or rejected, with a new connection being opened if the old is irrevocably closed.</li>
+<li>Unused connections are pruned eventually.</li>
+</ul>
+</div>
+<div class="section" id="reconnecting">
+<h4>Reconnecting<a class="headerlink" href="#reconnecting" title="Permalink to this headline">¶</a></h4>
+<p>We sometimes need to reconnect a perfectly valid connection, e.g. if the preferred IP address changes. We ensure that the underlying connection has no in-progress operations before closing it and reconnecting.</p>
+</div>
+<div class="section" id="message-failure">
+<h4>Message Failure<a class="headerlink" href="#message-failure" title="Permalink to this headline">¶</a></h4>
+<p>Propagates to callbacks instantly, better preventing overload by reclaiming committed memory.</p>
+<div class="section" id="expiry">
+<h5>Expiry<a class="headerlink" href="#expiry" title="Permalink to this headline">¶</a></h5>
+<ul class="simple">
+<li>No longer experiences head-of-line blocking (e.g. undroppable message preventing all droppable messages from being expired).</li>
+<li>While overloaded, expiry is attempted eagerly on enqueuing threads.</li>
+<li>While disconnected we schedule regular pruning, to handle the case where messages are no longer being sent, but we have a large backlog to expire.</li>
+</ul>
+</div>
+<div class="section" id="overload">
+<h5>Overload<a class="headerlink" href="#overload" title="Permalink to this headline">¶</a></h5>
+<ul class="simple">
+<li>Tracked by bytes queued, as opposed to number of messages.</li>
+</ul>
+</div>
+<div class="section" id="serialization-errors">
+<h5>Serialization Errors<a class="headerlink" href="#serialization-errors" title="Permalink to this headline">¶</a></h5>
+<ul class="simple">
+<li>Do not result in the connection being invalidated; the message is simply completed with failure, and then erased from the frame.</li>
+<li>Includes detected mismatch between calculated serialization size to actual.</li>
+</ul>
+<p>Failures to flush to network, perhaps because the connection has been reset are not currently notified to callback handlers, as the necessary information has been discarded, though it would be possible to do so in future if we decide it is worth our while.</p>
+</div>
+</div>
+<div class="section" id="qos">
+<h4>QoS<a class="headerlink" href="#qos" title="Permalink to this headline">¶</a></h4>
+<p>“Gossip” connection has been replaced with a general purpose “Urgent” connection, for any small messages impacting system stability.</p>
+</div>
+<div class="section" id="metrics">
+<h4>Metrics<a class="headerlink" href="#metrics" title="Permalink to this headline">¶</a></h4>
+<p>We track, and expose via Virtual Table and JMX, the number of messages and bytes that: we could not serialize or flush due to an error, we dropped due to overload or timeout, are pending, and have successfully sent.</p>
+</div>
+</div>
+</div>
+<div class="section" id="added-a-message-size-limit">
+<h2>Added a Message size limit<a class="headerlink" href="#added-a-message-size-limit" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra pre-4.0 doesn’t protect the server from allocating huge buffers for the inter-node Message objects. Adding a message size limit would be good to deal with issues such as a malfunctioning cluster participant. Version 4.0 introduced max message size config param, akin to max mutation size - set to endpoint reserve capacity by default.</p>
+</div>
+<div class="section" id="recover-from-unknown-table-when-deserializing-internode-messages">
+<h2>Recover from unknown table when deserializing internode messages<a class="headerlink" href="#recover-from-unknown-table-when-deserializing-internode-messages" title="Permalink to this headline">¶</a></h2>
+<p>As discussed in (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-9289">CASSANDRA-9289</a>) it would be nice to gracefully recover from seeing an unknown table in a message from another node. Pre-4.0, we close the connection and reconnect, which can cause other concurrent queries to fail.
+Version 4.0  fixes the issue by wrapping message in-stream with
+<code class="docutils literal notranslate"><span class="pre">TrackedDataInputPlus</span></code>, catching
+<code class="docutils literal notranslate"><span class="pre">UnknownCFException</span></code>, and skipping the remaining bytes in this message. TCP won’t be closed and it will remain connected for other messages.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="streaming.html" class="btn btn-default pull-right " role="button" title="Improved Streaming" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="fqllogging.html" class="btn btn-default" role="button" title="Full Query Logging (FQL)" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/new/streaming.html b/src/doc/4.0-rc1/new/streaming.html
new file mode 100644
index 0000000..7318762
--- /dev/null
+++ b/src/doc/4.0-rc1/new/streaming.html
@@ -0,0 +1,266 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "New Features in Apache Cassandra 4.0"
+
+doc-title: "Improved Streaming"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="New Features in Apache Cassandra 4.0" href="index.html"/>
+      <link rel="next" title="Transient Replication" href="transientreplication.html"/>
+      <link rel="prev" title="Improved Internode Messaging" href="messaging.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">New Features in Apache Cassandra 4.0</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="java11.html">Support for Java 11</a></li>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html">Virtual Tables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html">Audit Logging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html">Full Query Logging (FQL)</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html">Improved Internode Messaging</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Improved Streaming</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#streaming-based-on-netty">Streaming based on Netty</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#zero-copy-streaming">Zero Copy Streaming</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#repair-streaming-preview">Repair Streaming Preview</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#parallelizing-of-streaming-of-keyspaces">Parallelizing of Streaming of Keyspaces</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#unique-nodes-for-streaming-in-multi-dc-deployment">Unique nodes for Streaming in Multi-DC deployment</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#stream-operation-types">Stream Operation Types</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#disallow-decommission-when-number-of-replicas-will-drop-below-configured-rf">Disallow Decommission when number of Replicas will drop below configured RF</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html">Transient Replication</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="improved-streaming">
+<h1>Improved Streaming<a class="headerlink" href="#improved-streaming" title="Permalink to this headline">¶</a></h1>
+<p>Apache Cassandra 4.0 has made several improvements to streaming.  Streaming is the process used by nodes of a cluster to exchange data in the form of SSTables.  Streaming of SSTables is performed for several operations, such as:</p>
+<ul class="simple">
+<li>SSTable Repair</li>
+<li>Host Replacement</li>
+<li>Range movements</li>
+<li>Bootstrapping</li>
+<li>Rebuild</li>
+<li>Cluster expansion</li>
+</ul>
+<div class="section" id="streaming-based-on-netty">
+<h2>Streaming based on Netty<a class="headerlink" href="#streaming-based-on-netty" title="Permalink to this headline">¶</a></h2>
+<p>Streaming in Cassandra 4.0 is based on Non-blocking Input/Output (NIO) with Netty (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12229">CASSANDRA-12229</a>). It replaces the single-threaded (or sequential), synchronous, blocking model of streaming messages and transfer of files. Netty supports non-blocking, asynchronous, multi-threaded streaming with which multiple connections are opened simultaneously.  Non-blocking implies that threads are not blocked as they don’t wait for a response for a sent request. A response could be returned in a different thread. With asynchronous, connections and threads are decoupled and do not have a 1:1 relation. Several more connections than threads may be opened.</p>
+</div>
+<div class="section" id="zero-copy-streaming">
+<h2>Zero Copy Streaming<a class="headerlink" href="#zero-copy-streaming" title="Permalink to this headline">¶</a></h2>
+<p>Pre-4.0, during streaming Cassandra reifies the SSTables into objects. This creates unnecessary garbage and slows down the whole streaming process as some SSTables can be transferred as a whole file rather than individual partitions. Cassandra 4.0 has added support for streaming entire SSTables when possible (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14556">CASSANDRA-14556</a>) for faster Streaming using ZeroCopy APIs. If enabled, Cassandra will use ZeroCopy for eligible SSTables significantly speeding up transfers and increasing throughput.  A zero-copy path avoids bringing data into user-space on both sending and receiving side. Any streaming related operations will notice corresponding improvement. Zero copy streaming is hardware bound; only limited by the hardware limitations (Network and Disk IO ).</p>
+<div class="section" id="high-availability">
+<h3>High Availability<a class="headerlink" href="#high-availability" title="Permalink to this headline">¶</a></h3>
+<p>In benchmark tests Zero Copy Streaming is 5x faster than partitions based streaming. Faster streaming provides the benefit of improved availability. A cluster’s recovery mainly depends on the streaming speed, Cassandra clusters with failed nodes will be able to recover much more quickly (5x faster). If a node fails, SSTables need to be streamed to a replacement node. During the replacement operation, the new Cassandra node streams SSTables from the neighboring nodes that hold copies of the data belonging to this new node’s token range. Depending on the amount of data stored, this process can require substantial network bandwidth, taking some time to complete. The longer these range movement operations take, the more the cluster availability is lost. Failure of multiple nodes would reduce high availability greatly. The faster the new node completes streaming its data, the faster it can serve traffic, increasing the availability of the cluster.</p>
+</div>
+<div class="section" id="enabling-zero-copy-streaming">
+<h3>Enabling Zero Copy Streaming<a class="headerlink" href="#enabling-zero-copy-streaming" title="Permalink to this headline">¶</a></h3>
+<p>Zero copy streaming is enabled by setting the following setting in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">stream_entire_sstables</span><span class="p">:</span> <span class="n">true</span>
+</pre></div>
+</div>
+<p>It is enabled by default.</p>
+<p>This feature is automatically disabled if internode encryption is enabled.</p>
+</div>
+<div class="section" id="sstables-eligible-for-zero-copy-streaming">
+<h3>SSTables Eligible for Zero Copy Streaming<a class="headerlink" href="#sstables-eligible-for-zero-copy-streaming" title="Permalink to this headline">¶</a></h3>
+<p>Zero copy streaming is used if all partitions within the SSTable need to be transmitted. This is common when using <code class="docutils literal notranslate"><span class="pre">LeveledCompactionStrategy</span></code> or when partitioning SSTables by token range has been enabled. All partition keys in the SSTables are iterated over to determine the eligibility for Zero Copy streaming.</p>
+</div>
+<div class="section" id="benefits-of-zero-copy-streaming">
+<h3>Benefits of Zero Copy Streaming<a class="headerlink" href="#benefits-of-zero-copy-streaming" title="Permalink to this headline">¶</a></h3>
+<p>When enabled, it permits Cassandra to zero-copy stream entire eligible SSTables between nodes, including every component. This speeds up the network transfer significantly subject to throttling specified by <code class="docutils literal notranslate"><span class="pre">stream_throughput_outbound_megabits_per_sec</span></code>.</p>
+<p>Enabling zero copy streaming also reduces the GC pressure on the sending and receiving nodes.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">While this feature tries to keep the disks balanced, it cannot guarantee it.
+For instance, it is expected that some of the SSTables do not fit entirely in their disk boundaries, when bootstraping a new node having multiple data directoris.</p>
+</div>
+</div>
+<div class="section" id="configuring-for-zero-copy-streaming">
+<h3>Configuring for Zero Copy Streaming<a class="headerlink" href="#configuring-for-zero-copy-streaming" title="Permalink to this headline">¶</a></h3>
+<p>Throttling would reduce the streaming speed. The <code class="docutils literal notranslate"><span class="pre">stream_throughput_outbound_megabits_per_sec</span></code> throttles all outbound streaming file transfers on a node to the given total throughput in Mbps. When unset, the default is 200 Mbps or 25 MB/s.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">stream_throughput_outbound_megabits_per_sec</span><span class="p">:</span> <span class="mi">200</span>
+</pre></div>
+</div>
+<p>To run any Zero Copy streaming benchmark the <code class="docutils literal notranslate"><span class="pre">stream_throughput_outbound_megabits_per_sec</span></code> must be set to a really high value otherwise, throttling will be significant and the benchmark results will not be meaningful.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">inter_dc_stream_throughput_outbound_megabits_per_sec</span></code> throttles all streaming file transfer between the datacenters, this setting allows users to throttle inter dc stream throughput in addition to throttling all network stream traffic as configured with <code class="docutils literal notranslate"><span class="pre">stream_throughput_outbound_megabits_per_sec</span></code>. When unset, the default is 200 Mbps or 25 MB/s.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">inter_dc_stream_throughput_outbound_megabits_per_sec</span><span class="p">:</span> <span class="mi">200</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="sstable-components-streamed-with-zero-copy-streaming">
+<h3>SSTable Components Streamed with Zero Copy Streaming<a class="headerlink" href="#sstable-components-streamed-with-zero-copy-streaming" title="Permalink to this headline">¶</a></h3>
+<p>Zero Copy Streaming streams entire SSTables.  SSTables are made up of multiple components in separate files. SSTable components streamed are listed in Table 1.</p>
+<p>Table 1. SSTable Components</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="26%" />
+<col width="74%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>SSTable Component</td>
+<td>Description</td>
+</tr>
+<tr class="row-even"><td>Data.db</td>
+<td>The base data for an SSTable: the remaining
+components can be regenerated based on the data
+component.</td>
+</tr>
+<tr class="row-odd"><td>Index.db</td>
+<td>Index of the row keys with pointers to their
+positions in the data file.</td>
+</tr>
+<tr class="row-even"><td>Filter.db</td>
+<td>Serialized bloom filter for the row keys in the
+SSTable.</td>
+</tr>
+<tr class="row-odd"><td>CompressionInfo.db</td>
+<td>File to hold information about uncompressed
+data length, chunk offsets etc.</td>
+</tr>
+<tr class="row-even"><td>Statistics.db</td>
+<td>Statistical metadata about the content of the
+SSTable.</td>
+</tr>
+<tr class="row-odd"><td>Digest.crc32</td>
+<td>Holds CRC32 checksum of the data file
+size_bytes.</td>
+</tr>
+<tr class="row-even"><td>CRC.db</td>
+<td>Holds the CRC32 for chunks in an uncompressed file.</td>
+</tr>
+<tr class="row-odd"><td>Summary.db</td>
+<td>Holds SSTable Index Summary
+(sampling of Index component)</td>
+</tr>
+<tr class="row-even"><td>TOC.txt</td>
+<td>Table of contents, stores the list of all
+components for the SSTable.</td>
+</tr>
+</tbody>
+</table>
+<p>Custom component, used by e.g. custom compaction strategy may also be included.</p>
+</div>
+</div>
+<div class="section" id="repair-streaming-preview">
+<h2>Repair Streaming Preview<a class="headerlink" href="#repair-streaming-preview" title="Permalink to this headline">¶</a></h2>
+<p>Repair with <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">repair</span></code> involves streaming of repaired SSTables and a repair preview has been added to provide an estimate of the amount of repair streaming that would need to be performed. Repair preview (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-13257">CASSANDRA-13257</a>) is invoke with <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">repair</span> <span class="pre">--preview</span></code> using option:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-</span><span class="n">prv</span><span class="p">,</span> <span class="o">--</span><span class="n">preview</span>
+</pre></div>
+</div>
+<p>It determines ranges and amount of data to be streamed, but doesn’t actually perform repair.</p>
+</div>
+<div class="section" id="parallelizing-of-streaming-of-keyspaces">
+<h2>Parallelizing of Streaming of Keyspaces<a class="headerlink" href="#parallelizing-of-streaming-of-keyspaces" title="Permalink to this headline">¶</a></h2>
+<p>The streaming of the different keyspaces for bootstrap and rebuild has been parallelized in Cassandra 4.0 (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-4663">CASSANDRA-4663</a>).</p>
+</div>
+<div class="section" id="unique-nodes-for-streaming-in-multi-dc-deployment">
+<h2>Unique nodes for Streaming in Multi-DC deployment<a class="headerlink" href="#unique-nodes-for-streaming-in-multi-dc-deployment" title="Permalink to this headline">¶</a></h2>
+<p>Range Streamer picks unique nodes to stream data from when number of replicas in each DC is three or more (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-4650">CASSANDRA-4650</a>). What the optimization does is to even out the streaming load across the cluster. Without the optimization, some node can be picked up to stream more data than others. This patch allows to select dedicated node to stream only one range.</p>
+<p>This will increase the performance of bootstrapping a node and will also put less pressure on nodes serving the data. This does not affect if N &lt; 3 in each DC as then it streams data from only 2 nodes.</p>
+</div>
+<div class="section" id="stream-operation-types">
+<h2>Stream Operation Types<a class="headerlink" href="#stream-operation-types" title="Permalink to this headline">¶</a></h2>
+<p>It is important to know the type or purpose of a certain stream. Version 4.0 (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-13064">CASSANDRA-13064</a>) adds an <code class="docutils literal notranslate"><span class="pre">enum</span></code> to distinguish between the different types  of streams.  Stream types are available both in a stream request and a stream task. The different stream types are:</p>
+<ul class="simple">
+<li>Restore replica count</li>
+<li>Unbootstrap</li>
+<li>Relocation</li>
+<li>Bootstrap</li>
+<li>Rebuild</li>
+<li>Bulk Load</li>
+<li>Repair</li>
+</ul>
+</div>
+<div class="section" id="disallow-decommission-when-number-of-replicas-will-drop-below-configured-rf">
+<h2>Disallow Decommission when number of Replicas will drop below configured RF<a class="headerlink" href="#disallow-decommission-when-number-of-replicas-will-drop-below-configured-rf" title="Permalink to this headline">¶</a></h2>
+<p><a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12510">CASSANDRA-12510</a> guards against decommission that will drop # of replicas below configured replication factor (RF), and adds the <code class="docutils literal notranslate"><span class="pre">--force</span></code> option that allows decommission to continue if intentional; force decommission of this node even when it reduces the number of replicas to below configured RF.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="transientreplication.html" class="btn btn-default pull-right " role="button" title="Transient Replication" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="messaging.html" class="btn btn-default" role="button" title="Improved Internode Messaging" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/new/transientreplication.html b/src/doc/4.0-rc1/new/transientreplication.html
new file mode 100644
index 0000000..debf7a9
--- /dev/null
+++ b/src/doc/4.0-rc1/new/transientreplication.html
@@ -0,0 +1,228 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "New Features in Apache Cassandra 4.0"
+
+doc-title: "Transient Replication"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="New Features in Apache Cassandra 4.0" href="index.html"/>
+      <link rel="next" title="Architecture" href="../architecture/index.html"/>
+      <link rel="prev" title="Improved Streaming" href="streaming.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">New Features in Apache Cassandra 4.0</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="java11.html">Support for Java 11</a></li>
+<li class="toctree-l2"><a class="reference internal" href="virtualtables.html">Virtual Tables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html">Audit Logging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html">Full Query Logging (FQL)</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html">Improved Internode Messaging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html">Improved Streaming</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Transient Replication</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#objective">Objective</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#enabling-transient-replication">Enabling Transient Replication</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cheap-quorums">Cheap Quorums</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#speculative-write-option">Speculative Write Option</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#pending-ranges-and-transient-replicas">Pending Ranges and Transient Replicas</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#read-repair-and-transient-replicas">Read Repair and Transient Replicas</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#transitioning-between-full-replicas-and-transient-replicas">Transitioning between Full Replicas and Transient Replicas</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#transient-replication-supports-each-quorum">Transient Replication supports EACH_QUORUM</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="transient-replication">
+<h1>Transient Replication<a class="headerlink" href="#transient-replication" title="Permalink to this headline">¶</a></h1>
+<p><strong>Note</strong>:</p>
+<p>Transient Replication (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14404">CASSANDRA-14404</a>) is an experimental feature designed for expert Apache Cassandra users who are able to validate every aspect of the database for their application and deployment.
+That means being able to check that operations like reads, writes, decommission, remove, rebuild, repair, and replace all work with your queries, data, configuration, operational practices, and availability requirements.
+Apache Cassandra 4.0 has the initial implementation of transient replication. Future releases of Cassandra will make this feature suitable for a wider audience.
+It is anticipated that a future version will support monotonic reads with transient replication as well as LWT, logged batches, and counters. Being experimental, Transient replication is <strong>not</strong> recommended for production use.</p>
+<div class="section" id="objective">
+<h2>Objective<a class="headerlink" href="#objective" title="Permalink to this headline">¶</a></h2>
+<p>The objective of transient replication is to decouple storage requirements from data redundancy (or consensus group size) using incremental repair, in order to reduce storage overhead.
+Certain nodes act as full replicas (storing all the data for a given token range), and some nodes act as transient replicas, storing only unrepaired data for the same token ranges.</p>
+<p>The optimization that is made possible with transient replication is called “Cheap quorums”, which implies that data redundancy is increased without corresponding increase in storage usage.</p>
+<p>Transient replication is useful when sufficient full replicas are available to receive and store all the data.
+Transient replication allows you to configure a subset of replicas to only replicate data that hasn’t been incrementally repaired.
+As an optimization, we can avoid writing data to a transient replica if we have successfully written data to the full replicas.</p>
+<p>After incremental repair, transient data stored on transient replicas can be discarded.</p>
+</div>
+<div class="section" id="enabling-transient-replication">
+<h2>Enabling Transient Replication<a class="headerlink" href="#enabling-transient-replication" title="Permalink to this headline">¶</a></h2>
+<p>Transient replication is not enabled by default.  Transient replication must be enabled on each node in a cluster separately by setting the following configuration property in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">enable_transient_replication</span><span class="p">:</span> <span class="n">true</span>
+</pre></div>
+</div>
+<p>Transient replication may be configured with both <code class="docutils literal notranslate"><span class="pre">SimpleStrategy</span></code> and <code class="docutils literal notranslate"><span class="pre">NetworkTopologyStrategy</span></code>. Transient replication is configured by setting replication factor as <code class="docutils literal notranslate"><span class="pre">&lt;total_replicas&gt;/&lt;transient_replicas&gt;</span></code>.</p>
+<p>As an example, create a keyspace with replication factor (RF) 3.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">CREATE</span> <span class="n">KEYSPACE</span> <span class="n">CassandraKeyspaceSimple</span> <span class="n">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;SimpleStrategy&#39;</span><span class="p">,</span>
+<span class="s1">&#39;replication_factor&#39;</span> <span class="p">:</span> <span class="mi">3</span><span class="o">/</span><span class="mi">1</span><span class="p">};</span>
+</pre></div>
+</div>
+<p>As another example, <code class="docutils literal notranslate"><span class="pre">some_keysopace</span> <span class="pre">keyspace</span></code> will have 3 replicas in DC1, 1 of which is transient, and 5 replicas in DC2, 2 of which are transient:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">CREATE</span> <span class="n">KEYSPACE</span> <span class="n">some_keysopace</span> <span class="n">WITH</span> <span class="n">replication</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;NetworkTopologyStrategy&#39;</span><span class="p">,</span>
+<span class="s1">&#39;DC1&#39;</span> <span class="p">:</span> <span class="s1">&#39;3/1&#39;&#39;, &#39;</span><span class="n">DC2</span><span class="s1">&#39; : &#39;</span><span class="mi">5</span><span class="o">/</span><span class="mi">2</span><span class="s1">&#39;};</span>
+</pre></div>
+</div>
+<p>Transiently replicated keyspaces only support tables with <code class="docutils literal notranslate"><span class="pre">read_repair</span></code> set to <code class="docutils literal notranslate"><span class="pre">NONE</span></code>.</p>
+<p>Important Restrictions:</p>
+<ul class="simple">
+<li>RF cannot be altered while some endpoints are not in a normal state (no range movements).</li>
+<li>You can’t add full replicas if there are any transient replicas. You must first remove all transient replicas, then change the # of full replicas, then add back the transient replicas.</li>
+<li>You can only safely increase number of transients one at a time with incremental repair run in between each time.</li>
+</ul>
+<p>Additionally, transient replication cannot be used for:</p>
+<ul class="simple">
+<li>Monotonic Reads</li>
+<li>Lightweight Transactions (LWTs)</li>
+<li>Logged Batches</li>
+<li>Counters</li>
+<li>Keyspaces using materialized views</li>
+<li>Secondary indexes (2i)</li>
+</ul>
+</div>
+<div class="section" id="cheap-quorums">
+<h2>Cheap Quorums<a class="headerlink" href="#cheap-quorums" title="Permalink to this headline">¶</a></h2>
+<p>Cheap quorums are a set of optimizations on the write path to avoid writing to transient replicas unless sufficient full replicas are not available to satisfy the requested consistency level.
+Hints are never written for transient replicas.  Optimizations on the read path prefer reading from transient replicas.
+When writing at quorum to a table configured to use transient replication the quorum will always prefer available full
+replicas over transient replicas so that transient replicas don’t have to process writes. Tail latency is reduced by
+rapid write protection (similar to rapid read protection) when full replicas are slow or unavailable by sending writes
+to transient replicas. Transient replicas can serve reads faster as they don’t have to do anything beyond bloom filter
+checks if they have no data. With vnodes and large cluster sizes they will not have a large quantity of data
+even for failure of one or more full replicas where transient replicas start to serve a steady amount of write traffic
+for some of their transiently replicated ranges.</p>
+</div>
+<div class="section" id="speculative-write-option">
+<h2>Speculative Write Option<a class="headerlink" href="#speculative-write-option" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> adds an option <code class="docutils literal notranslate"><span class="pre">speculative_write_threshold</span></code> for  use with transient replicas. The option is of type <code class="docutils literal notranslate"><span class="pre">simple</span></code> with default value as <code class="docutils literal notranslate"><span class="pre">99PERCENTILE</span></code>. When replicas are slow or unresponsive  <code class="docutils literal notranslate"><span class="pre">speculative_write_threshold</span></code> specifies the threshold at which a cheap quorum write will be upgraded to include transient replicas.</p>
+</div>
+<div class="section" id="pending-ranges-and-transient-replicas">
+<h2>Pending Ranges and Transient Replicas<a class="headerlink" href="#pending-ranges-and-transient-replicas" title="Permalink to this headline">¶</a></h2>
+<p>Pending ranges refers to the movement of token ranges between transient replicas. When a transient range is moved, there
+will be a period of time where both transient replicas would need to receive any write intended for the logical
+transient replica so that after the movement takes effect a read quorum is able to return a response. Nodes are <em>not</em>
+temporarily transient replicas during expansion. They stream data like a full replica for the transient range before they
+can serve reads. A pending state is incurred similar to how there is a pending state for full replicas. Transient replicas
+also always receive writes when they are pending. Pending transient ranges are sent a bit more data and reading from
+them is avoided.</p>
+</div>
+<div class="section" id="read-repair-and-transient-replicas">
+<h2>Read Repair and Transient Replicas<a class="headerlink" href="#read-repair-and-transient-replicas" title="Permalink to this headline">¶</a></h2>
+<p>Read repair never attempts to repair a transient replica. Reads will always include at least one full replica.
+They should also prefer transient replicas where possible. Range scans ensure the entire scanned range performs
+replica selection that satisfies the requirement that every range scanned includes one full replica. During incremental
+&amp; validation repair handling, at transient replicas anti-compaction does not output any data for transient ranges as the
+data will be dropped after repair, and  transient replicas never have data streamed to them.</p>
+</div>
+<div class="section" id="transitioning-between-full-replicas-and-transient-replicas">
+<h2>Transitioning between Full Replicas and Transient Replicas<a class="headerlink" href="#transitioning-between-full-replicas-and-transient-replicas" title="Permalink to this headline">¶</a></h2>
+<p>The additional state transitions that transient replication introduces requires streaming and <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">cleanup</span></code> to
+behave differently.  When data is streamed it is ensured that it is streamed from a full replica and not a transient replica.</p>
+<p>Transitioning from not replicated to transiently replicated means that a node must stay pending until the next incremental
+repair completes at which point the data for that range is known to be available at full replicas.</p>
+<p>Transitioning from transiently replicated to fully replicated requires streaming from a full replica and is identical
+to how data is streamed when transitioning from not replicated to replicated. The transition is managed so the transient
+replica is not read from as a full replica until streaming completes. It can be used immediately for a write quorum.</p>
+<p>Transitioning from fully replicated to transiently replicated requires cleanup to remove repaired data from the transiently
+replicated range to reclaim space. It can be used immediately for a write quorum.</p>
+<p>Transitioning from transiently replicated to not replicated requires cleanup to be run to remove the formerly transiently replicated data.</p>
+<p>When transient replication is in use ring changes are supported including   add/remove node, change RF, add/remove DC.</p>
+</div>
+<div class="section" id="transient-replication-supports-each-quorum">
+<h2>Transient Replication supports EACH_QUORUM<a class="headerlink" href="#transient-replication-supports-each-quorum" title="Permalink to this headline">¶</a></h2>
+<p>(<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14727">CASSANDRA-14727</a>) adds support for Transient Replication support for <code class="docutils literal notranslate"><span class="pre">EACH_QUORUM</span></code>. Per (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14768">CASSANDRA-14768</a>), we ensure we write to at least a <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code> of nodes in every DC,
+regardless of how many responses we need to wait for and our requested consistency level. This is to minimally surprise
+users with transient replication; with normal writes, we soft-ensure that we reach <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code> in all DCs we are able to,
+by writing to every node; even if we don’t wait for ACK, we have in both cases sent sufficient messages.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../architecture/index.html" class="btn btn-default pull-right " role="button" title="Architecture" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="streaming.html" class="btn btn-default" role="button" title="Improved Streaming" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/new/virtualtables.html b/src/doc/4.0-rc1/new/virtualtables.html
new file mode 100644
index 0000000..d5b1e5d
--- /dev/null
+++ b/src/doc/4.0-rc1/new/virtualtables.html
@@ -0,0 +1,426 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "New Features in Apache Cassandra 4.0"
+
+doc-title: "Virtual Tables"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="New Features in Apache Cassandra 4.0" href="index.html"/>
+      <link rel="next" title="Audit Logging" href="auditlogging.html"/>
+      <link rel="prev" title="Support for Java 11" href="java11.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">New Features in Apache Cassandra 4.0</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="java11.html">Support for Java 11</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Virtual Tables</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#definition">Definition</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#objective">Objective</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#how-are-virtual-tables-different-from-regular-tables">How  are Virtual Tables different from regular tables?</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#virtual-keyspaces">Virtual Keyspaces</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#virtual-table-limitations">Virtual Table Limitations</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#listing-and-describing-virtual-tables">Listing and Describing Virtual Tables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#the-system-virtual-schema-keyspace">The system_virtual_schema keyspace</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="auditlogging.html">Audit Logging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="fqllogging.html">Full Query Logging (FQL)</a></li>
+<li class="toctree-l2"><a class="reference internal" href="messaging.html">Improved Internode Messaging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="streaming.html">Improved Streaming</a></li>
+<li class="toctree-l2"><a class="reference internal" href="transientreplication.html">Transient Replication</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="virtual-tables">
+<h1>Virtual Tables<a class="headerlink" href="#virtual-tables" title="Permalink to this headline">¶</a></h1>
+<p>Apache Cassandra 4.0 implements virtual tables (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-7622">CASSANDRA-7622</a>).</p>
+<div class="section" id="definition">
+<h2>Definition<a class="headerlink" href="#definition" title="Permalink to this headline">¶</a></h2>
+<p>A virtual table is a table that is backed by an API instead of data explicitly managed and stored as SSTables. Apache Cassandra 4.0 implements a virtual keyspace interface for virtual tables. Virtual tables are specific to each node.</p>
+</div>
+<div class="section" id="objective">
+<h2>Objective<a class="headerlink" href="#objective" title="Permalink to this headline">¶</a></h2>
+<p>A virtual table could have several uses including:</p>
+<ul class="simple">
+<li>Expose metrics through CQL</li>
+<li>Expose YAML configuration information</li>
+</ul>
+</div>
+<div class="section" id="how-are-virtual-tables-different-from-regular-tables">
+<h2>How  are Virtual Tables different from regular tables?<a class="headerlink" href="#how-are-virtual-tables-different-from-regular-tables" title="Permalink to this headline">¶</a></h2>
+<p>Virtual tables and virtual keyspaces are quite different from regular tables and keyspaces respectively such as:</p>
+<ul class="simple">
+<li>Virtual tables are read-only, but it is likely to change</li>
+<li>Virtual tables are not replicated</li>
+<li>Virtual tables are local only and non distributed</li>
+<li>Virtual tables have no associated SSTables</li>
+<li>Consistency level of the queries sent virtual tables are ignored</li>
+<li>Virtual tables are managed by Cassandra and a user cannot run  DDL to create new virtual tables or DML to modify existing virtual       tables</li>
+<li>Virtual tables are created in special keyspaces and not just any keyspace</li>
+<li>All existing virtual tables use <code class="docutils literal notranslate"><span class="pre">LocalPartitioner</span></code>. Since a virtual table is not replicated the partitioner sorts in order of     partition   keys instead of by their hash.</li>
+<li>Making advanced queries with <code class="docutils literal notranslate"><span class="pre">ALLOW</span> <span class="pre">FILTERING</span></code> and aggregation functions may be used with virtual tables even though in normal  tables we   don’t recommend it</li>
+</ul>
+</div>
+<div class="section" id="virtual-keyspaces">
+<h2>Virtual Keyspaces<a class="headerlink" href="#virtual-keyspaces" title="Permalink to this headline">¶</a></h2>
+<p>Apache Cassandra 4.0 has added two new keyspaces for virtual tables: <code class="docutils literal notranslate"><span class="pre">system_virtual_schema</span></code> and <code class="docutils literal notranslate"><span class="pre">system_views</span></code>. Run the following command to list the keyspaces:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="o">&gt;</span> <span class="n">DESC</span> <span class="n">KEYSPACES</span><span class="p">;</span>
+<span class="n">system_schema</span>  <span class="n">system</span>       <span class="n">system_distributed</span>  <span class="n">system_virtual_schema</span>
+<span class="n">system_auth</span>      <span class="n">system_traces</span>       <span class="n">system_views</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">system_virtual_schema</span> <span class="pre">keyspace</span></code> contains schema information on virtual tables. The <code class="docutils literal notranslate"><span class="pre">system_views</span></code> keyspace contains the actual virtual tables.</p>
+</div>
+<div class="section" id="virtual-table-limitations">
+<h2>Virtual Table Limitations<a class="headerlink" href="#virtual-table-limitations" title="Permalink to this headline">¶</a></h2>
+<p>Virtual tables and virtual keyspaces have some limitations initially though some of these could change such as:</p>
+<ul class="simple">
+<li>Cannot alter or drop virtual keyspaces or tables</li>
+<li>Cannot truncate virtual tables</li>
+<li>Expiring columns are not supported by virtual tables</li>
+<li>Conditional updates are not supported by virtual tables</li>
+<li>Cannot create tables in virtual keyspaces</li>
+<li>Cannot perform any operations against virtual keyspace</li>
+<li>Secondary indexes are not supported on virtual tables</li>
+<li>Cannot create functions in virtual keyspaces</li>
+<li>Cannot create types in virtual keyspaces</li>
+<li>Materialized views are not supported on virtual tables</li>
+<li>Virtual tables don’t support <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> statements</li>
+<li>Cannot <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TRIGGER</span></code> against a virtual table</li>
+<li>Conditional <code class="docutils literal notranslate"><span class="pre">BATCH</span></code> statements cannot include mutations for virtual tables</li>
+<li>Cannot include a virtual table statement in a logged batch</li>
+<li>Mutations for virtual and regular tables cannot exist in the same batch</li>
+<li>Cannot create aggregates in virtual keyspaces; but may run aggregate functions on select</li>
+</ul>
+</div>
+<div class="section" id="listing-and-describing-virtual-tables">
+<h2>Listing and Describing Virtual Tables<a class="headerlink" href="#listing-and-describing-virtual-tables" title="Permalink to this headline">¶</a></h2>
+<p>Virtual tables in a virtual keyspace may be listed with <code class="docutils literal notranslate"><span class="pre">DESC</span> <span class="pre">TABLES</span></code>.  The <code class="docutils literal notranslate"><span class="pre">system_views</span></code> virtual keyspace tables include the following:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="o">&gt;</span> <span class="n">USE</span> <span class="n">system_views</span><span class="p">;</span>
+<span class="n">cqlsh</span><span class="p">:</span><span class="n">system_views</span><span class="o">&gt;</span> <span class="n">DESC</span> <span class="n">TABLES</span><span class="p">;</span>
+<span class="n">coordinator_scans</span>   <span class="n">clients</span>             <span class="n">tombstones_scanned</span>  <span class="n">internode_inbound</span>
+<span class="n">disk_usage</span>          <span class="n">sstable_tasks</span>       <span class="n">live_scanned</span>        <span class="n">caches</span>
+<span class="n">local_writes</span>        <span class="n">max_partition_size</span>  <span class="n">local_reads</span>
+<span class="n">coordinator_writes</span>  <span class="n">internode_outbound</span>  <span class="n">thread_pools</span>
+<span class="n">local_scans</span>         <span class="n">coordinator_reads</span>   <span class="n">settings</span>
+</pre></div>
+</div>
+<p>Some of the salient virtual tables in <code class="docutils literal notranslate"><span class="pre">system_views</span></code> virtual keyspace are described in Table 1.</p>
+<p>Table 1 : Virtual Tables in system_views</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="26%" />
+<col width="74%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Virtual Table</td>
+<td>Description</td>
+</tr>
+<tr class="row-even"><td>clients</td>
+<td>Lists information about all connected clients.</td>
+</tr>
+<tr class="row-odd"><td>disk_usage</td>
+<td>Disk usage including disk_space, keyspace_name,
+and table_name by system keyspaces.</td>
+</tr>
+<tr class="row-even"><td>local_writes</td>
+<td>A table metric for local writes
+including count, keyspace_name,
+max, median, per_second, and
+table_name.</td>
+</tr>
+<tr class="row-odd"><td>caches</td>
+<td>Displays the general cache information including
+cache name, capacity_bytes, entry_count, hit_count,
+hit_ratio double, recent_hit_rate_per_second,
+recent_request_rate_per_second, request_count, and
+size_bytes.</td>
+</tr>
+<tr class="row-even"><td>local_reads</td>
+<td>A table metric for  local reads information.</td>
+</tr>
+<tr class="row-odd"><td>sstable_tasks</td>
+<td>Lists currently running tasks such as compactions
+and upgrades on SSTables.</td>
+</tr>
+<tr class="row-even"><td>internode_inbound</td>
+<td>Lists information about the inbound
+internode messaging.</td>
+</tr>
+<tr class="row-odd"><td>thread_pools</td>
+<td>Lists metrics for each thread pool.</td>
+</tr>
+<tr class="row-even"><td>settings</td>
+<td>Displays configuration settings in cassandra.yaml.</td>
+</tr>
+<tr class="row-odd"><td>max_partition_size</td>
+<td>A table metric for maximum partition size.</td>
+</tr>
+<tr class="row-even"><td>internode_outbound</td>
+<td>Information about the outbound internode messaging.</td>
+</tr>
+</tbody>
+</table>
+<p>We shall discuss some of the virtual tables in more detail next.</p>
+<div class="section" id="clients-virtual-table">
+<h3>Clients Virtual Table<a class="headerlink" href="#clients-virtual-table" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">clients</span></code> virtual table lists all active connections (connected clients) including their ip address, port, connection stage, driver name, driver version, hostname, protocol version, request count, ssl enabled, ssl protocol and user name:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="p">:</span><span class="n">system_views</span><span class="o">&gt;</span> <span class="n">select</span> <span class="o">*</span> <span class="kn">from</span> <span class="nn">system_views.clients</span><span class="p">;</span>
+ <span class="n">address</span>   <span class="o">|</span> <span class="n">port</span>  <span class="o">|</span> <span class="n">connection_stage</span> <span class="o">|</span> <span class="n">driver_name</span> <span class="o">|</span> <span class="n">driver_version</span> <span class="o">|</span> <span class="n">hostname</span>  <span class="o">|</span> <span class="n">protocol_version</span> <span class="o">|</span> <span class="n">request_count</span> <span class="o">|</span> <span class="n">ssl_cipher_suite</span> <span class="o">|</span> <span class="n">ssl_enabled</span> <span class="o">|</span> <span class="n">ssl_protocol</span> <span class="o">|</span> <span class="n">username</span>
+<span class="o">-----------+-------+------------------+-------------+----------------+-----------+------------------+---------------+------------------+-------------+--------------+-----------</span>
+ <span class="mf">127.0</span><span class="o">.</span><span class="mf">0.1</span> <span class="o">|</span> <span class="mi">50628</span> <span class="o">|</span>            <span class="n">ready</span> <span class="o">|</span>        <span class="n">null</span> <span class="o">|</span>           <span class="n">null</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span>                <span class="mi">4</span> <span class="o">|</span>            <span class="mi">55</span> <span class="o">|</span>             <span class="n">null</span> <span class="o">|</span>       <span class="kc">False</span> <span class="o">|</span>         <span class="n">null</span> <span class="o">|</span> <span class="n">anonymous</span>
+ <span class="mf">127.0</span><span class="o">.</span><span class="mf">0.1</span> <span class="o">|</span> <span class="mi">50630</span> <span class="o">|</span>            <span class="n">ready</span> <span class="o">|</span>        <span class="n">null</span> <span class="o">|</span>           <span class="n">null</span> <span class="o">|</span> <span class="n">localhost</span> <span class="o">|</span>                <span class="mi">4</span> <span class="o">|</span>            <span class="mi">70</span> <span class="o">|</span>             <span class="n">null</span> <span class="o">|</span>       <span class="kc">False</span> <span class="o">|</span>         <span class="n">null</span> <span class="o">|</span> <span class="n">anonymous</span>
+
+<span class="p">(</span><span class="mi">2</span> <span class="n">rows</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Some examples of how <code class="docutils literal notranslate"><span class="pre">clients</span></code> can be used are:</p>
+<ul class="simple">
+<li>To find applications using old incompatible versions of   drivers before upgrading and with <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">enableoldprotocolversions</span></code> and  <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">disableoldprotocolversions</span></code> during upgrades.</li>
+<li>To identify clients sending too many requests.</li>
+<li>To find if SSL is enabled during the migration to and from   ssl.</li>
+</ul>
+<p>The virtual tables may be described with <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code> statement. The DDL listed however cannot be run to create a virtual table. As an example describe the <code class="docutils literal notranslate"><span class="pre">system_views.clients</span></code> virtual table:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">cqlsh</span><span class="p">:</span><span class="n">system_views</span><span class="o">&gt;</span> <span class="n">DESC</span> <span class="n">TABLE</span> <span class="n">system_views</span><span class="o">.</span><span class="n">clients</span><span class="p">;</span>
+<span class="n">CREATE</span> <span class="n">TABLE</span> <span class="n">system_views</span><span class="o">.</span><span class="n">clients</span> <span class="p">(</span>
+   <span class="n">address</span> <span class="n">inet</span><span class="p">,</span>
+   <span class="n">connection_stage</span> <span class="n">text</span><span class="p">,</span>
+   <span class="n">driver_name</span> <span class="n">text</span><span class="p">,</span>
+   <span class="n">driver_version</span> <span class="n">text</span><span class="p">,</span>
+   <span class="n">hostname</span> <span class="n">text</span><span class="p">,</span>
+   <span class="n">port</span> <span class="nb">int</span><span class="p">,</span>
+   <span class="n">protocol_version</span> <span class="nb">int</span><span class="p">,</span>
+   <span class="n">request_count</span> <span class="n">bigint</span><span class="p">,</span>
+   <span class="n">ssl_cipher_suite</span> <span class="n">text</span><span class="p">,</span>
+   <span class="n">ssl_enabled</span> <span class="n">boolean</span><span class="p">,</span>
+   <span class="n">ssl_protocol</span> <span class="n">text</span><span class="p">,</span>
+   <span class="n">username</span> <span class="n">text</span><span class="p">,</span>
+   <span class="n">PRIMARY</span> <span class="n">KEY</span> <span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="n">port</span><span class="p">))</span> <span class="n">WITH</span> <span class="n">CLUSTERING</span> <span class="n">ORDER</span> <span class="n">BY</span> <span class="p">(</span><span class="n">port</span> <span class="n">ASC</span><span class="p">)</span>
+   <span class="n">AND</span> <span class="n">compaction</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;None&#39;</span><span class="p">}</span>
+   <span class="n">AND</span> <span class="n">compression</span> <span class="o">=</span> <span class="p">{};</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="caches-virtual-table">
+<h3>Caches Virtual Table<a class="headerlink" href="#caches-virtual-table" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">caches</span></code> virtual table lists information about the  caches. The four caches presently created are chunks, counters, keys and rows. A query on the <code class="docutils literal notranslate"><span class="pre">caches</span></code> virtual table returns the following details:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="p">:</span><span class="n">system_views</span><span class="o">&gt;</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system_views</span><span class="o">.</span><span class="n">caches</span><span class="p">;</span>
+<span class="n">name</span>     <span class="o">|</span> <span class="n">capacity_bytes</span> <span class="o">|</span> <span class="n">entry_count</span> <span class="o">|</span> <span class="n">hit_count</span> <span class="o">|</span> <span class="n">hit_ratio</span> <span class="o">|</span> <span class="n">recent_hit_rate_per_second</span> <span class="o">|</span> <span class="n">recent_request_rate_per_second</span> <span class="o">|</span> <span class="n">request_count</span> <span class="o">|</span> <span class="n">size_bytes</span>
+<span class="o">---------+----------------+-------------+-----------+-----------+----------------------------+--------------------------------+---------------+------------</span>
+  <span class="n">chunks</span> <span class="o">|</span>      <span class="mi">229638144</span> <span class="o">|</span>          <span class="mi">29</span> <span class="o">|</span>       <span class="mi">166</span> <span class="o">|</span>      <span class="mf">0.83</span> <span class="o">|</span>                          <span class="mi">5</span> <span class="o">|</span>                              <span class="mi">6</span> <span class="o">|</span>           <span class="mi">200</span> <span class="o">|</span>     <span class="mi">475136</span>
+<span class="n">counters</span> <span class="o">|</span>       <span class="mi">26214400</span> <span class="o">|</span>           <span class="mi">0</span> <span class="o">|</span>         <span class="mi">0</span> <span class="o">|</span>       <span class="n">NaN</span> <span class="o">|</span>                          <span class="mi">0</span> <span class="o">|</span>                              <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>          <span class="mi">0</span>
+    <span class="n">keys</span> <span class="o">|</span>       <span class="mi">52428800</span> <span class="o">|</span>          <span class="mi">14</span> <span class="o">|</span>       <span class="mi">124</span> <span class="o">|</span>  <span class="mf">0.873239</span> <span class="o">|</span>                          <span class="mi">4</span> <span class="o">|</span>                              <span class="mi">4</span> <span class="o">|</span>           <span class="mi">142</span> <span class="o">|</span>       <span class="mi">1248</span>
+    <span class="n">rows</span> <span class="o">|</span>              <span class="mi">0</span> <span class="o">|</span>           <span class="mi">0</span> <span class="o">|</span>         <span class="mi">0</span> <span class="o">|</span>       <span class="n">NaN</span> <span class="o">|</span>                          <span class="mi">0</span> <span class="o">|</span>                              <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>          <span class="mi">0</span>
+
+<span class="p">(</span><span class="mi">4</span> <span class="n">rows</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="settings-virtual-table">
+<h3>Settings Virtual Table<a class="headerlink" href="#settings-virtual-table" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">settings</span></code> table  is rather useful and lists all the current configuration settings from the <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>.  The encryption options are overridden to hide the sensitive truststore information or passwords.  The configuration settings however cannot be set using DML  on the virtual table presently:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="p">:</span><span class="n">system_views</span><span class="o">&gt;</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system_views</span><span class="o">.</span><span class="n">settings</span><span class="p">;</span>
+
+<span class="n">name</span>                                 <span class="o">|</span> <span class="n">value</span>
+<span class="o">-------------------------------------+--------------------</span>
+  <span class="n">allocate_tokens_for_keyspace</span>       <span class="o">|</span> <span class="n">null</span>
+  <span class="n">audit_logging_options_enabled</span>      <span class="o">|</span> <span class="n">false</span>
+  <span class="n">auto_snapshot</span>                      <span class="o">|</span> <span class="n">true</span>
+  <span class="n">automatic_sstable_upgrade</span>          <span class="o">|</span> <span class="n">false</span>
+  <span class="n">cluster_name</span>                       <span class="o">|</span> <span class="n">Test</span> <span class="n">Cluster</span>
+  <span class="n">enable_transient_replication</span>       <span class="o">|</span> <span class="n">false</span>
+  <span class="n">hinted_handoff_enabled</span>             <span class="o">|</span> <span class="n">true</span>
+  <span class="n">hints_directory</span>                    <span class="o">|</span> <span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">ec2</span><span class="o">-</span><span class="n">user</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">hints</span>
+  <span class="n">incremental_backups</span>                <span class="o">|</span> <span class="n">false</span>
+  <span class="n">initial_token</span>                      <span class="o">|</span> <span class="n">null</span>
+                           <span class="o">...</span>
+                           <span class="o">...</span>
+                           <span class="o">...</span>
+  <span class="n">rpc_address</span>                        <span class="o">|</span> <span class="n">localhost</span>
+  <span class="n">ssl_storage_port</span>                   <span class="o">|</span> <span class="mi">7001</span>
+  <span class="n">start_native_transport</span>             <span class="o">|</span> <span class="n">true</span>
+  <span class="n">storage_port</span>                       <span class="o">|</span> <span class="mi">7000</span>
+  <span class="n">stream_entire_sstables</span>             <span class="o">|</span> <span class="n">true</span>
+  <span class="p">(</span><span class="mi">224</span> <span class="n">rows</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">settings</span></code> table can be really useful if yaml file has been changed since startup and don’t know running configuration, or to find if they have been modified via jmx/nodetool or virtual tables.</p>
+</div>
+<div class="section" id="thread-pools-virtual-table">
+<h3>Thread Pools Virtual Table<a class="headerlink" href="#thread-pools-virtual-table" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">thread_pools</span></code> table lists information about all thread pools. Thread pool information includes active tasks, active tasks limit, blocked tasks, blocked tasks all time,  completed tasks, and pending tasks. A query on the <code class="docutils literal notranslate"><span class="pre">thread_pools</span></code> returns following details:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="p">:</span><span class="n">system_views</span><span class="o">&gt;</span> <span class="n">select</span> <span class="o">*</span> <span class="kn">from</span> <span class="nn">system_views.thread_pools</span><span class="p">;</span>
+
+<span class="n">name</span>                         <span class="o">|</span> <span class="n">active_tasks</span> <span class="o">|</span> <span class="n">active_tasks_limit</span> <span class="o">|</span> <span class="n">blocked_tasks</span> <span class="o">|</span> <span class="n">blocked_tasks_all_time</span> <span class="o">|</span> <span class="n">completed_tasks</span> <span class="o">|</span> <span class="n">pending_tasks</span>
+<span class="o">------------------------------+--------------+--------------------+---------------+------------------------+-----------------+---------------</span>
+            <span class="n">AntiEntropyStage</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+        <span class="n">CacheCleanupExecutor</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+          <span class="n">CompactionExecutor</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">2</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>             <span class="mi">881</span> <span class="o">|</span>             <span class="mi">0</span>
+        <span class="n">CounterMutationStage</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                 <span class="mi">32</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+                 <span class="n">GossipStage</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+             <span class="n">HintsDispatcher</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">2</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+       <span class="n">InternalResponseStage</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">2</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+         <span class="n">MemtableFlushWriter</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">2</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span>
+           <span class="n">MemtablePostFlush</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">2</span> <span class="o">|</span>             <span class="mi">0</span>
+       <span class="n">MemtableReclaimMemory</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span>
+              <span class="n">MigrationStage</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+                   <span class="n">MiscStage</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+               <span class="n">MutationStage</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                 <span class="mi">32</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+   <span class="n">Native</span><span class="o">-</span><span class="n">Transport</span><span class="o">-</span><span class="n">Requests</span> <span class="o">|</span>            <span class="mi">1</span> <span class="o">|</span>                <span class="mi">128</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>             <span class="mi">130</span> <span class="o">|</span>             <span class="mi">0</span>
+      <span class="n">PendingRangeCalculator</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span>
+<span class="n">PerDiskMemtableFlushWriter_0</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">2</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span>
+                   <span class="n">ReadStage</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                 <span class="mi">32</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>              <span class="mi">13</span> <span class="o">|</span>             <span class="mi">0</span>
+                 <span class="n">Repair</span><span class="o">-</span><span class="n">Task</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>         <span class="mi">2147483647</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+        <span class="n">RequestResponseStage</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">2</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+                     <span class="n">Sampler</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+    <span class="n">SecondaryIndexManagement</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+          <span class="n">ValidationExecutor</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>         <span class="mi">2147483647</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+           <span class="n">ViewBuildExecutor</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                  <span class="mi">1</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+           <span class="n">ViewMutationStage</span> <span class="o">|</span>            <span class="mi">0</span> <span class="o">|</span>                 <span class="mi">32</span> <span class="o">|</span>             <span class="mi">0</span> <span class="o">|</span>                      <span class="mi">0</span> <span class="o">|</span>               <span class="mi">0</span> <span class="o">|</span>             <span class="mi">0</span>
+</pre></div>
+</div>
+<p>(24 rows)</p>
+</div>
+<div class="section" id="internode-inbound-messaging-virtual-table">
+<h3>Internode Inbound Messaging Virtual Table<a class="headerlink" href="#internode-inbound-messaging-virtual-table" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">internode_inbound</span></code>  virtual table is for the internode inbound messaging. Initially no internode inbound messaging may get listed. In addition to the address, port, datacenter and rack information includes  corrupt frames recovered, corrupt frames unrecovered, error bytes, error count, expired bytes, expired count, processed bytes, processed count, received bytes, received count, scheduled bytes, scheduled count, throttled count, throttled nanos, using bytes, using reserve bytes. A query on the <code class="docutils literal notranslate"><span class="pre">internode_inbound</span></code> returns following details:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="p">:</span><span class="n">system_views</span><span class="o">&gt;</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">system_views</span><span class="o">.</span><span class="n">internode_inbound</span><span class="p">;</span>
+<span class="n">address</span> <span class="o">|</span> <span class="n">port</span> <span class="o">|</span> <span class="n">dc</span> <span class="o">|</span> <span class="n">rack</span> <span class="o">|</span> <span class="n">corrupt_frames_recovered</span> <span class="o">|</span> <span class="n">corrupt_frames_unrecovered</span> <span class="o">|</span>
+<span class="n">error_bytes</span> <span class="o">|</span> <span class="n">error_count</span> <span class="o">|</span> <span class="n">expired_bytes</span> <span class="o">|</span> <span class="n">expired_count</span> <span class="o">|</span> <span class="n">processed_bytes</span> <span class="o">|</span>
+<span class="n">processed_count</span> <span class="o">|</span> <span class="n">received_bytes</span> <span class="o">|</span> <span class="n">received_count</span> <span class="o">|</span> <span class="n">scheduled_bytes</span> <span class="o">|</span> <span class="n">scheduled_count</span> <span class="o">|</span> <span class="n">throttled_count</span> <span class="o">|</span> <span class="n">throttled_nanos</span> <span class="o">|</span> <span class="n">using_bytes</span> <span class="o">|</span> <span class="n">using_reserve_bytes</span>
+<span class="o">---------+------+----+------+--------------------------+----------------------------+-</span>
+<span class="o">----------</span>
+<span class="p">(</span><span class="mi">0</span> <span class="n">rows</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="sstables-tasks-virtual-table">
+<h3>SSTables Tasks Virtual Table<a class="headerlink" href="#sstables-tasks-virtual-table" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">sstable_tasks</span></code> could be used to get information about running tasks. It lists following columns:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="p">:</span><span class="n">system_views</span><span class="o">&gt;</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">sstable_tasks</span><span class="p">;</span>
+<span class="n">keyspace_name</span> <span class="o">|</span> <span class="n">table_name</span> <span class="o">|</span> <span class="n">task_id</span>                              <span class="o">|</span> <span class="n">kind</span>       <span class="o">|</span> <span class="n">progress</span> <span class="o">|</span> <span class="n">total</span>    <span class="o">|</span> <span class="n">unit</span>
+<span class="o">---------------+------------+--------------------------------------+------------+----------+----------+-------</span>
+       <span class="n">basic</span> <span class="o">|</span>      <span class="n">wide2</span> <span class="o">|</span> <span class="n">c3909740</span><span class="o">-</span><span class="n">cdf7</span><span class="o">-</span><span class="mf">11e9</span><span class="o">-</span><span class="n">a8ed</span><span class="o">-</span><span class="mi">0</span><span class="n">f03de2d9ae1</span> <span class="o">|</span> <span class="n">compaction</span> <span class="o">|</span> <span class="mi">60418761</span> <span class="o">|</span> <span class="mi">70882110</span> <span class="o">|</span> <span class="nb">bytes</span>
+       <span class="n">basic</span> <span class="o">|</span>      <span class="n">wide2</span> <span class="o">|</span> <span class="n">c7556770</span><span class="o">-</span><span class="n">cdf7</span><span class="o">-</span><span class="mf">11e9</span><span class="o">-</span><span class="n">a8ed</span><span class="o">-</span><span class="mi">0</span><span class="n">f03de2d9ae1</span> <span class="o">|</span> <span class="n">compaction</span> <span class="o">|</span>  <span class="mi">2995623</span> <span class="o">|</span> <span class="mi">40314679</span> <span class="o">|</span> <span class="nb">bytes</span>
+</pre></div>
+</div>
+<p>As another example, to find how much time is remaining for SSTable tasks, use the following query:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">total</span> <span class="o">-</span> <span class="n">progress</span> <span class="n">AS</span> <span class="n">remaining</span>
+<span class="n">FROM</span> <span class="n">system_views</span><span class="o">.</span><span class="n">sstable_tasks</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="other-virtual-tables">
+<h3>Other Virtual Tables<a class="headerlink" href="#other-virtual-tables" title="Permalink to this headline">¶</a></h3>
+<p>Some examples of using other virtual tables are as follows.</p>
+<p>Find tables with most disk usage:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="o">&gt;</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">disk_usage</span> <span class="n">WHERE</span> <span class="n">mebibytes</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="n">ALLOW</span> <span class="n">FILTERING</span><span class="p">;</span>
+
+<span class="n">keyspace_name</span> <span class="o">|</span> <span class="n">table_name</span> <span class="o">|</span> <span class="n">mebibytes</span>
+<span class="o">---------------+------------+-----------</span>
+   <span class="n">keyspace1</span> <span class="o">|</span>  <span class="n">standard1</span> <span class="o">|</span>       <span class="mi">288</span>
+  <span class="n">tlp_stress</span> <span class="o">|</span>   <span class="n">keyvalue</span> <span class="o">|</span>      <span class="mi">3211</span>
+</pre></div>
+</div>
+<p>Find queries on table/s with greatest read latency:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cqlsh</span><span class="o">&gt;</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span>  <span class="n">local_read_latency</span> <span class="n">WHERE</span> <span class="n">per_second</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="n">ALLOW</span> <span class="n">FILTERING</span><span class="p">;</span>
+
+<span class="n">keyspace_name</span> <span class="o">|</span> <span class="n">table_name</span> <span class="o">|</span> <span class="n">p50th_ms</span> <span class="o">|</span> <span class="n">p99th_ms</span> <span class="o">|</span> <span class="n">count</span>    <span class="o">|</span> <span class="n">max_ms</span>  <span class="o">|</span> <span class="n">per_second</span>
+<span class="o">---------------+------------+----------+----------+----------+---------+------------</span>
+  <span class="n">tlp_stress</span> <span class="o">|</span>   <span class="n">keyvalue</span> <span class="o">|</span>    <span class="mf">0.043</span> <span class="o">|</span>    <span class="mf">0.152</span> <span class="o">|</span> <span class="mi">49785158</span> <span class="o">|</span> <span class="mf">186.563</span> <span class="o">|</span>  <span class="mf">11418.356</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="the-system-virtual-schema-keyspace">
+<h2>The system_virtual_schema keyspace<a class="headerlink" href="#the-system-virtual-schema-keyspace" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">system_virtual_schema</span></code> keyspace has three tables: <code class="docutils literal notranslate"><span class="pre">keyspaces</span></code>,  <code class="docutils literal notranslate"><span class="pre">columns</span></code> and  <code class="docutils literal notranslate"><span class="pre">tables</span></code> for the virtual keyspace definitions, virtual table definitions, and virtual column definitions  respectively. It is used by Cassandra internally and a user would not need to access it directly.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="auditlogging.html" class="btn btn-default pull-right " role="button" title="Audit Logging" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="java11.html" class="btn btn-default" role="button" title="Support for Java 11" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/objects.inv b/src/doc/4.0-rc1/objects.inv
new file mode 100644
index 0000000..07014f4
--- /dev/null
+++ b/src/doc/4.0-rc1/objects.inv
Binary files differ
diff --git a/src/doc/4.0-rc1/operating/audit_logging.html b/src/doc/4.0-rc1/operating/audit_logging.html
new file mode 100644
index 0000000..184ec5d
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/audit_logging.html
@@ -0,0 +1,281 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Audit Logging"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="audit-logging">
+<h1>Audit Logging<a class="headerlink" href="#audit-logging" title="Permalink to this headline">¶</a></h1>
+<p>Audit logging in Cassandra logs every incoming CQL command request, Authentication (successful as well as unsuccessful login)
+to C* node. Currently, there are two implementations provided, the custom logger can be implemented and injected with the
+class name as a parameter in cassandra.yaml.</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">BinAuditLogger</span></code> An efficient way to log events to file in a binary format.</li>
+<li><code class="docutils literal notranslate"><span class="pre">FileAuditLogger</span></code> Logs events to  <code class="docutils literal notranslate"><span class="pre">audit/audit.log</span></code> file using slf4j logger.</li>
+</ul>
+<p><em>Recommendation</em> <code class="docutils literal notranslate"><span class="pre">BinAuditLogger</span></code> is a community recommended logger considering the performance</p>
+<div class="section" id="what-does-it-capture">
+<h2>What does it capture<a class="headerlink" href="#what-does-it-capture" title="Permalink to this headline">¶</a></h2>
+<p>Audit logging captures following events</p>
+<ul class="simple">
+<li>Successful as well as unsuccessful login attempts.</li>
+<li>All database commands executed via Native protocol (CQL) attempted or successfully executed.</li>
+</ul>
+</div>
+<div class="section" id="limitations">
+<h2>Limitations<a class="headerlink" href="#limitations" title="Permalink to this headline">¶</a></h2>
+<p>Executing prepared statements will log the query as provided by the client in the prepare call, along with the execution time stamp and all other attributes (see below). Actual values bound for prepared statement execution will not show up in the audit log.</p>
+</div>
+<div class="section" id="what-does-it-log">
+<h2>What does it log<a class="headerlink" href="#what-does-it-log" title="Permalink to this headline">¶</a></h2>
+<p>Each audit log implementation has access to the following attributes, and for the default text based logger these fields are concatenated with <cite>|</cite> s to yield the final message.</p>
+<blockquote>
+<div><ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">user</span></code>: User name(if available)</li>
+<li><code class="docutils literal notranslate"><span class="pre">host</span></code>: Host IP, where the command is being executed</li>
+<li><code class="docutils literal notranslate"><span class="pre">source</span> <span class="pre">ip</span> <span class="pre">address</span></code>: Source IP address from where the request initiated</li>
+<li><code class="docutils literal notranslate"><span class="pre">source</span> <span class="pre">port</span></code>: Source port number from where the request initiated</li>
+<li><code class="docutils literal notranslate"><span class="pre">timestamp</span></code>: unix time stamp</li>
+<li><code class="docutils literal notranslate"><span class="pre">type</span></code>: Type of the request (SELECT, INSERT, etc.,)</li>
+<li><code class="docutils literal notranslate"><span class="pre">category</span></code> - Category of the request (DDL, DML, etc.,)</li>
+<li><code class="docutils literal notranslate"><span class="pre">keyspace</span></code> - Keyspace(If applicable) on which request is targeted to be executed</li>
+<li><code class="docutils literal notranslate"><span class="pre">scope</span></code> - Table/Aggregate name/ function name/ trigger name etc., as applicable</li>
+<li><code class="docutils literal notranslate"><span class="pre">operation</span></code> - CQL command being executed</li>
+</ul>
+</div></blockquote>
+</div>
+<div class="section" id="how-to-configure">
+<h2>How to configure<a class="headerlink" href="#how-to-configure" title="Permalink to this headline">¶</a></h2>
+<p>Auditlog can be configured using cassandra.yaml. If you want to try Auditlog on one node, it can also be enabled and configured using <code class="docutils literal notranslate"><span class="pre">nodetool</span></code>.</p>
+<div class="section" id="cassandra-yaml-configurations-for-auditlog">
+<h3>cassandra.yaml configurations for AuditLog<a class="headerlink" href="#cassandra-yaml-configurations-for-auditlog" title="Permalink to this headline">¶</a></h3>
+<blockquote>
+<div><ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">enabled</span></code>: This option enables/ disables audit log</li>
+<li><code class="docutils literal notranslate"><span class="pre">logger</span></code>: Class name of the logger/ custom logger.</li>
+<li><code class="docutils literal notranslate"><span class="pre">audit_logs_dir</span></code>: Auditlogs directory location, if not set, default to <cite>cassandra.logdir.audit</cite> or <cite>cassandra.logdir</cite> + /audit/</li>
+<li><code class="docutils literal notranslate"><span class="pre">included_keyspaces</span></code>: Comma separated list of keyspaces to be included in audit log, default - includes all keyspaces</li>
+<li><code class="docutils literal notranslate"><span class="pre">excluded_keyspaces</span></code>: Comma separated list of keyspaces to be excluded from audit log, default - excludes no keyspace except <cite>system</cite>,  <cite>system_schema</cite> and <cite>system_virtual_schema</cite></li>
+<li><code class="docutils literal notranslate"><span class="pre">included_categories</span></code>: Comma separated list of Audit Log Categories to be included in audit log, default - includes all categories</li>
+<li><code class="docutils literal notranslate"><span class="pre">excluded_categories</span></code>: Comma separated list of Audit Log Categories to be excluded from audit log, default - excludes no category</li>
+<li><code class="docutils literal notranslate"><span class="pre">included_users</span></code>: Comma separated list of users to be included in audit log, default - includes all users</li>
+<li><code class="docutils literal notranslate"><span class="pre">excluded_users</span></code>: Comma separated list of users to be excluded from audit log, default - excludes no user</li>
+</ul>
+</div></blockquote>
+<p>List of available categories are: QUERY, DML, DDL, DCL, OTHER, AUTH, ERROR, PREPARE</p>
+</div>
+<div class="section" id="nodetool-command-to-enable-auditlog">
+<h3>NodeTool command to enable AuditLog<a class="headerlink" href="#nodetool-command-to-enable-auditlog" title="Permalink to this headline">¶</a></h3>
+<p><code class="docutils literal notranslate"><span class="pre">enableauditlog</span></code>: Enables AuditLog with yaml defaults. yaml configurations can be overridden using options via nodetool command.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool enableauditlog
+</pre></div>
+</div>
+<div class="section" id="options">
+<h4>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h4>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">--excluded-categories</span></code></dt>
+<dd>Comma separated list of Audit Log Categories to be excluded for
+audit log. If not set the value from cassandra.yaml will be used</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--excluded-keyspaces</span></code></dt>
+<dd>Comma separated list of keyspaces to be excluded for audit log. If
+not set the value from cassandra.yaml will be used.
+Please remeber that <cite>system</cite>, <cite>system_schema</cite> and <cite>system_virtual_schema</cite> are excluded by default,
+if you are overwriting this option via nodetool,
+remember to add these keyspaces back if you dont want them in audit logs</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--excluded-users</span></code></dt>
+<dd>Comma separated list of users to be excluded for audit log. If not
+set the value from cassandra.yaml will be used</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--included-categories</span></code></dt>
+<dd>Comma separated list of Audit Log Categories to be included for
+audit log. If not set the value from cassandra.yaml will be used</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--included-keyspaces</span></code></dt>
+<dd>Comma separated list of keyspaces to be included for audit log. If
+not set the value from cassandra.yaml will be used</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--included-users</span></code></dt>
+<dd>Comma separated list of users to be included for audit log. If not
+set the value from cassandra.yaml will be used</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--logger</span></code></dt>
+<dd>Logger name to be used for AuditLogging. Default BinAuditLogger. If
+not set the value from cassandra.yaml will be used</dd>
+</dl>
+</div>
+</div>
+<div class="section" id="nodetool-command-to-disable-auditlog">
+<h3>NodeTool command to disable AuditLog<a class="headerlink" href="#nodetool-command-to-disable-auditlog" title="Permalink to this headline">¶</a></h3>
+<p><code class="docutils literal notranslate"><span class="pre">disableauditlog</span></code>: Disables AuditLog.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool disableuditlog
+</pre></div>
+</div>
+</div>
+<div class="section" id="nodetool-command-to-reload-auditlog-filters">
+<h3>NodeTool command to reload AuditLog filters<a class="headerlink" href="#nodetool-command-to-reload-auditlog-filters" title="Permalink to this headline">¶</a></h3>
+<p><code class="docutils literal notranslate"><span class="pre">enableauditlog</span></code>: NodeTool enableauditlog command can be used to reload auditlog filters when called with default or previous <code class="docutils literal notranslate"><span class="pre">loggername</span></code> and updated filters</p>
+<p>E.g.,</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool enableauditlog --loggername &lt;Default/ existing loggerName&gt; --included-keyspaces &lt;New Filter values&gt;
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="view-the-contents-of-auditlog-files">
+<h2>View the contents of AuditLog Files<a class="headerlink" href="#view-the-contents-of-auditlog-files" title="Permalink to this headline">¶</a></h2>
+<p><code class="docutils literal notranslate"><span class="pre">auditlogviewer</span></code> is the new tool introduced to help view the contents of binlog file in human readable text format.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>auditlogviewer &lt;path1&gt; [&lt;path2&gt;...&lt;pathN&gt;] [options]
+</pre></div>
+</div>
+<div class="section" id="id1">
+<h3>Options<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">-f,--follow</span></code></dt>
+<dd><dl class="first last docutils">
+<dt>Upon reacahing the end of the log continue indefinitely</dt>
+<dd>waiting for more records</dd>
+</dl>
+</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-r,--roll_cycle</span></code></dt>
+<dd><dl class="first last docutils">
+<dt>How often to roll the log file was rolled. May be</dt>
+<dd>necessary for Chronicle to correctly parse file names. (MINUTELY, HOURLY,
+DAILY). Default HOURLY.</dd>
+</dl>
+</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-h,--help</span></code></dt>
+<dd>display this help message</dd>
+</dl>
+<p>For example, to dump the contents of audit log files on the console</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>auditlogviewer /logs/cassandra/audit
+</pre></div>
+</div>
+</div>
+<div class="section" id="sample-output">
+<h3>Sample output<a class="headerlink" href="#sample-output" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>LogMessage: user:anonymous|host:localhost/X.X.X.X|source:/X.X.X.X|port:60878|timestamp:1521158923615|type:USE_KS|category:DDL|ks:dev1|operation:USE &quot;dev1&quot;
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="configuring-binauditlogger">
+<h2>Configuring BinAuditLogger<a class="headerlink" href="#configuring-binauditlogger" title="Permalink to this headline">¶</a></h2>
+<p>To use <code class="docutils literal notranslate"><span class="pre">BinAuditLogger</span></code> as a logger in AuditLogging, set the logger to <code class="docutils literal notranslate"><span class="pre">BinAuditLogger</span></code> in cassandra.yaml under <code class="docutils literal notranslate"><span class="pre">audit_logging_options</span></code> section. <code class="docutils literal notranslate"><span class="pre">BinAuditLogger</span></code> can be futher configued using its advanced options in cassandra.yaml.</p>
+<div class="section" id="adcanced-options-for-binauditlogger">
+<h3>Adcanced Options for BinAuditLogger<a class="headerlink" href="#adcanced-options-for-binauditlogger" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">block</span></code></dt>
+<dd>Indicates if the AuditLog should block if the it falls behind or should drop audit log records. Default is set to <code class="docutils literal notranslate"><span class="pre">true</span></code> so that AuditLog records wont be lost</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">max_queue_weight</span></code></dt>
+<dd>Maximum weight of in memory queue for records waiting to be written to the audit log file before blocking or dropping the log records. Default is set to <code class="docutils literal notranslate"><span class="pre">256</span> <span class="pre">*</span> <span class="pre">1024</span> <span class="pre">*</span> <span class="pre">1024</span></code></dd>
+<dt><code class="docutils literal notranslate"><span class="pre">max_log_size</span></code></dt>
+<dd>Maximum size of the rolled files to retain on disk before deleting the oldest file. Default is set to <code class="docutils literal notranslate"><span class="pre">16L</span> <span class="pre">*</span> <span class="pre">1024L</span> <span class="pre">*</span> <span class="pre">1024L</span> <span class="pre">*</span> <span class="pre">1024L</span></code></dd>
+<dt><code class="docutils literal notranslate"><span class="pre">roll_cycle</span></code></dt>
+<dd>How often to roll Audit log segments so they can potentially be reclaimed. Available options are: MINUTELY, HOURLY, DAILY, LARGE_DAILY, XLARGE_DAILY, HUGE_DAILY.For more options, refer: net.openhft.chronicle.queue.RollCycles. Default is set to <code class="docutils literal notranslate"><span class="pre">&quot;HOURLY&quot;</span></code></dd>
+</dl>
+</div>
+</div>
+<div class="section" id="configuring-fileauditlogger">
+<h2>Configuring FileAuditLogger<a class="headerlink" href="#configuring-fileauditlogger" title="Permalink to this headline">¶</a></h2>
+<p>To use <code class="docutils literal notranslate"><span class="pre">FileAuditLogger</span></code> as a logger in AuditLogging, apart from setting the class name in cassandra.yaml, following configuration is needed to have the audit log events to flow through separate log file instead of system.log</p>
+<div class="highlight-xml notranslate"><div class="highlight"><pre><span></span><span class="c">&lt;!-- Audit Logging (FileAuditLogger) rolling file appender to audit.log --&gt;</span>
+<span class="nt">&lt;appender</span> <span class="na">name=</span><span class="s">&quot;AUDIT&quot;</span> <span class="na">class=</span><span class="s">&quot;ch.qos.logback.core.rolling.RollingFileAppender&quot;</span><span class="nt">&gt;</span>
+  <span class="nt">&lt;file&gt;</span>${cassandra.logdir}/audit/audit.log<span class="nt">&lt;/file&gt;</span>
+  <span class="nt">&lt;rollingPolicy</span> <span class="na">class=</span><span class="s">&quot;ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy&quot;</span><span class="nt">&gt;</span>
+    <span class="c">&lt;!-- rollover daily --&gt;</span>
+    <span class="nt">&lt;fileNamePattern&gt;</span>${cassandra.logdir}/audit/audit.log.%d{yyyy-MM-dd}.%i.zip<span class="nt">&lt;/fileNamePattern&gt;</span>
+    <span class="c">&lt;!-- each file should be at most 50MB, keep 30 days worth of history, but at most 5GB --&gt;</span>
+    <span class="nt">&lt;maxFileSize&gt;</span>50MB<span class="nt">&lt;/maxFileSize&gt;</span>
+    <span class="nt">&lt;maxHistory&gt;</span>30<span class="nt">&lt;/maxHistory&gt;</span>
+    <span class="nt">&lt;totalSizeCap&gt;</span>5GB<span class="nt">&lt;/totalSizeCap&gt;</span>
+  <span class="nt">&lt;/rollingPolicy&gt;</span>
+  <span class="nt">&lt;encoder&gt;</span>
+    <span class="nt">&lt;pattern&gt;</span>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n<span class="nt">&lt;/pattern&gt;</span>
+  <span class="nt">&lt;/encoder&gt;</span>
+<span class="nt">&lt;/appender&gt;</span>
+
+<span class="c">&lt;!-- Audit Logging additivity to redirect audt logging events to audit/audit.log --&gt;</span>
+<span class="nt">&lt;logger</span> <span class="na">name=</span><span class="s">&quot;org.apache.cassandra.audit&quot;</span> <span class="na">additivity=</span><span class="s">&quot;false&quot;</span> <span class="na">level=</span><span class="s">&quot;INFO&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;appender-ref</span> <span class="na">ref=</span><span class="s">&quot;AUDIT&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/logger&gt;</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/backups.html b/src/doc/4.0-rc1/operating/backups.html
new file mode 100644
index 0000000..35a6db0
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/backups.html
@@ -0,0 +1,666 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Backups"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Bulk Loading" href="bulk_loading.html"/>
+      <link rel="prev" title="Change Data Capture" href="cdc.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Backups</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#types-of-backups">Types of Backups</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#data-directory-structure">Data Directory Structure</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#snapshots">Snapshots</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#incremental-backups">Incremental Backups</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#restoring-from-incremental-backups-and-snapshots">Restoring from  Incremental Backups and Snapshots</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="backups">
+<h1>Backups<a class="headerlink" href="#backups" title="Permalink to this headline">¶</a></h1>
+<p>Apache Cassandra stores data in immutable SSTable files. Backups in Apache Cassandra database are backup copies of the database data that is stored as SSTable files. Backups are used for several purposes including the following:</p>
+<ul class="simple">
+<li>To store a data copy for durability</li>
+<li>To be able to restore a table if table data is lost due to node/partition/network failure</li>
+<li>To be able to transfer the SSTable files to a different machine;  for portability</li>
+</ul>
+<div class="section" id="types-of-backups">
+<h2>Types of Backups<a class="headerlink" href="#types-of-backups" title="Permalink to this headline">¶</a></h2>
+<p>Apache Cassandra supports two kinds of backup strategies.</p>
+<ul class="simple">
+<li>Snapshots</li>
+<li>Incremental Backups</li>
+</ul>
+<p>A <em>snapshot</em> is a copy of a table’s SSTable files at a given time, created via hard links.  The DDL to create the table is stored as well.  Snapshots may be created by a user or created automatically.
+The setting (<code class="docutils literal notranslate"><span class="pre">snapshot_before_compaction</span></code>) in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> determines if snapshots are created before each compaction.
+By default <code class="docutils literal notranslate"><span class="pre">snapshot_before_compaction</span></code> is set to false.
+Snapshots may be created automatically before keyspace truncation or dropping of a table by setting <code class="docutils literal notranslate"><span class="pre">auto_snapshot</span></code> to true (default) in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>.
+Truncates could be delayed due to the auto snapshots and another setting in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> determines how long the coordinator should wait for truncates to complete.
+By default Cassandra waits 60 seconds for auto snapshots to complete.</p>
+<p>An <em>incremental backup</em> is a copy of a table’s SSTable files created by a hard link when memtables are flushed to disk as SSTables.
+Typically incremental backups are paired with snapshots to reduce the backup time as well as reduce disk space.
+Incremental backups are not enabled by default and must be enabled explicitly in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> (with <code class="docutils literal notranslate"><span class="pre">incremental_backups</span></code> setting) or with the Nodetool.
+Once enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a <code class="docutils literal notranslate"><span class="pre">backups/</span></code> subdirectory of the keyspace data. Incremental backups of system tables are also created.</p>
+</div>
+<div class="section" id="data-directory-structure">
+<h2>Data Directory Structure<a class="headerlink" href="#data-directory-structure" title="Permalink to this headline">¶</a></h2>
+<p>The directory structure of Cassandra data consists of different directories for keyspaces, and tables with the data files within the table directories.  Directories  backups and snapshots to store backups and snapshots respectively for a particular table are also stored within the table directory. The directory structure for Cassandra is illustrated in Figure 1.</p>
+<div class="figure">
+<img alt="../_images/Figure_1_backups.jpg" src="../_images/Figure_1_backups.jpg" />
+</div>
+<p>Figure 1. Directory Structure for Cassandra Data</p>
+<div class="section" id="setting-up-example-tables-for-backups-and-snapshots">
+<h3>Setting Up Example Tables for Backups and Snapshots<a class="headerlink" href="#setting-up-example-tables-for-backups-and-snapshots" title="Permalink to this headline">¶</a></h3>
+<p>In this section we shall create some example data that could be used to demonstrate incremental backups and snapshots. We have used a three node Cassandra cluster.
+First, the keyspaces are created. Subsequently tables are created within a keyspace and table data is added. We have used two keyspaces <code class="docutils literal notranslate"><span class="pre">CQLKeyspace</span></code> and <code class="docutils literal notranslate"><span class="pre">CatalogKeyspace</span></code> with two tables within each.
+Create <code class="docutils literal notranslate"><span class="pre">CQLKeyspace</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; CREATE KEYSPACE CQLKeyspace
+  ... WITH replication = {&#39;class&#39;: &#39;SimpleStrategy&#39;, &#39;replication_factor&#39; : 3};
+</pre></div>
+</div>
+<p>Create table <code class="docutils literal notranslate"><span class="pre">t</span></code> in the <code class="docutils literal notranslate"><span class="pre">CQLKeyspace</span></code> keyspace.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; USE CQLKeyspace;
+cqlsh:cqlkeyspace&gt; CREATE TABLE t (
+              ...     id int,
+              ...     k int,
+              ...     v text,
+              ...     PRIMARY KEY (id)
+              ... );
+</pre></div>
+</div>
+<p>Add data to table <code class="docutils literal notranslate"><span class="pre">t</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt;
+cqlsh:cqlkeyspace&gt; INSERT INTO t (id, k, v) VALUES (0, 0, &#39;val0&#39;);
+cqlsh:cqlkeyspace&gt; INSERT INTO t (id, k, v) VALUES (1, 1, &#39;val1&#39;);
+</pre></div>
+</div>
+<p>A table query lists the data:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; SELECT * FROM t;
+
+id | k | v
+----+---+------
+ 1 | 1 | val1
+ 0 | 0 | val0
+
+ (2 rows)
+</pre></div>
+</div>
+<p>Create another table <code class="docutils literal notranslate"><span class="pre">t2</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; CREATE TABLE t2 (
+              ...     id int,
+              ...     k int,
+              ...     v text,
+              ...     PRIMARY KEY (id)
+              ... );
+</pre></div>
+</div>
+<p>Add data to table <code class="docutils literal notranslate"><span class="pre">t2</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; INSERT INTO t2 (id, k, v) VALUES (0, 0, &#39;val0&#39;);
+cqlsh:cqlkeyspace&gt; INSERT INTO t2 (id, k, v) VALUES (1, 1, &#39;val1&#39;);
+cqlsh:cqlkeyspace&gt; INSERT INTO t2 (id, k, v) VALUES (2, 2, &#39;val2&#39;);
+</pre></div>
+</div>
+<p>A table query lists table data:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; SELECT * FROM t2;
+
+id | k | v
+----+---+------
+ 1 | 1 | val1
+ 0 | 0 | val0
+ 2 | 2 | val2
+
+ (3 rows)
+</pre></div>
+</div>
+<p>Create a second keyspace <code class="docutils literal notranslate"><span class="pre">CatalogKeyspace</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; CREATE KEYSPACE CatalogKeyspace
+              ... WITH replication = {&#39;class&#39;: &#39;SimpleStrategy&#39;, &#39;replication_factor&#39; : 3};
+</pre></div>
+</div>
+<p>Create a table called <code class="docutils literal notranslate"><span class="pre">journal</span></code> in <code class="docutils literal notranslate"><span class="pre">CatalogKeyspace</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; USE CatalogKeyspace;
+cqlsh:catalogkeyspace&gt; CREATE TABLE journal (
+                  ...     id int,
+                  ...     name text,
+                  ...     publisher text,
+                  ...     PRIMARY KEY (id)
+                  ... );
+</pre></div>
+</div>
+<p>Add data to table <code class="docutils literal notranslate"><span class="pre">journal</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:catalogkeyspace&gt; INSERT INTO journal (id, name, publisher) VALUES (0, &#39;Apache
+Cassandra Magazine&#39;, &#39;Apache Cassandra&#39;);
+cqlsh:catalogkeyspace&gt; INSERT INTO journal (id, name, publisher) VALUES (1, &#39;Couchbase
+Magazine&#39;, &#39;Couchbase&#39;);
+</pre></div>
+</div>
+<p>Query table <code class="docutils literal notranslate"><span class="pre">journal</span></code> to list its data:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:catalogkeyspace&gt; SELECT * FROM journal;
+
+id | name                      | publisher
+----+---------------------------+------------------
+ 1 |        Couchbase Magazine |        Couchbase
+ 0 | Apache Cassandra Magazine | Apache Cassandra
+
+ (2 rows)
+</pre></div>
+</div>
+<p>Add another table called <code class="docutils literal notranslate"><span class="pre">magazine</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:catalogkeyspace&gt; CREATE TABLE magazine (
+                  ...     id int,
+                  ...     name text,
+                  ...     publisher text,
+                  ...     PRIMARY KEY (id)
+                  ... );
+</pre></div>
+</div>
+<p>Add table data to <code class="docutils literal notranslate"><span class="pre">magazine</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:catalogkeyspace&gt; INSERT INTO magazine (id, name, publisher) VALUES (0, &#39;Apache
+Cassandra Magazine&#39;, &#39;Apache Cassandra&#39;);
+cqlsh:catalogkeyspace&gt; INSERT INTO magazine (id, name, publisher) VALUES (1, &#39;Couchbase
+Magazine&#39;, &#39;Couchbase&#39;);
+</pre></div>
+</div>
+<p>List table <code class="docutils literal notranslate"><span class="pre">magazine</span></code>’s data:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:catalogkeyspace&gt; SELECT * from magazine;
+
+id | name                      | publisher
+----+---------------------------+------------------
+ 1 |        Couchbase Magazine |        Couchbase
+ 0 | Apache Cassandra Magazine | Apache Cassandra
+
+ (2 rows)
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="snapshots">
+<h2>Snapshots<a class="headerlink" href="#snapshots" title="Permalink to this headline">¶</a></h2>
+<p>In this section including sub-sections we shall demonstrate creating snapshots.  The command used to create a snapshot is <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">snapshot</span></code> and its usage is as follows:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool help snapshot
+NAME
+       nodetool snapshot - Take a snapshot of specified keyspaces or a snapshot
+       of the specified table
+
+SYNOPSIS
+       nodetool [(-h &lt;host&gt; | --host &lt;host&gt;)] [(-p &lt;port&gt; | --port &lt;port&gt;)]
+               [(-pp | --print-port)] [(-pw &lt;password&gt; | --password &lt;password&gt;)]
+               [(-pwf &lt;passwordFilePath&gt; | --password-file &lt;passwordFilePath&gt;)]
+               [(-u &lt;username&gt; | --username &lt;username&gt;)] snapshot
+               [(-cf &lt;table&gt; | --column-family &lt;table&gt; | --table &lt;table&gt;)]
+               [(-kt &lt;ktlist&gt; | --kt-list &lt;ktlist&gt; | -kc &lt;ktlist&gt; | --kc.list &lt;ktlist&gt;)]
+               [(-sf | --skip-flush)] [(-t &lt;tag&gt; | --tag &lt;tag&gt;)] [--] [&lt;keyspaces...&gt;]
+
+OPTIONS
+       -cf &lt;table&gt;, --column-family &lt;table&gt;, --table &lt;table&gt;
+           The table name (you must specify one and only one keyspace for using
+           this option)
+
+       -h &lt;host&gt;, --host &lt;host&gt;
+           Node hostname or ip address
+
+       -kt &lt;ktlist&gt;, --kt-list &lt;ktlist&gt;, -kc &lt;ktlist&gt;, --kc.list &lt;ktlist&gt;
+           The list of Keyspace.table to take snapshot.(you must not specify
+           only keyspace)
+
+       -p &lt;port&gt;, --port &lt;port&gt;
+           Remote jmx agent port number
+
+       -pp, --print-port
+           Operate in 4.0 mode with hosts disambiguated by port number
+
+       -pw &lt;password&gt;, --password &lt;password&gt;
+           Remote jmx agent password
+
+       -pwf &lt;passwordFilePath&gt;, --password-file &lt;passwordFilePath&gt;
+           Path to the JMX password file
+
+       -sf, --skip-flush
+           Do not flush memtables before snapshotting (snapshot will not
+           contain unflushed data)
+
+       -t &lt;tag&gt;, --tag &lt;tag&gt;
+           The name of the snapshot
+
+       -u &lt;username&gt;, --username &lt;username&gt;
+           Remote jmx agent username
+
+       --
+           This option can be used to separate command-line options from the
+           list of argument, (useful when arguments might be mistaken for
+           command-line options
+
+       [&lt;keyspaces...&gt;]
+           List of keyspaces. By default, all keyspaces
+</pre></div>
+</div>
+<div class="section" id="configuring-for-snapshots">
+<h3>Configuring for Snapshots<a class="headerlink" href="#configuring-for-snapshots" title="Permalink to this headline">¶</a></h3>
+<p>To demonstrate creating snapshots with Nodetool on the commandline  we have set
+<code class="docutils literal notranslate"><span class="pre">auto_snapshots</span></code> setting to <code class="docutils literal notranslate"><span class="pre">false</span></code> in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>auto_snapshot: false
+</pre></div>
+</div>
+<p>Also set <code class="docutils literal notranslate"><span class="pre">snapshot_before_compaction</span></code>  to <code class="docutils literal notranslate"><span class="pre">false</span></code> to disable creating snapshots automatically before compaction:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>snapshot_before_compaction: false
+</pre></div>
+</div>
+</div>
+<div class="section" id="creating-snapshots">
+<h3>Creating Snapshots<a class="headerlink" href="#creating-snapshots" title="Permalink to this headline">¶</a></h3>
+<p>To demonstrate creating snapshots start with no snapshots. Search for snapshots and none get listed:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ find -name snapshots
+</pre></div>
+</div>
+<p>We shall be using the example keyspaces and tables to create snapshots.</p>
+<div class="section" id="taking-snapshots-of-all-tables-in-a-keyspace">
+<h4>Taking Snapshots of all Tables in a Keyspace<a class="headerlink" href="#taking-snapshots-of-all-tables-in-a-keyspace" title="Permalink to this headline">¶</a></h4>
+<p>To take snapshots of all tables in a keyspace and also optionally tag the snapshot the syntax becomes:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool snapshot --tag &lt;tag&gt;  --&lt;keyspace&gt;
+</pre></div>
+</div>
+<p>As an example create a snapshot called <code class="docutils literal notranslate"><span class="pre">catalog-ks</span></code> for all the tables in the <code class="docutils literal notranslate"><span class="pre">catalogkeyspace</span></code> keyspace:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool snapshot --tag catalog-ks -- catalogkeyspace
+Requested creating snapshot(s) for [catalogkeyspace] with snapshot name [catalog-ks] and
+options {skipFlush=false}
+Snapshot directory: catalog-ks
+</pre></div>
+</div>
+<p>Search for snapshots and  <code class="docutils literal notranslate"><span class="pre">snapshots</span></code> directories for the tables <code class="docutils literal notranslate"><span class="pre">journal</span></code> and <code class="docutils literal notranslate"><span class="pre">magazine</span></code>, which are in the <code class="docutils literal notranslate"><span class="pre">catalogkeyspace</span></code> keyspace should get listed:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ find -name snapshots
+./cassandra/data/data/catalogkeyspace/journal-296a2d30c22a11e9b1350d927649052c/snapshots
+./cassandra/data/data/catalogkeyspace/magazine-446eae30c22a11e9b1350d927649052c/snapshots
+</pre></div>
+</div>
+<p>Snapshots of all tables in   multiple keyspaces may be created similarly, as an example:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool snapshot --tag catalog-cql-ks --catalogkeyspace,cqlkeyspace
+</pre></div>
+</div>
+</div>
+<div class="section" id="taking-snapshots-of-single-table-in-a-keyspace">
+<h4>Taking Snapshots of Single Table in a Keyspace<a class="headerlink" href="#taking-snapshots-of-single-table-in-a-keyspace" title="Permalink to this headline">¶</a></h4>
+<p>To take a snapshot of a single table the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">snapshot</span></code> command syntax becomes as follows:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool snapshot --tag &lt;tag&gt; --table &lt;table&gt;  --&lt;keyspace&gt;
+</pre></div>
+</div>
+<p>As an example create a snapshot for table <code class="docutils literal notranslate"><span class="pre">magazine</span></code> in keyspace <code class="docutils literal notranslate"><span class="pre">catalokeyspace</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool snapshot --tag magazine --table magazine  --
+catalogkeyspace
+Requested creating snapshot(s) for [catalogkeyspace] with snapshot name [magazine] and
+options {skipFlush=false}
+Snapshot directory: magazine
+</pre></div>
+</div>
+</div>
+<div class="section" id="taking-snapshot-of-multiple-tables-from-same-keyspace">
+<h4>Taking Snapshot of Multiple  Tables from same Keyspace<a class="headerlink" href="#taking-snapshot-of-multiple-tables-from-same-keyspace" title="Permalink to this headline">¶</a></h4>
+<p>To take snapshots of multiple tables in a keyspace the list of <em>Keyspace.table</em> must be specified with option <code class="docutils literal notranslate"><span class="pre">--kt-list</span></code>. As an example create snapshots for tables <code class="docutils literal notranslate"><span class="pre">t</span></code> and <code class="docutils literal notranslate"><span class="pre">t2</span></code> in the <code class="docutils literal notranslate"><span class="pre">cqlkeyspace</span></code> keyspace:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool snapshot --kt-list cqlkeyspace.t,cqlkeyspace.t2 --tag multi-table
+[ec2-user@ip-10-0-2-238 ~]$ nodetool snapshot --kt-list cqlkeyspace.t,cqlkeyspace.t2 --tag
+multi-table
+Requested creating snapshot(s) for [cqlkeyspace.t,cqlkeyspace.t2] with snapshot name [multi-
+table] and options {skipFlush=false}
+Snapshot directory: multi-table
+</pre></div>
+</div>
+<p>Multiple snapshots of the same set of tables may be created and tagged with a different name. As an example, create another snapshot for the same set of tables <code class="docutils literal notranslate"><span class="pre">t</span></code> and <code class="docutils literal notranslate"><span class="pre">t2</span></code> in the <code class="docutils literal notranslate"><span class="pre">cqlkeyspace</span></code> keyspace and tag the snapshots differently:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool snapshot --kt-list cqlkeyspace.t,cqlkeyspace.t2 --tag
+multi-table-2
+Requested creating snapshot(s) for [cqlkeyspace.t,cqlkeyspace.t2] with snapshot name [multi-
+table-2] and options {skipFlush=false}
+Snapshot directory: multi-table-2
+</pre></div>
+</div>
+</div>
+<div class="section" id="taking-snapshot-of-multiple-tables-from-different-keyspaces">
+<h4>Taking Snapshot of Multiple  Tables from Different Keyspaces<a class="headerlink" href="#taking-snapshot-of-multiple-tables-from-different-keyspaces" title="Permalink to this headline">¶</a></h4>
+<p>To take snapshots of multiple tables that are in different keyspaces the command syntax is the same as when multiple tables are in the same keyspace. Each <em>keyspace.table</em> must be specified separately in the <code class="docutils literal notranslate"><span class="pre">--kt-list</span></code> option. As an example, create a snapshot for table <code class="docutils literal notranslate"><span class="pre">t</span></code> in the <code class="docutils literal notranslate"><span class="pre">cqlkeyspace</span></code> and table <code class="docutils literal notranslate"><span class="pre">journal</span></code> in the catalogkeyspace and tag the snapshot <code class="docutils literal notranslate"><span class="pre">multi-ks</span></code>.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool snapshot --kt-list
+catalogkeyspace.journal,cqlkeyspace.t --tag multi-ks
+Requested creating snapshot(s) for [catalogkeyspace.journal,cqlkeyspace.t] with snapshot
+name [multi-ks] and options {skipFlush=false}
+Snapshot directory: multi-ks
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="listing-snapshots">
+<h3>Listing Snapshots<a class="headerlink" href="#listing-snapshots" title="Permalink to this headline">¶</a></h3>
+<p>To list snapshots use the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">listsnapshots</span></code> command. All the snapshots that we created in the preceding examples get listed:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool listsnapshots
+Snapshot Details:
+Snapshot name Keyspace name   Column family name True size Size on disk
+multi-table   cqlkeyspace     t2                 4.86 KiB  5.67 KiB
+multi-table   cqlkeyspace     t                  4.89 KiB  5.7 KiB
+multi-ks      cqlkeyspace     t                  4.89 KiB  5.7 KiB
+multi-ks      catalogkeyspace journal            4.9 KiB   5.73 KiB
+magazine      catalogkeyspace magazine           4.9 KiB   5.73 KiB
+multi-table-2 cqlkeyspace     t2                 4.86 KiB  5.67 KiB
+multi-table-2 cqlkeyspace     t                  4.89 KiB  5.7 KiB
+catalog-ks    catalogkeyspace journal            4.9 KiB   5.73 KiB
+catalog-ks    catalogkeyspace magazine           4.9 KiB   5.73 KiB
+
+Total TrueDiskSpaceUsed: 44.02 KiB
+</pre></div>
+</div>
+</div>
+<div class="section" id="finding-snapshots-directories">
+<h3>Finding Snapshots Directories<a class="headerlink" href="#finding-snapshots-directories" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">snapshots</span></code> directories may be listed with <code class="docutils literal notranslate"><span class="pre">find</span> <span class="pre">–name</span> <span class="pre">snapshots</span></code> command:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ find -name snapshots
+./cassandra/data/data/cqlkeyspace/t-d132e240c21711e9bbee19821dcea330/snapshots
+./cassandra/data/data/cqlkeyspace/t2-d993a390c22911e9b1350d927649052c/snapshots
+./cassandra/data/data/catalogkeyspace/journal-296a2d30c22a11e9b1350d927649052c/snapshots
+./cassandra/data/data/catalogkeyspace/magazine-446eae30c22a11e9b1350d927649052c/snapshots
+[ec2-user@ip-10-0-2-238 ~]$
+</pre></div>
+</div>
+<p>To list the snapshots for a particular table first change directory ( with <code class="docutils literal notranslate"><span class="pre">cd</span></code>) to the <code class="docutils literal notranslate"><span class="pre">snapshots</span></code> directory for the table. As an example, list the snapshots for the <code class="docutils literal notranslate"><span class="pre">catalogkeyspace/journal</span></code> table. Two snapshots get listed:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ cd ./cassandra/data/data/catalogkeyspace/journal-
+296a2d30c22a11e9b1350d927649052c/snapshots
+[ec2-user@ip-10-0-2-238 snapshots]$ ls -l
+total 0
+drwxrwxr-x. 2 ec2-user ec2-user 265 Aug 19 02:44 catalog-ks
+drwxrwxr-x. 2 ec2-user ec2-user 265 Aug 19 02:52 multi-ks
+</pre></div>
+</div>
+<p>A <code class="docutils literal notranslate"><span class="pre">snapshots</span></code> directory lists the SSTable files in the snapshot. <code class="docutils literal notranslate"><span class="pre">Schema.cql</span></code> file is also created in each snapshot for the schema definition DDL that may be run in CQL to create the table when restoring from a snapshot:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 snapshots]$ cd catalog-ks
+[ec2-user@ip-10-0-2-238 catalog-ks]$ ls -l
+total 44
+-rw-rw-r--. 1 ec2-user ec2-user   31 Aug 19 02:44 manifest.jsonZ
+
+-rw-rw-r--. 4 ec2-user ec2-user   47 Aug 19 02:38 na-1-big-CompressionInfo.db
+-rw-rw-r--. 4 ec2-user ec2-user   97 Aug 19 02:38 na-1-big-Data.db
+-rw-rw-r--. 4 ec2-user ec2-user   10 Aug 19 02:38 na-1-big-Digest.crc32
+-rw-rw-r--. 4 ec2-user ec2-user   16 Aug 19 02:38 na-1-big-Filter.db
+-rw-rw-r--. 4 ec2-user ec2-user   16 Aug 19 02:38 na-1-big-Index.db
+-rw-rw-r--. 4 ec2-user ec2-user 4687 Aug 19 02:38 na-1-big-Statistics.db
+-rw-rw-r--. 4 ec2-user ec2-user   56 Aug 19 02:38 na-1-big-Summary.db
+-rw-rw-r--. 4 ec2-user ec2-user   92 Aug 19 02:38 na-1-big-TOC.txt
+-rw-rw-r--. 1 ec2-user ec2-user  814 Aug 19 02:44 schema.cql
+</pre></div>
+</div>
+</div>
+<div class="section" id="clearing-snapshots">
+<h3>Clearing Snapshots<a class="headerlink" href="#clearing-snapshots" title="Permalink to this headline">¶</a></h3>
+<p>Snapshots may be cleared or deleted with the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">clearsnapshot</span></code> command.  Either a specific snapshot name must be specified or the <code class="docutils literal notranslate"><span class="pre">–all</span></code> option must be specified.
+As an example delete a snapshot called <code class="docutils literal notranslate"><span class="pre">magazine</span></code> from keyspace <code class="docutils literal notranslate"><span class="pre">cqlkeyspace</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool clearsnapshot -t magazine – cqlkeyspace
+Delete all snapshots from cqlkeyspace with the –all option.
+nodetool clearsnapshot –all -- cqlkeyspace
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="incremental-backups">
+<h2>Incremental Backups<a class="headerlink" href="#incremental-backups" title="Permalink to this headline">¶</a></h2>
+<p>In the following sub-sections we shall discuss configuring and creating incremental backups.</p>
+<div class="section" id="configuring-for-incremental-backups">
+<h3>Configuring for Incremental Backups<a class="headerlink" href="#configuring-for-incremental-backups" title="Permalink to this headline">¶</a></h3>
+<p>To create incremental backups set <code class="docutils literal notranslate"><span class="pre">incremental_backups</span></code> to <code class="docutils literal notranslate"><span class="pre">true</span></code> in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>incremental_backups: true
+</pre></div>
+</div>
+<p>This is the only setting needed to create incremental backups.  By default <code class="docutils literal notranslate"><span class="pre">incremental_backups</span></code> setting is  set to <code class="docutils literal notranslate"><span class="pre">false</span></code> because a new set of SSTable files is created for each data flush and if several CQL statements are to be run the <code class="docutils literal notranslate"><span class="pre">backups</span></code> directory could  fill up quickly and use up storage that is needed to store table data.
+Incremental backups may also be enabled on the command line with the Nodetool command <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">enablebackup</span></code>. Incremental backups may be disabled with <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">disablebackup</span></code> command. Status of incremental backups, whether they are enabled may be found with <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">statusbackup</span></code>.</p>
+</div>
+<div class="section" id="creating-incremental-backups">
+<h3>Creating Incremental Backups<a class="headerlink" href="#creating-incremental-backups" title="Permalink to this headline">¶</a></h3>
+<p>After each table is created flush the table data with <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">flush</span></code> command. Incremental backups get created.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool flush cqlkeyspace t
+[ec2-user@ip-10-0-2-238 ~]$ nodetool flush cqlkeyspace t2
+[ec2-user@ip-10-0-2-238 ~]$ nodetool flush catalogkeyspace journal magazine
+</pre></div>
+</div>
+</div>
+<div class="section" id="finding-incremental-backups">
+<h3>Finding Incremental Backups<a class="headerlink" href="#finding-incremental-backups" title="Permalink to this headline">¶</a></h3>
+<p>Incremental backups are created within the Cassandra’s <code class="docutils literal notranslate"><span class="pre">data</span></code> directory within a table directory. Backups may be found with following command.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ find -name backups
+
+./cassandra/data/data/cqlkeyspace/t-d132e240c21711e9bbee19821dcea330/backups
+./cassandra/data/data/cqlkeyspace/t2-d993a390c22911e9b1350d927649052c/backups
+./cassandra/data/data/catalogkeyspace/journal-296a2d30c22a11e9b1350d927649052c/backups
+./cassandra/data/data/catalogkeyspace/magazine-446eae30c22a11e9b1350d927649052c/backups
+</pre></div>
+</div>
+</div>
+<div class="section" id="creating-an-incremental-backup">
+<h3>Creating an Incremental Backup<a class="headerlink" href="#creating-an-incremental-backup" title="Permalink to this headline">¶</a></h3>
+<p>This section discusses how incremental backups are created in more detail starting with when a new keyspace is created and a table is added.  Create a keyspace called <code class="docutils literal notranslate"><span class="pre">CQLKeyspace</span></code> (arbitrary name).</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; CREATE KEYSPACE CQLKeyspace
+  ... WITH replication = {&#39;class&#39;: &#39;SimpleStrategy&#39;, &#39;replication_factor&#39; : 3}
+</pre></div>
+</div>
+<p>Create a table called <code class="docutils literal notranslate"><span class="pre">t</span></code> within the <code class="docutils literal notranslate"><span class="pre">CQLKeyspace</span></code> keyspace:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; USE CQLKeyspace;
+cqlsh:cqlkeyspace&gt; CREATE TABLE t (
+              ...     id int,
+              ...     k int,
+              ...     v text,
+              ...     PRIMARY KEY (id)
+              ... );
+</pre></div>
+</div>
+<p>Flush the keyspace and table:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool flush cqlkeyspace t
+</pre></div>
+</div>
+<p>Search for backups and a <code class="docutils literal notranslate"><span class="pre">backups</span></code> directory should get listed even though we have added no table data yet.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ find -name backups
+
+./cassandra/data/data/cqlkeyspace/t-d132e240c21711e9bbee19821dcea330/backups
+</pre></div>
+</div>
+<p>Change directory to the <code class="docutils literal notranslate"><span class="pre">backups</span></code> directory and list files and no files get listed as no table data has been added yet:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ cd ./cassandra/data/data/cqlkeyspace/t-
+d132e240c21711e9bbee19821dcea330/backups
+[ec2-user@ip-10-0-2-238 backups]$ ls -l
+total 0
+</pre></div>
+</div>
+<p>Next, add a row of data to table <code class="docutils literal notranslate"><span class="pre">t</span></code> that we created:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; INSERT INTO t (id, k, v) VALUES (0, 0, &#39;val0&#39;);
+</pre></div>
+</div>
+<p>Run the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">flush</span></code> command to flush table data:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool flush cqlkeyspace t
+</pre></div>
+</div>
+<p>List the files and directories in the <code class="docutils literal notranslate"><span class="pre">backups</span></code> directory and SSTable files for an incremental backup get listed:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ cd ./cassandra/data/data/cqlkeyspace/t-
+d132e240c21711e9bbee19821dcea330/backups
+[ec2-user@ip-10-0-2-238 backups]$ ls -l
+total 36
+-rw-rw-r--. 2 ec2-user ec2-user   47 Aug 19 00:32 na-1-big-CompressionInfo.db
+-rw-rw-r--. 2 ec2-user ec2-user   43 Aug 19 00:32 na-1-big-Data.db
+-rw-rw-r--. 2 ec2-user ec2-user   10 Aug 19 00:32 na-1-big-Digest.crc32
+-rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 00:32 na-1-big-Filter.db
+-rw-rw-r--. 2 ec2-user ec2-user    8 Aug 19 00:32 na-1-big-Index.db
+-rw-rw-r--. 2 ec2-user ec2-user 4673 Aug 19 00:32 na-1-big-Statistics.db
+-rw-rw-r--. 2 ec2-user ec2-user   56 Aug 19 00:32 na-1-big-Summary.db
+-rw-rw-r--. 2 ec2-user ec2-user   92 Aug 19 00:32 na-1-big-TOC.txt
+</pre></div>
+</div>
+<p>Add another row of data:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; INSERT INTO t (id, k, v) VALUES (1, 1, &#39;val1&#39;);
+</pre></div>
+</div>
+<p>Again, run the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">flush</span></code> command:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 backups]$  nodetool flush cqlkeyspace t
+</pre></div>
+</div>
+<p>A new incremental backup gets created for the new  data added. List the files in the <code class="docutils literal notranslate"><span class="pre">backups</span></code> directory for table <code class="docutils literal notranslate"><span class="pre">t</span></code> and two sets of SSTable files get listed, one for each incremental backup. The SSTable files are timestamped, which distinguishes the first incremental backup from the second:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 backups]$ ls -l
+total 72
+-rw-rw-r--. 2 ec2-user ec2-user   47 Aug 19 00:32 na-1-big-CompressionInfo.db
+-rw-rw-r--. 2 ec2-user ec2-user   43 Aug 19 00:32 na-1-big-Data.db
+-rw-rw-r--. 2 ec2-user ec2-user   10 Aug 19 00:32 na-1-big-Digest.crc32
+-rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 00:32 na-1-big-Filter.db
+-rw-rw-r--. 2 ec2-user ec2-user    8 Aug 19 00:32 na-1-big-Index.db
+-rw-rw-r--. 2 ec2-user ec2-user 4673 Aug 19 00:32 na-1-big-Statistics.db
+-rw-rw-r--. 2 ec2-user ec2-user   56 Aug 19 00:32 na-1-big-Summary.db
+-rw-rw-r--. 2 ec2-user ec2-user   92 Aug 19 00:32 na-1-big-TOC.txt
+-rw-rw-r--. 2 ec2-user ec2-user   47 Aug 19 00:35 na-2-big-CompressionInfo.db
+-rw-rw-r--. 2 ec2-user ec2-user   41 Aug 19 00:35 na-2-big-Data.db
+-rw-rw-r--. 2 ec2-user ec2-user   10 Aug 19 00:35 na-2-big-Digest.crc32
+-rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 00:35 na-2-big-Filter.db
+-rw-rw-r--. 2 ec2-user ec2-user    8 Aug 19 00:35 na-2-big-Index.db
+-rw-rw-r--. 2 ec2-user ec2-user 4673 Aug 19 00:35 na-2-big-Statistics.db
+-rw-rw-r--. 2 ec2-user ec2-user   56 Aug 19 00:35 na-2-big-Summary.db
+-rw-rw-r--. 2 ec2-user ec2-user   92 Aug 19 00:35 na-2-big-TOC.txt
+[ec2-user@ip-10-0-2-238 backups]$
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">backups</span></code> directory for table <code class="docutils literal notranslate"><span class="pre">cqlkeyspace/t</span></code> is created within the <code class="docutils literal notranslate"><span class="pre">data</span></code> directory for the table:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ cd ./cassandra/data/data/cqlkeyspace/t-
+d132e240c21711e9bbee19821dcea330
+[ec2-user@ip-10-0-2-238 t-d132e240c21711e9bbee19821dcea330]$ ls -l
+total 36
+drwxrwxr-x. 2 ec2-user ec2-user  226 Aug 19 02:30 backups
+-rw-rw-r--. 2 ec2-user ec2-user   47 Aug 19 02:30 na-1-big-CompressionInfo.db
+-rw-rw-r--. 2 ec2-user ec2-user   79 Aug 19 02:30 na-1-big-Data.db
+-rw-rw-r--. 2 ec2-user ec2-user   10 Aug 19 02:30 na-1-big-Digest.crc32
+-rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 02:30 na-1-big-Filter.db
+-rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 02:30 na-1-big-Index.db
+-rw-rw-r--. 2 ec2-user ec2-user 4696 Aug 19 02:30 na-1-big-Statistics.db
+-rw-rw-r--. 2 ec2-user ec2-user   56 Aug 19 02:30 na-1-big-Summary.db
+-rw-rw-r--. 2 ec2-user ec2-user   92 Aug 19 02:30 na-1-big-TOC.txt
+</pre></div>
+</div>
+<p>The incremental backups for the other keyspaces/tables get created similarly. As an example the <code class="docutils literal notranslate"><span class="pre">backups</span></code> directory for table <code class="docutils literal notranslate"><span class="pre">catalogkeyspace/magazine</span></code> is created within the data directory:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ cd ./cassandra/data/data/catalogkeyspace/magazine-
+446eae30c22a11e9b1350d927649052c
+[ec2-user@ip-10-0-2-238 magazine-446eae30c22a11e9b1350d927649052c]$ ls -l
+total 36
+drwxrwxr-x. 2 ec2-user ec2-user  226 Aug 19 02:38 backups
+-rw-rw-r--. 2 ec2-user ec2-user   47 Aug 19 02:38 na-1-big-CompressionInfo.db
+-rw-rw-r--. 2 ec2-user ec2-user   97 Aug 19 02:38 na-1-big-Data.db
+-rw-rw-r--. 2 ec2-user ec2-user   10 Aug 19 02:38 na-1-big-Digest.crc32
+-rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 02:38 na-1-big-Filter.db
+-rw-rw-r--. 2 ec2-user ec2-user   16 Aug 19 02:38 na-1-big-Index.db
+-rw-rw-r--. 2 ec2-user ec2-user 4687 Aug 19 02:38 na-1-big-Statistics.db
+-rw-rw-r--. 2 ec2-user ec2-user   56 Aug 19 02:38 na-1-big-Summary.db
+-rw-rw-r--. 2 ec2-user ec2-user   92 Aug 19 02:38 na-1-big-TOC.txt
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="restoring-from-incremental-backups-and-snapshots">
+<h2>Restoring from  Incremental Backups and Snapshots<a class="headerlink" href="#restoring-from-incremental-backups-and-snapshots" title="Permalink to this headline">¶</a></h2>
+<p>The two main tools/commands for restoring a table after it has been dropped are:</p>
+<ul class="simple">
+<li>sstableloader</li>
+<li>nodetool import</li>
+</ul>
+<p>A snapshot contains essentially the same set of SSTable files as an incremental backup does with a few additional files. A snapshot includes a <code class="docutils literal notranslate"><span class="pre">schema.cql</span></code> file for the schema DDL to create a table in CQL. A table backup does not include DDL which must be obtained from a snapshot when restoring from an incremental backup.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="bulk_loading.html" class="btn btn-default pull-right " role="button" title="Bulk Loading" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="cdc.html" class="btn btn-default" role="button" title="Change Data Capture" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/bloom_filters.html b/src/doc/4.0-rc1/operating/bloom_filters.html
new file mode 100644
index 0000000..671dcfd
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/bloom_filters.html
@@ -0,0 +1,162 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Bloom Filters"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Compression" href="compression.html"/>
+      <link rel="prev" title="Compaction" href="compaction/index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Bloom Filters</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#changing">Changing</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="bloom-filters">
+<h1>Bloom Filters<a class="headerlink" href="#bloom-filters" title="Permalink to this headline">¶</a></h1>
+<p>In the read path, Cassandra merges data on disk (in SSTables) with data in RAM (in memtables). To avoid checking every
+SSTable data file for the partition being requested, Cassandra employs a data structure known as a bloom filter.</p>
+<p>Bloom filters are a probabilistic data structure that allows Cassandra to determine one of two possible states: - The
+data definitely does not exist in the given file, or - The data probably exists in the given file.</p>
+<p>While bloom filters can not guarantee that the data exists in a given SSTable, bloom filters can be made more accurate
+by allowing them to consume more RAM. Operators have the opportunity to tune this behavior per table by adjusting the
+the <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> to a float between 0 and 1.</p>
+<p>The default value for <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> is 0.1 for tables using LeveledCompactionStrategy and 0.01 for all
+other cases.</p>
+<p>Bloom filters are stored in RAM, but are stored offheap, so operators should not consider bloom filters when selecting
+the maximum heap size.  As accuracy improves (as the <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> gets closer to 0), memory usage
+increases non-linearly - the bloom filter for <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span> <span class="pre">=</span> <span class="pre">0.01</span></code> will require about three times as much
+memory as the same table with <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span> <span class="pre">=</span> <span class="pre">0.1</span></code>.</p>
+<p>Typical values for <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> are usually between 0.01 (1%) to 0.1 (10%) false-positive chance, where
+Cassandra may scan an SSTable for a row, only to find that it does not exist on the disk. The parameter should be tuned
+by use case:</p>
+<ul class="simple">
+<li>Users with more RAM and slower disks may benefit from setting the <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> to a numerically lower
+number (such as 0.01) to avoid excess IO operations</li>
+<li>Users with less RAM, more dense nodes, or very fast disks may tolerate a higher <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> in order to
+save RAM at the expense of excess IO operations</li>
+<li>In workloads that rarely read, or that only perform reads by scanning the entire data set (such as analytics
+workloads), setting the <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> to a much higher number is acceptable.</li>
+</ul>
+<div class="section" id="changing">
+<h2>Changing<a class="headerlink" href="#changing" title="Permalink to this headline">¶</a></h2>
+<p>The bloom filter false positive chance is visible in the <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span> <span class="pre">TABLE</span></code> output as the field
+<code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code>. Operators can change the value with an <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ALTER TABLE keyspace.table WITH bloom_filter_fp_chance=0.01
+</pre></div>
+</div>
+<p>Operators should be aware, however, that this change is not immediate: the bloom filter is calculated when the file is
+written, and persisted on disk as the Filter component of the SSTable. Upon issuing an <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement, new
+files on disk will be written with the new <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code>, but existing sstables will not be modified until
+they are compacted - if an operator needs a change to <code class="docutils literal notranslate"><span class="pre">bloom_filter_fp_chance</span></code> to take effect, they can trigger an
+SSTable rewrite using <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">scrub</span></code> or <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">upgradesstables</span> <span class="pre">-a</span></code>, both of which will rebuild the sstables on
+disk, regenerating the bloom filters in the progress.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="compression.html" class="btn btn-default pull-right " role="button" title="Compression" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="compaction/index.html" class="btn btn-default" role="button" title="Compaction" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/bulk_loading.html b/src/doc/4.0-rc1/operating/bulk_loading.html
new file mode 100644
index 0000000..e39075f
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/bulk_loading.html
@@ -0,0 +1,680 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Bulk Loading"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Monitoring" href="metrics.html"/>
+      <link rel="prev" title="Backups" href="backups.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Bulk Loading</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#tools-for-bulk-loading">Tools for Bulk Loading</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#using-sstableloader">Using sstableloader</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#using-nodetool-import">Using nodetool import</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#bulk-loading-external-data">Bulk Loading External Data</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="bulk-loading">
+<span id="id1"></span><h1>Bulk Loading<a class="headerlink" href="#bulk-loading" title="Permalink to this headline">¶</a></h1>
+<p>Bulk loading of data in Apache Cassandra is supported by different tools. The data to be bulk loaded must be in the form of SSTables. Cassandra does not support loading data in any other format such as CSV, JSON, and XML directly. Bulk loading could be used to:</p>
+<ul class="simple">
+<li>Restore incremental backups and snapshots. Backups and snapshots are already in the form of SSTables.</li>
+<li>Load existing SSTables into another cluster, which could have a different number of nodes or replication strategy.</li>
+<li>Load external data into a cluster</li>
+</ul>
+<p><a href="#id2"><span class="problematic" id="id3">**</span></a>Note*: CSV Data can be loaded via the cqlsh COPY command but we do not recommend this for bulk loading, which typically requires many GB or TB of data.</p>
+<div class="section" id="tools-for-bulk-loading">
+<h2>Tools for Bulk Loading<a class="headerlink" href="#tools-for-bulk-loading" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra provides two commands or tools for bulk loading data. These are:</p>
+<ul class="simple">
+<li>Cassandra Bulk loader, also called <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code></li>
+<li>The <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> command</li>
+</ul>
+<p>The <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> and <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> are accessible if the Cassandra installation <code class="docutils literal notranslate"><span class="pre">bin</span></code> directory is in the <code class="docutils literal notranslate"><span class="pre">PATH</span></code> environment variable.  Or these may be accessed directly from the <code class="docutils literal notranslate"><span class="pre">bin</span></code> directory. We shall discuss each of these next. We shall use the example or sample keyspaces and tables created in the Backups section.</p>
+</div>
+<div class="section" id="using-sstableloader">
+<h2>Using sstableloader<a class="headerlink" href="#using-sstableloader" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> is the main tool for bulk uploading data. The <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> streams SSTable data files to a running cluster. The <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> loads data conforming to the replication strategy and replication factor. The table to upload data to does need not to be empty.</p>
+<p>The only requirements to run <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> are:</p>
+<ol class="arabic simple">
+<li>One or more comma separated initial hosts to connect to and get ring information.</li>
+<li>A directory path for the SSTables to load.</li>
+</ol>
+<p>Its usage is as follows.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sstableloader [options] &lt;dir_path&gt;
+</pre></div>
+</div>
+<p>Sstableloader bulk loads the SSTables found in the directory <code class="docutils literal notranslate"><span class="pre">&lt;dir_path&gt;</span></code> to the configured cluster. The   <code class="docutils literal notranslate"><span class="pre">&lt;dir_path&gt;</span></code> is used as the target <em>keyspace/table</em> name. As an example, to load an SSTable named
+<code class="docutils literal notranslate"><span class="pre">Standard1-g-1-Data.db</span></code> into <code class="docutils literal notranslate"><span class="pre">Keyspace1/Standard1</span></code>, you will need to have the
+files <code class="docutils literal notranslate"><span class="pre">Standard1-g-1-Data.db</span></code> and <code class="docutils literal notranslate"><span class="pre">Standard1-g-1-Index.db</span></code> in a directory <code class="docutils literal notranslate"><span class="pre">/path/to/Keyspace1/Standard1/</span></code>.</p>
+<div class="section" id="sstableloader-option-to-accept-target-keyspace-name">
+<h3>Sstableloader Option to accept Target keyspace name<a class="headerlink" href="#sstableloader-option-to-accept-target-keyspace-name" title="Permalink to this headline">¶</a></h3>
+<p>Often as part of a backup strategy some Cassandra DBAs store an entire data directory. When corruption in data is found then they would like to restore data in the same cluster (for large clusters 200 nodes) but with different keyspace name.</p>
+<p>Currently <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> derives keyspace name from the folder structure. As  an option to specify target keyspace name as part of <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code>, version 4.0 adds support for the <code class="docutils literal notranslate"><span class="pre">--target-keyspace</span></code>  option (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-13884">CASSANDRA-13884</a>).</p>
+<p>The supported options are as follows from which only <code class="docutils literal notranslate"><span class="pre">-d,--nodes</span> <span class="pre">&lt;initial</span> <span class="pre">hosts&gt;</span></code>  is required.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>-alg,--ssl-alg &lt;ALGORITHM&gt;                                   Client SSL: algorithm
+
+-ap,--auth-provider &lt;auth provider&gt;                          Custom
+                                                             AuthProvider class name for
+                                                             cassandra authentication
+-ciphers,--ssl-ciphers &lt;CIPHER-SUITES&gt;                       Client SSL:
+                                                             comma-separated list of
+                                                             encryption suites to use
+-cph,--connections-per-host &lt;connectionsPerHost&gt;             Number of
+                                                             concurrent connections-per-host.
+-d,--nodes &lt;initial hosts&gt;                                   Required.
+                                                             Try to connect to these hosts (comma separated) initially for ring information
+
+-f,--conf-path &lt;path to config file&gt;                         cassandra.yaml file path for streaming throughput and client/server SSL.
+
+-h,--help                                                    Display this help message
+
+-i,--ignore &lt;NODES&gt;                                          Don&#39;t stream to this (comma separated) list of nodes
+
+-idct,--inter-dc-throttle &lt;inter-dc-throttle&gt;                Inter-datacenter throttle speed in Mbits (default unlimited)
+
+-k,--target-keyspace &lt;target keyspace name&gt;                  Target
+                                                             keyspace name
+-ks,--keystore &lt;KEYSTORE&gt;                                    Client SSL:
+                                                             full path to keystore
+-kspw,--keystore-password &lt;KEYSTORE-PASSWORD&gt;                Client SSL:
+                                                             password of the keystore
+--no-progress                                                Don&#39;t
+                                                             display progress
+-p,--port &lt;native transport port&gt;                            Port used
+                                                             for native connection (default 9042)
+-prtcl,--ssl-protocol &lt;PROTOCOL&gt;                             Client SSL:
+                                                             connections protocol to use (default: TLS)
+-pw,--password &lt;password&gt;                                    Password for
+                                                             cassandra authentication
+-sp,--storage-port &lt;storage port&gt;                            Port used
+                                                             for internode communication (default 7000)
+-spd,--server-port-discovery &lt;allow server port discovery&gt;   Use ports
+                                                             published by server to decide how to connect. With SSL requires StartTLS
+                                                             to be used.
+-ssp,--ssl-storage-port &lt;ssl storage port&gt;                   Port used
+                                                             for TLS internode communication (default 7001)
+-st,--store-type &lt;STORE-TYPE&gt;                                Client SSL:
+                                                             type of store
+-t,--throttle &lt;throttle&gt;                                     Throttle
+                                                             speed in Mbits (default unlimited)
+-ts,--truststore &lt;TRUSTSTORE&gt;                                Client SSL:
+                                                             full path to truststore
+-tspw,--truststore-password &lt;TRUSTSTORE-PASSWORD&gt;            Client SSL:
+                                                             Password of the truststore
+-u,--username &lt;username&gt;                                     Username for
+                                                             cassandra authentication
+-v,--verbose                                                 verbose
+                                                             output
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> file could be provided  on the command-line with <code class="docutils literal notranslate"><span class="pre">-f</span></code> option to set up streaming throughput, client and server encryption options. Only <code class="docutils literal notranslate"><span class="pre">stream_throughput_outbound_megabits_per_sec</span></code>, <code class="docutils literal notranslate"><span class="pre">server_encryption_options</span></code> and <code class="docutils literal notranslate"><span class="pre">client_encryption_options</span></code> are read from yaml. You can override options read from <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> with corresponding command line options.</p>
+</div>
+<div class="section" id="a-sstableloader-demo">
+<h3>A sstableloader Demo<a class="headerlink" href="#a-sstableloader-demo" title="Permalink to this headline">¶</a></h3>
+<p>We shall demonstrate using <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> by uploading incremental backup data for table <code class="docutils literal notranslate"><span class="pre">catalogkeyspace.magazine</span></code>.  We shall also use a snapshot of the same table to bulk upload in a different run of  <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code>.  The backups and snapshots for the <code class="docutils literal notranslate"><span class="pre">catalogkeyspace.magazine</span></code> table are listed as follows.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ cd ./cassandra/data/data/catalogkeyspace/magazine-
+446eae30c22a11e9b1350d927649052c
+[ec2-user@ip-10-0-2-238 magazine-446eae30c22a11e9b1350d927649052c]$ ls -l
+total 0
+drwxrwxr-x. 2 ec2-user ec2-user 226 Aug 19 02:38 backups
+drwxrwxr-x. 4 ec2-user ec2-user  40 Aug 19 02:45 snapshots
+</pre></div>
+</div>
+<p>The directory path structure of SSTables to be uploaded using <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> is used as the  target keyspace/table.</p>
+<p>We could have directly uploaded from the <code class="docutils literal notranslate"><span class="pre">backups</span></code> and <code class="docutils literal notranslate"><span class="pre">snapshots</span></code> directories respectively if the directory structure were in the format used by <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code>. But the directory path of backups and snapshots for SSTables  is <code class="docutils literal notranslate"><span class="pre">/catalogkeyspace/magazine-446eae30c22a11e9b1350d927649052c/backups</span></code> and <code class="docutils literal notranslate"><span class="pre">/catalogkeyspace/magazine-446eae30c22a11e9b1350d927649052c/snapshots</span></code> respectively, which cannot be used to upload SSTables to <code class="docutils literal notranslate"><span class="pre">catalogkeyspace.magazine</span></code> table. The directory path structure must be <code class="docutils literal notranslate"><span class="pre">/catalogkeyspace/magazine/</span></code> to use <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code>. We need to create a new directory structure to upload SSTables with <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> which is typical when using <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code>. Create a directory structure <code class="docutils literal notranslate"><span class="pre">/catalogkeyspace/magazine</span></code> and set its permissions.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ sudo mkdir -p /catalogkeyspace/magazine
+[ec2-user@ip-10-0-2-238 ~]$ sudo chmod -R 777 /catalogkeyspace/magazine
+</pre></div>
+</div>
+<div class="section" id="bulk-loading-from-an-incremental-backup">
+<h4>Bulk Loading from an Incremental Backup<a class="headerlink" href="#bulk-loading-from-an-incremental-backup" title="Permalink to this headline">¶</a></h4>
+<p>An incremental backup does not include the DDL for a table. The table must already exist. If the table was dropped it may be created using the <code class="docutils literal notranslate"><span class="pre">schema.cql</span></code> generated with every snapshot of a table. As we shall be using <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> to load SSTables to the <code class="docutils literal notranslate"><span class="pre">magazine</span></code> table, the table must exist prior to running <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code>. The table does not need to be empty but we have used an empty table as indicated by a CQL query:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:catalogkeyspace&gt; SELECT * FROM magazine;
+
+id | name | publisher
+----+------+-----------
+
+(0 rows)
+</pre></div>
+</div>
+<p>After the table to upload has been created copy the SSTable files from the <code class="docutils literal notranslate"><span class="pre">backups</span></code> directory to the <code class="docutils literal notranslate"><span class="pre">/catalogkeyspace/magazine/</span></code> directory that we created.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ sudo cp ./cassandra/data/data/catalogkeyspace/magazine-
+446eae30c22a11e9b1350d927649052c/backups/* /catalogkeyspace/magazine/
+</pre></div>
+</div>
+<p>Run the <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> to upload SSTables from the <code class="docutils literal notranslate"><span class="pre">/catalogkeyspace/magazine/</span></code> directory.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sstableloader --nodes 10.0.2.238  /catalogkeyspace/magazine/
+</pre></div>
+</div>
+<p>The output from the <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> command should be similar to the listed:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ sstableloader --nodes 10.0.2.238  /catalogkeyspace/magazine/
+Opening SSTables and calculating sections to stream
+Streaming relevant part of /catalogkeyspace/magazine/na-1-big-Data.db
+/catalogkeyspace/magazine/na-2-big-Data.db  to [35.173.233.153:7000, 10.0.2.238:7000,
+54.158.45.75:7000]
+progress: [35.173.233.153:7000]0:1/2 88 % total: 88% 0.018KiB/s (avg: 0.018KiB/s)
+progress: [35.173.233.153:7000]0:2/2 176% total: 176% 33.807KiB/s (avg: 0.036KiB/s)
+progress: [35.173.233.153:7000]0:2/2 176% total: 176% 0.000KiB/s (avg: 0.029KiB/s)
+progress: [35.173.233.153:7000]0:2/2 176% [10.0.2.238:7000]0:1/2 39 % total: 81% 0.115KiB/s
+(avg: 0.024KiB/s)
+progress: [35.173.233.153:7000]0:2/2 176% [10.0.2.238:7000]0:2/2 78 % total: 108%
+97.683KiB/s (avg: 0.033KiB/s)
+progress: [35.173.233.153:7000]0:2/2 176% [10.0.2.238:7000]0:2/2 78 %
+[54.158.45.75:7000]0:1/2 39 % total: 80% 0.233KiB/s (avg: 0.040KiB/s)
+progress: [35.173.233.153:7000]0:2/2 176% [10.0.2.238:7000]0:2/2 78 %
+[54.158.45.75:7000]0:2/2 78 % total: 96% 88.522KiB/s (avg: 0.049KiB/s)
+progress: [35.173.233.153:7000]0:2/2 176% [10.0.2.238:7000]0:2/2 78 %
+[54.158.45.75:7000]0:2/2 78 % total: 96% 0.000KiB/s (avg: 0.045KiB/s)
+progress: [35.173.233.153:7000]0:2/2 176% [10.0.2.238:7000]0:2/2 78 %
+[54.158.45.75:7000]0:2/2 78 % total: 96% 0.000KiB/s (avg: 0.044KiB/s)
+</pre></div>
+</div>
+<p>After the <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> has run query the <code class="docutils literal notranslate"><span class="pre">magazine</span></code> table and the loaded table should get listed when a query is run.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:catalogkeyspace&gt; SELECT * FROM magazine;
+
+id | name                      | publisher
+----+---------------------------+------------------
+ 1 |        Couchbase Magazine |        Couchbase
+ 0 | Apache Cassandra Magazine | Apache Cassandra
+
+(2 rows)
+cqlsh:catalogkeyspace&gt;
+</pre></div>
+</div>
+</div>
+<div class="section" id="bulk-loading-from-a-snapshot">
+<h4>Bulk Loading from a Snapshot<a class="headerlink" href="#bulk-loading-from-a-snapshot" title="Permalink to this headline">¶</a></h4>
+<p>In this section we shall demonstrate restoring a snapshot of the <code class="docutils literal notranslate"><span class="pre">magazine</span></code> table to the <code class="docutils literal notranslate"><span class="pre">magazine</span></code> table.  As we used the same table to restore data from a backup the directory structure required by <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> should already exist.  If the directory structure needed to load SSTables to <code class="docutils literal notranslate"><span class="pre">catalogkeyspace.magazine</span></code> does not exist create the directories and set their permissions.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ sudo mkdir -p /catalogkeyspace/magazine
+[ec2-user@ip-10-0-2-238 ~]$ sudo chmod -R 777 /catalogkeyspace/magazine
+</pre></div>
+</div>
+<p>As we shall be copying the snapshot  files to the directory remove any files that may be in the directory.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ sudo rm /catalogkeyspace/magazine/*
+[ec2-user@ip-10-0-2-238 ~]$ cd /catalogkeyspace/magazine/
+[ec2-user@ip-10-0-2-238 magazine]$ ls -l
+total 0
+</pre></div>
+</div>
+<p>Copy the snapshot files to the <code class="docutils literal notranslate"><span class="pre">/catalogkeyspace/magazine</span></code> directory.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ sudo cp ./cassandra/data/data/catalogkeyspace/magazine-
+446eae30c22a11e9b1350d927649052c/snapshots/magazine/* /catalogkeyspace/magazine
+</pre></div>
+</div>
+<p>List the files in the <code class="docutils literal notranslate"><span class="pre">/catalogkeyspace/magazine</span></code> directory and a <code class="docutils literal notranslate"><span class="pre">schema.cql</span></code> should also get listed.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ cd /catalogkeyspace/magazine
+[ec2-user@ip-10-0-2-238 magazine]$ ls -l
+total 44
+-rw-r--r--. 1 root root   31 Aug 19 04:13 manifest.json
+-rw-r--r--. 1 root root   47 Aug 19 04:13 na-1-big-CompressionInfo.db
+-rw-r--r--. 1 root root   97 Aug 19 04:13 na-1-big-Data.db
+-rw-r--r--. 1 root root   10 Aug 19 04:13 na-1-big-Digest.crc32
+-rw-r--r--. 1 root root   16 Aug 19 04:13 na-1-big-Filter.db
+-rw-r--r--. 1 root root   16 Aug 19 04:13 na-1-big-Index.db
+-rw-r--r--. 1 root root 4687 Aug 19 04:13 na-1-big-Statistics.db
+-rw-r--r--. 1 root root   56 Aug 19 04:13 na-1-big-Summary.db
+-rw-r--r--. 1 root root   92 Aug 19 04:13 na-1-big-TOC.txt
+-rw-r--r--. 1 root root  815 Aug 19 04:13 schema.cql
+</pre></div>
+</div>
+<p>Alternatively create symlinks to the snapshot folder instead of copying the data, something like:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>mkdir keyspace_name
+ln -s _path_to_snapshot_folder keyspace_name/table_name
+</pre></div>
+</div>
+<p>If the <code class="docutils literal notranslate"><span class="pre">magazine</span></code> table was dropped run the DDL in the <code class="docutils literal notranslate"><span class="pre">schema.cql</span></code> to create the table.  Run the <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> with the following command.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sstableloader --nodes 10.0.2.238  /catalogkeyspace/magazine/
+</pre></div>
+</div>
+<p>As the output from the command indicates SSTables get streamed to the cluster.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ sstableloader --nodes 10.0.2.238  /catalogkeyspace/magazine/
+
+Established connection to initial hosts
+Opening SSTables and calculating sections to stream
+Streaming relevant part of /catalogkeyspace/magazine/na-1-big-Data.db  to
+[35.173.233.153:7000, 10.0.2.238:7000, 54.158.45.75:7000]
+progress: [35.173.233.153:7000]0:1/1 176% total: 176% 0.017KiB/s (avg: 0.017KiB/s)
+progress: [35.173.233.153:7000]0:1/1 176% total: 176% 0.000KiB/s (avg: 0.014KiB/s)
+progress: [35.173.233.153:7000]0:1/1 176% [10.0.2.238:7000]0:1/1 78 % total: 108% 0.115KiB/s
+(avg: 0.017KiB/s)
+progress: [35.173.233.153:7000]0:1/1 176% [10.0.2.238:7000]0:1/1 78 %
+[54.158.45.75:7000]0:1/1 78 % total: 96% 0.232KiB/s (avg: 0.024KiB/s)
+progress: [35.173.233.153:7000]0:1/1 176% [10.0.2.238:7000]0:1/1 78 %
+[54.158.45.75:7000]0:1/1 78 % total: 96% 0.000KiB/s (avg: 0.022KiB/s)
+progress: [35.173.233.153:7000]0:1/1 176% [10.0.2.238:7000]0:1/1 78 %
+[54.158.45.75:7000]0:1/1 78 % total: 96% 0.000KiB/s (avg: 0.021KiB/s)
+</pre></div>
+</div>
+<p>Some other requirements of <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> that should be kept into consideration are:</p>
+<ul class="simple">
+<li>The SSTables to be loaded must be compatible with  the Cassandra version being loaded into.</li>
+<li>Repairing tables that have been loaded into a different cluster does not repair the source tables.</li>
+<li>Sstableloader makes use of port 7000 for internode communication.</li>
+<li>Before restoring incremental backups run <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">flush</span></code> to backup any data in memtables</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="section" id="using-nodetool-import">
+<h2>Using nodetool import<a class="headerlink" href="#using-nodetool-import" title="Permalink to this headline">¶</a></h2>
+<p>In this section we shall import SSTables into a table using the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> command. The <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">refresh</span></code> command is deprecated, and it is recommended to use <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> instead. The <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">refresh</span></code> does not have an option to load new SSTables from a separate directory which the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> does.</p>
+<p>The command usage is as follows.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool [(-h &lt;host&gt; | --host &lt;host&gt;)] [(-p &lt;port&gt; | --port &lt;port&gt;)]
+       [(-pp | --print-port)] [(-pw &lt;password&gt; | --password &lt;password&gt;)]
+       [(-pwf &lt;passwordFilePath&gt; | --password-file &lt;passwordFilePath&gt;)]
+       [(-u &lt;username&gt; | --username &lt;username&gt;)] import
+       [(-c | --no-invalidate-caches)] [(-e | --extended-verify)]
+       [(-l | --keep-level)] [(-q | --quick)] [(-r | --keep-repaired)]
+       [(-t | --no-tokens)] [(-v | --no-verify)] [--] &lt;keyspace&gt; &lt;table&gt;
+       &lt;directory&gt; ...
+</pre></div>
+</div>
+<p>The arguments <code class="docutils literal notranslate"><span class="pre">keyspace</span></code>, <code class="docutils literal notranslate"><span class="pre">table</span></code> name and <code class="docutils literal notranslate"><span class="pre">directory</span></code> to import SSTables from are required.</p>
+<p>The supported options are as follows.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>-c, --no-invalidate-caches
+    Don&#39;t invalidate the row cache when importing
+
+-e, --extended-verify
+    Run an extended verify, verifying all values in the new SSTables
+
+-h &lt;host&gt;, --host &lt;host&gt;
+    Node hostname or ip address
+
+-l, --keep-level
+    Keep the level on the new SSTables
+
+-p &lt;port&gt;, --port &lt;port&gt;
+    Remote jmx agent port number
+
+-pp, --print-port
+    Operate in 4.0 mode with hosts disambiguated by port number
+
+-pw &lt;password&gt;, --password &lt;password&gt;
+    Remote jmx agent password
+
+-pwf &lt;passwordFilePath&gt;, --password-file &lt;passwordFilePath&gt;
+    Path to the JMX password file
+
+-q, --quick
+    Do a quick import without verifying SSTables, clearing row cache or
+    checking in which data directory to put the file
+
+-r, --keep-repaired
+    Keep any repaired information from the SSTables
+
+-t, --no-tokens
+    Don&#39;t verify that all tokens in the new SSTable are owned by the
+    current node
+
+-u &lt;username&gt;, --username &lt;username&gt;
+    Remote jmx agent username
+
+-v, --no-verify
+    Don&#39;t verify new SSTables
+
+--
+    This option can be used to separate command-line options from the
+    list of argument, (useful when arguments might be mistaken for
+    command-line options
+</pre></div>
+</div>
+<p>As the keyspace and table are specified on the command line  <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> does not have the same requirement that <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> does, which is to have the SSTables in a specific directory path. When importing snapshots or incremental backups with <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> the SSTables don’t need to be copied to another directory.</p>
+<div class="section" id="importing-data-from-an-incremental-backup">
+<h3>Importing Data from an Incremental Backup<a class="headerlink" href="#importing-data-from-an-incremental-backup" title="Permalink to this headline">¶</a></h3>
+<p>In this section we shall demonstrate using <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> to import SSTables from an incremental backup.  We shall use the example table <code class="docutils literal notranslate"><span class="pre">cqlkeyspace.t</span></code>. Drop table <code class="docutils literal notranslate"><span class="pre">t</span></code> as we are demonstrating to   restore the table.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; DROP table t;
+</pre></div>
+</div>
+<p>An incremental backup for a table does not include the schema definition for the table. If the schema definition is not kept as a separate backup,  the <code class="docutils literal notranslate"><span class="pre">schema.cql</span></code> from a backup of the table may be used to create the table as follows.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; CREATE TABLE IF NOT EXISTS cqlkeyspace.t (
+              ...         id int PRIMARY KEY,
+              ...         k int,
+              ...         v text)
+              ...         WITH ID = d132e240-c217-11e9-bbee-19821dcea330
+              ...         AND bloom_filter_fp_chance = 0.01
+              ...         AND crc_check_chance = 1.0
+              ...         AND default_time_to_live = 0
+              ...         AND gc_grace_seconds = 864000
+              ...         AND min_index_interval = 128
+              ...         AND max_index_interval = 2048
+              ...         AND memtable_flush_period_in_ms = 0
+              ...         AND speculative_retry = &#39;99p&#39;
+              ...         AND additional_write_policy = &#39;99p&#39;
+              ...         AND comment = &#39;&#39;
+              ...         AND caching = { &#39;keys&#39;: &#39;ALL&#39;, &#39;rows_per_partition&#39;: &#39;NONE&#39; }
+              ...         AND compaction = { &#39;max_threshold&#39;: &#39;32&#39;, &#39;min_threshold&#39;: &#39;4&#39;,
+&#39;class&#39;: &#39;org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy&#39; }
+              ...         AND compression = { &#39;chunk_length_in_kb&#39;: &#39;16&#39;, &#39;class&#39;:
+&#39;org.apache.cassandra.io.compress.LZ4Compressor&#39; }
+              ...         AND cdc = false
+              ...         AND extensions = {  };
+</pre></div>
+</div>
+<p>Initially the table could be empty, but does not have to be.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; SELECT * FROM t;
+
+id | k | v
+----+---+---
+
+(0 rows)
+</pre></div>
+</div>
+<p>Run the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> command by providing the keyspace, table and the backups directory. We don’t need to copy the table backups to another directory to run  <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> as we had to when using <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code>.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool import -- cqlkeyspace t
+./cassandra/data/data/cqlkeyspace/t-d132e240c21711e9bbee19821dcea330/backups
+[ec2-user@ip-10-0-2-238 ~]$
+</pre></div>
+</div>
+<p>The SSTables get imported into the table. Run a query in cqlsh to list the data imported.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; SELECT * FROM t;
+
+id | k | v
+----+---+------
+ 1 | 1 | val1
+ 0 | 0 | val0
+</pre></div>
+</div>
+</div>
+<div class="section" id="importing-data-from-a-snapshot">
+<h3>Importing Data from a Snapshot<a class="headerlink" href="#importing-data-from-a-snapshot" title="Permalink to this headline">¶</a></h3>
+<p>Importing SSTables from a snapshot with the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> command is similar to importing SSTables from an incremental backup. To demonstrate we shall import a snapshot for table <code class="docutils literal notranslate"><span class="pre">catalogkeyspace.journal</span></code>.  Drop the table as we are demonstrating to restore the table from a snapshot.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; use CATALOGKEYSPACE;
+cqlsh:catalogkeyspace&gt; DROP TABLE journal;
+</pre></div>
+</div>
+<p>We shall use the <code class="docutils literal notranslate"><span class="pre">catalog-ks</span></code> snapshot for the <code class="docutils literal notranslate"><span class="pre">journal</span></code> table. List the files in the snapshot. The snapshot includes a <code class="docutils literal notranslate"><span class="pre">schema.cql</span></code>, which is the schema definition for the <code class="docutils literal notranslate"><span class="pre">journal</span></code> table.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 catalog-ks]$ ls -l
+total 44
+-rw-rw-r--. 1 ec2-user ec2-user   31 Aug 19 02:44 manifest.json
+-rw-rw-r--. 3 ec2-user ec2-user   47 Aug 19 02:38 na-1-big-CompressionInfo.db
+-rw-rw-r--. 3 ec2-user ec2-user   97 Aug 19 02:38 na-1-big-Data.db
+-rw-rw-r--. 3 ec2-user ec2-user   10 Aug 19 02:38 na-1-big-Digest.crc32
+-rw-rw-r--. 3 ec2-user ec2-user   16 Aug 19 02:38 na-1-big-Filter.db
+-rw-rw-r--. 3 ec2-user ec2-user   16 Aug 19 02:38 na-1-big-Index.db
+-rw-rw-r--. 3 ec2-user ec2-user 4687 Aug 19 02:38 na-1-big-Statistics.db
+-rw-rw-r--. 3 ec2-user ec2-user   56 Aug 19 02:38 na-1-big-Summary.db
+-rw-rw-r--. 3 ec2-user ec2-user   92 Aug 19 02:38 na-1-big-TOC.txt
+-rw-rw-r--. 1 ec2-user ec2-user  814 Aug 19 02:44 schema.cql
+</pre></div>
+</div>
+<p>Copy the DDL from the <code class="docutils literal notranslate"><span class="pre">schema.cql</span></code> and run in cqlsh to create the <code class="docutils literal notranslate"><span class="pre">catalogkeyspace.journal</span></code> table.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:catalogkeyspace&gt; CREATE TABLE IF NOT EXISTS catalogkeyspace.journal (
+                  ...         id int PRIMARY KEY,
+                  ...         name text,
+                  ...         publisher text)
+                  ...         WITH ID = 296a2d30-c22a-11e9-b135-0d927649052c
+                  ...         AND bloom_filter_fp_chance = 0.01
+                  ...         AND crc_check_chance = 1.0
+                  ...         AND default_time_to_live = 0
+                  ...         AND gc_grace_seconds = 864000
+                  ...         AND min_index_interval = 128
+                  ...         AND max_index_interval = 2048
+                  ...         AND memtable_flush_period_in_ms = 0
+                  ...         AND speculative_retry = &#39;99p&#39;
+                  ...         AND additional_write_policy = &#39;99p&#39;
+                  ...         AND comment = &#39;&#39;
+                  ...         AND caching = { &#39;keys&#39;: &#39;ALL&#39;, &#39;rows_per_partition&#39;: &#39;NONE&#39; }
+                  ...         AND compaction = { &#39;min_threshold&#39;: &#39;4&#39;, &#39;max_threshold&#39;:
+&#39;32&#39;, &#39;class&#39;: &#39;org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy&#39; }
+                  ...         AND compression = { &#39;chunk_length_in_kb&#39;: &#39;16&#39;, &#39;class&#39;:
+&#39;org.apache.cassandra.io.compress.LZ4Compressor&#39; }
+                  ...         AND cdc = false
+                  ...         AND extensions = {  };
+</pre></div>
+</div>
+<p>Run the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> command to import the SSTables for the snapshot.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool import -- catalogkeyspace journal
+./cassandra/data/data/catalogkeyspace/journal-
+296a2d30c22a11e9b1350d927649052c/snapshots/catalog-ks/
+[ec2-user@ip-10-0-2-238 ~]$
+</pre></div>
+</div>
+<p>Subsequently run a CQL query on the <code class="docutils literal notranslate"><span class="pre">journal</span></code> table and the data imported gets listed.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:catalogkeyspace&gt;
+cqlsh:catalogkeyspace&gt; SELECT * FROM journal;
+
+id | name                      | publisher
+----+---------------------------+------------------
+ 1 |        Couchbase Magazine |        Couchbase
+ 0 | Apache Cassandra Magazine | Apache Cassandra
+
+(2 rows)
+cqlsh:catalogkeyspace&gt;
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="bulk-loading-external-data">
+<h2>Bulk Loading External Data<a class="headerlink" href="#bulk-loading-external-data" title="Permalink to this headline">¶</a></h2>
+<p>Bulk loading external data directly is not supported by any of the tools we have discussed which include <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> and <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code>.  The <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> and <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> require data to be in the form of SSTables.  Apache Cassandra supports a Java API for generating SSTables from input data. Subsequently the <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> or <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">import</span></code> could be used to bulk load the SSTables. Next, we shall discuss the <code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.io.sstable.CQLSSTableWriter</span></code> Java class for generating SSTables.</p>
+<div class="section" id="generating-sstables-with-cqlsstablewriter-java-api">
+<h3>Generating SSTables with CQLSSTableWriter Java API<a class="headerlink" href="#generating-sstables-with-cqlsstablewriter-java-api" title="Permalink to this headline">¶</a></h3>
+<p>To generate SSTables using the <code class="docutils literal notranslate"><span class="pre">CQLSSTableWriter</span></code> class the following need to be supplied at the least.</p>
+<ul class="simple">
+<li>An output directory to generate the SSTable in</li>
+<li>The schema for the SSTable</li>
+<li>A prepared insert statement</li>
+<li>A partitioner</li>
+</ul>
+<p>The output directory must already have been created. Create a directory (<code class="docutils literal notranslate"><span class="pre">/sstables</span></code> as an example) and set its permissions.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>sudo mkdir /sstables
+sudo chmod  777 -R /sstables
+</pre></div>
+</div>
+<p>Next, we shall discuss To use <code class="docutils literal notranslate"><span class="pre">CQLSSTableWriter</span></code> could be used in a Java application. Create a Java constant for the output directory.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>public static final String OUTPUT_DIR = &quot;./sstables&quot;;
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span class="pre">CQLSSTableWriter</span></code> Java API has the provision to create a user defined type. Create a new type to store <code class="docutils literal notranslate"><span class="pre">int</span></code> data:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>String type = &quot;CREATE TYPE CQLKeyspace.intType (a int, b int)&quot;;
+// Define a String variable for the SSTable schema.
+String schema = &quot;CREATE TABLE CQLKeyspace.t (&quot;
+                 + &quot;  id int PRIMARY KEY,&quot;
+                 + &quot;  k int,&quot;
+                 + &quot;  v1 text,&quot;
+                 + &quot;  v2 intType,&quot;
+                 + &quot;)&quot;;
+</pre></div>
+</div>
+<p>Define a <code class="docutils literal notranslate"><span class="pre">String</span></code> variable for the prepared insert statement to use:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>String insertStmt = &quot;INSERT INTO CQLKeyspace.t (id, k, v1, v2) VALUES (?, ?, ?, ?)&quot;;
+</pre></div>
+</div>
+<p>The partitioner to use does not need to be set as the default partitioner <code class="docutils literal notranslate"><span class="pre">Murmur3Partitioner</span></code> is used.</p>
+<p>All these variables or settings are used by the builder class <code class="docutils literal notranslate"><span class="pre">CQLSSTableWriter.Builder</span></code> to create a <code class="docutils literal notranslate"><span class="pre">CQLSSTableWriter</span></code> object.</p>
+<p>Create a File object for the output directory.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>File outputDir = new File(OUTPUT_DIR + File.separator + &quot;CQLKeyspace&quot; + File.separator + &quot;t&quot;);
+</pre></div>
+</div>
+<p>Next, obtain a <code class="docutils literal notranslate"><span class="pre">CQLSSTableWriter.Builder</span></code> object using <code class="docutils literal notranslate"><span class="pre">static</span></code> method <code class="docutils literal notranslate"><span class="pre">CQLSSTableWriter.builder()</span></code>. Set the output
+directory <code class="docutils literal notranslate"><span class="pre">File</span></code> object, user defined type, SSTable schema, buffer size,  prepared insert statement, and optionally any of the other builder options, and invoke the <code class="docutils literal notranslate"><span class="pre">build()</span></code> method to create a <code class="docutils literal notranslate"><span class="pre">CQLSSTableWriter</span></code> object:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CQLSSTableWriter writer = CQLSSTableWriter.builder()
+                                             .inDirectory(outputDir)
+                                             .withType(type)
+                                             .forTable(schema)
+                                             .withBufferSizeInMB(256)
+                                             .using(insertStmt).build();
+</pre></div>
+</div>
+<p>Next, set the SSTable data. If any user define types are used obtain a <code class="docutils literal notranslate"><span class="pre">UserType</span></code> object for these:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>UserType userType = writer.getUDType(&quot;intType&quot;);
+</pre></div>
+</div>
+<p>Add data rows for the resulting SSTable.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>writer.addRow(0, 0, &quot;val0&quot;, userType.newValue().setInt(&quot;a&quot;, 0).setInt(&quot;b&quot;, 0));
+   writer.addRow(1, 1, &quot;val1&quot;, userType.newValue().setInt(&quot;a&quot;, 1).setInt(&quot;b&quot;, 1));
+   writer.addRow(2, 2, &quot;val2&quot;, userType.newValue().setInt(&quot;a&quot;, 2).setInt(&quot;b&quot;, 2));
+</pre></div>
+</div>
+<p>Close the writer, finalizing the SSTable.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>writer.close();
+</pre></div>
+</div>
+<p>All the public methods the <code class="docutils literal notranslate"><span class="pre">CQLSSTableWriter</span></code> class provides including some other methods that are not discussed in the preceding example are as follows.</p>
+<p>All the public  methods the  <code class="docutils literal notranslate"><span class="pre">CQLSSTableWriter.Builder</span></code> class provides including some other methods that are not discussed in the preceding example are as follows.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="25%" />
+<col width="75%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Method</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>inDirectory(String directory)</td>
+<td>The directory where to write the SSTables.  This is a mandatory option.  The directory to use should already exist and be writable.</td>
+</tr>
+<tr class="row-odd"><td>inDirectory(File directory)</td>
+<td>The directory where to write the SSTables.  This is a mandatory option.  The directory to use should already exist and be writable.</td>
+</tr>
+<tr class="row-even"><td>forTable(String schema)</td>
+<td>The schema (CREATE TABLE statement) for the table for which SSTable is to be created.  The
+provided CREATE TABLE statement must use a fully-qualified table name, one that includes the
+keyspace name. This is a mandatory option.</td>
+</tr>
+<tr class="row-odd"><td>withPartitioner(IPartitioner partitioner)</td>
+<td>The partitioner to use. By default,  Murmur3Partitioner will be used. If this is not the
+partitioner used by the cluster for which the SSTables are created, the correct partitioner
+needs to be provided.</td>
+</tr>
+<tr class="row-even"><td>using(String insert)</td>
+<td>The INSERT or UPDATE statement defining the order of the values to add for a given CQL row.
+The provided INSERT statement must use a fully-qualified table name, one that includes the
+keyspace name. Moreover, said statement must use bind variables since these variables will
+be bound to values by the resulting SSTable writer. This is a mandatory option.</td>
+</tr>
+<tr class="row-odd"><td>withBufferSizeInMB(int size)</td>
+<td>The size of the buffer to use. This defines how much data will be buffered before being
+written as a new SSTable. This corresponds roughly to the data size that will have the
+created SSTable. The default is 128MB, which should be reasonable for a 1GB heap. If
+OutOfMemory exception gets generated while using the SSTable writer, should lower this
+value.</td>
+</tr>
+<tr class="row-even"><td>sorted()</td>
+<td>Creates a CQLSSTableWriter that expects sorted inputs. If this option is used, the resulting
+SSTable writer will expect rows to be added in SSTable sorted order (and an exception will
+be thrown if that is not the case during row insertion). The SSTable sorted order means that
+rows are added such that their partition keys respect the partitioner order. This option
+should only be used if the rows can be provided in order, which is rarely the case. If the
+rows can be provided in order however, using this sorted might be more efficient. If this
+option is used, some option like withBufferSizeInMB will be ignored.</td>
+</tr>
+<tr class="row-odd"><td>build()</td>
+<td>Builds a CQLSSTableWriter object.</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="metrics.html" class="btn btn-default pull-right " role="button" title="Monitoring" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="backups.html" class="btn btn-default" role="button" title="Backups" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/cdc.html b/src/doc/4.0-rc1/operating/cdc.html
new file mode 100644
index 0000000..448058c
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/cdc.html
@@ -0,0 +1,194 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Change Data Capture"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Backups" href="backups.html"/>
+      <link rel="prev" title="Compression" href="compression.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Change Data Capture</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#overview">Overview</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#configuration">Configuration</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#reading-commitlogsegments">Reading CommitLogSegments</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#warnings">Warnings</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#further-reading">Further Reading</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="change-data-capture">
+<h1>Change Data Capture<a class="headerlink" href="#change-data-capture" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="overview">
+<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
+<p>Change data capture (CDC) provides a mechanism to flag specific tables for archival as well as rejecting writes to those
+tables once a configurable size-on-disk for the CDC log is reached. An operator can enable CDC on a table by setting the
+table property <code class="docutils literal notranslate"><span class="pre">cdc=true</span></code> (either when <a class="reference internal" href="../cql/ddl.html#create-table-statement"><span class="std std-ref">creating the table</span></a> or
+<a class="reference internal" href="../cql/ddl.html#alter-table-statement"><span class="std std-ref">altering it</span></a>). Upon CommitLogSegment creation, a hard-link to the segment is created in the
+directory specified in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>. On segment fsync to disk, if CDC data is present anywhere in the segment a
+&lt;segment_name&gt;_cdc.idx file is also created with the integer offset of how much data in the original segment is persisted
+to disk. Upon final segment flush, a second line with the human-readable word “COMPLETED” will be added to the _cdc.idx
+file indicating that Cassandra has completed all processing on the file.</p>
+<p>We we use an index file rather than just encouraging clients to parse the log realtime off a memory mapped handle as data
+can be reflected in a kernel buffer that is not yet persisted to disk. Parsing only up to the listed offset in the _cdc.idx
+file will ensure that you only parse CDC data for data that is durable.</p>
+<p>A threshold of total disk space allowed is specified in the yaml at which time newly allocated CommitLogSegments will
+not allow CDC data until a consumer parses and removes files from the specified cdc_raw directory.</p>
+</div>
+<div class="section" id="configuration">
+<h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="enabling-or-disabling-cdc-on-a-table">
+<h3>Enabling or disabling CDC on a table<a class="headerlink" href="#enabling-or-disabling-cdc-on-a-table" title="Permalink to this headline">¶</a></h3>
+<p>CDC is enable or disable through the <cite>cdc</cite> table property, for instance:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CREATE TABLE foo (a int, b text, PRIMARY KEY(a)) WITH cdc=true;
+
+ALTER TABLE foo WITH cdc=true;
+
+ALTER TABLE foo WITH cdc=false;
+</pre></div>
+</div>
+</div>
+<div class="section" id="cassandra-yaml-parameters">
+<h3>cassandra.yaml parameters<a class="headerlink" href="#cassandra-yaml-parameters" title="Permalink to this headline">¶</a></h3>
+<p>The following <cite>cassandra.yaml</cite> are available for CDC:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">cdc_enabled</span></code> (default: false)</dt>
+<dd>Enable or disable CDC operations node-wide.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">cdc_raw_directory</span></code> (default: <code class="docutils literal notranslate"><span class="pre">$CASSANDRA_HOME/data/cdc_raw</span></code>)</dt>
+<dd>Destination for CommitLogSegments to be moved after all corresponding memtables are flushed.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">cdc_free_space_in_mb</span></code>: (default: min of 4096 and 1/8th volume space)</dt>
+<dd>Calculated as sum of all active CommitLogSegments that permit CDC + all flushed CDC segments in
+<code class="docutils literal notranslate"><span class="pre">cdc_raw_directory</span></code>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">cdc_free_space_check_interval_ms</span></code> (default: 250)</dt>
+<dd>When at capacity, we limit the frequency with which we re-calculate the space taken up by <code class="docutils literal notranslate"><span class="pre">cdc_raw_directory</span></code> to
+prevent burning CPU cycles unnecessarily. Default is to check 4 times per second.</dd>
+</dl>
+</div>
+</div>
+<div class="section" id="reading-commitlogsegments">
+<span id="id1"></span><h2>Reading CommitLogSegments<a class="headerlink" href="#reading-commitlogsegments" title="Permalink to this headline">¶</a></h2>
+<p>Use a <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java">CommitLogReader.java</a>.
+Usage is <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java#L132-L140">fairly straightforward</a>
+with a <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java#L71-L103">variety of signatures</a>
+available for use. In order to handle mutations read from disk, implement <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReadHandler.java">CommitLogReadHandler</a>.</p>
+</div>
+<div class="section" id="warnings">
+<h2>Warnings<a class="headerlink" href="#warnings" title="Permalink to this headline">¶</a></h2>
+<p><strong>Do not enable CDC without some kind of consumption process in-place.</strong></p>
+<p>If CDC is enabled on a node and then on a table, the <code class="docutils literal notranslate"><span class="pre">cdc_free_space_in_mb</span></code> will fill up and then writes to
+CDC-enabled tables will be rejected unless some consumption process is in place.</p>
+</div>
+<div class="section" id="further-reading">
+<h2>Further Reading<a class="headerlink" href="#further-reading" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-8844">JIRA ticket</a></li>
+<li><a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12148">JIRA ticket</a></li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="backups.html" class="btn btn-default pull-right " role="button" title="Backups" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="compression.html" class="btn btn-default" role="button" title="Compression" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/compaction/index.html b/src/doc/4.0-rc1/operating/compaction/index.html
new file mode 100644
index 0000000..44a16e1
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/compaction/index.html
@@ -0,0 +1,387 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Compaction"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="../index.html"/>
+      <link rel="next" title="Bloom Filters" href="../bloom_filters.html"/>
+      <link rel="prev" title="Hints" href="../hints.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../hints.html">Hints</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Compaction</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#strategies">Strategies</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#types-of-compaction">Types of compaction</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#when-is-a-minor-compaction-triggered">When is a minor compaction triggered?</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#merging-sstables">Merging sstables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tombstones-and-garbage-collection-gc-grace">Tombstones and Garbage Collection (GC) Grace</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#ttl">TTL</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#fully-expired-sstables">Fully expired sstables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#repaired-unrepaired-data">Repaired/unrepaired data</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#data-directories">Data directories</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#single-sstable-tombstone-compaction">Single sstable tombstone compaction</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#common-options">Common options</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#compaction-nodetool-commands">Compaction nodetool commands</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#switching-the-compaction-strategy-and-options-using-jmx">Switching the compaction strategy and options using JMX</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#more-detailed-compaction-logging">More detailed compaction logging</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="compaction">
+<span id="id1"></span><h1>Compaction<a class="headerlink" href="#compaction" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="strategies">
+<h2>Strategies<a class="headerlink" href="#strategies" title="Permalink to this headline">¶</a></h2>
+<p>Picking the right compaction strategy for your workload will ensure the best performance for both querying and for compaction itself.</p>
+<dl class="docutils">
+<dt><a class="reference internal" href="stcs.html#stcs"><span class="std std-ref">Size Tiered Compaction Strategy</span></a></dt>
+<dd>The default compaction strategy.  Useful as a fallback when other strategies don’t fit the workload.  Most useful for
+non pure time series workloads with spinning disks, or when the I/O from <a class="reference internal" href="lcs.html#lcs"><span class="std std-ref">LCS</span></a> is too high.</dd>
+<dt><a class="reference internal" href="lcs.html#lcs"><span class="std std-ref">Leveled Compaction Strategy</span></a></dt>
+<dd>Leveled Compaction Strategy (LCS) is optimized for read heavy workloads, or workloads with lots of updates and deletes.  It is not a good choice for immutable time series data.</dd>
+<dt><a class="reference internal" href="twcs.html#twcs"><span class="std std-ref">Time Window Compaction Strategy</span></a></dt>
+<dd>Time Window Compaction Strategy is designed for TTL’ed, mostly immutable time series data.</dd>
+</dl>
+</div>
+<div class="section" id="types-of-compaction">
+<h2>Types of compaction<a class="headerlink" href="#types-of-compaction" title="Permalink to this headline">¶</a></h2>
+<p>The concept of compaction is used for different kinds of operations in Cassandra, the common thing about these
+operations is that it takes one or more sstables and output new sstables. The types of compactions are;</p>
+<dl class="docutils">
+<dt>Minor compaction</dt>
+<dd>triggered automatically in Cassandra.</dd>
+<dt>Major compaction</dt>
+<dd>a user executes a compaction over all sstables on the node.</dd>
+<dt>User defined compaction</dt>
+<dd>a user triggers a compaction on a given set of sstables.</dd>
+<dt>Scrub</dt>
+<dd>try to fix any broken sstables. This can actually remove valid data if that data is corrupted, if that happens you
+will need to run a full repair on the node.</dd>
+<dt>Upgradesstables</dt>
+<dd>upgrade sstables to the latest version. Run this after upgrading to a new major version.</dd>
+<dt>Cleanup</dt>
+<dd>remove any ranges this node does not own anymore, typically triggered on neighbouring nodes after a node has been
+bootstrapped since that node will take ownership of some ranges from those nodes.</dd>
+<dt>Secondary index rebuild</dt>
+<dd>rebuild the secondary indexes on the node.</dd>
+<dt>Anticompaction</dt>
+<dd>after repair the ranges that were actually repaired are split out of the sstables that existed when repair started.</dd>
+<dt>Sub range compaction</dt>
+<dd>It is possible to only compact a given sub range - this could be useful if you know a token that has been
+misbehaving - either gathering many updates or many deletes. (<code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">compact</span> <span class="pre">-st</span> <span class="pre">x</span> <span class="pre">-et</span> <span class="pre">y</span></code>) will pick
+all sstables containing the range between x and y and issue a compaction for those sstables. For STCS this will
+most likely include all sstables but with LCS it can issue the compaction for a subset of the sstables. With LCS
+the resulting sstable will end up in L0.</dd>
+</dl>
+</div>
+<div class="section" id="when-is-a-minor-compaction-triggered">
+<h2>When is a minor compaction triggered?<a class="headerlink" href="#when-is-a-minor-compaction-triggered" title="Permalink to this headline">¶</a></h2>
+<p>#  When an sstable is added to the node through flushing/streaming etc.
+#  When autocompaction is enabled after being disabled (<code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">enableautocompaction</span></code>)
+#  When compaction adds new sstables.
+#  A check for new minor compactions every 5 minutes.</p>
+</div>
+<div class="section" id="merging-sstables">
+<h2>Merging sstables<a class="headerlink" href="#merging-sstables" title="Permalink to this headline">¶</a></h2>
+<p>Compaction is about merging sstables, since partitions in sstables are sorted based on the hash of the partition key it
+is possible to efficiently merge separate sstables. Content of each partition is also sorted so each partition can be
+merged efficiently.</p>
+</div>
+<div class="section" id="tombstones-and-garbage-collection-gc-grace">
+<h2>Tombstones and Garbage Collection (GC) Grace<a class="headerlink" href="#tombstones-and-garbage-collection-gc-grace" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="why-tombstones">
+<h3>Why Tombstones<a class="headerlink" href="#why-tombstones" title="Permalink to this headline">¶</a></h3>
+<p>When a delete request is received by Cassandra it does not actually remove the data from the underlying store. Instead
+it writes a special piece of data known as a tombstone. The Tombstone represents the delete and causes all values which
+occurred before the tombstone to not appear in queries to the database. This approach is used instead of removing values
+because of the distributed nature of Cassandra.</p>
+</div>
+<div class="section" id="deletes-without-tombstones">
+<h3>Deletes without tombstones<a class="headerlink" href="#deletes-without-tombstones" title="Permalink to this headline">¶</a></h3>
+<p>Imagine a three node cluster which has the value [A] replicated to every node.:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[A], [A], [A]
+</pre></div>
+</div>
+<p>If one of the nodes fails and and our delete operation only removes existing values we can end up with a cluster that
+looks like:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[], [], [A]
+</pre></div>
+</div>
+<p>Then a repair operation would replace the value of [A] back onto the two
+nodes which are missing the value.:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[A], [A], [A]
+</pre></div>
+</div>
+<p>This would cause our data to be resurrected even though it had been
+deleted.</p>
+</div>
+<div class="section" id="deletes-with-tombstones">
+<h3>Deletes with Tombstones<a class="headerlink" href="#deletes-with-tombstones" title="Permalink to this headline">¶</a></h3>
+<p>Starting again with a three node cluster which has the value [A] replicated to every node.:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[A], [A], [A]
+</pre></div>
+</div>
+<p>If instead of removing data we add a tombstone record, our single node failure situation will look like this.:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[A, Tombstone[A]], [A, Tombstone[A]], [A]
+</pre></div>
+</div>
+<p>Now when we issue a repair the Tombstone will be copied to the replica, rather than the deleted data being
+resurrected.:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[A, Tombstone[A]], [A, Tombstone[A]], [A, Tombstone[A]]
+</pre></div>
+</div>
+<p>Our repair operation will correctly put the state of the system to what we expect with the record [A] marked as deleted
+on all nodes. This does mean we will end up accruing Tombstones which will permanently accumulate disk space. To avoid
+keeping tombstones forever we have a parameter known as <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code> for every table in Cassandra.</p>
+</div>
+<div class="section" id="the-gc-grace-seconds-parameter-and-tombstone-removal">
+<h3>The gc_grace_seconds parameter and Tombstone Removal<a class="headerlink" href="#the-gc-grace-seconds-parameter-and-tombstone-removal" title="Permalink to this headline">¶</a></h3>
+<p>The table level <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code> parameter controls how long Cassandra will retain tombstones through compaction
+events before finally removing them. This duration should directly reflect the amount of time a user expects to allow
+before recovering a failed node. After <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code> has expired the tombstone may be removed (meaning there will
+no longer be any record that a certain piece of data was deleted), but as a tombstone can live in one sstable and the
+data it covers in another, a compaction must also include both sstable for a tombstone to be removed. More precisely, to
+be able to drop an actual tombstone the following needs to be true;</p>
+<ul class="simple">
+<li>The tombstone must be older than <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code></li>
+<li>If partition X contains the tombstone, the sstable containing the partition plus all sstables containing data older
+than the tombstone containing X must be included in the same compaction. We don’t need to care if the partition is in
+an sstable if we can guarantee that all data in that sstable is newer than the tombstone. If the tombstone is older
+than the data it cannot shadow that data.</li>
+<li>If the option <code class="docutils literal notranslate"><span class="pre">only_purge_repaired_tombstones</span></code> is enabled, tombstones are only removed if the data has also been
+repaired.</li>
+</ul>
+<p>If a node remains down or disconnected for longer than <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code> it’s deleted data will be repaired back to
+the other nodes and re-appear in the cluster. This is basically the same as in the “Deletes without Tombstones” section.
+Note that tombstones will not be removed until a compaction event even if <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code> has elapsed.</p>
+<p>The default value for <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code> is 864000 which is equivalent to 10 days. This can be set when creating or
+altering a table using <code class="docutils literal notranslate"><span class="pre">WITH</span> <span class="pre">gc_grace_seconds</span></code>.</p>
+</div>
+</div>
+<div class="section" id="ttl">
+<h2>TTL<a class="headerlink" href="#ttl" title="Permalink to this headline">¶</a></h2>
+<p>Data in Cassandra can have an additional property called time to live - this is used to automatically drop data that has
+expired once the time is reached. Once the TTL has expired the data is converted to a tombstone which stays around for
+at least <code class="docutils literal notranslate"><span class="pre">gc_grace_seconds</span></code>. Note that if you mix data with TTL and data without TTL (or just different length of the
+TTL) Cassandra will have a hard time dropping the tombstones created since the partition might span many sstables and
+not all are compacted at once.</p>
+</div>
+<div class="section" id="fully-expired-sstables">
+<h2>Fully expired sstables<a class="headerlink" href="#fully-expired-sstables" title="Permalink to this headline">¶</a></h2>
+<p>If an sstable contains only tombstones and it is guaranteed that that sstable is not shadowing data in any other sstable
+compaction can drop that sstable. If you see sstables with only tombstones (note that TTL:ed data is considered
+tombstones once the time to live has expired) but it is not being dropped by compaction, it is likely that other
+sstables contain older data. There is a tool called <code class="docutils literal notranslate"><span class="pre">sstableexpiredblockers</span></code> that will list which sstables are
+droppable and which are blocking them from being dropped. This is especially useful for time series compaction with
+<code class="docutils literal notranslate"><span class="pre">TimeWindowCompactionStrategy</span></code> (and the deprecated <code class="docutils literal notranslate"><span class="pre">DateTieredCompactionStrategy</span></code>). With <code class="docutils literal notranslate"><span class="pre">TimeWindowCompactionStrategy</span></code>
+it is possible to remove the guarantee (not check for shadowing data) by enabling <code class="docutils literal notranslate"><span class="pre">unsafe_aggressive_sstable_expiration</span></code>.</p>
+</div>
+<div class="section" id="repaired-unrepaired-data">
+<h2>Repaired/unrepaired data<a class="headerlink" href="#repaired-unrepaired-data" title="Permalink to this headline">¶</a></h2>
+<p>With incremental repairs Cassandra must keep track of what data is repaired and what data is unrepaired. With
+anticompaction repaired data is split out into repaired and unrepaired sstables. To avoid mixing up the data again
+separate compaction strategy instances are run on the two sets of data, each instance only knowing about either the
+repaired or the unrepaired sstables. This means that if you only run incremental repair once and then never again, you
+might have very old data in the repaired sstables that block compaction from dropping tombstones in the unrepaired
+(probably newer) sstables.</p>
+</div>
+<div class="section" id="data-directories">
+<h2>Data directories<a class="headerlink" href="#data-directories" title="Permalink to this headline">¶</a></h2>
+<p>Since tombstones and data can live in different sstables it is important to realize that losing an sstable might lead to
+data becoming live again - the most common way of losing sstables is to have a hard drive break down. To avoid making
+data live tombstones and actual data are always in the same data directory. This way, if a disk is lost, all versions of
+a partition are lost and no data can get undeleted. To achieve this a compaction strategy instance per data directory is
+run in addition to the compaction strategy instances containing repaired/unrepaired data, this means that if you have 4
+data directories there will be 8 compaction strategy instances running. This has a few more benefits than just avoiding
+data getting undeleted:</p>
+<ul class="simple">
+<li>It is possible to run more compactions in parallel - leveled compaction will have several totally separate levelings
+and each one can run compactions independently from the others.</li>
+<li>Users can backup and restore a single data directory.</li>
+<li>Note though that currently all data directories are considered equal, so if you have a tiny disk and a big disk
+backing two data directories, the big one will be limited the by the small one. One work around to this is to create
+more data directories backed by the big disk.</li>
+</ul>
+</div>
+<div class="section" id="single-sstable-tombstone-compaction">
+<h2>Single sstable tombstone compaction<a class="headerlink" href="#single-sstable-tombstone-compaction" title="Permalink to this headline">¶</a></h2>
+<p>When an sstable is written a histogram with the tombstone expiry times is created and this is used to try to find
+sstables with very many tombstones and run single sstable compaction on that sstable in hope of being able to drop
+tombstones in that sstable. Before starting this it is also checked how likely it is that any tombstones will actually
+will be able to be dropped how much this sstable overlaps with other sstables. To avoid most of these checks the
+compaction option <code class="docutils literal notranslate"><span class="pre">unchecked_tombstone_compaction</span></code> can be enabled.</p>
+</div>
+<div class="section" id="common-options">
+<span id="compaction-options"></span><h2>Common options<a class="headerlink" href="#common-options" title="Permalink to this headline">¶</a></h2>
+<p>There is a number of common options for all the compaction strategies;</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">enabled</span></code> (default: true)</dt>
+<dd>Whether minor compactions should run. Note that you can have ‘enabled’: true as a compaction option and then do
+‘nodetool enableautocompaction’ to start running compactions.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">tombstone_threshold</span></code> (default: 0.2)</dt>
+<dd>How much of the sstable should be tombstones for us to consider doing a single sstable compaction of that sstable.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">tombstone_compaction_interval</span></code> (default: 86400s (1 day))</dt>
+<dd>Since it might not be possible to drop any tombstones when doing a single sstable compaction we need to make sure
+that one sstable is not constantly getting recompacted - this option states how often we should try for a given
+sstable.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">log_all</span></code> (default: false)</dt>
+<dd>New detailed compaction logging, see <a class="reference internal" href="#detailed-compaction-logging"><span class="std std-ref">below</span></a>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">unchecked_tombstone_compaction</span></code> (default: false)</dt>
+<dd>The single sstable compaction has quite strict checks for whether it should be started, this option disables those
+checks and for some usecases this might be needed.  Note that this does not change anything for the actual
+compaction, tombstones are only dropped if it is safe to do so - it might just rewrite an sstable without being able
+to drop any tombstones.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">only_purge_repaired_tombstone</span></code> (default: false)</dt>
+<dd>Option to enable the extra safety of making sure that tombstones are only dropped if the data has been repaired.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">min_threshold</span></code> (default: 4)</dt>
+<dd>Lower limit of number of sstables before a compaction is triggered. Not used for <code class="docutils literal notranslate"><span class="pre">LeveledCompactionStrategy</span></code>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">max_threshold</span></code> (default: 32)</dt>
+<dd>Upper limit of number of sstables before a compaction is triggered. Not used for <code class="docutils literal notranslate"><span class="pre">LeveledCompactionStrategy</span></code>.</dd>
+</dl>
+<p>Further, see the section on each strategy for specific additional options.</p>
+</div>
+<div class="section" id="compaction-nodetool-commands">
+<h2>Compaction nodetool commands<a class="headerlink" href="#compaction-nodetool-commands" title="Permalink to this headline">¶</a></h2>
+<p>The <span class="xref std std-ref">nodetool</span> utility provides a number of commands related to compaction:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">enableautocompaction</span></code></dt>
+<dd>Enable compaction.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">disableautocompaction</span></code></dt>
+<dd>Disable compaction.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">setcompactionthroughput</span></code></dt>
+<dd>How fast compaction should run at most - defaults to 16MB/s, but note that it is likely not possible to reach this
+throughput.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">compactionstats</span></code></dt>
+<dd>Statistics about current and pending compactions.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">compactionhistory</span></code></dt>
+<dd>List details about the last compactions.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">setcompactionthreshold</span></code></dt>
+<dd>Set the min/max sstable count for when to trigger compaction, defaults to 4/32.</dd>
+</dl>
+</div>
+<div class="section" id="switching-the-compaction-strategy-and-options-using-jmx">
+<h2>Switching the compaction strategy and options using JMX<a class="headerlink" href="#switching-the-compaction-strategy-and-options-using-jmx" title="Permalink to this headline">¶</a></h2>
+<p>It is possible to switch compaction strategies and its options on just a single node using JMX, this is a great way to
+experiment with settings without affecting the whole cluster. The mbean is:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>org.apache.cassandra.db:type=ColumnFamilies,keyspace=&lt;keyspace_name&gt;,columnfamily=&lt;table_name&gt;
+</pre></div>
+</div>
+<p>and the attribute to change is <code class="docutils literal notranslate"><span class="pre">CompactionParameters</span></code> or <code class="docutils literal notranslate"><span class="pre">CompactionParametersJson</span></code> if you use jconsole or jmc. The
+syntax for the json version is the same as you would use in an <a class="reference internal" href="../../cql/ddl.html#alter-table-statement"><span class="std std-ref">ALTER TABLE</span></a> statement -
+for example:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>{ &#39;class&#39;: &#39;LeveledCompactionStrategy&#39;, &#39;sstable_size_in_mb&#39;: 123, &#39;fanout_size&#39;: 10}
+</pre></div>
+</div>
+<p>The setting is kept until someone executes an <a class="reference internal" href="../../cql/ddl.html#alter-table-statement"><span class="std std-ref">ALTER TABLE</span></a> that touches the compaction
+settings or restarts the node.</p>
+</div>
+<div class="section" id="more-detailed-compaction-logging">
+<span id="detailed-compaction-logging"></span><h2>More detailed compaction logging<a class="headerlink" href="#more-detailed-compaction-logging" title="Permalink to this headline">¶</a></h2>
+<p>Enable with the compaction option <code class="docutils literal notranslate"><span class="pre">log_all</span></code> and a more detailed compaction log file will be produced in your log
+directory.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../bloom_filters.html" class="btn btn-default pull-right " role="button" title="Bloom Filters" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../hints.html" class="btn btn-default" role="button" title="Hints" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/compaction/lcs.html b/src/doc/4.0-rc1/operating/compaction/lcs.html
new file mode 100644
index 0000000..4079457
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/compaction/lcs.html
@@ -0,0 +1,147 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Leveled Compaction Strategy"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="leveled-compaction-strategy">
+<span id="lcs"></span><h1>Leveled Compaction Strategy<a class="headerlink" href="#leveled-compaction-strategy" title="Permalink to this headline">¶</a></h1>
+<p>The idea of <code class="docutils literal notranslate"><span class="pre">LeveledCompactionStrategy</span></code> (LCS) is that all sstables are put into different levels where we guarantee
+that no overlapping sstables are in the same level. By overlapping we mean that the first/last token of a single sstable
+are never overlapping with other sstables. This means that for a SELECT we will only have to look for the partition key
+in a single sstable per level. Each level is 10x the size of the previous one and each sstable is 160MB by default. L0
+is where sstables are streamed/flushed - no overlap guarantees are given here.</p>
+<p>When picking compaction candidates we have to make sure that the compaction does not create overlap in the target level.
+This is done by always including all overlapping sstables in the next level. For example if we select an sstable in L3,
+we need to guarantee that we pick all overlapping sstables in L4 and make sure that no currently ongoing compactions
+will create overlap if we start that compaction. We can start many parallel compactions in a level if we guarantee that
+we wont create overlap. For L0 -&gt; L1 compactions we almost always need to include all L1 sstables since most L0 sstables
+cover the full range. We also can’t compact all L0 sstables with all L1 sstables in a single compaction since that can
+use too much memory.</p>
+<p>When deciding which level to compact LCS checks the higher levels first (with LCS, a “higher” level is one with a higher
+number, L0 being the lowest one) and if the level is behind a compaction will be started in that level.</p>
+<div class="section" id="major-compaction">
+<h2>Major compaction<a class="headerlink" href="#major-compaction" title="Permalink to this headline">¶</a></h2>
+<p>It is possible to do a major compaction with LCS - it will currently start by filling out L1 and then once L1 is full,
+it continues with L2 etc. This is sub optimal and will change to create all the sstables in a high level instead,
+CASSANDRA-11817.</p>
+</div>
+<div class="section" id="bootstrapping">
+<h2>Bootstrapping<a class="headerlink" href="#bootstrapping" title="Permalink to this headline">¶</a></h2>
+<p>During bootstrap sstables are streamed from other nodes. The level of the remote sstable is kept to avoid many
+compactions after the bootstrap is done. During bootstrap the new node also takes writes while it is streaming the data
+from a remote node - these writes are flushed to L0 like all other writes and to avoid those sstables blocking the
+remote sstables from going to the correct level, we only do STCS in L0 until the bootstrap is done.</p>
+</div>
+<div class="section" id="stcs-in-l0">
+<h2>STCS in L0<a class="headerlink" href="#stcs-in-l0" title="Permalink to this headline">¶</a></h2>
+<p>If LCS gets very many L0 sstables reads are going to hit all (or most) of the L0 sstables since they are likely to be
+overlapping. To more quickly remedy this LCS does STCS compactions in L0 if there are more than 32 sstables there. This
+should improve read performance more quickly compared to letting LCS do its L0 -&gt; L1 compactions. If you keep getting
+too many sstables in L0 it is likely that LCS is not the best fit for your workload and STCS could work out better.</p>
+</div>
+<div class="section" id="starved-sstables">
+<h2>Starved sstables<a class="headerlink" href="#starved-sstables" title="Permalink to this headline">¶</a></h2>
+<p>If a node ends up with a leveling where there are a few very high level sstables that are not getting compacted they
+might make it impossible for lower levels to drop tombstones etc. For example, if there are sstables in L6 but there is
+only enough data to actually get a L4 on the node the left over sstables in L6 will get starved and not compacted.  This
+can happen if a user changes sstable_size_in_mb from 5MB to 160MB for example. To avoid this LCS tries to include
+those starved high level sstables in other compactions if there has been 25 compaction rounds where the highest level
+has not been involved.</p>
+</div>
+<div class="section" id="lcs-options">
+<span id="id1"></span><h2>LCS options<a class="headerlink" href="#lcs-options" title="Permalink to this headline">¶</a></h2>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">sstable_size_in_mb</span></code> (default: 160MB)</dt>
+<dd>The target compressed (if using compression) sstable size - the sstables can end up being larger if there are very
+large partitions on the node.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">fanout_size</span></code> (default: 10)</dt>
+<dd>The target size of levels increases by this fanout_size multiplier. You can reduce the space amplification by tuning
+this option.</dd>
+</dl>
+<p>LCS also support the <code class="docutils literal notranslate"><span class="pre">cassandra.disable_stcs_in_l0</span></code> startup option (<code class="docutils literal notranslate"><span class="pre">-Dcassandra.disable_stcs_in_l0=true</span></code>) to avoid
+doing STCS in L0.</p>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/compaction/stcs.html b/src/doc/4.0-rc1/operating/compaction/stcs.html
new file mode 100644
index 0000000..c9b5245
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/compaction/stcs.html
@@ -0,0 +1,122 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Size Tiered Compaction Strategy"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="size-tiered-compaction-strategy">
+<span id="stcs"></span><h1>Size Tiered Compaction Strategy<a class="headerlink" href="#size-tiered-compaction-strategy" title="Permalink to this headline">¶</a></h1>
+<p>The basic idea of <code class="docutils literal notranslate"><span class="pre">SizeTieredCompactionStrategy</span></code> (STCS) is to merge sstables of approximately the same size. All
+sstables are put in different buckets depending on their size. An sstable is added to the bucket if size of the sstable
+is within <code class="docutils literal notranslate"><span class="pre">bucket_low</span></code> and <code class="docutils literal notranslate"><span class="pre">bucket_high</span></code> of the current average size of the sstables already in the bucket. This
+will create several buckets and the most interesting of those buckets will be compacted. The most interesting one is
+decided by figuring out which bucket’s sstables takes the most reads.</p>
+<div class="section" id="major-compaction">
+<h2>Major compaction<a class="headerlink" href="#major-compaction" title="Permalink to this headline">¶</a></h2>
+<p>When running a major compaction with STCS you will end up with two sstables per data directory (one for repaired data
+and one for unrepaired data). There is also an option (-s) to do a major compaction that splits the output into several
+sstables. The sizes of the sstables are approximately 50%, 25%, 12.5%… of the total size.</p>
+</div>
+<div class="section" id="stcs-options">
+<span id="id1"></span><h2>STCS options<a class="headerlink" href="#stcs-options" title="Permalink to this headline">¶</a></h2>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">min_sstable_size</span></code> (default: 50MB)</dt>
+<dd>Sstables smaller than this are put in the same bucket.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">bucket_low</span></code> (default: 0.5)</dt>
+<dd>How much smaller than the average size of a bucket a sstable should be before not being included in the bucket. That
+is, if <code class="docutils literal notranslate"><span class="pre">bucket_low</span> <span class="pre">*</span> <span class="pre">avg_bucket_size</span> <span class="pre">&lt;</span> <span class="pre">sstable_size</span></code> (and the <code class="docutils literal notranslate"><span class="pre">bucket_high</span></code> condition holds, see below), then
+the sstable is added to the bucket.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">bucket_high</span></code> (default: 1.5)</dt>
+<dd>How much bigger than the average size of a bucket a sstable should be before not being included in the bucket. That
+is, if <code class="docutils literal notranslate"><span class="pre">sstable_size</span> <span class="pre">&lt;</span> <span class="pre">bucket_high</span> <span class="pre">*</span> <span class="pre">avg_bucket_size</span></code> (and the <code class="docutils literal notranslate"><span class="pre">bucket_low</span></code> condition holds, see above), then
+the sstable is added to the bucket.</dd>
+</dl>
+</div>
+<div class="section" id="defragmentation">
+<h2>Defragmentation<a class="headerlink" href="#defragmentation" title="Permalink to this headline">¶</a></h2>
+<p>Defragmentation is done when many sstables are touched during a read.  The result of the read is put in to the memtable
+so that the next read will not have to touch as many sstables. This can cause writes on a read-only-cluster.</p>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/compaction/twcs.html b/src/doc/4.0-rc1/operating/compaction/twcs.html
new file mode 100644
index 0000000..574474c
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/compaction/twcs.html
@@ -0,0 +1,140 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Time Window CompactionStrategy"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="time-window-compactionstrategy">
+<span id="twcs"></span><h1>Time Window CompactionStrategy<a class="headerlink" href="#time-window-compactionstrategy" title="Permalink to this headline">¶</a></h1>
+<p><code class="docutils literal notranslate"><span class="pre">TimeWindowCompactionStrategy</span></code> (TWCS) is designed specifically for workloads where it’s beneficial to have data on
+disk grouped by the timestamp of the data, a common goal when the workload is time-series in nature or when all data is
+written with a TTL. In an expiring/TTL workload, the contents of an entire SSTable likely expire at approximately the
+same time, allowing them to be dropped completely, and space reclaimed much more reliably than when using
+<code class="docutils literal notranslate"><span class="pre">SizeTieredCompactionStrategy</span></code> or <code class="docutils literal notranslate"><span class="pre">LeveledCompactionStrategy</span></code>. The basic concept is that
+<code class="docutils literal notranslate"><span class="pre">TimeWindowCompactionStrategy</span></code> will create 1 sstable per file for a given window, where a window is simply calculated
+as the combination of two primary options:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">compaction_window_unit</span></code> (default: DAYS)</dt>
+<dd>A Java TimeUnit (MINUTES, HOURS, or DAYS).</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">compaction_window_size</span></code> (default: 1)</dt>
+<dd>The number of units that make up a window.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">unsafe_aggressive_sstable_expiration</span></code> (default: false)</dt>
+<dd>Expired sstables will be dropped without checking its data is shadowing other sstables. This is a potentially
+risky option that can lead to data loss or deleted data re-appearing, going beyond what
+<cite>unchecked_tombstone_compaction</cite> does for single  sstable compaction. Due to the risk the jvm must also be
+started with <cite>-Dcassandra.unsafe_aggressive_sstable_expiration=true</cite>.</dd>
+</dl>
+<p>Taken together, the operator can specify windows of virtually any size, and <cite>TimeWindowCompactionStrategy</cite> will work to
+create a single sstable for writes within that window. For efficiency during writing, the newest window will be
+compacted using <cite>SizeTieredCompactionStrategy</cite>.</p>
+<p>Ideally, operators should select a <code class="docutils literal notranslate"><span class="pre">compaction_window_unit</span></code> and <code class="docutils literal notranslate"><span class="pre">compaction_window_size</span></code> pair that produces
+approximately 20-30 windows - if writing with a 90 day TTL, for example, a 3 Day window would be a reasonable choice
+(<code class="docutils literal notranslate"><span class="pre">'compaction_window_unit':'DAYS','compaction_window_size':3</span></code>).</p>
+<div class="section" id="timewindowcompactionstrategy-operational-concerns">
+<h2>TimeWindowCompactionStrategy Operational Concerns<a class="headerlink" href="#timewindowcompactionstrategy-operational-concerns" title="Permalink to this headline">¶</a></h2>
+<p>The primary motivation for TWCS is to separate data on disk by timestamp and to allow fully expired SSTables to drop
+more efficiently. One potential way this optimal behavior can be subverted is if data is written to SSTables out of
+order, with new data and old data in the same SSTable. Out of order data can appear in two ways:</p>
+<ul class="simple">
+<li>If the user mixes old data and new data in the traditional write path, the data will be comingled in the memtables
+and flushed into the same SSTable, where it will remain comingled.</li>
+<li>If the user’s read requests for old data cause read repairs that pull old data into the current memtable, that data
+will be comingled and flushed into the same SSTable.</li>
+</ul>
+<p>While TWCS tries to minimize the impact of comingled data, users should attempt to avoid this behavior.  Specifically,
+users should avoid queries that explicitly set the timestamp via CQL <code class="docutils literal notranslate"><span class="pre">USING</span> <span class="pre">TIMESTAMP</span></code>. Additionally, users should run
+frequent repairs (which streams data in such a way that it does not become comingled).</p>
+</div>
+<div class="section" id="changing-timewindowcompactionstrategy-options">
+<h2>Changing TimeWindowCompactionStrategy Options<a class="headerlink" href="#changing-timewindowcompactionstrategy-options" title="Permalink to this headline">¶</a></h2>
+<p>Operators wishing to enable <code class="docutils literal notranslate"><span class="pre">TimeWindowCompactionStrategy</span></code> on existing data should consider running a major compaction
+first, placing all existing data into a single (old) window. Subsequent newer writes will then create typical SSTables
+as expected.</p>
+<p>Operators wishing to change <code class="docutils literal notranslate"><span class="pre">compaction_window_unit</span></code> or <code class="docutils literal notranslate"><span class="pre">compaction_window_size</span></code> can do so, but may trigger
+additional compactions as adjacent windows are joined together. If the window size is decrease d (for example, from 24
+hours to 12 hours), then the existing SSTables will not be modified - TWCS can not split existing SSTables into multiple
+windows.</p>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/compression.html b/src/doc/4.0-rc1/operating/compression.html
new file mode 100644
index 0000000..04c0e82
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/compression.html
@@ -0,0 +1,294 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Compression"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Change Data Capture" href="cdc.html"/>
+      <link rel="prev" title="Bloom Filters" href="bloom_filters.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Compression</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#configuring-compression">Configuring Compression</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#benefits-and-uses">Benefits and Uses</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#operational-impact">Operational Impact</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#advanced-use">Advanced Use</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="compression">
+<h1>Compression<a class="headerlink" href="#compression" title="Permalink to this headline">¶</a></h1>
+<p>Cassandra offers operators the ability to configure compression on a per-table basis. Compression reduces the size of
+data on disk by compressing the SSTable in user-configurable compression <code class="docutils literal notranslate"><span class="pre">chunk_length_in_kb</span></code>. As Cassandra SSTables
+are immutable, the CPU cost of compressing is only necessary when the SSTable is written - subsequent updates
+to data will land in different SSTables, so Cassandra will not need to decompress, overwrite, and recompress data when
+UPDATE commands are issued. On reads, Cassandra will locate the relevant compressed chunks on disk, decompress the full
+chunk, and then proceed with the remainder of the read path (merging data from disks and memtables, read repair, and so
+on).</p>
+<p>Compression algorithms typically trade off between the following three areas:</p>
+<ul class="simple">
+<li><strong>Compression speed</strong>: How fast does the compression algorithm compress data. This is critical in the flush and
+compaction paths because data must be compressed before it is written to disk.</li>
+<li><strong>Decompression speed</strong>: How fast does the compression algorithm de-compress data. This is critical in the read
+and compaction paths as data must be read off disk in a full chunk and decompressed before it can be returned.</li>
+<li><strong>Ratio</strong>: By what ratio is the uncompressed data reduced by. Cassandra typically measures this as the size of data
+on disk relative to the uncompressed size. For example a ratio of <code class="docutils literal notranslate"><span class="pre">0.5</span></code> means that the data on disk is 50% the size
+of the uncompressed data. Cassandra exposes this ratio per table as the <code class="docutils literal notranslate"><span class="pre">SSTable</span> <span class="pre">Compression</span> <span class="pre">Ratio</span></code> field of
+<code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">tablestats</span></code>.</li>
+</ul>
+<p>Cassandra offers five compression algorithms by default that make different tradeoffs in these areas. While
+benchmarking compression algorithms depends on many factors (algorithm parameters such as compression level,
+the compressibility of the input data, underlying processor class, etc …), the following table should help you pick
+a starting point based on your application’s requirements with an extremely rough grading of the different choices
+by their performance in these areas (A is relatively good, F is relatively bad):</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="39%" />
+<col width="20%" />
+<col width="11%" />
+<col width="13%" />
+<col width="6%" />
+<col width="11%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Compression Algorithm</th>
+<th class="head">Cassandra Class</th>
+<th class="head">Compression</th>
+<th class="head">Decompression</th>
+<th class="head">Ratio</th>
+<th class="head">C* Version</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><a class="reference external" href="https://lz4.github.io/lz4/">LZ4</a></td>
+<td><code class="docutils literal notranslate"><span class="pre">LZ4Compressor</span></code></td>
+<td>A+</td>
+<td>A+</td>
+<td>C+</td>
+<td><code class="docutils literal notranslate"><span class="pre">&gt;=1.2.2</span></code></td>
+</tr>
+<tr class="row-odd"><td><a class="reference external" href="https://lz4.github.io/lz4/">LZ4HC</a></td>
+<td><code class="docutils literal notranslate"><span class="pre">LZ4Compressor</span></code></td>
+<td>C+</td>
+<td>A+</td>
+<td>B+</td>
+<td><code class="docutils literal notranslate"><span class="pre">&gt;=</span> <span class="pre">3.6</span></code></td>
+</tr>
+<tr class="row-even"><td><a class="reference external" href="https://facebook.github.io/zstd/">Zstd</a></td>
+<td><code class="docutils literal notranslate"><span class="pre">ZstdCompressor</span></code></td>
+<td>A-</td>
+<td>A-</td>
+<td>A+</td>
+<td><code class="docutils literal notranslate"><span class="pre">&gt;=</span> <span class="pre">4.0</span></code></td>
+</tr>
+<tr class="row-odd"><td><a class="reference external" href="http://google.github.io/snappy/">Snappy</a></td>
+<td><code class="docutils literal notranslate"><span class="pre">SnappyCompressor</span></code></td>
+<td>A-</td>
+<td>A</td>
+<td>C</td>
+<td><code class="docutils literal notranslate"><span class="pre">&gt;=</span> <span class="pre">1.0</span></code></td>
+</tr>
+<tr class="row-even"><td><a class="reference external" href="https://zlib.net">Deflate (zlib)</a></td>
+<td><code class="docutils literal notranslate"><span class="pre">DeflateCompressor</span></code></td>
+<td>C</td>
+<td>C</td>
+<td>A</td>
+<td><code class="docutils literal notranslate"><span class="pre">&gt;=</span> <span class="pre">1.0</span></code></td>
+</tr>
+</tbody>
+</table>
+<p>Generally speaking for a performance critical (latency or throughput) application <code class="docutils literal notranslate"><span class="pre">LZ4</span></code> is the right choice as it
+gets excellent ratio per CPU cycle spent. This is why it is the default choice in Cassandra.</p>
+<p>For storage critical applications (disk footprint), however, <code class="docutils literal notranslate"><span class="pre">Zstd</span></code> may be a better choice as it can get significant
+additional ratio to <code class="docutils literal notranslate"><span class="pre">LZ4</span></code>.</p>
+<p><code class="docutils literal notranslate"><span class="pre">Snappy</span></code> is kept for backwards compatibility and <code class="docutils literal notranslate"><span class="pre">LZ4</span></code> will typically be preferable.</p>
+<p><code class="docutils literal notranslate"><span class="pre">Deflate</span></code> is kept for backwards compatibility and <code class="docutils literal notranslate"><span class="pre">Zstd</span></code> will typically be preferable.</p>
+<div class="section" id="configuring-compression">
+<h2>Configuring Compression<a class="headerlink" href="#configuring-compression" title="Permalink to this headline">¶</a></h2>
+<p>Compression is configured on a per-table basis as an optional argument to <code class="docutils literal notranslate"><span class="pre">CREATE</span> <span class="pre">TABLE</span></code> or <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code>. Three
+options are available for all compressors:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">class</span></code> (default: <code class="docutils literal notranslate"><span class="pre">LZ4Compressor</span></code>): specifies the compression class to use. The two “fast”
+compressors are <code class="docutils literal notranslate"><span class="pre">LZ4Compressor</span></code> and <code class="docutils literal notranslate"><span class="pre">SnappyCompressor</span></code> and the two “good” ratio compressors are <code class="docutils literal notranslate"><span class="pre">ZstdCompressor</span></code>
+and <code class="docutils literal notranslate"><span class="pre">DeflateCompressor</span></code>.</li>
+<li><code class="docutils literal notranslate"><span class="pre">chunk_length_in_kb</span></code> (default: <code class="docutils literal notranslate"><span class="pre">16KiB</span></code>): specifies the number of kilobytes of data per compression chunk. The main
+tradeoff here is that larger chunk sizes give compression algorithms more context and improve their ratio, but
+require reads to deserialize and read more off disk.</li>
+<li><code class="docutils literal notranslate"><span class="pre">crc_check_chance</span></code> (default: <code class="docutils literal notranslate"><span class="pre">1.0</span></code>): determines how likely Cassandra is to verify the checksum on each compression
+chunk during reads to protect against data corruption. Unless you have profiles indicating this is a performance
+problem it is highly encouraged not to turn this off as it is Cassandra’s only protection against bitrot.</li>
+</ul>
+<p>The <code class="docutils literal notranslate"><span class="pre">LZ4Compressor</span></code> supports the following additional options:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">lz4_compressor_type</span></code> (default <code class="docutils literal notranslate"><span class="pre">fast</span></code>): specifies if we should use the <code class="docutils literal notranslate"><span class="pre">high</span></code> (a.k.a <code class="docutils literal notranslate"><span class="pre">LZ4HC</span></code>) ratio version
+or the <code class="docutils literal notranslate"><span class="pre">fast</span></code> (a.k.a <code class="docutils literal notranslate"><span class="pre">LZ4</span></code>) version of <code class="docutils literal notranslate"><span class="pre">LZ4</span></code>. The <code class="docutils literal notranslate"><span class="pre">high</span></code> mode supports a configurable level, which can allow
+operators to tune the performance &lt;-&gt; ratio tradeoff via the <code class="docutils literal notranslate"><span class="pre">lz4_high_compressor_level</span></code> option. Note that in
+<code class="docutils literal notranslate"><span class="pre">4.0</span></code> and above it may be preferable to use the <code class="docutils literal notranslate"><span class="pre">Zstd</span></code> compressor.</li>
+<li><code class="docutils literal notranslate"><span class="pre">lz4_high_compressor_level</span></code> (default <code class="docutils literal notranslate"><span class="pre">9</span></code>): A number between <code class="docutils literal notranslate"><span class="pre">1</span></code> and <code class="docutils literal notranslate"><span class="pre">17</span></code> inclusive that represents how much
+CPU time to spend trying to get more compression ratio. Generally lower levels are “faster” but they get less ratio
+and higher levels are slower but get more compression ratio.</li>
+</ul>
+<p>The <code class="docutils literal notranslate"><span class="pre">ZstdCompressor</span></code> supports the following options in addition:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">compression_level</span></code> (default <code class="docutils literal notranslate"><span class="pre">3</span></code>): A number between <code class="docutils literal notranslate"><span class="pre">-131072</span></code> and <code class="docutils literal notranslate"><span class="pre">22</span></code> inclusive that represents how much CPU
+time to spend trying to get more compression ratio. The lower the level, the faster the speed (at the cost of ratio).
+Values from 20 to 22 are called “ultra levels” and should be used with caution, as they require more memory.
+The default of <code class="docutils literal notranslate"><span class="pre">3</span></code> is a good choice for competing with <code class="docutils literal notranslate"><span class="pre">Deflate</span></code> ratios and <code class="docutils literal notranslate"><span class="pre">1</span></code> is a good choice for competing
+with <code class="docutils literal notranslate"><span class="pre">LZ4</span></code>.</li>
+</ul>
+<p>Users can set compression using the following syntax:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CREATE TABLE keyspace.table (id int PRIMARY KEY) WITH compression = {&#39;class&#39;: &#39;LZ4Compressor&#39;};
+</pre></div>
+</div>
+<p>Or</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ALTER TABLE keyspace.table WITH compression = {&#39;class&#39;: &#39;LZ4Compressor&#39;, &#39;chunk_length_in_kb&#39;: 64, &#39;crc_check_chance&#39;: 0.5};
+</pre></div>
+</div>
+<p>Once enabled, compression can be disabled with <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> setting <code class="docutils literal notranslate"><span class="pre">enabled</span></code> to <code class="docutils literal notranslate"><span class="pre">false</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ALTER TABLE keyspace.table WITH compression = {&#39;enabled&#39;:&#39;false&#39;};
+</pre></div>
+</div>
+<p>Operators should be aware, however, that changing compression is not immediate. The data is compressed when the SSTable
+is written, and as SSTables are immutable, the compression will not be modified until the table is compacted. Upon
+issuing a change to the compression options via <code class="docutils literal notranslate"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code>, the existing SSTables will not be modified until they
+are compacted - if an operator needs compression changes to take effect immediately, the operator can trigger an SSTable
+rewrite using <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">scrub</span></code> or <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">upgradesstables</span> <span class="pre">-a</span></code>, both of which will rebuild the SSTables on disk,
+re-compressing the data in the process.</p>
+</div>
+<div class="section" id="benefits-and-uses">
+<h2>Benefits and Uses<a class="headerlink" href="#benefits-and-uses" title="Permalink to this headline">¶</a></h2>
+<p>Compression’s primary benefit is that it reduces the amount of data written to disk. Not only does the reduced size save
+in storage requirements, it often increases read and write throughput, as the CPU overhead of compressing data is faster
+than the time it would take to read or write the larger volume of uncompressed data from disk.</p>
+<p>Compression is most useful in tables comprised of many rows, where the rows are similar in nature. Tables containing
+similar text columns (such as repeated JSON blobs) often compress very well. Tables containing data that has already
+been compressed or random data (e.g. benchmark datasets) do not typically compress well.</p>
+</div>
+<div class="section" id="operational-impact">
+<h2>Operational Impact<a class="headerlink" href="#operational-impact" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Compression metadata is stored off-heap and scales with data on disk.  This often requires 1-3GB of off-heap RAM per
+terabyte of data on disk, though the exact usage varies with <code class="docutils literal notranslate"><span class="pre">chunk_length_in_kb</span></code> and compression ratios.</li>
+<li>Streaming operations involve compressing and decompressing data on compressed tables - in some code paths (such as
+non-vnode bootstrap), the CPU overhead of compression can be a limiting factor.</li>
+<li>To prevent slow compressors (<code class="docutils literal notranslate"><span class="pre">Zstd</span></code>, <code class="docutils literal notranslate"><span class="pre">Deflate</span></code>, <code class="docutils literal notranslate"><span class="pre">LZ4HC</span></code>) from blocking flushes for too long, all three
+flush with the default fast <code class="docutils literal notranslate"><span class="pre">LZ4</span></code> compressor and then rely on normal compaction to re-compress the data into the
+desired compression strategy. See <cite>CASSANDRA-15379 &lt;https://issues.apache.org/jira/browse/CASSANDRA-15379&gt;</cite> for more
+details.</li>
+<li>The compression path checksums data to ensure correctness - while the traditional Cassandra read path does not have a
+way to ensure correctness of data on disk, compressed tables allow the user to set <code class="docutils literal notranslate"><span class="pre">crc_check_chance</span></code> (a float from
+0.0 to 1.0) to allow Cassandra to probabilistically validate chunks on read to verify bits on disk are not corrupt.</li>
+</ul>
+</div>
+<div class="section" id="advanced-use">
+<h2>Advanced Use<a class="headerlink" href="#advanced-use" title="Permalink to this headline">¶</a></h2>
+<p>Advanced users can provide their own compression class by implementing the interface at
+<code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.io.compress.ICompressor</span></code>.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="cdc.html" class="btn btn-default pull-right " role="button" title="Change Data Capture" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="bloom_filters.html" class="btn btn-default" role="button" title="Bloom Filters" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/hardware.html b/src/doc/4.0-rc1/operating/hardware.html
new file mode 100644
index 0000000..e0f19d0
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/hardware.html
@@ -0,0 +1,189 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Hardware Choices"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Cassandra Tools" href="../tools/index.html"/>
+      <link rel="prev" title="Security" href="security.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Hardware Choices</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#cpu">CPU</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#memory">Memory</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#disks">Disks</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#common-cloud-choices">Common Cloud Choices</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="hardware-choices">
+<h1>Hardware Choices<a class="headerlink" href="#hardware-choices" title="Permalink to this headline">¶</a></h1>
+<p>Like most databases, Cassandra throughput improves with more CPU cores, more RAM, and faster disks. While Cassandra can
+be made to run on small servers for testing or development environments (including Raspberry Pis), a minimal production
+server requires at least 2 cores, and at least 8GB of RAM. Typical production servers have 8 or more cores and at least
+32GB of RAM.</p>
+<div class="section" id="cpu">
+<h2>CPU<a class="headerlink" href="#cpu" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra is highly concurrent, handling many simultaneous requests (both read and write) using multiple threads running
+on as many CPU cores as possible. The Cassandra write path tends to be heavily optimized (writing to the commitlog and
+then inserting the data into the memtable), so writes, in particular, tend to be CPU bound. Consequently, adding
+additional CPU cores often increases throughput of both reads and writes.</p>
+</div>
+<div class="section" id="memory">
+<h2>Memory<a class="headerlink" href="#memory" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra runs within a Java VM, which will pre-allocate a fixed size heap (java’s Xmx system parameter). In addition to
+the heap, Cassandra will use significant amounts of RAM offheap for compression metadata, bloom filters, row, key, and
+counter caches, and an in process page cache. Finally, Cassandra will take advantage of the operating system’s page
+cache, storing recently accessed portions files in RAM for rapid re-use.</p>
+<p>For optimal performance, operators should benchmark and tune their clusters based on their individual workload. However,
+basic guidelines suggest:</p>
+<ul class="simple">
+<li>ECC RAM should always be used, as Cassandra has few internal safeguards to protect against bit level corruption</li>
+<li>The Cassandra heap should be no less than 2GB, and no more than 50% of your system RAM</li>
+<li>Heaps smaller than 12GB should consider ParNew/ConcurrentMarkSweep garbage collection</li>
+<li>Heaps larger than 12GB should consider G1GC</li>
+</ul>
+</div>
+<div class="section" id="disks">
+<h2>Disks<a class="headerlink" href="#disks" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra persists data to disk for two very different purposes. The first is to the commitlog when a new write is made
+so that it can be replayed after a crash or system shutdown. The second is to the data directory when thresholds are
+exceeded and memtables are flushed to disk as SSTables.</p>
+<p>Commitlogs receive every write made to a Cassandra node and have the potential to block client operations, but they are
+only ever read on node start-up. SSTable (data file) writes on the other hand occur asynchronously, but are read to
+satisfy client look-ups. SSTables are also periodically merged and rewritten in a process called compaction.  The data
+held in the commitlog directory is data that has not been permanently saved to the SSTable data directories - it will be
+periodically purged once it is flushed to the SSTable data files.</p>
+<p>Cassandra performs very well on both spinning hard drives and solid state disks. In both cases, Cassandra’s sorted
+immutable SSTables allow for linear reads, few seeks, and few overwrites, maximizing throughput for HDDs and lifespan of
+SSDs by avoiding write amplification. However, when using spinning disks, it’s important that the commitlog
+(<code class="docutils literal notranslate"><span class="pre">commitlog_directory</span></code>) be on one physical disk (not simply a partition, but a physical disk), and the data files
+(<code class="docutils literal notranslate"><span class="pre">data_file_directories</span></code>) be set to a separate physical disk. By separating the commitlog from the data directory,
+writes can benefit from sequential appends to the commitlog without having to seek around the platter as reads request
+data from various SSTables on disk.</p>
+<p>In most cases, Cassandra is designed to provide redundancy via multiple independent, inexpensive servers. For this
+reason, using NFS or a SAN for data directories is an antipattern and should typically be avoided.  Similarly, servers
+with multiple disks are often better served by using RAID0 or JBOD than RAID1 or RAID5 - replication provided by
+Cassandra obsoletes the need for replication at the disk layer, so it’s typically recommended that operators take
+advantage of the additional throughput of RAID0 rather than protecting against failures with RAID1 or RAID5.</p>
+</div>
+<div class="section" id="common-cloud-choices">
+<h2>Common Cloud Choices<a class="headerlink" href="#common-cloud-choices" title="Permalink to this headline">¶</a></h2>
+<p>Many large users of Cassandra run in various clouds, including AWS, Azure, and GCE - Cassandra will happily run in any
+of these environments. Users should choose similar hardware to what would be needed in physical space. In EC2, popular
+options include:</p>
+<ul class="simple">
+<li>i2 instances, which provide both a high RAM:CPU ratio and local ephemeral SSDs</li>
+<li>m4.2xlarge / c4.4xlarge instances, which provide modern CPUs, enhanced networking and work well with EBS GP2 (SSD)
+storage</li>
+</ul>
+<p>Generally, disk and network performance increases with instance size and generation, so newer generations of instances
+and larger instance types within each family often perform better than their smaller or older alternatives.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../tools/index.html" class="btn btn-default pull-right " role="button" title="Cassandra Tools" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="security.html" class="btn btn-default" role="button" title="Security" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/hints.html b/src/doc/4.0-rc1/operating/hints.html
new file mode 100644
index 0000000..709baf5
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/hints.html
@@ -0,0 +1,402 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Hints"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Compaction" href="compaction/index.html"/>
+      <link rel="prev" title="Read repair" href="read_repair.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Hints</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#hinted-handoff">Hinted Handoff</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#configuring-hints">Configuring Hints</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#configuring-hints-at-runtime-with-nodetool">Configuring Hints at Runtime with <code class="docutils literal notranslate"><span class="pre">nodetool</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="#monitoring-hint-delivery">Monitoring Hint Delivery</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="hints">
+<span id="id1"></span><h1>Hints<a class="headerlink" href="#hints" title="Permalink to this headline">¶</a></h1>
+<p>Hinting is a data repair technique applied during write operations. When
+replica nodes are unavailable to accept a mutation, either due to failure or
+more commonly routine maintenance, coordinators attempting to write to those
+replicas store temporary hints on their local filesystem for later application
+to the unavailable replica. Hints are an important way to help reduce the
+duration of data inconsistency. Coordinators replay hints quickly after
+unavailable replica nodes return to the ring. Hints are best effort, however,
+and do not guarantee eventual consistency like <a class="reference internal" href="repair.html#repair"><span class="std std-ref">anti-entropy repair</span></a> does.</p>
+<p>Hints are useful because of how Apache Cassandra replicates data to provide
+fault tolerance, high availability and durability. Cassandra <a class="reference internal" href="../architecture/dynamo.html#consistent-hashing-token-ring"><span class="std std-ref">partitions
+data across the cluster</span></a> using consistent
+hashing, and then replicates keys to multiple nodes along the hash ring. To
+guarantee availability, all replicas of a key can accept mutations without
+consensus, but this means it is possible for some replicas to accept a mutation
+while others do not. When this happens an inconsistency is introduced.</p>
+<p>Hints are one of the three ways, in addition to read-repair and
+full/incremental anti-entropy repair, that Cassandra implements the eventual
+consistency guarantee that all updates are eventually received by all replicas.
+Hints, like read-repair, are best effort and not an alternative to performing
+full repair, but they do help reduce the duration of inconsistency between
+replicas in practice.</p>
+<div class="section" id="hinted-handoff">
+<h2>Hinted Handoff<a class="headerlink" href="#hinted-handoff" title="Permalink to this headline">¶</a></h2>
+<p>Hinted handoff is the process by which Cassandra applies hints to unavailable
+nodes.</p>
+<p>For example, consider a mutation is to be made at <code class="docutils literal notranslate"><span class="pre">Consistency</span> <span class="pre">Level</span></code>
+<code class="docutils literal notranslate"><span class="pre">LOCAL_QUORUM</span></code> against a keyspace with <code class="docutils literal notranslate"><span class="pre">Replication</span> <span class="pre">Factor</span></code> of <code class="docutils literal notranslate"><span class="pre">3</span></code>.
+Normally the client sends the mutation to a single coordinator, who then sends
+the mutation to all three replicas, and when two of the three replicas
+acknowledge the mutation the coordinator responds successfully to the client.
+If a replica node is unavailable, however, the coordinator stores a hint
+locally to the filesystem for later application. New hints will be retained for
+up to <code class="docutils literal notranslate"><span class="pre">max_hint_window_in_ms</span></code> of downtime (defaults to <code class="docutils literal notranslate"><span class="pre">3</span> <span class="pre">hours</span></code>).  If the
+unavailable replica does return to the cluster before the window expires, the
+coordinator applies any pending hinted mutations against the replica to ensure
+that eventual consistency is maintained.</p>
+<div class="figure" id="id2">
+<img alt="Hinted Handoff Example" src="../_images/hints.svg" /><p class="caption"><span class="caption-text">Hinted Handoff in Action</span></p>
+</div>
+<ul class="simple">
+<li>(<code class="docutils literal notranslate"><span class="pre">t0</span></code>): The write is sent by the client, and the coordinator sends it
+to the three replicas. Unfortunately <code class="docutils literal notranslate"><span class="pre">replica_2</span></code> is restarting and cannot
+receive the mutation.</li>
+<li>(<code class="docutils literal notranslate"><span class="pre">t1</span></code>): The client receives a quorum acknowledgement from the coordinator.
+At this point the client believe the write to be durable and visible to reads
+(which it is).</li>
+<li>(<code class="docutils literal notranslate"><span class="pre">t2</span></code>): After the write timeout (default <code class="docutils literal notranslate"><span class="pre">2s</span></code>), the coordinator decides
+that <code class="docutils literal notranslate"><span class="pre">replica_2</span></code> is unavailable and stores a hint to its local disk.</li>
+<li>(<code class="docutils literal notranslate"><span class="pre">t3</span></code>): Later, when <code class="docutils literal notranslate"><span class="pre">replica_2</span></code> starts back up it sends a gossip message
+to all nodes, including the coordinator.</li>
+<li>(<code class="docutils literal notranslate"><span class="pre">t4</span></code>): The coordinator replays hints including the missed mutation
+against <code class="docutils literal notranslate"><span class="pre">replica_2</span></code>.</li>
+</ul>
+<p>If the node does not return in time, the destination replica will be
+permanently out of sync until either read-repair or full/incremental
+anti-entropy repair propagates the mutation.</p>
+<div class="section" id="application-of-hints">
+<h3>Application of Hints<a class="headerlink" href="#application-of-hints" title="Permalink to this headline">¶</a></h3>
+<p>Hints are streamed in bulk, a segment at a time, to the target replica node and
+the target node replays them locally. After the target node has replayed a
+segment it deletes the segment and receives the next segment. This continues
+until all hints are drained.</p>
+</div>
+<div class="section" id="storage-of-hints-on-disk">
+<h3>Storage of Hints on Disk<a class="headerlink" href="#storage-of-hints-on-disk" title="Permalink to this headline">¶</a></h3>
+<p>Hints are stored in flat files in the coordinator node’s
+<code class="docutils literal notranslate"><span class="pre">$CASSANDRA_HOME/data/hints</span></code> directory. A hint includes a hint id, the target
+replica node on which the mutation is meant to be stored, the serialized
+mutation (stored as a blob) that couldn’t be delivered to the replica node, the
+mutation timestamp, and the Cassandra version used to serialize the mutation.
+By default hints are compressed using <code class="docutils literal notranslate"><span class="pre">LZ4Compressor</span></code>. Multiple hints are
+appended to the same hints file.</p>
+<p>Since hints contain the original unmodified mutation timestamp, hint application
+is idempotent and cannot overwrite a future mutation.</p>
+</div>
+<div class="section" id="hints-for-timed-out-write-requests">
+<h3>Hints for Timed Out Write Requests<a class="headerlink" href="#hints-for-timed-out-write-requests" title="Permalink to this headline">¶</a></h3>
+<p>Hints are also stored for write requests that time out. The
+<code class="docutils literal notranslate"><span class="pre">write_request_timeout_in_ms</span></code> setting in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> configures the
+timeout for write requests.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>write_request_timeout_in_ms: 2000
+</pre></div>
+</div>
+<p>The coordinator waits for the configured amount of time for write requests to
+complete, at which point it will time out and generate a hint for the timed out
+request. The lowest acceptable value for <code class="docutils literal notranslate"><span class="pre">write_request_timeout_in_ms</span></code> is 10 ms.</p>
+</div>
+</div>
+<div class="section" id="configuring-hints">
+<h2>Configuring Hints<a class="headerlink" href="#configuring-hints" title="Permalink to this headline">¶</a></h2>
+<p>Hints are enabled by default as they are critical for data consistency. The
+<code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> configuration file provides several settings for configuring
+hints:</p>
+<p>Table 1. Settings for Hints</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="37%" />
+<col width="36%" />
+<col width="26%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Setting</td>
+<td>Description</td>
+<td>Default Value</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">hinted_handoff_enabled</span></code></td>
+<td>Enables/Disables hinted handoffs</td>
+<td><code class="docutils literal notranslate"><span class="pre">true</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">hinted_handoff_disabled_datacenters</span></code></td>
+<td><p class="first">A list of data centers that do not perform
+hinted handoffs even when handoff is
+otherwise enabled.
+Example:</p>
+<blockquote class="last">
+<div><div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">hinted_handoff_disabled_datacenters</span><span class="p">:</span>
+  <span class="p p-Indicator">-</span> <span class="l l-Scalar l-Scalar-Plain">DC1</span>
+  <span class="p p-Indicator">-</span> <span class="l l-Scalar l-Scalar-Plain">DC2</span>
+</pre></div>
+</div>
+</div></blockquote>
+</td>
+<td><code class="docutils literal notranslate"><span class="pre">unset</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">max_hint_window_in_ms</span></code></td>
+<td>Defines the maximum amount of time (ms)
+a node shall have hints generated after it
+has failed.</td>
+<td><code class="docutils literal notranslate"><span class="pre">10800000</span></code> # 3 hours</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">hinted_handoff_throttle_in_kb</span></code></td>
+<td>Maximum throttle in KBs per second, per
+delivery thread. This will be reduced
+proportionally to the number of nodes in
+the cluster.
+(If there are two nodes in the cluster,
+each delivery thread will use the maximum
+rate; if there are 3, each will throttle
+to half of the maximum,since it is expected
+for two nodes to be delivering hints
+simultaneously.)</td>
+<td><code class="docutils literal notranslate"><span class="pre">1024</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">max_hints_delivery_threads</span></code></td>
+<td>Number of threads with which to deliver
+hints; Consider increasing this number when
+you have multi-dc deployments, since
+cross-dc handoff tends to be slower</td>
+<td><code class="docutils literal notranslate"><span class="pre">2</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">hints_directory</span></code></td>
+<td>Directory where Cassandra stores hints.</td>
+<td><code class="docutils literal notranslate"><span class="pre">$CASSANDRA_HOME/data/hints</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">hints_flush_period_in_ms</span></code></td>
+<td>How often hints should be flushed from the
+internal buffers to disk. Will <em>not</em>
+trigger fsync.</td>
+<td><code class="docutils literal notranslate"><span class="pre">10000</span></code></td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">max_hints_file_size_in_mb</span></code></td>
+<td>Maximum size for a single hints file, in
+megabytes.</td>
+<td><code class="docutils literal notranslate"><span class="pre">128</span></code></td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">hints_compression</span></code></td>
+<td>Compression to apply to the hint files.
+If omitted, hints files will be written
+uncompressed. LZ4, Snappy, and Deflate
+compressors are supported.</td>
+<td><code class="docutils literal notranslate"><span class="pre">LZ4Compressor</span></code></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="configuring-hints-at-runtime-with-nodetool">
+<h2>Configuring Hints at Runtime with <code class="docutils literal notranslate"><span class="pre">nodetool</span></code><a class="headerlink" href="#configuring-hints-at-runtime-with-nodetool" title="Permalink to this headline">¶</a></h2>
+<p><code class="docutils literal notranslate"><span class="pre">nodetool</span></code> provides several commands for configuring hints or getting hints
+related information. The nodetool commands override the corresponding
+settings if any in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> for the node running the command.</p>
+<p>Table 2. Nodetool Commands for Hints</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="43%" />
+<col width="57%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Command</td>
+<td>Description</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">disablehandoff</span></code></td>
+<td>Disables storing and delivering hints</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">disablehintsfordc</span></code></td>
+<td>Disables storing and delivering hints to a
+data center</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">enablehandoff</span></code></td>
+<td>Re-enables future hints storing and
+delivery on the current node</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">enablehintsfordc</span></code></td>
+<td>Enables hints for a data center that was
+previously disabled</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">getmaxhintwindow</span></code></td>
+<td>Prints the max hint window in ms. New in
+Cassandra 4.0.</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">handoffwindow</span></code></td>
+<td>Prints current hinted handoff window</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">pausehandoff</span></code></td>
+<td>Pauses hints delivery process</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">resumehandoff</span></code></td>
+<td>Resumes hints delivery process</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">nodetool</span>
+<span class="pre">sethintedhandoffthrottlekb</span></code></td>
+<td>Sets hinted handoff throttle in kb
+per second, per delivery thread</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">setmaxhintwindow</span></code></td>
+<td>Sets the specified max hint window in ms</td>
+</tr>
+<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">statushandoff</span></code></td>
+<td>Status of storing future hints on the
+current node</td>
+</tr>
+<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">truncatehints</span></code></td>
+<td>Truncates all hints on the local node, or
+truncates hints for the endpoint(s)
+specified.</td>
+</tr>
+</tbody>
+</table>
+<div class="section" id="make-hints-play-faster-at-runtime">
+<h3>Make Hints Play Faster at Runtime<a class="headerlink" href="#make-hints-play-faster-at-runtime" title="Permalink to this headline">¶</a></h3>
+<p>The default of <code class="docutils literal notranslate"><span class="pre">1024</span> <span class="pre">kbps</span></code> handoff throttle is conservative for most modern
+networks, and it is entirely possible that in a simple node restart you may
+accumulate many gigabytes hints that may take hours to play back. For example if
+you are ingesting <code class="docutils literal notranslate"><span class="pre">100</span> <span class="pre">Mbps</span></code> of data per node, a single 10 minute long
+restart will create <code class="docutils literal notranslate"><span class="pre">10</span> <span class="pre">minutes</span> <span class="pre">*</span> <span class="pre">(100</span> <span class="pre">megabit</span> <span class="pre">/</span> <span class="pre">second)</span> <span class="pre">~=</span> <span class="pre">7</span> <span class="pre">GiB</span></code> of data
+which at <code class="docutils literal notranslate"><span class="pre">(1024</span> <span class="pre">KiB</span> <span class="pre">/</span> <span class="pre">second)</span></code> would take <code class="docutils literal notranslate"><span class="pre">7.5</span> <span class="pre">GiB</span> <span class="pre">/</span> <span class="pre">(1024</span> <span class="pre">KiB</span> <span class="pre">/</span> <span class="pre">second)</span> <span class="pre">=</span>
+<span class="pre">2.03</span> <span class="pre">hours</span></code> to play back. The exact math depends on the load balancing strategy
+(round robin is better than token aware), number of tokens per node (more
+tokens is better than fewer), and naturally the cluster’s write rate, but
+regardless you may find yourself wanting to increase this throttle at runtime.</p>
+<p>If you find yourself in such a situation, you may consider raising
+the <code class="docutils literal notranslate"><span class="pre">hinted_handoff_throttle</span></code> dynamically via the
+<code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">sethintedhandoffthrottlekb</span></code> command.</p>
+</div>
+<div class="section" id="allow-a-node-to-be-down-longer-at-runtime">
+<h3>Allow a Node to be Down Longer at Runtime<a class="headerlink" href="#allow-a-node-to-be-down-longer-at-runtime" title="Permalink to this headline">¶</a></h3>
+<p>Sometimes a node may be down for more than the normal <code class="docutils literal notranslate"><span class="pre">max_hint_window_in_ms</span></code>,
+(default of three hours), but the hardware and data itself will still be
+accessible.  In such a case you may consider raising the
+<code class="docutils literal notranslate"><span class="pre">max_hint_window_in_ms</span></code> dynamically via the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">setmaxhintwindow</span></code>
+command added in Cassandra 4.0 (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-11720">CASSANDRA-11720</a>).
+This will instruct Cassandra to continue holding hints for the down
+endpoint for a longer amount of time.</p>
+<p>This command should be applied on all nodes in the cluster that may be holding
+hints. If needed, the setting can be applied permanently by setting the
+<code class="docutils literal notranslate"><span class="pre">max_hint_window_in_ms</span></code> setting in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> followed by a rolling
+restart.</p>
+</div>
+</div>
+<div class="section" id="monitoring-hint-delivery">
+<h2>Monitoring Hint Delivery<a class="headerlink" href="#monitoring-hint-delivery" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra 4.0 adds histograms available to understand how long it takes to deliver
+hints which is useful for operators to better identify problems (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-13234">CASSANDRA-13234</a>).</p>
+<p>There are also metrics available for tracking <span class="xref std std-ref">Hinted Handoff</span>
+and <a class="reference internal" href="metrics.html#hintsservice-metrics"><span class="std std-ref">Hints Service</span></a> metrics.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="compaction/index.html" class="btn btn-default pull-right " role="button" title="Compaction" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="read_repair.html" class="btn btn-default" role="button" title="Read repair" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/index.html b/src/doc/4.0-rc1/operating/index.html
new file mode 100644
index 0000000..9f0bbce
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/index.html
@@ -0,0 +1,251 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Operating Cassandra"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="next" title="Snitch" href="snitch.html"/>
+      <link rel="prev" title="jvm-* files" href="../configuration/cass_jvm_options_file.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Operating Cassandra</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="operating-cassandra">
+<h1>Operating Cassandra<a class="headerlink" href="#operating-cassandra" title="Permalink to this headline">¶</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="snitch.html">Snitch</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="snitch.html#dynamic-snitching">Dynamic snitching</a></li>
+<li class="toctree-l2"><a class="reference internal" href="snitch.html#snitch-classes">Snitch classes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#bootstrap">Bootstrap</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#removing-nodes">Removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#moving-nodes">Moving nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#replacing-a-dead-node">Replacing a dead node</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#monitoring-progress">Monitoring progress</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html#cleanup-data-after-range-movements">Cleanup data after range movements</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="repair.html">Repair</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="repair.html#incremental-and-full-repairs">Incremental and Full Repairs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html#usage-and-best-practices">Usage and Best Practices</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html#other-options">Other Options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html#full-repair-example">Full Repair Example</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="read_repair.html">Read repair</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html#expectation-of-monotonic-quorum-reads">Expectation of Monotonic Quorum Reads</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html#table-level-configuration-of-monotonic-reads">Table level configuration of monotonic reads</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html#read-repair-example">Read Repair Example</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html#read-consistency-level-and-read-repair">Read Consistency Level and Read Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html#improved-read-repair-blocking-behavior-in-cassandra-4-0">Improved Read Repair Blocking Behavior in Cassandra 4.0</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html#diagnostic-events-for-read-repairs">Diagnostic Events for Read Repairs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html#background-read-repair">Background Read Repair</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="hints.html">Hints</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="hints.html#hinted-handoff">Hinted Handoff</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html#configuring-hints">Configuring Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html#configuring-hints-at-runtime-with-nodetool">Configuring Hints at Runtime with <code class="docutils literal notranslate"><span class="pre">nodetool</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html#monitoring-hint-delivery">Monitoring Hint Delivery</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="compaction/index.html">Compaction</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#strategies">Strategies</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#types-of-compaction">Types of compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#when-is-a-minor-compaction-triggered">When is a minor compaction triggered?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#merging-sstables">Merging sstables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#tombstones-and-garbage-collection-gc-grace">Tombstones and Garbage Collection (GC) Grace</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#ttl">TTL</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#fully-expired-sstables">Fully expired sstables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#repaired-unrepaired-data">Repaired/unrepaired data</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#data-directories">Data directories</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#single-sstable-tombstone-compaction">Single sstable tombstone compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#common-options">Common options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#compaction-nodetool-commands">Compaction nodetool commands</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#switching-the-compaction-strategy-and-options-using-jmx">Switching the compaction strategy and options using JMX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html#more-detailed-compaction-logging">More detailed compaction logging</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html#changing">Changing</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="compression.html">Compression</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="compression.html#configuring-compression">Configuring Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html#benefits-and-uses">Benefits and Uses</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html#operational-impact">Operational Impact</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html#advanced-use">Advanced Use</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cdc.html">Change Data Capture</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html#overview">Overview</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html#configuration">Configuration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html#reading-commitlogsegments">Reading CommitLogSegments</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html#warnings">Warnings</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html#further-reading">Further Reading</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="backups.html">Backups</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="backups.html#types-of-backups">Types of Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html#data-directory-structure">Data Directory Structure</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html#snapshots">Snapshots</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html#incremental-backups">Incremental Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html#restoring-from-incremental-backups-and-snapshots">Restoring from  Incremental Backups and Snapshots</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html#tools-for-bulk-loading">Tools for Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html#using-sstableloader">Using sstableloader</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html#using-nodetool-import">Using nodetool import</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html#bulk-loading-external-data">Bulk Loading External Data</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="metrics.html">Monitoring</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#metric-types">Metric Types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#table-metrics">Table Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#keyspace-metrics">Keyspace Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#threadpool-metrics">ThreadPool Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#client-request-metrics">Client Request Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#cache-metrics">Cache Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#cql-metrics">CQL Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#droppedmessage-metrics">DroppedMessage Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#streaming-metrics">Streaming Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#compaction-metrics">Compaction Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#commitlog-metrics">CommitLog Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#storage-metrics">Storage Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#hintsservice-metrics">HintsService Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#sstable-index-metrics">SSTable Index Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#bufferpool-metrics">BufferPool Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#client-metrics">Client Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#batch-metrics">Batch Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#jvm-metrics">JVM Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#jmx">JMX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html#metric-reporters">Metric Reporters</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="security.html#tls-ssl-encryption">TLS/SSL Encryption</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#ssl-certificate-hot-reloading">SSL Certificate Hot Reloading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#roles">Roles</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#authentication">Authentication</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#authorization">Authorization</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#caching">Caching</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#jmx-access">JMX access</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="hardware.html">Hardware Choices</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html#cpu">CPU</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html#memory">Memory</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html#disks">Disks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html#common-cloud-choices">Common Cloud Choices</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="snitch.html" class="btn btn-default pull-right " role="button" title="Snitch" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../configuration/cass_jvm_options_file.html" class="btn btn-default" role="button" title="jvm-* files" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/metrics.html b/src/doc/4.0-rc1/operating/metrics.html
new file mode 100644
index 0000000..4968dfb
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/metrics.html
@@ -0,0 +1,1801 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Monitoring"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Security" href="security.html"/>
+      <link rel="prev" title="Bulk Loading" href="bulk_loading.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Monitoring</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#metric-types">Metric Types</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#table-metrics">Table Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#keyspace-metrics">Keyspace Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#threadpool-metrics">ThreadPool Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#client-request-metrics">Client Request Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cache-metrics">Cache Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cql-metrics">CQL Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#droppedmessage-metrics">DroppedMessage Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#streaming-metrics">Streaming Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#compaction-metrics">Compaction Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#commitlog-metrics">CommitLog Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#storage-metrics">Storage Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#hintsservice-metrics">HintsService Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#sstable-index-metrics">SSTable Index Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#bufferpool-metrics">BufferPool Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#client-metrics">Client Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#batch-metrics">Batch Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#jvm-metrics">JVM Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#jmx">JMX</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#metric-reporters">Metric Reporters</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="monitoring">
+<span id="monitoring-metrics"></span><h1>Monitoring<a class="headerlink" href="#monitoring" title="Permalink to this headline">¶</a></h1>
+<p>Metrics in Cassandra are managed using the <a class="reference external" href="http://metrics.dropwizard.io">Dropwizard Metrics</a> library. These metrics
+can be queried via JMX or pushed to external monitoring systems using a number of <a class="reference external" href="http://metrics.dropwizard.io/3.1.0/getting-started/#other-reporting">built in</a> and <a class="reference external" href="http://metrics.dropwizard.io/3.1.0/manual/third-party/">third party</a> reporter plugins.</p>
+<p>Metrics are collected for a single node. It’s up to the operator to use an external monitoring system to aggregate them.</p>
+<div class="section" id="metric-types">
+<h2>Metric Types<a class="headerlink" href="#metric-types" title="Permalink to this headline">¶</a></h2>
+<p>All metrics reported by cassandra fit into one of the following types.</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">Gauge</span></code></dt>
+<dd>An instantaneous measurement of a value.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Counter</span></code></dt>
+<dd>A gauge for an <code class="docutils literal notranslate"><span class="pre">AtomicLong</span></code> instance. Typically this is consumed by monitoring the change since the last call to
+see if there is a large increase compared to the norm.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Histogram</span></code></dt>
+<dd><p class="first">Measures the statistical distribution of values in a stream of data.</p>
+<p class="last">In addition to minimum, maximum, mean, etc., it also measures median, 75th, 90th, 95th, 98th, 99th, and 99.9th
+percentiles.</p>
+</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Timer</span></code></dt>
+<dd>Measures both the rate that a particular piece of code is called and the histogram of its duration.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Latency</span></code></dt>
+<dd>Special type that tracks latency (in microseconds) with a <code class="docutils literal notranslate"><span class="pre">Timer</span></code> plus a <code class="docutils literal notranslate"><span class="pre">Counter</span></code> that tracks the total latency
+accrued since starting. The former is useful if you track the change in total latency since the last check. Each
+metric name of this type will have ‘Latency’ and ‘TotalLatency’ appended to it.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">Meter</span></code></dt>
+<dd>A meter metric which measures mean throughput and one-, five-, and fifteen-minute exponentially-weighted moving
+average throughputs.</dd>
+</dl>
+</div>
+<div class="section" id="table-metrics">
+<span id="id1"></span><h2>Table Metrics<a class="headerlink" href="#table-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Each table in Cassandra has metrics responsible for tracking its state and performance.</p>
+<p>The metric names are all appended with the specific <code class="docutils literal notranslate"><span class="pre">Keyspace</span></code> and <code class="docutils literal notranslate"><span class="pre">Table</span></code> name.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Table.&lt;MetricName&gt;.&lt;Keyspace&gt;.&lt;Table&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Table</span> <span class="pre">keyspace=&lt;Keyspace&gt;</span> <span class="pre">scope=&lt;Table&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">There is a special table called ‘<code class="docutils literal notranslate"><span class="pre">all</span></code>’ without a keyspace. This represents the aggregation of metrics across
+<strong>all</strong> tables and keyspaces on the node.</p>
+</div>
+<table border="1" class="docutils">
+<colgroup>
+<col width="19%" />
+<col width="6%" />
+<col width="75%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>MemtableOnHeapSize</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total amount of data stored in the memtable that resides <strong>on</strong>-heap, including column related overhead and partitions overwritten.</td>
+</tr>
+<tr class="row-odd"><td>MemtableOffHeapSize</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total amount of data stored in the memtable that resides <strong>off</strong>-heap, including column related overhead and partitions overwritten.</td>
+</tr>
+<tr class="row-even"><td>MemtableLiveDataSize</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total amount of live data stored in the memtable, excluding any data structure overhead.</td>
+</tr>
+<tr class="row-odd"><td>AllMemtablesOnHeapSize</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total amount of data stored in the memtables (2i and pending flush memtables included) that resides <strong>on</strong>-heap.</td>
+</tr>
+<tr class="row-even"><td>AllMemtablesOffHeapSize</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total amount of data stored in the memtables (2i and pending flush memtables included) that resides <strong>off</strong>-heap.</td>
+</tr>
+<tr class="row-odd"><td>AllMemtablesLiveDataSize</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total amount of live data stored in the memtables (2i and pending flush memtables included) that resides off-heap, excluding any data structure overhead.</td>
+</tr>
+<tr class="row-even"><td>MemtableColumnsCount</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total number of columns present in the memtable.</td>
+</tr>
+<tr class="row-odd"><td>MemtableSwitchCount</td>
+<td>Counter</td>
+<td>Number of times flush has resulted in the memtable being switched out.</td>
+</tr>
+<tr class="row-even"><td>CompressionRatio</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>Current compression ratio for all SSTables.</td>
+</tr>
+<tr class="row-odd"><td>EstimatedPartitionSizeHistogram</td>
+<td>Gauge&lt;long[]&gt;</td>
+<td>Histogram of estimated partition size (in bytes).</td>
+</tr>
+<tr class="row-even"><td>EstimatedPartitionCount</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Approximate number of keys in table.</td>
+</tr>
+<tr class="row-odd"><td>EstimatedColumnCountHistogram</td>
+<td>Gauge&lt;long[]&gt;</td>
+<td>Histogram of estimated number of columns.</td>
+</tr>
+<tr class="row-even"><td>SSTablesPerReadHistogram</td>
+<td>Histogram</td>
+<td>Histogram of the number of sstable data files accessed per single partition read. SSTables skipped due to Bloom Filters, min-max key or partition index lookup are not taken into acoount.</td>
+</tr>
+<tr class="row-odd"><td>ReadLatency</td>
+<td>Latency</td>
+<td>Local read latency for this table.</td>
+</tr>
+<tr class="row-even"><td>RangeLatency</td>
+<td>Latency</td>
+<td>Local range scan latency for this table.</td>
+</tr>
+<tr class="row-odd"><td>WriteLatency</td>
+<td>Latency</td>
+<td>Local write latency for this table.</td>
+</tr>
+<tr class="row-even"><td>CoordinatorReadLatency</td>
+<td>Timer</td>
+<td>Coordinator read latency for this table.</td>
+</tr>
+<tr class="row-odd"><td>CoordinatorWriteLatency</td>
+<td>Timer</td>
+<td>Coordinator write latency for this table.</td>
+</tr>
+<tr class="row-even"><td>CoordinatorScanLatency</td>
+<td>Timer</td>
+<td>Coordinator range scan latency for this table.</td>
+</tr>
+<tr class="row-odd"><td>PendingFlushes</td>
+<td>Counter</td>
+<td>Estimated number of flush tasks pending for this table.</td>
+</tr>
+<tr class="row-even"><td>BytesFlushed</td>
+<td>Counter</td>
+<td>Total number of bytes flushed since server [re]start.</td>
+</tr>
+<tr class="row-odd"><td>CompactionBytesWritten</td>
+<td>Counter</td>
+<td>Total number of bytes written by compaction since server [re]start.</td>
+</tr>
+<tr class="row-even"><td>PendingCompactions</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>Estimate of number of pending compactions for this table.</td>
+</tr>
+<tr class="row-odd"><td>LiveSSTableCount</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>Number of SSTables on disk for this table.</td>
+</tr>
+<tr class="row-even"><td>LiveDiskSpaceUsed</td>
+<td>Counter</td>
+<td>Disk space used by SSTables belonging to this table (in bytes).</td>
+</tr>
+<tr class="row-odd"><td>TotalDiskSpaceUsed</td>
+<td>Counter</td>
+<td>Total disk space used by SSTables belonging to this table, including obsolete ones waiting to be GC’d.</td>
+</tr>
+<tr class="row-even"><td>MinPartitionSize</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Size of the smallest compacted partition (in bytes).</td>
+</tr>
+<tr class="row-odd"><td>MaxPartitionSize</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Size of the largest compacted partition (in bytes).</td>
+</tr>
+<tr class="row-even"><td>MeanPartitionSize</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Size of the average compacted partition (in bytes).</td>
+</tr>
+<tr class="row-odd"><td>BloomFilterFalsePositives</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Number of false positives on table’s bloom filter.</td>
+</tr>
+<tr class="row-even"><td>BloomFilterFalseRatio</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>False positive ratio of table’s bloom filter.</td>
+</tr>
+<tr class="row-odd"><td>BloomFilterDiskSpaceUsed</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Disk space used by bloom filter (in bytes).</td>
+</tr>
+<tr class="row-even"><td>BloomFilterOffHeapMemoryUsed</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Off-heap memory used by bloom filter.</td>
+</tr>
+<tr class="row-odd"><td>IndexSummaryOffHeapMemoryUsed</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Off-heap memory used by index summary.</td>
+</tr>
+<tr class="row-even"><td>CompressionMetadataOffHeapMemoryUsed</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Off-heap memory used by compression meta data.</td>
+</tr>
+<tr class="row-odd"><td>KeyCacheHitRate</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>Key cache hit rate for this table.</td>
+</tr>
+<tr class="row-even"><td>TombstoneScannedHistogram</td>
+<td>Histogram</td>
+<td>Histogram of tombstones scanned in queries on this table.</td>
+</tr>
+<tr class="row-odd"><td>LiveScannedHistogram</td>
+<td>Histogram</td>
+<td>Histogram of live cells scanned in queries on this table.</td>
+</tr>
+<tr class="row-even"><td>ColUpdateTimeDeltaHistogram</td>
+<td>Histogram</td>
+<td>Histogram of column update time delta on this table.</td>
+</tr>
+<tr class="row-odd"><td>ViewLockAcquireTime</td>
+<td>Timer</td>
+<td>Time taken acquiring a partition lock for materialized view updates on this table.</td>
+</tr>
+<tr class="row-even"><td>ViewReadTime</td>
+<td>Timer</td>
+<td>Time taken during the local read of a materialized view update.</td>
+</tr>
+<tr class="row-odd"><td>TrueSnapshotsSize</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Disk space used by snapshots of this table including all SSTable components.</td>
+</tr>
+<tr class="row-even"><td>RowCacheHitOutOfRange</td>
+<td>Counter</td>
+<td>Number of table row cache hits that do not satisfy the query filter, thus went to disk.</td>
+</tr>
+<tr class="row-odd"><td>RowCacheHit</td>
+<td>Counter</td>
+<td>Number of table row cache hits.</td>
+</tr>
+<tr class="row-even"><td>RowCacheMiss</td>
+<td>Counter</td>
+<td>Number of table row cache misses.</td>
+</tr>
+<tr class="row-odd"><td>CasPrepare</td>
+<td>Latency</td>
+<td>Latency of paxos prepare round.</td>
+</tr>
+<tr class="row-even"><td>CasPropose</td>
+<td>Latency</td>
+<td>Latency of paxos propose round.</td>
+</tr>
+<tr class="row-odd"><td>CasCommit</td>
+<td>Latency</td>
+<td>Latency of paxos commit round.</td>
+</tr>
+<tr class="row-even"><td>PercentRepaired</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>Percent of table data that is repaired on disk.</td>
+</tr>
+<tr class="row-odd"><td>BytesRepaired</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Size of table data repaired on disk</td>
+</tr>
+<tr class="row-even"><td>BytesUnrepaired</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Size of table data unrepaired on disk</td>
+</tr>
+<tr class="row-odd"><td>BytesPendingRepair</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Size of table data isolated for an ongoing incremental repair</td>
+</tr>
+<tr class="row-even"><td>SpeculativeRetries</td>
+<td>Counter</td>
+<td>Number of times speculative retries were sent for this table.</td>
+</tr>
+<tr class="row-odd"><td>SpeculativeFailedRetries</td>
+<td>Counter</td>
+<td>Number of speculative retries that failed to prevent a timeout</td>
+</tr>
+<tr class="row-even"><td>SpeculativeInsufficientReplicas</td>
+<td>Counter</td>
+<td>Number of speculative retries that couldn’t be attempted due to lack of replicas</td>
+</tr>
+<tr class="row-odd"><td>SpeculativeSampleLatencyNanos</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Number of nanoseconds to wait before speculation is attempted. Value may be statically configured or updated periodically based on coordinator latency.</td>
+</tr>
+<tr class="row-even"><td>WaitingOnFreeMemtableSpace</td>
+<td>Histogram</td>
+<td>Histogram of time spent waiting for free memtable space, either on- or off-heap.</td>
+</tr>
+<tr class="row-odd"><td>DroppedMutations</td>
+<td>Counter</td>
+<td>Number of dropped mutations on this table.</td>
+</tr>
+<tr class="row-even"><td>AnticompactionTime</td>
+<td>Timer</td>
+<td>Time spent anticompacting before a consistent repair.</td>
+</tr>
+<tr class="row-odd"><td>ValidationTime</td>
+<td>Timer</td>
+<td>Time spent doing validation compaction during repair.</td>
+</tr>
+<tr class="row-even"><td>SyncTime</td>
+<td>Timer</td>
+<td>Time spent doing streaming during repair.</td>
+</tr>
+<tr class="row-odd"><td>BytesValidated</td>
+<td>Histogram</td>
+<td>Histogram over the amount of bytes read during validation.</td>
+</tr>
+<tr class="row-even"><td>PartitionsValidated</td>
+<td>Histogram</td>
+<td>Histogram over the number of partitions read during validation.</td>
+</tr>
+<tr class="row-odd"><td>BytesAnticompacted</td>
+<td>Counter</td>
+<td>How many bytes we anticompacted.</td>
+</tr>
+<tr class="row-even"><td>BytesMutatedAnticompaction</td>
+<td>Counter</td>
+<td>How many bytes we avoided anticompacting because the sstable was fully contained in the repaired range.</td>
+</tr>
+<tr class="row-odd"><td>MutatedAnticompactionGauge</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>Ratio of bytes mutated vs total bytes repaired.</td>
+</tr>
+<tr class="row-even"><td>ReadRepairRequests</td>
+<td>Meter</td>
+<td>Throughput for mutations generated by read-repair.</td>
+</tr>
+<tr class="row-odd"><td>ShortReadProtectionRequests</td>
+<td>Meter</td>
+<td>Throughput for requests to get extra rows during short read protection.</td>
+</tr>
+<tr class="row-even"><td>ReplicaFilteringProtectionRequests</td>
+<td>Meter</td>
+<td>Throughput for row completion requests during replica filtering protection.</td>
+</tr>
+<tr class="row-odd"><td>ReplicaFilteringProtectionRowsCachedPerQuery</td>
+<td>Histogram</td>
+<td>Histogram of the number of rows cached per query when replica filtering protection is engaged.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="keyspace-metrics">
+<h2>Keyspace Metrics<a class="headerlink" href="#keyspace-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Each keyspace in Cassandra has metrics responsible for tracking its state and performance.</p>
+<p>Most of these metrics are the same as the <code class="docutils literal notranslate"><span class="pre">Table</span> <span class="pre">Metrics</span></code> above, only they are aggregated at the Keyspace level. The keyspace specific metrics are specified in the table below.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.keyspace.&lt;MetricName&gt;.&lt;Keyspace&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Keyspace</span> <span class="pre">scope=&lt;Keyspace&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="20%" />
+<col width="7%" />
+<col width="73%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>WriteFailedIdeaCL</td>
+<td>Counter</td>
+<td>Number of writes that failed to achieve the configured ideal consistency level or 0 if none is configured</td>
+</tr>
+<tr class="row-odd"><td>IdealCLWriteLatency</td>
+<td>Latency</td>
+<td>Coordinator latency of writes at the configured ideal consistency level. No values are recorded if ideal consistency level is not configured</td>
+</tr>
+<tr class="row-even"><td>RepairTime</td>
+<td>Timer</td>
+<td>Total time spent as repair coordinator.</td>
+</tr>
+<tr class="row-odd"><td>RepairPrepareTime</td>
+<td>Timer</td>
+<td>Total time spent preparing for repair.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="threadpool-metrics">
+<h2>ThreadPool Metrics<a class="headerlink" href="#threadpool-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra splits work of a particular type into its own thread pool.  This provides back-pressure and asynchrony for
+requests on a node.  It’s important to monitor the state of these thread pools since they can tell you how saturated a
+node is.</p>
+<p>The metric names are all appended with the specific <code class="docutils literal notranslate"><span class="pre">ThreadPool</span></code> name.  The thread pools are also categorized under a
+specific type.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.ThreadPools.&lt;MetricName&gt;.&lt;Path&gt;.&lt;ThreadPoolName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=ThreadPools</span> <span class="pre">path=&lt;Path&gt;</span> <span class="pre">scope=&lt;ThreadPoolName&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="15%" />
+<col width="10%" />
+<col width="74%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>ActiveTasks</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>Number of tasks being actively worked on by this pool.</td>
+</tr>
+<tr class="row-odd"><td>PendingTasks</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>Number of queued tasks queued up on this pool.</td>
+</tr>
+<tr class="row-even"><td>CompletedTasks</td>
+<td>Counter</td>
+<td>Number of tasks completed.</td>
+</tr>
+<tr class="row-odd"><td>TotalBlockedTasks</td>
+<td>Counter</td>
+<td>Number of tasks that were blocked due to queue saturation.</td>
+</tr>
+<tr class="row-even"><td>CurrentlyBlockedTask</td>
+<td>Counter</td>
+<td>Number of tasks that are currently blocked due to queue saturation but on retry will become unblocked.</td>
+</tr>
+<tr class="row-odd"><td>MaxPoolSize</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>The maximum number of threads in this pool.</td>
+</tr>
+<tr class="row-even"><td>MaxTasksQueued</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>The maximum number of tasks queued before a task get blocked.</td>
+</tr>
+</tbody>
+</table>
+<p>The following thread pools can be monitored.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="26%" />
+<col width="13%" />
+<col width="61%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Native-Transport-Requests</td>
+<td>transport</td>
+<td>Handles client CQL requests</td>
+</tr>
+<tr class="row-odd"><td>CounterMutationStage</td>
+<td>request</td>
+<td>Responsible for counter writes</td>
+</tr>
+<tr class="row-even"><td>ViewMutationStage</td>
+<td>request</td>
+<td>Responsible for materialized view writes</td>
+</tr>
+<tr class="row-odd"><td>MutationStage</td>
+<td>request</td>
+<td>Responsible for all other writes</td>
+</tr>
+<tr class="row-even"><td>ReadRepairStage</td>
+<td>request</td>
+<td>ReadRepair happens on this thread pool</td>
+</tr>
+<tr class="row-odd"><td>ReadStage</td>
+<td>request</td>
+<td>Local reads run on this thread pool</td>
+</tr>
+<tr class="row-even"><td>RequestResponseStage</td>
+<td>request</td>
+<td>Coordinator requests to the cluster run on this thread pool</td>
+</tr>
+<tr class="row-odd"><td>AntiEntropyStage</td>
+<td>internal</td>
+<td>Builds merkle tree for repairs</td>
+</tr>
+<tr class="row-even"><td>CacheCleanupExecutor</td>
+<td>internal</td>
+<td>Cache maintenance performed on this thread pool</td>
+</tr>
+<tr class="row-odd"><td>CompactionExecutor</td>
+<td>internal</td>
+<td>Compactions are run on these threads</td>
+</tr>
+<tr class="row-even"><td>GossipStage</td>
+<td>internal</td>
+<td>Handles gossip requests</td>
+</tr>
+<tr class="row-odd"><td>HintsDispatcher</td>
+<td>internal</td>
+<td>Performs hinted handoff</td>
+</tr>
+<tr class="row-even"><td>InternalResponseStage</td>
+<td>internal</td>
+<td>Responsible for intra-cluster callbacks</td>
+</tr>
+<tr class="row-odd"><td>MemtableFlushWriter</td>
+<td>internal</td>
+<td>Writes memtables to disk</td>
+</tr>
+<tr class="row-even"><td>MemtablePostFlush</td>
+<td>internal</td>
+<td>Cleans up commit log after memtable is written to disk</td>
+</tr>
+<tr class="row-odd"><td>MemtableReclaimMemory</td>
+<td>internal</td>
+<td>Memtable recycling</td>
+</tr>
+<tr class="row-even"><td>MigrationStage</td>
+<td>internal</td>
+<td>Runs schema migrations</td>
+</tr>
+<tr class="row-odd"><td>MiscStage</td>
+<td>internal</td>
+<td>Misceleneous tasks run here</td>
+</tr>
+<tr class="row-even"><td>PendingRangeCalculator</td>
+<td>internal</td>
+<td>Calculates token range</td>
+</tr>
+<tr class="row-odd"><td>PerDiskMemtableFlushWriter_0</td>
+<td>internal</td>
+<td>Responsible for writing a spec (there is one of these per disk 0-N)</td>
+</tr>
+<tr class="row-even"><td>Sampler</td>
+<td>internal</td>
+<td>Responsible for re-sampling the index summaries of SStables</td>
+</tr>
+<tr class="row-odd"><td>SecondaryIndexManagement</td>
+<td>internal</td>
+<td>Performs updates to secondary indexes</td>
+</tr>
+<tr class="row-even"><td>ValidationExecutor</td>
+<td>internal</td>
+<td>Performs validation compaction or scrubbing</td>
+</tr>
+<tr class="row-odd"><td>ViewBuildExecutor</td>
+<td>internal</td>
+<td>Performs materialized views initial build</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="client-request-metrics">
+<h2>Client Request Metrics<a class="headerlink" href="#client-request-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Client requests have their own set of metrics that encapsulate the work happening at coordinator level.</p>
+<p>Different types of client requests are broken down by <code class="docutils literal notranslate"><span class="pre">RequestType</span></code>.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.ClientRequest.&lt;MetricName&gt;.&lt;RequestType&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=ClientRequest</span> <span class="pre">scope=&lt;RequestType&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">CASRead</p>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to transactional read requests.</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
+<colgroup>
+<col width="21%" />
+<col width="14%" />
+<col width="65%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Timeouts</td>
+<td>Counter</td>
+<td>Number of timeouts encountered.</td>
+</tr>
+<tr class="row-odd"><td>Failures</td>
+<td>Counter</td>
+<td>Number of transaction failures encountered.</td>
+</tr>
+<tr class="row-even"><td>&nbsp;</td>
+<td>Latency</td>
+<td>Transaction read latency.</td>
+</tr>
+<tr class="row-odd"><td>Unavailables</td>
+<td>Counter</td>
+<td>Number of unavailable exceptions encountered.</td>
+</tr>
+<tr class="row-even"><td>UnfinishedCommit</td>
+<td>Counter</td>
+<td>Number of transactions that were committed on read.</td>
+</tr>
+<tr class="row-odd"><td>ConditionNotMet</td>
+<td>Counter</td>
+<td>Number of transaction preconditions did not match current values.</td>
+</tr>
+<tr class="row-even"><td>ContentionHistogram</td>
+<td>Histogram</td>
+<td>How many contended reads were encountered</td>
+</tr>
+</tbody>
+</table>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">CASWrite</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to transactional write requests.</p>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
+<colgroup>
+<col width="21%" />
+<col width="14%" />
+<col width="65%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Timeouts</td>
+<td>Counter</td>
+<td>Number of timeouts encountered.</td>
+</tr>
+<tr class="row-odd"><td>Failures</td>
+<td>Counter</td>
+<td>Number of transaction failures encountered.</td>
+</tr>
+<tr class="row-even"><td>&nbsp;</td>
+<td>Latency</td>
+<td>Transaction write latency.</td>
+</tr>
+<tr class="row-odd"><td>UnfinishedCommit</td>
+<td>Counter</td>
+<td>Number of transactions that were committed on write.</td>
+</tr>
+<tr class="row-even"><td>ConditionNotMet</td>
+<td>Counter</td>
+<td>Number of transaction preconditions did not match current values.</td>
+</tr>
+<tr class="row-odd"><td>ContentionHistogram</td>
+<td>Histogram</td>
+<td>How many contended writes were encountered</td>
+</tr>
+<tr class="row-even"><td>MutationSizeHistogram</td>
+<td>Histogram</td>
+<td>Total size in bytes of the requests mutations.</td>
+</tr>
+</tbody>
+</table>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">Read</p>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to standard read requests.</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
+<colgroup>
+<col width="22%" />
+<col width="15%" />
+<col width="64%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Timeouts</td>
+<td>Counter</td>
+<td>Number of timeouts encountered.</td>
+</tr>
+<tr class="row-odd"><td>Failures</td>
+<td>Counter</td>
+<td>Number of read failures encountered.</td>
+</tr>
+<tr class="row-even"><td>&nbsp;</td>
+<td>Latency</td>
+<td>Read latency.</td>
+</tr>
+<tr class="row-odd"><td>Unavailables</td>
+<td>Counter</td>
+<td>Number of unavailable exceptions encountered.</td>
+</tr>
+</tbody>
+</table>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">RangeSlice</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to token range read requests.</p>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
+<colgroup>
+<col width="22%" />
+<col width="15%" />
+<col width="64%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Timeouts</td>
+<td>Counter</td>
+<td>Number of timeouts encountered.</td>
+</tr>
+<tr class="row-odd"><td>Failures</td>
+<td>Counter</td>
+<td>Number of range query failures encountered.</td>
+</tr>
+<tr class="row-even"><td>&nbsp;</td>
+<td>Latency</td>
+<td>Range query latency.</td>
+</tr>
+<tr class="row-odd"><td>Unavailables</td>
+<td>Counter</td>
+<td>Number of unavailable exceptions encountered.</td>
+</tr>
+</tbody>
+</table>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">Write</p>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to regular write requests.</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first docutils">
+<colgroup>
+<col width="22%" />
+<col width="15%" />
+<col width="64%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Timeouts</td>
+<td>Counter</td>
+<td>Number of timeouts encountered.</td>
+</tr>
+<tr class="row-odd"><td>Failures</td>
+<td>Counter</td>
+<td>Number of write failures encountered.</td>
+</tr>
+<tr class="row-even"><td>&nbsp;</td>
+<td>Latency</td>
+<td>Write latency.</td>
+</tr>
+<tr class="row-odd"><td>Unavailables</td>
+<td>Counter</td>
+<td>Number of unavailable exceptions encountered.</td>
+</tr>
+<tr class="row-even"><td>MutationSizeHistogram</td>
+<td>Histogram</td>
+<td>Total size in bytes of the requests mutations.</td>
+</tr>
+</tbody>
+</table>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">RequestType:</th><td class="field-body"><p class="first">ViewWrite</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Description:</th><td class="field-body"><p class="first">Metrics related to materialized view write wrtes.</p>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Metrics:</th><td class="field-body"><table border="1" class="first last docutils">
+<colgroup>
+<col width="17%" />
+<col width="11%" />
+<col width="72%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Timeouts</td>
+<td>Counter</td>
+<td>Number of timeouts encountered.</td>
+</tr>
+<tr class="row-even"><td>Failures</td>
+<td>Counter</td>
+<td>Number of transaction failures encountered.</td>
+</tr>
+<tr class="row-odd"><td>Unavailables</td>
+<td>Counter</td>
+<td>Number of unavailable exceptions encountered.</td>
+</tr>
+<tr class="row-even"><td>ViewReplicasAttempted</td>
+<td>Counter</td>
+<td>Total number of attempted view replica writes.</td>
+</tr>
+<tr class="row-odd"><td>ViewReplicasSuccess</td>
+<td>Counter</td>
+<td>Total number of succeded view replica writes.</td>
+</tr>
+<tr class="row-even"><td>ViewPendingMutations</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>ViewReplicasAttempted - ViewReplicasSuccess.</td>
+</tr>
+<tr class="row-odd"><td>ViewWriteLatency</td>
+<td>Timer</td>
+<td>Time between when mutation is applied to base table and when CL.ONE is achieved on view.</td>
+</tr>
+</tbody>
+</table>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="cache-metrics">
+<h2>Cache Metrics<a class="headerlink" href="#cache-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra caches have metrics to track the effectivness of the caches. Though the <code class="docutils literal notranslate"><span class="pre">Table</span> <span class="pre">Metrics</span></code> might be more useful.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Cache.&lt;MetricName&gt;.&lt;CacheName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Cache</span> <span class="pre">scope=&lt;CacheName&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="33%" />
+<col width="18%" />
+<col width="49%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Capacity</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Cache capacity in bytes.</td>
+</tr>
+<tr class="row-odd"><td>Entries</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>Total number of cache entries.</td>
+</tr>
+<tr class="row-even"><td>FifteenMinuteCacheHitRate</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>15m cache hit rate.</td>
+</tr>
+<tr class="row-odd"><td>FiveMinuteCacheHitRate</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>5m cache hit rate.</td>
+</tr>
+<tr class="row-even"><td>OneMinuteCacheHitRate</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>1m cache hit rate.</td>
+</tr>
+<tr class="row-odd"><td>HitRate</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>All time cache hit rate.</td>
+</tr>
+<tr class="row-even"><td>Hits</td>
+<td>Meter</td>
+<td>Total number of cache hits.</td>
+</tr>
+<tr class="row-odd"><td>Misses</td>
+<td>Meter</td>
+<td>Total number of cache misses.</td>
+</tr>
+<tr class="row-even"><td>MissLatency</td>
+<td>Timer</td>
+<td>Latency of misses.</td>
+</tr>
+<tr class="row-odd"><td>Requests</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total number of cache requests.</td>
+</tr>
+<tr class="row-even"><td>Size</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total size of occupied cache, in bytes.</td>
+</tr>
+</tbody>
+</table>
+<p>The following caches are covered:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="38%" />
+<col width="62%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>CounterCache</td>
+<td>Keeps hot counters in memory for performance.</td>
+</tr>
+<tr class="row-odd"><td>ChunkCache</td>
+<td>In process uncompressed page cache.</td>
+</tr>
+<tr class="row-even"><td>KeyCache</td>
+<td>Cache for partition to sstable offsets.</td>
+</tr>
+<tr class="row-odd"><td>RowCache</td>
+<td>Cache for rows kept in memory.</td>
+</tr>
+</tbody>
+</table>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Misses and MissLatency are only defined for the ChunkCache</p>
+</div>
+</div>
+<div class="section" id="cql-metrics">
+<h2>CQL Metrics<a class="headerlink" href="#cql-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to CQL prepared statement caching.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.CQL.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=CQL</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="13%" />
+<col width="64%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>PreparedStatementsCount</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>Number of cached prepared statements.</td>
+</tr>
+<tr class="row-odd"><td>PreparedStatementsEvicted</td>
+<td>Counter</td>
+<td>Number of prepared statements evicted from the prepared statement cache</td>
+</tr>
+<tr class="row-even"><td>PreparedStatementsExecuted</td>
+<td>Counter</td>
+<td>Number of prepared statements executed.</td>
+</tr>
+<tr class="row-odd"><td>RegularStatementsExecuted</td>
+<td>Counter</td>
+<td>Number of <strong>non</strong> prepared statements executed.</td>
+</tr>
+<tr class="row-even"><td>PreparedStatementsRatio</td>
+<td>Gauge&lt;Double&gt;</td>
+<td>Percentage of statements that are prepared vs unprepared.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="droppedmessage-metrics">
+<span id="dropped-metrics"></span><h2>DroppedMessage Metrics<a class="headerlink" href="#droppedmessage-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to tracking dropped messages for different types of requests.
+Dropped writes are stored and retried by <code class="docutils literal notranslate"><span class="pre">Hinted</span> <span class="pre">Handoff</span></code></p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.DroppedMessage.&lt;MetricName&gt;.&lt;Type&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=DroppedMessage</span> <span class="pre">scope=&lt;Type&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="36%" />
+<col width="19%" />
+<col width="45%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>CrossNodeDroppedLatency</td>
+<td>Timer</td>
+<td>The dropped latency across nodes.</td>
+</tr>
+<tr class="row-odd"><td>InternalDroppedLatency</td>
+<td>Timer</td>
+<td>The dropped latency within node.</td>
+</tr>
+<tr class="row-even"><td>Dropped</td>
+<td>Meter</td>
+<td>Number of dropped messages.</td>
+</tr>
+</tbody>
+</table>
+<p>The different types of messages tracked are:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="39%" />
+<col width="61%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>BATCH_STORE</td>
+<td>Batchlog write</td>
+</tr>
+<tr class="row-odd"><td>BATCH_REMOVE</td>
+<td>Batchlog cleanup (after succesfully applied)</td>
+</tr>
+<tr class="row-even"><td>COUNTER_MUTATION</td>
+<td>Counter writes</td>
+</tr>
+<tr class="row-odd"><td>HINT</td>
+<td>Hint replay</td>
+</tr>
+<tr class="row-even"><td>MUTATION</td>
+<td>Regular writes</td>
+</tr>
+<tr class="row-odd"><td>READ</td>
+<td>Regular reads</td>
+</tr>
+<tr class="row-even"><td>READ_REPAIR</td>
+<td>Read repair</td>
+</tr>
+<tr class="row-odd"><td>PAGED_SLICE</td>
+<td>Paged read</td>
+</tr>
+<tr class="row-even"><td>RANGE_SLICE</td>
+<td>Token range read</td>
+</tr>
+<tr class="row-odd"><td>REQUEST_RESPONSE</td>
+<td>RPC Callbacks</td>
+</tr>
+<tr class="row-even"><td>_TRACE</td>
+<td>Tracing writes</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="streaming-metrics">
+<h2>Streaming Metrics<a class="headerlink" href="#streaming-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics reported during <code class="docutils literal notranslate"><span class="pre">Streaming</span></code> operations, such as repair, bootstrap, rebuild.</p>
+<p>These metrics are specific to a peer endpoint, with the source node being the node you are pulling the metrics from.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Streaming.&lt;MetricName&gt;.&lt;PeerIP&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Streaming</span> <span class="pre">scope=&lt;PeerIP&gt;</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="13%" />
+<col width="64%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>IncomingBytes</td>
+<td>Counter</td>
+<td>Number of bytes streamed to this node from the peer.</td>
+</tr>
+<tr class="row-odd"><td>OutgoingBytes</td>
+<td>Counter</td>
+<td>Number of bytes streamed to the peer endpoint from this node.</td>
+</tr>
+<tr class="row-even"><td>IncomingProcessTime</td>
+<td>Timer</td>
+<td>The time spent on processing the incoming stream message from the peer.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="compaction-metrics">
+<h2>Compaction Metrics<a class="headerlink" href="#compaction-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to <code class="docutils literal notranslate"><span class="pre">Compaction</span></code> work.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Compaction.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Compaction</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="13%" />
+<col width="20%" />
+<col width="68%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>BytesCompacted</td>
+<td>Counter</td>
+<td>Total number of bytes compacted since server [re]start.</td>
+</tr>
+<tr class="row-odd"><td>PendingTasks</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>Estimated number of compactions remaining to perform.</td>
+</tr>
+<tr class="row-even"><td>CompletedTasks</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Number of completed compactions since server [re]start.</td>
+</tr>
+<tr class="row-odd"><td>TotalCompactionsCompleted</td>
+<td>Meter</td>
+<td>Throughput of completed compactions since server [re]start.</td>
+</tr>
+<tr class="row-even"><td>PendingTasksByTableName</td>
+<td>Gauge&lt;Map&lt;String, Map&lt;String, Integer&gt;&gt;&gt;</td>
+<td>Estimated number of compactions remaining to perform, grouped by keyspace and then table name. This info is also kept in <code class="docutils literal notranslate"><span class="pre">Table</span> <span class="pre">Metrics</span></code>.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="commitlog-metrics">
+<h2>CommitLog Metrics<a class="headerlink" href="#commitlog-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to the <code class="docutils literal notranslate"><span class="pre">CommitLog</span></code></p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.CommitLog.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=CommitLog</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="17%" />
+<col width="9%" />
+<col width="74%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>CompletedTasks</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total number of commit log messages written since [re]start.</td>
+</tr>
+<tr class="row-odd"><td>PendingTasks</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Number of commit log messages written but yet to be fsync’d.</td>
+</tr>
+<tr class="row-even"><td>TotalCommitLogSize</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Current size, in bytes, used by all the commit log segments.</td>
+</tr>
+<tr class="row-odd"><td>WaitingOnSegmentAllocation</td>
+<td>Timer</td>
+<td>Time spent waiting for a CommitLogSegment to be allocated - under normal conditions this should be zero.</td>
+</tr>
+<tr class="row-even"><td>WaitingOnCommit</td>
+<td>Timer</td>
+<td>The time spent waiting on CL fsync; for Periodic this is only occurs when the sync is lagging its sync interval.</td>
+</tr>
+<tr class="row-odd"><td>OverSizedMutations</td>
+<td>Meter</td>
+<td>Throughput for mutations that exceed limit.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="storage-metrics">
+<h2>Storage Metrics<a class="headerlink" href="#storage-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to the storage engine.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Storage.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Storage</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="17%" />
+<col width="9%" />
+<col width="75%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Exceptions</td>
+<td>Counter</td>
+<td>Number of internal exceptions caught. Under normal exceptions this should be zero.</td>
+</tr>
+<tr class="row-odd"><td>Load</td>
+<td>Counter</td>
+<td>Size, in bytes, of the on disk data size this node manages.</td>
+</tr>
+<tr class="row-even"><td>TotalHints</td>
+<td>Counter</td>
+<td>Number of hint messages written to this node since [re]start. Includes one entry for each host to be hinted per hint.</td>
+</tr>
+<tr class="row-odd"><td>TotalHintsInProgress</td>
+<td>Counter</td>
+<td>Number of hints attemping to be sent currently.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="hintsservice-metrics">
+<span id="id2"></span><h2>HintsService Metrics<a class="headerlink" href="#hintsservice-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to the Hints delivery service.  There are also some metrics related to hints tracked in <code class="docutils literal notranslate"><span class="pre">Storage</span> <span class="pre">Metrics</span></code></p>
+<p>These metrics include the peer endpoint <strong>in the metric name</strong></p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.HintsService.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=HintsService</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="27%" />
+<col width="14%" />
+<col width="59%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>HintsSucceeded</td>
+<td>Meter</td>
+<td>A meter of the hints successfully delivered</td>
+</tr>
+<tr class="row-odd"><td>HintsFailed</td>
+<td>Meter</td>
+<td>A meter of the hints that failed deliver</td>
+</tr>
+<tr class="row-even"><td>HintsTimedOut</td>
+<td>Meter</td>
+<td>A meter of the hints that timed out</td>
+</tr>
+<tr class="row-odd"><td>Hint_delays</td>
+<td>Histogram</td>
+<td>Histogram of hint delivery delays (in milliseconds)</td>
+</tr>
+<tr class="row-even"><td>Hint_delays-&lt;PeerIP&gt;</td>
+<td>Histogram</td>
+<td>Histogram of hint delivery delays (in milliseconds) per peer</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="sstable-index-metrics">
+<h2>SSTable Index Metrics<a class="headerlink" href="#sstable-index-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to the SSTable index metadata.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Index.&lt;MetricName&gt;.RowIndexEntry</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Index</span> <span class="pre">scope=RowIndexEntry</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="12%" />
+<col width="65%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>IndexedEntrySize</td>
+<td>Histogram</td>
+<td>Histogram of the on-heap size, in bytes, of the index across all SSTables.</td>
+</tr>
+<tr class="row-odd"><td>IndexInfoCount</td>
+<td>Histogram</td>
+<td>Histogram of the number of on-heap index entries managed across all SSTables.</td>
+</tr>
+<tr class="row-even"><td>IndexInfoGets</td>
+<td>Histogram</td>
+<td>Histogram of the number index seeks performed per SSTable.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="bufferpool-metrics">
+<h2>BufferPool Metrics<a class="headerlink" href="#bufferpool-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specific to the internal recycled buffer pool Cassandra manages.  This pool is meant to keep allocations and GC
+lower by recycling on and off heap buffers.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.BufferPool.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=BufferPool</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="22%" />
+<col width="11%" />
+<col width="67%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Size</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Size, in bytes, of the managed buffer pool</td>
+</tr>
+<tr class="row-odd"><td>Misses</td>
+<td>Meter</td>
+<td>The rate of misses in the pool. The higher this is the more allocations incurred.</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="client-metrics">
+<h2>Client Metrics<a class="headerlink" href="#client-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specifc to client managment.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Client.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Client</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="13%" />
+<col width="14%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>ConnectedNativeClients</td>
+<td>Gauge&lt;Integer&gt;</td>
+<td>Number of clients connected to this nodes native protocol server</td>
+</tr>
+<tr class="row-odd"><td>Connections</td>
+<td>Gauge&lt;List&lt;Map&lt;String, String&gt;&gt;</td>
+<td>List of all connections and their state information</td>
+</tr>
+<tr class="row-even"><td>ConnectedNativeClientsByUser</td>
+<td>Gauge&lt;Map&lt;String, Int&gt;</td>
+<td>Number of connnective native clients by username</td>
+</tr>
+<tr class="row-odd"><td>ClientsByProtocolVersion</td>
+<td>Gauge&lt;List&lt;Map&lt;String, String&gt;&gt;&gt;</td>
+<td>List of up to last 100 connections including protocol version. Can be reset with clearConnectionHistory operation in org.apache.cassandra.db:StorageService mbean.</td>
+</tr>
+<tr class="row-even"><td>RequestsSize</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>How many concurrent bytes used in currently processing requests</td>
+</tr>
+<tr class="row-odd"><td>RequestsSizeByIpDistribution</td>
+<td>Histogram</td>
+<td>How many concurrent bytes used in currently processing requests by different ips</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="batch-metrics">
+<h2>Batch Metrics<a class="headerlink" href="#batch-metrics" title="Permalink to this headline">¶</a></h2>
+<p>Metrics specifc to batch statements.</p>
+<p>Reported name format:</p>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics.Batch.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.metrics:type=Batch</span> <span class="pre">name=&lt;MetricName&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="25%" />
+<col width="13%" />
+<col width="63%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>PartitionsPerCounterBatch</td>
+<td>Histogram</td>
+<td>Distribution of the number of partitions processed per counter batch</td>
+</tr>
+<tr class="row-odd"><td>PartitionsPerLoggedBatch</td>
+<td>Histogram</td>
+<td>Distribution of the number of partitions processed per logged batch</td>
+</tr>
+<tr class="row-even"><td>PartitionsPerUnloggedBatch</td>
+<td>Histogram</td>
+<td>Distribution of the number of partitions processed per unlogged batch</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="jvm-metrics">
+<h2>JVM Metrics<a class="headerlink" href="#jvm-metrics" title="Permalink to this headline">¶</a></h2>
+<p>JVM metrics such as memory and garbage collection statistics can either be accessed by connecting to the JVM using JMX or can be exported using <a class="reference internal" href="#metric-reporters">Metric Reporters</a>.</p>
+<div class="section" id="bufferpool">
+<h3>BufferPool<a class="headerlink" href="#bufferpool" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">jvm.buffers.&lt;direct|mapped&gt;.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">java.nio:type=BufferPool</span> <span class="pre">name=&lt;direct|mapped&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="22%" />
+<col width="12%" />
+<col width="66%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Capacity</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Estimated total capacity of the buffers in this pool</td>
+</tr>
+<tr class="row-odd"><td>Count</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Estimated number of buffers in the pool</td>
+</tr>
+<tr class="row-even"><td>Used</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Estimated memory that the Java virtual machine is using for this buffer pool</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="filedescriptorratio">
+<h3>FileDescriptorRatio<a class="headerlink" href="#filedescriptorratio" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">jvm.fd.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">java.lang:type=OperatingSystem</span> <span class="pre">name=&lt;OpenFileDescriptorCount|MaxFileDescriptorCount&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="33%" />
+<col width="18%" />
+<col width="49%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Usage</td>
+<td>Ratio</td>
+<td>Ratio of used to total file descriptors</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="garbagecollector">
+<h3>GarbageCollector<a class="headerlink" href="#garbagecollector" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">jvm.gc.&lt;gc_type&gt;.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">java.lang:type=GarbageCollector</span> <span class="pre">name=&lt;gc_type&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="25%" />
+<col width="14%" />
+<col width="61%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name</th>
+<th class="head">Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Count</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Total number of collections that have occurred</td>
+</tr>
+<tr class="row-odd"><td>Time</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Approximate accumulated collection elapsed time in milliseconds</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="memory">
+<h3>Memory<a class="headerlink" href="#memory" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">jvm.memory.&lt;heap/non-heap/total&gt;.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">java.lang:type=Memory</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="13%" />
+<col width="64%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Committed</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of memory in bytes that is committed for the JVM to use</td>
+</tr>
+<tr class="row-even"><td>Init</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of memory in bytes that the JVM initially requests from the OS</td>
+</tr>
+<tr class="row-odd"><td>Max</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Maximum amount of memory in bytes that can be used for memory management</td>
+</tr>
+<tr class="row-even"><td>Usage</td>
+<td>Ratio</td>
+<td>Ratio of used to maximum memory</td>
+</tr>
+<tr class="row-odd"><td>Used</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of used memory in bytes</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="memorypool">
+<h3>MemoryPool<a class="headerlink" href="#memorypool" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><strong>Metric Name</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">jvm.memory.pools.&lt;memory_pool&gt;.&lt;MetricName&gt;</span></code></dd>
+<dt><strong>JMX MBean</strong></dt>
+<dd><code class="docutils literal notranslate"><span class="pre">java.lang:type=MemoryPool</span> <span class="pre">name=&lt;memory_pool&gt;</span></code></dd>
+</dl>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="13%" />
+<col width="64%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Committed</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of memory in bytes that is committed for the JVM to use</td>
+</tr>
+<tr class="row-even"><td>Init</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of memory in bytes that the JVM initially requests from the OS</td>
+</tr>
+<tr class="row-odd"><td>Max</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Maximum amount of memory in bytes that can be used for memory management</td>
+</tr>
+<tr class="row-even"><td>Usage</td>
+<td>Ratio</td>
+<td>Ratio of used to maximum memory</td>
+</tr>
+<tr class="row-odd"><td>Used</td>
+<td>Gauge&lt;Long&gt;</td>
+<td>Amount of used memory in bytes</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="section" id="jmx">
+<h2>JMX<a class="headerlink" href="#jmx" title="Permalink to this headline">¶</a></h2>
+<p>Any JMX based client can access metrics from cassandra.</p>
+<p>If you wish to access JMX metrics over http it’s possible to download <a class="reference external" href="http://mx4j.sourceforge.net/">Mx4jTool</a> and
+place <code class="docutils literal notranslate"><span class="pre">mx4j-tools.jar</span></code> into the classpath.  On startup you will see in the log:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>HttpAdaptor version 3.0.2 started on port 8081
+</pre></div>
+</div>
+<p>To choose a different port (8081 is the default) or a different listen address (0.0.0.0 is not the default) edit
+<code class="docutils literal notranslate"><span class="pre">conf/cassandra-env.sh</span></code> and uncomment:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>#MX4J_ADDRESS=&quot;-Dmx4jaddress=0.0.0.0&quot;
+
+#MX4J_PORT=&quot;-Dmx4jport=8081&quot;
+</pre></div>
+</div>
+</div>
+<div class="section" id="metric-reporters">
+<h2>Metric Reporters<a class="headerlink" href="#metric-reporters" title="Permalink to this headline">¶</a></h2>
+<p>As mentioned at the top of this section on monitoring the Cassandra metrics can be exported to a number of monitoring
+system a number of <a class="reference external" href="http://metrics.dropwizard.io/3.1.0/getting-started/#other-reporting">built in</a> and <a class="reference external" href="http://metrics.dropwizard.io/3.1.0/manual/third-party/">third party</a> reporter plugins.</p>
+<p>The configuration of these plugins is managed by the <a class="reference external" href="https://github.com/addthis/metrics-reporter-config">metrics reporter config project</a>. There is a sample configuration file located at
+<code class="docutils literal notranslate"><span class="pre">conf/metrics-reporter-config-sample.yaml</span></code>.</p>
+<p>Once configured, you simply start cassandra with the flag
+<code class="docutils literal notranslate"><span class="pre">-Dcassandra.metricsReporterConfigFile=metrics-reporter-config.yaml</span></code>. The specified .yaml file plus any 3rd party
+reporter jars must all be in Cassandra’s classpath.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="security.html" class="btn btn-default pull-right " role="button" title="Security" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="bulk_loading.html" class="btn btn-default" role="button" title="Bulk Loading" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/read_repair.html b/src/doc/4.0-rc1/operating/read_repair.html
new file mode 100644
index 0000000..79925b3
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/read_repair.html
@@ -0,0 +1,267 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Read repair"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Hints" href="hints.html"/>
+      <link rel="prev" title="Repair" href="repair.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Read repair</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#expectation-of-monotonic-quorum-reads">Expectation of Monotonic Quorum Reads</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#table-level-configuration-of-monotonic-reads">Table level configuration of monotonic reads</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#read-repair-example">Read Repair Example</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#read-consistency-level-and-read-repair">Read Consistency Level and Read Repair</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#improved-read-repair-blocking-behavior-in-cassandra-4-0">Improved Read Repair Blocking Behavior in Cassandra 4.0</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#diagnostic-events-for-read-repairs">Diagnostic Events for Read Repairs</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#background-read-repair">Background Read Repair</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="read-repair">
+<span id="id1"></span><h1>Read repair<a class="headerlink" href="#read-repair" title="Permalink to this headline">¶</a></h1>
+<p>Read Repair is the process of repairing data replicas during a read request. If all replicas involved in a read request at the given read consistency level are consistent the data is returned to the client and no read repair is needed. But if the replicas involved in a read request at the given consistency level are not consistent a read repair is performed to make replicas involved in the read request consistent. The most up-to-date data is returned to the client. The read repair runs in the foreground and is blocking in that a response is not returned to the client until the read repair has completed and up-to-date data is constructed.</p>
+<div class="section" id="expectation-of-monotonic-quorum-reads">
+<h2>Expectation of Monotonic Quorum Reads<a class="headerlink" href="#expectation-of-monotonic-quorum-reads" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra uses a blocking read repair to ensure the expectation of “monotonic quorum reads” i.e. that in 2 successive quorum reads, it’s guaranteed the 2nd one won’t get something older than the 1st one, and this even if a failed quorum write made a write of the most up to date value only to a minority of replicas. “Quorum” means majority of nodes among replicas.</p>
+</div>
+<div class="section" id="table-level-configuration-of-monotonic-reads">
+<h2>Table level configuration of monotonic reads<a class="headerlink" href="#table-level-configuration-of-monotonic-reads" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra 4.0 adds support for table level configuration of monotonic reads (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14635">CASSANDRA-14635</a>). The <code class="docutils literal notranslate"><span class="pre">read_repair</span></code> table option has been added to table schema, with the options <code class="docutils literal notranslate"><span class="pre">blocking</span></code> (default), and <code class="docutils literal notranslate"><span class="pre">none</span></code>.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">read_repair</span></code> option configures the read repair behavior to allow tuning for various performance and consistency behaviors. Two consistency properties are affected by read repair behavior.</p>
+<ul class="simple">
+<li>Monotonic Quorum Reads: Provided by <code class="docutils literal notranslate"><span class="pre">BLOCKING</span></code>. Monotonic quorum reads prevents reads from appearing to go back in time in some circumstances. When monotonic quorum reads are not provided and a write fails to reach a quorum of replicas, it may be visible in one read, and then disappear in a subsequent read.</li>
+<li>Write Atomicity: Provided by <code class="docutils literal notranslate"><span class="pre">NONE</span></code>. Write atomicity prevents reads from returning partially applied writes. Cassandra attempts to provide partition level write atomicity, but since only the data covered by a <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement is repaired by a read repair, read repair can break write atomicity when data is read at a more granular level than it is written. For example read repair can break write atomicity if you write multiple rows to a clustered partition in a batch, but then select a single row by specifying the clustering column in a <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> statement.</li>
+</ul>
+<p>The available read repair settings are:</p>
+<div class="section" id="blocking">
+<h3>Blocking<a class="headerlink" href="#blocking" title="Permalink to this headline">¶</a></h3>
+<p>The default setting. When <code class="docutils literal notranslate"><span class="pre">read_repair</span></code> is set to <code class="docutils literal notranslate"><span class="pre">BLOCKING</span></code>, and a read repair is started, the read will block on writes sent to other replicas until the CL is reached by the writes. Provides monotonic quorum reads, but not partition level write atomicity.</p>
+</div>
+<div class="section" id="none">
+<h3>None<a class="headerlink" href="#none" title="Permalink to this headline">¶</a></h3>
+<p>When <code class="docutils literal notranslate"><span class="pre">read_repair</span></code> is set to <code class="docutils literal notranslate"><span class="pre">NONE</span></code>, the coordinator will reconcile any differences between replicas, but will not attempt to repair them. Provides partition level write atomicity, but not monotonic quorum reads.</p>
+<p>An example of using the <code class="docutils literal notranslate"><span class="pre">NONE</span></code> setting for the <code class="docutils literal notranslate"><span class="pre">read_repair</span></code> option is as follows:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CREATE TABLE ks.tbl (k INT, c INT, v INT, PRIMARY KEY (k,c)) with read_repair=&#39;NONE&#39;&quot;);
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="read-repair-example">
+<h2>Read Repair Example<a class="headerlink" href="#read-repair-example" title="Permalink to this headline">¶</a></h2>
+<p>To illustrate read repair with an example, consider that a client sends a read request with read consistency level <code class="docutils literal notranslate"><span class="pre">TWO</span></code> to a 5-node cluster as illustrated in Figure 1. Read consistency level determines how many replica nodes must return a response before the read request is considered successful.</p>
+<div class="figure">
+<img alt="../_images/Figure_1_read_repair.jpg" src="../_images/Figure_1_read_repair.jpg" />
+</div>
+<p>Figure 1. Client sends read request to a 5-node Cluster</p>
+<p>Three nodes host replicas for the requested data as illustrated in Figure 2. With a read consistency level of <code class="docutils literal notranslate"><span class="pre">TWO</span></code> two replica nodes must return a response for the read request to be considered successful. If the node the client sends request to hosts a replica of the data requested only one other replica node needs to be sent a read request to. But if the receiving node does not host a replica for the requested data the node becomes a coordinator node and forwards the read request to a node that hosts a replica. A direct read request is forwarded to the fastest node (as determined by dynamic snitch) as shown in Figure 2. A direct read request is a full read and returns the requested data.</p>
+<div class="figure">
+<img alt="../_images/Figure_2_read_repair.jpg" src="../_images/Figure_2_read_repair.jpg" />
+</div>
+<p>Figure 2. Direct Read Request sent to Fastest Replica Node</p>
+<p>Next, the coordinator node sends the requisite number of additional requests to satisfy the consistency level, which is <code class="docutils literal notranslate"><span class="pre">TWO</span></code>. The coordinator node needs to send one more read request for a total of two. All read requests additional to the first direct read request are digest read requests. A digest read request is not a full read and only returns the hash value of the data. Only a hash value is returned to reduce the network data traffic. In the example being discussed the coordinator node sends one digest read request to a node hosting a replica as illustrated in Figure 3.</p>
+<div class="figure">
+<img alt="../_images/Figure_3_read_repair.jpg" src="../_images/Figure_3_read_repair.jpg" />
+</div>
+<p>Figure 3. Coordinator Sends a Digest Read Request</p>
+<p>The coordinator node has received a full copy of data from one node and a hash value for the data from another node. To compare the data returned a hash value is calculated for the  full copy of data. The two hash values are compared. If the hash values are the same no read repair is needed and the full copy of requested data is returned to the client. The coordinator node only performed a total of two replica read request because the read consistency level is <code class="docutils literal notranslate"><span class="pre">TWO</span></code> in the example. If the consistency level were higher such as <code class="docutils literal notranslate"><span class="pre">THREE</span></code>, three replica nodes would need to respond to a read request and only if all digest or hash values were to match with the hash value of the full copy of data would the read request be considered successful and the data returned to the client.</p>
+<p>But, if the hash value/s from the digest read request/s are not the same as the hash value of the data from the full read request of the first replica node it implies that an inconsistency in the replicas exists. To fix the inconsistency a read repair is performed.</p>
+<p>For example, consider that that digest request returns a hash value that is not the same as the hash value of the data from the direct full read request. We would need to make the replicas consistent for which the coordinator node sends a direct (full) read request to the replica node that it sent a digest read request to earlier as illustrated in Figure 4.</p>
+<div class="figure">
+<img alt="../_images/Figure_4_read_repair.jpg" src="../_images/Figure_4_read_repair.jpg" />
+</div>
+<p>Figure 4. Coordinator sends  Direct Read Request to Replica Node it had sent Digest Read Request to</p>
+<p>After receiving the data from the second replica node the coordinator has data from two of the replica nodes. It only needs two replicas as the read consistency level is <code class="docutils literal notranslate"><span class="pre">TWO</span></code> in the example. Data from the two replicas is compared and based on the timestamps the most recent replica is selected. Data may need to be merged to construct an up-to-date copy of data if one replica has data for only some of the columns. In the example, if the data from the first direct read request is found to be outdated and the data from the second full read request to be the latest read, repair needs to be performed on Replica 2. If a new up-to-date data is constructed by merging the two replicas a read repair would be needed on both the replicas involved. For example, a read repair is performed on Replica 2 as illustrated in Figure 5.</p>
+<div class="figure">
+<img alt="../_images/Figure_5_read_repair.jpg" src="../_images/Figure_5_read_repair.jpg" />
+</div>
+<p>Figure 5. Coordinator performs Read Repair</p>
+<p>The most up-to-date data is returned to the client as illustrated in Figure 6. From the three replicas Replica 1 is not even read and thus not repaired. Replica 2 is repaired. Replica 3 is the most up-to-date and returned to client.</p>
+<div class="figure">
+<img alt="../_images/Figure_6_read_repair.jpg" src="../_images/Figure_6_read_repair.jpg" />
+</div>
+<p>Figure 6. Most up-to-date Data returned to Client</p>
+</div>
+<div class="section" id="read-consistency-level-and-read-repair">
+<h2>Read Consistency Level and Read Repair<a class="headerlink" href="#read-consistency-level-and-read-repair" title="Permalink to this headline">¶</a></h2>
+<p>The read consistency is most significant in determining if a read repair needs to be performed. As discussed in Table 1 a read repair is not needed for all of the consistency levels.</p>
+<p>Table 1. Read Repair based on Read Consistency Level</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="34%" />
+<col width="66%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Read Consistency Level</td>
+<td>Description</td>
+</tr>
+<tr class="row-even"><td>ONE</td>
+<td>Read repair is not performed as the
+data from the first direct read request
+satisfies the consistency level ONE.
+No digest read requests are involved
+for finding mismatches in data.</td>
+</tr>
+<tr class="row-odd"><td>TWO</td>
+<td>Read repair is performed if inconsistencies
+in data are found as determined by the
+direct and digest read requests.</td>
+</tr>
+<tr class="row-even"><td>THREE</td>
+<td>Read repair is performed if inconsistencies
+in data are found as determined by the
+direct and digest read requests.</td>
+</tr>
+<tr class="row-odd"><td>LOCAL_ONE</td>
+<td>Read repair is not performed as the data
+from the direct read request from the
+closest replica satisfies the consistency
+level LOCAL_ONE.No digest read requests are
+involved for finding mismatches in data.</td>
+</tr>
+<tr class="row-even"><td>LOCAL_QUORUM</td>
+<td>Read repair is performed if inconsistencies
+in data are found as determined by the
+direct and digest read requests.</td>
+</tr>
+<tr class="row-odd"><td>QUORUM</td>
+<td>Read repair is performed if inconsistencies
+in data are found as determined by the
+direct and digest read requests.</td>
+</tr>
+</tbody>
+</table>
+<p>If read repair is performed it is made only on the replicas that are not up-to-date and that are involved in the read request. The number of replicas involved in a read request would be based on the read consistency level; in the example it is two.</p>
+</div>
+<div class="section" id="improved-read-repair-blocking-behavior-in-cassandra-4-0">
+<h2>Improved Read Repair Blocking Behavior in Cassandra 4.0<a class="headerlink" href="#improved-read-repair-blocking-behavior-in-cassandra-4-0" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra 4.0 makes two improvements to read repair blocking behavior (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-10726">CASSANDRA-10726</a>).</p>
+<ol class="arabic simple">
+<li>Speculative Retry of Full Data Read Requests. Cassandra 4.0 makes use of speculative retry in sending read requests (full, not digest) to replicas if a full data response is not received, whether in the initial full read request or a full data read request during read repair.  With speculative retry if it looks like a response may not be received from the initial set of replicas Cassandra sent messages to, to satisfy the consistency level, it speculatively sends additional read request to un-contacted replica/s. Cassandra 4.0 will also speculatively send a repair mutation to a minority of nodes not involved in the read repair data read / write cycle with the combined contents of all un-acknowledged mutations if it looks like one may not respond. Cassandra accepts acks from them in lieu of acks from the initial mutations sent out, so long as it receives the same number of acks as repair mutations transmitted.</li>
+<li>Only blocks on Full Data Responses to satisfy the Consistency Level. Cassandra 4.0 only blocks for what is needed for resolving the digest mismatch and wait for enough full data responses to meet the consistency level, no matter whether it’s speculative retry or read repair chance. As an example, if it looks like Cassandra might not receive full data requests from everyone in time, it sends additional requests to additional replicas not contacted in the initial full data read. If the collection of nodes that end up responding in time end up agreeing on the data, the response from the disagreeing replica that started the read repair is not considered, and won’t be included in the response to the client, preserving the expectation of monotonic quorum reads.</li>
+</ol>
+</div>
+<div class="section" id="diagnostic-events-for-read-repairs">
+<h2>Diagnostic Events for Read Repairs<a class="headerlink" href="#diagnostic-events-for-read-repairs" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra 4.0 adds diagnostic events for read repair (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14668">CASSANDRA-14668</a>) that can be used for exposing information such as:</p>
+<ul class="simple">
+<li>Contacted endpoints</li>
+<li>Digest responses by endpoint</li>
+<li>Affected partition keys</li>
+<li>Speculated reads / writes</li>
+<li>Update oversized</li>
+</ul>
+</div>
+<div class="section" id="background-read-repair">
+<h2>Background Read Repair<a class="headerlink" href="#background-read-repair" title="Permalink to this headline">¶</a></h2>
+<p>Background read repair, which was configured using <code class="docutils literal notranslate"><span class="pre">read_repair_chance</span></code> and <code class="docutils literal notranslate"><span class="pre">dclocal_read_repair_chance</span></code> settings in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> is  removed Cassandra 4.0 (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-13910">CASSANDRA-13910</a>).</p>
+<p>Read repair is not an alternative for other kind of repairs such as full repairs or replacing a node that keeps failing. The data returned even after a read repair has been performed may not be the most up-to-date data if consistency level is other than one requiring response from all replicas.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="hints.html" class="btn btn-default pull-right " role="button" title="Hints" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="repair.html" class="btn btn-default" role="button" title="Repair" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/repair.html b/src/doc/4.0-rc1/operating/repair.html
new file mode 100644
index 0000000..c076e22
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/repair.html
@@ -0,0 +1,278 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Repair"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Read repair" href="read_repair.html"/>
+      <link rel="prev" title="Adding, replacing, moving and removing nodes" href="topo_changes.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Repair</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#incremental-and-full-repairs">Incremental and Full Repairs</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#usage-and-best-practices">Usage and Best Practices</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#other-options">Other Options</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#full-repair-example">Full Repair Example</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="repair">
+<span id="id1"></span><h1>Repair<a class="headerlink" href="#repair" title="Permalink to this headline">¶</a></h1>
+<p>Cassandra is designed to remain available if one of it’s nodes is down or unreachable. However, when a node is down or
+unreachable, it needs to eventually discover the writes it missed. Hints attempt to inform a node of missed writes, but
+are a best effort, and aren’t guaranteed to inform a node of 100% of the writes it missed. These inconsistencies can
+eventually result in data loss as nodes are replaced or tombstones expire.</p>
+<p>These inconsistencies are fixed with the repair process. Repair synchronizes the data between nodes by comparing their
+respective datasets for their common token ranges, and streaming the differences for any out of sync sections between
+the nodes. It compares the data with merkle trees, which are a hierarchy of hashes.</p>
+<div class="section" id="incremental-and-full-repairs">
+<h2>Incremental and Full Repairs<a class="headerlink" href="#incremental-and-full-repairs" title="Permalink to this headline">¶</a></h2>
+<p>There are 2 types of repairs: full repairs, and incremental repairs. Full repairs operate over all of the data in the
+token range being repaired. Incremental repairs only repair data that’s been written since the previous incremental repair.</p>
+<p>Incremental repairs are the default repair type, and if run regularly, can significantly reduce the time and io cost of
+performing a repair. However, it’s important to understand that once an incremental repair marks data as repaired, it won’t
+try to repair it again. This is fine for syncing up missed writes, but it doesn’t protect against things like disk corruption,
+data loss by operator error, or bugs in Cassandra. For this reason, full repairs should still be run occasionally.</p>
+</div>
+<div class="section" id="usage-and-best-practices">
+<h2>Usage and Best Practices<a class="headerlink" href="#usage-and-best-practices" title="Permalink to this headline">¶</a></h2>
+<p>Since repair can result in a lot of disk and network io, it’s not run automatically by Cassandra. It is run by the operator
+via nodetool.</p>
+<p>Incremental repair is the default and is run with the following command:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool repair
+</pre></div>
+</div>
+<p>A full repair can be run with the following command:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool repair --full
+</pre></div>
+</div>
+<p>Additionally, repair can be run on a single keyspace:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool repair [options] &lt;keyspace_name&gt;
+</pre></div>
+</div>
+<p>Or even on specific tables:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool repair [options] &lt;keyspace_name&gt; &lt;table1&gt; &lt;table2&gt;
+</pre></div>
+</div>
+<p>The repair command only repairs token ranges on the node being repaired, it doesn’t repair the whole cluster. By default, repair
+will operate on all token ranges replicated by the node you’re running repair on, which will cause duplicate work if you run it
+on every node. The <code class="docutils literal notranslate"><span class="pre">-pr</span></code> flag will only repair the “primary” ranges on a node, so you can repair your entire cluster by running
+<code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">repair</span> <span class="pre">-pr</span></code> on each node in a single datacenter.</p>
+<p>The specific frequency of repair that’s right for your cluster, of course, depends on several factors. However, if you’re
+just starting out and looking for somewhere to start, running an incremental repair every 1-3 days, and a full repair every
+1-3 weeks is probably reasonable. If you don’t want to run incremental repairs, a full repair every 5 days is a good place
+to start.</p>
+<p>At a minimum, repair should be run often enough that the gc grace period never expires on unrepaired data. Otherwise, deleted
+data could reappear. With a default gc grace period of 10 days, repairing every node in your cluster at least once every 7 days
+will prevent this, while providing enough slack to allow for delays.</p>
+</div>
+<div class="section" id="other-options">
+<h2>Other Options<a class="headerlink" href="#other-options" title="Permalink to this headline">¶</a></h2>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">-pr,</span> <span class="pre">--partitioner-range</span></code></dt>
+<dd>Restricts repair to the ‘primary’ token ranges of the node being repaired. A primary range is just a token range for
+which a node is the first replica in the ring.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-prv,</span> <span class="pre">--preview</span></code></dt>
+<dd>Estimates the amount of streaming that would occur for the given repair command. This builds the merkle trees, and prints
+the expected streaming activity, but does not actually do any streaming. By default, incremental repairs are estimated,
+add the <code class="docutils literal notranslate"><span class="pre">--full</span></code> flag to estimate a full repair.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-vd,</span> <span class="pre">--validate</span></code></dt>
+<dd>Verifies that the repaired data is the same across all nodes. Similiar to <code class="docutils literal notranslate"><span class="pre">--preview</span></code>, this builds and compares merkle
+trees of repaired data, but doesn’t do any streaming. This is useful for troubleshooting. If this shows that the repaired
+data is out of sync, a full repair should be run.</dd>
+</dl>
+<div class="admonition seealso">
+<p class="first admonition-title">See also</p>
+<p class="last"><a class="reference internal" href="../tools/nodetool/repair.html#nodetool-repair"><span class="std std-ref">nodetool repair docs</span></a></p>
+</div>
+</div>
+<div class="section" id="full-repair-example">
+<h2>Full Repair Example<a class="headerlink" href="#full-repair-example" title="Permalink to this headline">¶</a></h2>
+<p>Full repair is typically needed to redistribute data after increasing the replication factor of a keyspace or after adding a node to the cluster. Full repair involves streaming SSTables. To demonstrate full repair start with a three node cluster.</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool status
+Datacenter: us-east-1
+=====================
+Status=Up/Down
+|/ State=Normal/Leaving/Joining/Moving
+--  Address   Load        Tokens  Owns  Host ID                              Rack
+UN  10.0.1.115  547 KiB     256    ?  b64cb32a-b32a-46b4-9eeb-e123fa8fc287  us-east-1b
+UN  10.0.3.206  617.91 KiB  256    ?  74863177-684b-45f4-99f7-d1006625dc9e  us-east-1d
+UN  10.0.2.238  670.26 KiB  256    ?  4dcdadd2-41f9-4f34-9892-1f20868b27c7  us-east-1c
+</pre></div>
+</div>
+<p>Create a keyspace with replication factor 3:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; DROP KEYSPACE cqlkeyspace;
+cqlsh&gt; CREATE KEYSPACE CQLKeyspace
+  ... WITH replication = {&#39;class&#39;: &#39;SimpleStrategy&#39;, &#39;replication_factor&#39; : 3};
+</pre></div>
+</div>
+<p>Add a table to the keyspace:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; use cqlkeyspace;
+cqlsh:cqlkeyspace&gt; CREATE TABLE t (
+           ...   id int,
+           ...   k int,
+           ...   v text,
+           ...   PRIMARY KEY (id)
+           ... );
+</pre></div>
+</div>
+<p>Add table data:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; INSERT INTO t (id, k, v) VALUES (0, 0, &#39;val0&#39;);
+cqlsh:cqlkeyspace&gt; INSERT INTO t (id, k, v) VALUES (1, 1, &#39;val1&#39;);
+cqlsh:cqlkeyspace&gt; INSERT INTO t (id, k, v) VALUES (2, 2, &#39;val2&#39;);
+</pre></div>
+</div>
+<p>A query lists the data added:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; SELECT * FROM t;
+
+id | k | v
+----+---+------
+ 1 | 1 | val1
+ 0 | 0 | val0
+ 2 | 2 | val2
+(3 rows)
+</pre></div>
+</div>
+<p>Make the following changes to a three node cluster:</p>
+<ol class="arabic simple">
+<li>Increase the replication factor from 3 to 4.</li>
+<li>Add a 4th node to the cluster</li>
+</ol>
+<p>When the replication factor is increased the following message gets output indicating that a full repair is needed as per (<a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-13079">CASSANDRA-13079</a>):</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh:cqlkeyspace&gt; ALTER KEYSPACE CQLKeyspace
+           ... WITH replication = {&#39;class&#39;: &#39;SimpleStrategy&#39;, &#39;replication_factor&#39; : 4};
+Warnings :
+When increasing replication factor you need to run a full (-full) repair to distribute the
+data.
+</pre></div>
+</div>
+<p>Perform a full repair on the keyspace <code class="docutils literal notranslate"><span class="pre">cqlkeyspace</span></code> table <code class="docutils literal notranslate"><span class="pre">t</span></code> with following command:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nodetool repair -full cqlkeyspace t
+</pre></div>
+</div>
+<p>Full repair completes in about a second as indicated by the output:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool repair -full cqlkeyspace t
+[2019-08-17 03:06:21,445] Starting repair command #1 (fd576da0-c09b-11e9-b00c-1520e8c38f00), repairing keyspace cqlkeyspace with repair options (parallelism: parallel, primary range: false, incremental: false, job threads: 1, ColumnFamilies: [t], dataCenters: [], hosts: [], previewKind: NONE, # of ranges: 1024, pull repair: false, force repair: false, optimise streams: false)
+[2019-08-17 03:06:23,059] Repair session fd8e5c20-c09b-11e9-b00c-1520e8c38f00 for range [(-8792657144775336505,-8786320730900698730], (-5454146041421260303,-5439402053041523135], (4288357893651763201,4324309707046452322], ... , (4350676211955643098,4351706629422088296]] finished (progress: 0%)
+[2019-08-17 03:06:23,077] Repair completed successfully
+[2019-08-17 03:06:23,077] Repair command #1 finished in 1 second
+[ec2-user@ip-10-0-2-238 ~]$
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">nodetool</span>&#160; <span class="pre">tpstats</span></code> command should list a repair having been completed as <code class="docutils literal notranslate"><span class="pre">Repair-Task</span></code> &gt; <code class="docutils literal notranslate"><span class="pre">Completed</span></code> column value of 1:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[ec2-user@ip-10-0-2-238 ~]$ nodetool tpstats
+Pool Name Active   Pending Completed   Blocked  All time blocked
+ReadStage  0           0           99       0              0
+…
+Repair-Task 0       0           1        0              0
+RequestResponseStage                  0        0        2078        0               0
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="read_repair.html" class="btn btn-default pull-right " role="button" title="Read repair" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="topo_changes.html" class="btn btn-default" role="button" title="Adding, replacing, moving and removing nodes" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/security.html b/src/doc/4.0-rc1/operating/security.html
new file mode 100644
index 0000000..9d3d4db
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/security.html
@@ -0,0 +1,474 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Security"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Hardware Choices" href="hardware.html"/>
+      <link rel="prev" title="Monitoring" href="metrics.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Security</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#tls-ssl-encryption">TLS/SSL Encryption</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#ssl-certificate-hot-reloading">SSL Certificate Hot Reloading</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#roles">Roles</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#authentication">Authentication</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#authorization">Authorization</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#caching">Caching</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#jmx-access">JMX access</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="security">
+<h1>Security<a class="headerlink" href="#security" title="Permalink to this headline">¶</a></h1>
+<p>There are three main components to the security features provided by Cassandra:</p>
+<ul class="simple">
+<li>TLS/SSL encryption for client and inter-node communication</li>
+<li>Client authentication</li>
+<li>Authorization</li>
+</ul>
+<p>By default, these features are disabled as Cassandra is configured to easily find and be found by other members of a
+cluster. In other words, an out-of-the-box Cassandra installation presents a large attack surface for a bad actor.
+Enabling authentication for clients using the binary protocol is not sufficient to protect a cluster. Malicious users
+able to access internode communication and JMX ports can still:</p>
+<ul class="simple">
+<li>Craft internode messages to insert users into authentication schema</li>
+<li>Craft internode messages to truncate or drop schema</li>
+<li>Use tools such as <code class="docutils literal notranslate"><span class="pre">sstableloader</span></code> to overwrite <code class="docutils literal notranslate"><span class="pre">system_auth</span></code> tables</li>
+<li>Attach to the cluster directly to capture write traffic</li>
+</ul>
+<p>Correct configuration of all three security components should negate theses vectors. Therefore, understanding Cassandra’s
+security features is crucial to configuring your cluster to meet your security needs.</p>
+<div class="section" id="tls-ssl-encryption">
+<h2>TLS/SSL Encryption<a class="headerlink" href="#tls-ssl-encryption" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra provides secure communication between a client machine and a database cluster and between nodes within a
+cluster. Enabling encryption ensures that data in flight is not compromised and is transferred securely. The options for
+client-to-node and node-to-node encryption are managed separately and may be configured independently.</p>
+<p>In both cases, the JVM defaults for supported protocols and cipher suites are used when encryption is enabled. These can
+be overidden using the settings in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>, but this is not recommended unless there are policies in place
+which dictate certain settings or a need to disable vulnerable ciphers or protocols in cases where the JVM cannot be
+updated.</p>
+<p>FIPS compliant settings can be configured at the JVM level and should not involve changing encryption settings in
+cassandra.yaml. See <a class="reference external" href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html">the java document on FIPS</a>
+for more details.</p>
+<p>For information on generating the keystore and truststore files used in SSL communications, see the
+<a class="reference external" href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore">java documentation on creating keystores</a></p>
+</div>
+<div class="section" id="ssl-certificate-hot-reloading">
+<h2>SSL Certificate Hot Reloading<a class="headerlink" href="#ssl-certificate-hot-reloading" title="Permalink to this headline">¶</a></h2>
+<p>Beginning with Cassandra 4, Cassandra supports hot reloading of SSL Certificates. If SSL/TLS support is enabled in Cassandra,
+the node periodically polls the Trust and Key Stores specified in cassandra.yaml. When the files are updated, Cassandra will
+reload them and use them for subsequent connections. Please note that the Trust &amp; Key Store passwords are part of the yaml so
+the updated files should also use the same passwords. The default polling interval is 10 minutes.</p>
+<p>Certificate Hot reloading may also be triggered using the <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">reloadssl</span></code> command. Use this if you want to Cassandra to
+immediately notice the changed certificates.</p>
+<div class="section" id="inter-node-encryption">
+<h3>Inter-node Encryption<a class="headerlink" href="#inter-node-encryption" title="Permalink to this headline">¶</a></h3>
+<p>The settings for managing inter-node encryption are found in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> in the <code class="docutils literal notranslate"><span class="pre">server_encryption_options</span></code>
+section. To enable inter-node encryption, change the <code class="docutils literal notranslate"><span class="pre">internode_encryption</span></code> setting from its default value of <code class="docutils literal notranslate"><span class="pre">none</span></code>
+to one value from: <code class="docutils literal notranslate"><span class="pre">rack</span></code>, <code class="docutils literal notranslate"><span class="pre">dc</span></code> or <code class="docutils literal notranslate"><span class="pre">all</span></code>.</p>
+</div>
+<div class="section" id="client-to-node-encryption">
+<h3>Client to Node Encryption<a class="headerlink" href="#client-to-node-encryption" title="Permalink to this headline">¶</a></h3>
+<p>The settings for managing client to node encryption are found in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> in the <code class="docutils literal notranslate"><span class="pre">client_encryption_options</span></code>
+section. There are two primary toggles here for enabling encryption, <code class="docutils literal notranslate"><span class="pre">enabled</span></code> and <code class="docutils literal notranslate"><span class="pre">optional</span></code>.</p>
+<ul class="simple">
+<li>If neither is set to <code class="docutils literal notranslate"><span class="pre">true</span></code>, client connections are entirely unencrypted.</li>
+<li>If <code class="docutils literal notranslate"><span class="pre">enabled</span></code> is set to <code class="docutils literal notranslate"><span class="pre">true</span></code> and <code class="docutils literal notranslate"><span class="pre">optional</span></code> is set to <code class="docutils literal notranslate"><span class="pre">false</span></code>, all client connections must be secured.</li>
+<li>If both options are set to <code class="docutils literal notranslate"><span class="pre">true</span></code>, both encrypted and unencrypted connections are supported using the same port.
+Client connections using encryption with this configuration will be automatically detected and handled by the server.</li>
+</ul>
+<p>As an alternative to the <code class="docutils literal notranslate"><span class="pre">optional</span></code> setting, separate ports can also be configured for secure and unsecure connections
+where operational requirements demand it. To do so, set <code class="docutils literal notranslate"><span class="pre">optional</span></code> to false and use the <code class="docutils literal notranslate"><span class="pre">native_transport_port_ssl</span></code>
+setting in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> to specify the port to be used for secure client communication.</p>
+</div>
+</div>
+<div class="section" id="roles">
+<span id="operation-roles"></span><h2>Roles<a class="headerlink" href="#roles" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra uses database roles, which may represent either a single user or a group of users, in both authentication and
+permissions management. Role management is an extension point in Cassandra and may be configured using the
+<code class="docutils literal notranslate"><span class="pre">role_manager</span></code> setting in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>. The default setting uses <code class="docutils literal notranslate"><span class="pre">CassandraRoleManager</span></code>, an implementation
+which stores role information in the tables of the <code class="docutils literal notranslate"><span class="pre">system_auth</span></code> keyspace.</p>
+<p>See also the <a class="reference internal" href="../cql/security.html#cql-roles"><span class="std std-ref">CQL documentation on roles</span></a>.</p>
+</div>
+<div class="section" id="authentication">
+<h2>Authentication<a class="headerlink" href="#authentication" title="Permalink to this headline">¶</a></h2>
+<p>Authentication is pluggable in Cassandra and is configured using the <code class="docutils literal notranslate"><span class="pre">authenticator</span></code> setting in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>.
+Cassandra ships with two options included in the default distribution.</p>
+<p>By default, Cassandra is configured with <code class="docutils literal notranslate"><span class="pre">AllowAllAuthenticator</span></code> which performs no authentication checks and therefore
+requires no credentials. It is used to disable authentication completely. Note that authentication is a necessary
+condition of Cassandra’s permissions subsystem, so if authentication is disabled, effectively so are permissions.</p>
+<p>The default distribution also includes <code class="docutils literal notranslate"><span class="pre">PasswordAuthenticator</span></code>, which stores encrypted credentials in a system table.
+This can be used to enable simple username/password authentication.</p>
+<div class="section" id="enabling-password-authentication">
+<span id="password-authentication"></span><h3>Enabling Password Authentication<a class="headerlink" href="#enabling-password-authentication" title="Permalink to this headline">¶</a></h3>
+<p>Before enabling client authentication on the cluster, client applications should be pre-configured with their intended
+credentials. When a connection is initiated, the server will only ask for credentials once authentication is
+enabled, so setting up the client side config in advance is safe. In contrast, as soon as a server has authentication
+enabled, any connection attempt without proper credentials will be rejected which may cause availability problems for
+client applications. Once clients are setup and ready for authentication to be enabled, follow this procedure to enable
+it on the cluster.</p>
+<p>Pick a single node in the cluster on which to perform the initial configuration. Ideally, no clients should connect
+to this node during the setup process, so you may want to remove it from client config, block it at the network level
+or possibly add a new temporary node to the cluster for this purpose. On that node, perform the following steps:</p>
+<ol class="arabic simple">
+<li>Open a <code class="docutils literal notranslate"><span class="pre">cqlsh</span></code> session and change the replication factor of the <code class="docutils literal notranslate"><span class="pre">system_auth</span></code> keyspace. By default, this keyspace
+uses <code class="docutils literal notranslate"><span class="pre">SimpleReplicationStrategy</span></code> and a <code class="docutils literal notranslate"><span class="pre">replication_factor</span></code> of 1. It is recommended to change this for any
+non-trivial deployment to ensure that should nodes become unavailable, login is still possible. Best practice is to
+configure a replication factor of 3 to 5 per-DC.</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ALTER KEYSPACE system_auth WITH replication = {&#39;class&#39;: &#39;NetworkTopologyStrategy&#39;, &#39;DC1&#39;: 3, &#39;DC2&#39;: 3};
+</pre></div>
+</div>
+<ol class="arabic simple" start="2">
+<li>Edit <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> to change the <code class="docutils literal notranslate"><span class="pre">authenticator</span></code> option like so:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>authenticator: PasswordAuthenticator
+</pre></div>
+</div>
+<ol class="arabic simple" start="3">
+<li>Restart the node.</li>
+<li>Open a new <code class="docutils literal notranslate"><span class="pre">cqlsh</span></code> session using the credentials of the default superuser:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh -u cassandra -p cassandra
+</pre></div>
+</div>
+<ol class="arabic simple" start="5">
+<li>During login, the credentials for the default superuser are read with a consistency level of <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code>, whereas
+those for all other users (including superusers) are read at <code class="docutils literal notranslate"><span class="pre">LOCAL_ONE</span></code>. In the interests of performance and
+availability, as well as security, operators should create another superuser and disable the default one. This step
+is optional, but highly recommended. While logged in as the default superuser, create another superuser role which
+can be used to bootstrap further configuration.</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span># create a new superuser
+CREATE ROLE dba WITH SUPERUSER = true AND LOGIN = true AND PASSWORD = &#39;super&#39;;
+</pre></div>
+</div>
+<ol class="arabic simple" start="6">
+<li>Start a new cqlsh session, this time logging in as the new_superuser and disable the default superuser.</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ALTER ROLE cassandra WITH SUPERUSER = false AND LOGIN = false;
+</pre></div>
+</div>
+<ol class="arabic simple" start="7">
+<li>Finally, set up the roles and credentials for your application users with <a class="reference internal" href="../cql/security.html#create-role-statement"><span class="std std-ref">CREATE ROLE</span></a>
+statements.</li>
+</ol>
+<p>At the end of these steps, the one node is configured to use password authentication. To roll that out across the
+cluster, repeat steps 2 and 3 on each node in the cluster. Once all nodes have been restarted, authentication will be
+fully enabled throughout the cluster.</p>
+<p>Note that using <code class="docutils literal notranslate"><span class="pre">PasswordAuthenticator</span></code> also requires the use of <a class="reference internal" href="#operation-roles"><span class="std std-ref">CassandraRoleManager</span></a>.</p>
+<p>See also: <a class="reference internal" href="../cql/security.html#setting-credentials-for-internal-authentication"><span class="std std-ref">Setting credentials for internal authentication</span></a>, <a class="reference internal" href="../cql/security.html#create-role-statement"><span class="std std-ref">CREATE ROLE</span></a>,
+<a class="reference internal" href="../cql/security.html#alter-role-statement"><span class="std std-ref">ALTER ROLE</span></a>, <a class="reference internal" href="../cql/ddl.html#alter-keyspace-statement"><span class="std std-ref">ALTER KEYSPACE</span></a> and <a class="reference internal" href="../cql/security.html#grant-permission-statement"><span class="std std-ref">GRANT PERMISSION</span></a>,</p>
+</div>
+</div>
+<div class="section" id="authorization">
+<span id="id1"></span><h2>Authorization<a class="headerlink" href="#authorization" title="Permalink to this headline">¶</a></h2>
+<p>Authorization is pluggable in Cassandra and is configured using the <code class="docutils literal notranslate"><span class="pre">authorizer</span></code> setting in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>.
+Cassandra ships with two options included in the default distribution.</p>
+<p>By default, Cassandra is configured with <code class="docutils literal notranslate"><span class="pre">AllowAllAuthorizer</span></code> which performs no checking and so effectively grants all
+permissions to all roles. This must be used if <code class="docutils literal notranslate"><span class="pre">AllowAllAuthenticator</span></code> is the configured authenticator.</p>
+<p>The default distribution also includes <code class="docutils literal notranslate"><span class="pre">CassandraAuthorizer</span></code>, which does implement full permissions management
+functionality and stores its data in Cassandra system tables.</p>
+<div class="section" id="enabling-internal-authorization">
+<h3>Enabling Internal Authorization<a class="headerlink" href="#enabling-internal-authorization" title="Permalink to this headline">¶</a></h3>
+<p>Permissions are modelled as a whitelist, with the default assumption that a given role has no access to any database
+resources. The implication of this is that once authorization is enabled on a node, all requests will be rejected until
+the required permissions have been granted. For this reason, it is strongly recommended to perform the initial setup on
+a node which is not processing client requests.</p>
+<p>The following assumes that authentication has already been enabled via the process outlined in
+<a class="reference internal" href="#password-authentication"><span class="std std-ref">Enabling Password Authentication</span></a>. Perform these steps to enable internal authorization across the cluster:</p>
+<ol class="arabic simple">
+<li>On the selected node, edit <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> to change the <code class="docutils literal notranslate"><span class="pre">authorizer</span></code> option like so:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>authorizer: CassandraAuthorizer
+</pre></div>
+</div>
+<ol class="arabic simple" start="2">
+<li>Restart the node.</li>
+<li>Open a new <code class="docutils literal notranslate"><span class="pre">cqlsh</span></code> session using the credentials of a role with superuser credentials:</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh -u dba -p super
+</pre></div>
+</div>
+<ol class="arabic simple" start="4">
+<li>Configure the appropriate access privileges for your clients using <a class="reference external" href="cql.html#grant-permission">GRANT PERMISSION</a>
+statements. On the other nodes, until configuration is updated and the node restarted, this will have no effect so
+disruption to clients is avoided.</li>
+</ol>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>GRANT SELECT ON ks.t1 TO db_user;
+</pre></div>
+</div>
+<ol class="arabic simple" start="5">
+<li>Once all the necessary permissions have been granted, repeat steps 1 and 2 for each node in turn. As each node
+restarts and clients reconnect, the enforcement of the granted permissions will begin.</li>
+</ol>
+<p>See also: <a class="reference internal" href="../cql/security.html#grant-permission-statement"><span class="std std-ref">GRANT PERMISSION</span></a>, <cite>GRANT ALL &lt;grant-all&gt;</cite> and <a class="reference internal" href="../cql/security.html#revoke-permission-statement"><span class="std std-ref">REVOKE PERMISSION</span></a></p>
+</div>
+</div>
+<div class="section" id="caching">
+<span id="auth-caching"></span><h2>Caching<a class="headerlink" href="#caching" title="Permalink to this headline">¶</a></h2>
+<p>Enabling authentication and authorization places additional load on the cluster by frequently reading from the
+<code class="docutils literal notranslate"><span class="pre">system_auth</span></code> tables. Furthermore, these reads are in the critical paths of many client operations, and so has the
+potential to severely impact quality of service. To mitigate this, auth data such as credentials, permissions and role
+details are cached for a configurable period. The caching can be configured (and even disabled) from <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>
+or using a JMX client. The JMX interface also supports invalidation of the various caches, but any changes made via JMX
+are not persistent and will be re-read from <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> when the node is restarted.</p>
+<p>Each cache has 3 options which can be set:</p>
+<dl class="docutils">
+<dt>Validity Period</dt>
+<dd>Controls the expiration of cache entries. After this period, entries are invalidated and removed from the cache.</dd>
+<dt>Refresh Rate</dt>
+<dd>Controls the rate at which background reads are performed to pick up any changes to the underlying data. While these
+async refreshes are performed, caches will continue to serve (possibly) stale data. Typically, this will be set to a
+shorter time than the validity period.</dd>
+<dt>Max Entries</dt>
+<dd>Controls the upper bound on cache size.</dd>
+</dl>
+<p>The naming for these options in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> follows the convention:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">&lt;type&gt;_validity_in_ms</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">&lt;type&gt;_update_interval_in_ms</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">&lt;type&gt;_cache_max_entries</span></code></li>
+</ul>
+<p>Where <code class="docutils literal notranslate"><span class="pre">&lt;type&gt;</span></code> is one of <code class="docutils literal notranslate"><span class="pre">credentials</span></code>, <code class="docutils literal notranslate"><span class="pre">permissions</span></code>, or <code class="docutils literal notranslate"><span class="pre">roles</span></code>.</p>
+<p>As mentioned, these are also exposed via JMX in the mbeans under the <code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.auth</span></code> domain.</p>
+</div>
+<div class="section" id="jmx-access">
+<h2>JMX access<a class="headerlink" href="#jmx-access" title="Permalink to this headline">¶</a></h2>
+<p>Access control for JMX clients is configured separately to that for CQL. For both authentication and authorization, two
+providers are available; the first based on standard JMX security and the second which integrates more closely with
+Cassandra’s own auth subsystem.</p>
+<p>The default settings for Cassandra make JMX accessible only from localhost. To enable remote JMX connections, edit
+<code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> to change the <code class="docutils literal notranslate"><span class="pre">LOCAL_JMX</span></code> setting to <code class="docutils literal notranslate"><span class="pre">no</span></code>. Under the
+standard configuration, when remote JMX connections are enabled, <a class="reference internal" href="#standard-jmx-auth"><span class="std std-ref">standard JMX authentication</span></a>
+is also switched on.</p>
+<p>Note that by default, local-only connections are not subject to authentication, but this can be enabled.</p>
+<p>If enabling remote connections, it is recommended to also use <a class="reference internal" href="#jmx-with-ssl"><span class="std std-ref">SSL</span></a> connections.</p>
+<p>Finally, after enabling auth and/or SSL, ensure that tools which use JMX, such as <span class="xref std std-ref">nodetool</span>, are
+correctly configured and working as expected.</p>
+<div class="section" id="standard-jmx-auth">
+<span id="id2"></span><h3>Standard JMX Auth<a class="headerlink" href="#standard-jmx-auth" title="Permalink to this headline">¶</a></h3>
+<p>Users permitted to connect to the JMX server are specified in a simple text file. The location of this file is set in
+<code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> by the line:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>JVM_OPTS=&quot;$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password&quot;
+</pre></div>
+</div>
+<p>Edit the password file to add username/password pairs:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>jmx_user jmx_password
+</pre></div>
+</div>
+<p>Secure the credentials file so that only the user running the Cassandra process can read it :</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ chown cassandra:cassandra /etc/cassandra/jmxremote.password
+$ chmod 400 /etc/cassandra/jmxremote.password
+</pre></div>
+</div>
+<p>Optionally, enable access control to limit the scope of what defined users can do via JMX. Note that this is a fairly
+blunt instrument in this context as most operational tools in Cassandra require full read/write access. To configure a
+simple access file, uncomment this line in <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>#JVM_OPTS=&quot;$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access&quot;
+</pre></div>
+</div>
+<p>Then edit the access file to grant your JMX user readwrite permission:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>jmx_user readwrite
+</pre></div>
+</div>
+<p>Cassandra must be restarted to pick up the new settings.</p>
+<p>See also : <a class="reference external" href="http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdenv">Using File-Based Password Authentication In JMX</a></p>
+</div>
+<div class="section" id="cassandra-integrated-auth">
+<h3>Cassandra Integrated Auth<a class="headerlink" href="#cassandra-integrated-auth" title="Permalink to this headline">¶</a></h3>
+<p>An alternative to the out-of-the-box JMX auth is to useeCassandra’s own authentication and/or authorization providers
+for JMX clients. This is potentially more flexible and secure but it come with one major caveat. Namely that it is not
+available until <cite>after</cite> a node has joined the ring, because the auth subsystem is not fully configured until that point
+However, it is often critical for monitoring purposes to have JMX access particularly during bootstrap. So it is
+recommended, where possible, to use local only JMX auth during bootstrap and then, if remote connectivity is required,
+to switch to integrated auth once the node has joined the ring and initial setup is complete.</p>
+<p>With this option, the same database roles used for CQL authentication can be used to control access to JMX, so updates
+can be managed centrally using just <code class="docutils literal notranslate"><span class="pre">cqlsh</span></code>. Furthermore, fine grained control over exactly which operations are
+permitted on particular MBeans can be acheived via <a class="reference internal" href="../cql/security.html#grant-permission-statement"><span class="std std-ref">GRANT PERMISSION</span></a>.</p>
+<p>To enable integrated authentication, edit <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> to uncomment these lines:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>#JVM_OPTS=&quot;$JVM_OPTS -Dcassandra.jmx.remote.login.config=CassandraLogin&quot;
+#JVM_OPTS=&quot;$JVM_OPTS -Djava.security.auth.login.config=$CASSANDRA_HOME/conf/cassandra-jaas.config&quot;
+</pre></div>
+</div>
+<p>And disable the JMX standard auth by commenting this line:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>JVM_OPTS=&quot;$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password&quot;
+</pre></div>
+</div>
+<p>To enable integrated authorization, uncomment this line:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>#JVM_OPTS=&quot;$JVM_OPTS -Dcassandra.jmx.authorizer=org.apache.cassandra.auth.jmx.AuthorizationProxy&quot;
+</pre></div>
+</div>
+<p>Check standard access control is off by ensuring this line is commented out:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>#JVM_OPTS=&quot;$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access&quot;
+</pre></div>
+</div>
+<p>With integrated authentication and authorization enabled, operators can define specific roles and grant them access to
+the particular JMX resources that they need. For example, a role with the necessary permissions to use tools such as
+jconsole or jmc in read-only mode would be defined as:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CREATE ROLE jmx WITH LOGIN = false;
+GRANT SELECT ON ALL MBEANS TO jmx;
+GRANT DESCRIBE ON ALL MBEANS TO jmx;
+GRANT EXECUTE ON MBEAN &#39;java.lang:type=Threading&#39; TO jmx;
+GRANT EXECUTE ON MBEAN &#39;com.sun.management:type=HotSpotDiagnostic&#39; TO jmx;
+
+# Grant the role with necessary permissions to use nodetool commands (including nodetool status) in read-only mode
+GRANT EXECUTE ON MBEAN &#39;org.apache.cassandra.db:type=EndpointSnitchInfo&#39; TO jmx;
+GRANT EXECUTE ON MBEAN &#39;org.apache.cassandra.db:type=StorageService&#39; TO jmx;
+
+# Grant the jmx role to one with login permissions so that it can access the JMX tooling
+CREATE ROLE ks_user WITH PASSWORD = &#39;password&#39; AND LOGIN = true AND SUPERUSER = false;
+GRANT jmx TO ks_user;
+</pre></div>
+</div>
+<p>Fine grained access control to individual MBeans is also supported:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>GRANT EXECUTE ON MBEAN &#39;org.apache.cassandra.db:type=Tables,keyspace=test_keyspace,table=t1&#39; TO ks_user;
+GRANT EXECUTE ON MBEAN &#39;org.apache.cassandra.db:type=Tables,keyspace=test_keyspace,table=*&#39; TO ks_owner;
+</pre></div>
+</div>
+<p>This permits the <code class="docutils literal notranslate"><span class="pre">ks_user</span></code> role to invoke methods on the MBean representing a single table in <code class="docutils literal notranslate"><span class="pre">test_keyspace</span></code>, while
+granting the same permission for all table level MBeans in that keyspace to the <code class="docutils literal notranslate"><span class="pre">ks_owner</span></code> role.</p>
+<p>Adding/removing roles and granting/revoking of permissions is handled dynamically once the initial setup is complete, so
+no further restarts are required if permissions are altered.</p>
+<p>See also: <a class="reference internal" href="../cql/security.html#cql-permissions"><span class="std std-ref">Permissions</span></a>.</p>
+</div>
+<div class="section" id="jmx-with-ssl">
+<span id="id3"></span><h3>JMX With SSL<a class="headerlink" href="#jmx-with-ssl" title="Permalink to this headline">¶</a></h3>
+<p>JMX SSL configuration is controlled by a number of system properties, some of which are optional. To turn on SSL, edit
+the relevant lines in <code class="docutils literal notranslate"><span class="pre">cassandra-env.sh</span></code> to uncomment and set the values of these
+properties as required:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">com.sun.management.jmxremote.ssl</span></code></dt>
+<dd>set to true to enable SSL</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">com.sun.management.jmxremote.ssl.need.client.auth</span></code></dt>
+<dd>set to true to enable validation of client certificates</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">com.sun.management.jmxremote.registry.ssl</span></code></dt>
+<dd>enables SSL sockets for the RMI registry from which clients obtain the JMX connector stub</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">com.sun.management.jmxremote.ssl.enabled.protocols</span></code></dt>
+<dd>by default, the protocols supported by the JVM will be used, override with a comma-separated list. Note that this is
+not usually necessary and using the defaults is the preferred option.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">com.sun.management.jmxremote.ssl.enabled.cipher.suites</span></code></dt>
+<dd>by default, the cipher suites supported by the JVM will be used, override with a comma-separated list. Note that
+this is not usually necessary and using the defaults is the preferred option.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">javax.net.ssl.keyStore</span></code></dt>
+<dd>set the path on the local filesystem of the keystore containing server private keys and public certificates</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">javax.net.ssl.keyStorePassword</span></code></dt>
+<dd>set the password of the keystore file</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">javax.net.ssl.trustStore</span></code></dt>
+<dd>if validation of client certificates is required, use this property to specify the path of the truststore containing
+the public certificates of trusted clients</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">javax.net.ssl.trustStorePassword</span></code></dt>
+<dd>set the password of the truststore file</dd>
+</dl>
+<p>See also: <a class="reference external" href="http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdemv">Oracle Java7 Docs</a>,
+<a class="reference external" href="https://www.lullabot.com/articles/monitor-java-with-jmx">Monitor Java with JMX</a></p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="hardware.html" class="btn btn-default pull-right " role="button" title="Hardware Choices" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="metrics.html" class="btn btn-default" role="button" title="Monitoring" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/snitch.html b/src/doc/4.0-rc1/operating/snitch.html
new file mode 100644
index 0000000..9cb816b
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/snitch.html
@@ -0,0 +1,180 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Snitch"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Adding, replacing, moving and removing nodes" href="topo_changes.html"/>
+      <link rel="prev" title="Operating Cassandra" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Snitch</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#dynamic-snitching">Dynamic snitching</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#snitch-classes">Snitch classes</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="snitch">
+<span id="id1"></span><h1>Snitch<a class="headerlink" href="#snitch" title="Permalink to this headline">¶</a></h1>
+<p>In cassandra, the snitch has two functions:</p>
+<ul class="simple">
+<li>it teaches Cassandra enough about your network topology to route requests efficiently.</li>
+<li>it allows Cassandra to spread replicas around your cluster to avoid correlated failures. It does this by grouping
+machines into “datacenters” and “racks.”  Cassandra will do its best not to have more than one replica on the same
+“rack” (which may not actually be a physical location).</li>
+</ul>
+<div class="section" id="dynamic-snitching">
+<h2>Dynamic snitching<a class="headerlink" href="#dynamic-snitching" title="Permalink to this headline">¶</a></h2>
+<p>The dynamic snitch monitor read latencies to avoid reading from hosts that have slowed down. The dynamic snitch is
+configured with the following properties on <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">dynamic_snitch</span></code>: whether the dynamic snitch should be enabled or disabled.</li>
+<li><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_update_interval_in_ms</span></code>: controls how often to perform the more expensive part of host score
+calculation.</li>
+<li><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_reset_interval_in_ms</span></code>: if set greater than zero, this will allow ‘pinning’ of replicas to hosts
+in order to increase cache capacity.</li>
+<li><code class="docutils literal notranslate"><span class="pre">dynamic_snitch_badness_threshold:</span></code>: The badness threshold will control how much worse the pinned host has to be
+before the dynamic snitch will prefer other replicas over it.  This is expressed as a double which represents a
+percentage.  Thus, a value of 0.2 means Cassandra would continue to prefer the static snitch values until the pinned
+host was 20% worse than the fastest.</li>
+</ul>
+</div>
+<div class="section" id="snitch-classes">
+<h2>Snitch classes<a class="headerlink" href="#snitch-classes" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">endpoint_snitch</span></code> parameter in <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> should be set to the class that implements
+<code class="docutils literal notranslate"><span class="pre">IEndPointSnitch</span></code> which will be wrapped by the dynamic snitch and decide if two endpoints are in the same data center
+or on the same rack. Out of the box, Cassandra provides the snitch implementations:</p>
+<dl class="docutils">
+<dt>GossipingPropertyFileSnitch</dt>
+<dd>This should be your go-to snitch for production use. The rack and datacenter for the local node are defined in
+cassandra-rackdc.properties and propagated to other nodes via gossip. If <code class="docutils literal notranslate"><span class="pre">cassandra-topology.properties</span></code> exists,
+it is used as a fallback, allowing migration from the PropertyFileSnitch.</dd>
+<dt>SimpleSnitch</dt>
+<dd>Treats Strategy order as proximity. This can improve cache locality when disabling read repair. Only appropriate for
+single-datacenter deployments.</dd>
+<dt>PropertyFileSnitch</dt>
+<dd>Proximity is determined by rack and data center, which are explicitly configured in
+<code class="docutils literal notranslate"><span class="pre">cassandra-topology.properties</span></code>.</dd>
+<dt>Ec2Snitch</dt>
+<dd>Appropriate for EC2 deployments in a single Region, or in multiple regions with inter-region VPC enabled (available
+since the end of 2017, see <a class="reference external" href="https://aws.amazon.com/about-aws/whats-new/2017/11/announcing-support-for-inter-region-vpc-peering/">AWS announcement</a>).
+Loads Region and Availability Zone information from the EC2 API. The Region is treated as the datacenter, and the
+Availability Zone as the rack. Only private IPs are used, so this will work across multiple regions only if
+inter-region VPC is enabled.</dd>
+<dt>Ec2MultiRegionSnitch</dt>
+<dd>Uses public IPs as broadcast_address to allow cross-region connectivity (thus, you should set seed addresses to the
+public IP as well). You will need to open the <code class="docutils literal notranslate"><span class="pre">storage_port</span></code> or <code class="docutils literal notranslate"><span class="pre">ssl_storage_port</span></code> on the public IP firewall
+(For intra-Region traffic, Cassandra will switch to the private IP after establishing a connection).</dd>
+<dt>RackInferringSnitch</dt>
+<dd>Proximity is determined by rack and data center, which are assumed to correspond to the 3rd and 2nd octet of each
+node’s IP address, respectively.  Unless this happens to match your deployment conventions, this is best used as an
+example of writing a custom Snitch class and is provided in that spirit.</dd>
+</dl>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="topo_changes.html" class="btn btn-default pull-right " role="button" title="Adding, replacing, moving and removing nodes" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Operating Cassandra" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/operating/topo_changes.html b/src/doc/4.0-rc1/operating/topo_changes.html
new file mode 100644
index 0000000..7d950f8
--- /dev/null
+++ b/src/doc/4.0-rc1/operating/topo_changes.html
@@ -0,0 +1,222 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Adding, replacing, moving and removing nodes"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Repair" href="repair.html"/>
+      <link rel="prev" title="Snitch" href="snitch.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Adding, replacing, moving and removing nodes</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#bootstrap">Bootstrap</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#removing-nodes">Removing nodes</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#moving-nodes">Moving nodes</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#replacing-a-dead-node">Replacing a dead node</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#monitoring-progress">Monitoring progress</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cleanup-data-after-range-movements">Cleanup data after range movements</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction/index.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="adding-replacing-moving-and-removing-nodes">
+<span id="topology-changes"></span><h1>Adding, replacing, moving and removing nodes<a class="headerlink" href="#adding-replacing-moving-and-removing-nodes" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="bootstrap">
+<h2>Bootstrap<a class="headerlink" href="#bootstrap" title="Permalink to this headline">¶</a></h2>
+<p>Adding new nodes is called “bootstrapping”. The <code class="docutils literal notranslate"><span class="pre">num_tokens</span></code> parameter will define the amount of virtual nodes
+(tokens) the joining node will be assigned during bootstrap. The tokens define the sections of the ring (token ranges)
+the node will become responsible for.</p>
+<div class="section" id="token-allocation">
+<h3>Token allocation<a class="headerlink" href="#token-allocation" title="Permalink to this headline">¶</a></h3>
+<p>With the default token allocation algorithm the new node will pick <code class="docutils literal notranslate"><span class="pre">num_tokens</span></code> random tokens to become responsible
+for. Since tokens are distributed randomly, load distribution improves with a higher amount of virtual nodes, but it
+also increases token management overhead. The default of 256 virtual nodes should provide a reasonable load balance with
+acceptable overhead.</p>
+<p>On 3.0+ a new token allocation algorithm was introduced to allocate tokens based on the load of existing virtual nodes
+for a given keyspace, and thus yield an improved load distribution with a lower number of tokens. To use this approach,
+the new node must be started with the JVM option <code class="docutils literal notranslate"><span class="pre">-Dcassandra.allocate_tokens_for_keyspace=&lt;keyspace&gt;</span></code>, where
+<code class="docutils literal notranslate"><span class="pre">&lt;keyspace&gt;</span></code> is the keyspace from which the algorithm can find the load information to optimize token assignment for.</p>
+<div class="section" id="manual-token-assignment">
+<h4>Manual token assignment<a class="headerlink" href="#manual-token-assignment" title="Permalink to this headline">¶</a></h4>
+<p>You may specify a comma-separated list of tokens manually with the <code class="docutils literal notranslate"><span class="pre">initial_token</span></code> <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code> parameter, and
+if that is specified Cassandra will skip the token allocation process. This may be useful when doing token assignment
+with an external tool or when restoring a node with its previous tokens.</p>
+</div>
+</div>
+<div class="section" id="range-streaming">
+<h3>Range streaming<a class="headerlink" href="#range-streaming" title="Permalink to this headline">¶</a></h3>
+<p>After the tokens are allocated, the joining node will pick current replicas of the token ranges it will become
+responsible for to stream data from. By default it will stream from the primary replica of each token range in order to
+guarantee data in the new node will be consistent with the current state.</p>
+<p>In the case of any unavailable replica, the consistent bootstrap process will fail. To override this behavior and
+potentially miss data from an unavailable replica, set the JVM flag <code class="docutils literal notranslate"><span class="pre">-Dcassandra.consistent.rangemovement=false</span></code>.</p>
+</div>
+<div class="section" id="resuming-failed-hanged-bootstrap">
+<h3>Resuming failed/hanged bootstrap<a class="headerlink" href="#resuming-failed-hanged-bootstrap" title="Permalink to this headline">¶</a></h3>
+<p>On 2.2+, if the bootstrap process fails, it’s possible to resume bootstrap from the previous saved state by calling
+<code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">bootstrap</span> <span class="pre">resume</span></code>. If for some reason the bootstrap hangs or stalls, it may also be resumed by simply
+restarting the node. In order to cleanup bootstrap state and start fresh, you may set the JVM startup flag
+<code class="docutils literal notranslate"><span class="pre">-Dcassandra.reset_bootstrap_progress=true</span></code>.</p>
+<p>On lower versions, when the bootstrap proces fails it is recommended to wipe the node (remove all the data), and restart
+the bootstrap process again.</p>
+</div>
+<div class="section" id="manual-bootstrapping">
+<h3>Manual bootstrapping<a class="headerlink" href="#manual-bootstrapping" title="Permalink to this headline">¶</a></h3>
+<p>It’s possible to skip the bootstrapping process entirely and join the ring straight away by setting the hidden parameter
+<code class="docutils literal notranslate"><span class="pre">auto_bootstrap:</span> <span class="pre">false</span></code>. This may be useful when restoring a node from a backup or creating a new data-center.</p>
+</div>
+</div>
+<div class="section" id="removing-nodes">
+<h2>Removing nodes<a class="headerlink" href="#removing-nodes" title="Permalink to this headline">¶</a></h2>
+<p>You can take a node out of the cluster with <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">decommission</span></code> to a live node, or <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">removenode</span></code> (to any
+other machine) to remove a dead one. This will assign the ranges the old node was responsible for to other nodes, and
+replicate the appropriate data there. If decommission is used, the data will stream from the decommissioned node. If
+removenode is used, the data will stream from the remaining replicas.</p>
+<p>No data is removed automatically from the node being decommissioned, so if you want to put the node back into service at
+a different token on the ring, it should be removed manually.</p>
+</div>
+<div class="section" id="moving-nodes">
+<h2>Moving nodes<a class="headerlink" href="#moving-nodes" title="Permalink to this headline">¶</a></h2>
+<p>When <code class="docutils literal notranslate"><span class="pre">num_tokens:</span> <span class="pre">1</span></code> it’s possible to move the node position in the ring with <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">move</span></code>. Moving is both a
+convenience over and more efficient than decommission + bootstrap. After moving a node, <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">cleanup</span></code> should be
+run to remove any unnecessary data.</p>
+</div>
+<div class="section" id="replacing-a-dead-node">
+<h2>Replacing a dead node<a class="headerlink" href="#replacing-a-dead-node" title="Permalink to this headline">¶</a></h2>
+<p>In order to replace a dead node, start cassandra with the JVM startup flag
+<code class="docutils literal notranslate"><span class="pre">-Dcassandra.replace_address_first_boot=&lt;dead_node_ip&gt;</span></code>. Once this property is enabled the node starts in a hibernate
+state, during which all the other nodes will see this node to be DOWN (DN), however this node will see itself as UP
+(UN). Accurate replacement state can be found in <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">netstats</span></code>.</p>
+<p>The replacing node will now start to bootstrap the data from the rest of the nodes in the cluster. A replacing node will
+only receive writes during the bootstrapping phase if it has a different ip address to the node that is being replaced.
+(See CASSANDRA-8523 and CASSANDRA-12344)</p>
+<p>Once the bootstrapping is complete the node will be marked “UP”.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p>If any of the following cases apply, you <strong>MUST</strong> run repair to make the replaced node consistent again, since
+it missed ongoing writes during/prior to bootstrapping. The <em>replacement</em> timeframe refers to the period from when the
+node initially dies to when a new node completes the replacement process.</p>
+<ol class="last arabic simple">
+<li>The node is down for longer than <code class="docutils literal notranslate"><span class="pre">max_hint_window_in_ms</span></code> before being replaced.</li>
+<li>You are replacing using the same IP address as the dead node <strong>and</strong> replacement takes longer than <code class="docutils literal notranslate"><span class="pre">max_hint_window_in_ms</span></code>.</li>
+</ol>
+</div>
+</div>
+<div class="section" id="monitoring-progress">
+<h2>Monitoring progress<a class="headerlink" href="#monitoring-progress" title="Permalink to this headline">¶</a></h2>
+<p>Bootstrap, replace, move and remove progress can be monitored using <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">netstats</span></code> which will show the progress
+of the streaming operations.</p>
+</div>
+<div class="section" id="cleanup-data-after-range-movements">
+<h2>Cleanup data after range movements<a class="headerlink" href="#cleanup-data-after-range-movements" title="Permalink to this headline">¶</a></h2>
+<p>As a safety measure, Cassandra does not automatically remove data from nodes that “lose” part of their token range due
+to a range movement operation (bootstrap, move, replace). Run <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">cleanup</span></code> on the nodes that lost ranges to the
+joining node when you are satisfied the new node is up and working. If you do not do this the old data will still be
+counted against the load on that node.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="repair.html" class="btn btn-default pull-right " role="button" title="Repair" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="snitch.html" class="btn btn-default" role="button" title="Snitch" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/plugins/index.html b/src/doc/4.0-rc1/plugins/index.html
new file mode 100644
index 0000000..c6440c9
--- /dev/null
+++ b/src/doc/4.0-rc1/plugins/index.html
@@ -0,0 +1,117 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Third-Party Plugins"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="next" title="Reporting Bugs" href="../bugs.html"/>
+      <link rel="prev" title="Frequently Asked Questions" href="../faq/index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Third-Party Plugins</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#capi-rowcache">CAPI-Rowcache</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#stratios-cassandra-lucene-index">Stratio’s Cassandra Lucene Index</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="third-party-plugins">
+<h1>Third-Party Plugins<a class="headerlink" href="#third-party-plugins" title="Permalink to this headline">¶</a></h1>
+<p>Available third-party plugins for Apache Cassandra</p>
+<div class="section" id="capi-rowcache">
+<h2>CAPI-Rowcache<a class="headerlink" href="#capi-rowcache" title="Permalink to this headline">¶</a></h2>
+<p>The Coherent Accelerator Process Interface (CAPI) is a general term for the infrastructure of attaching a Coherent accelerator to an IBM POWER system. A key innovation in IBM POWER8’s open architecture is the CAPI. It provides a high bandwidth, low latency path between external devices, the POWER8 core, and the system’s open memory architecture. IBM Data Engine for NoSQL is an integrated platform for large and fast growing NoSQL data stores. It builds on the CAPI capability of POWER8 systems and provides super-fast access to large flash storage capacity and addresses the challenges associated with typical x86 server based scale-out deployments.</p>
+<p>The official page for the <a class="reference external" href="https://github.com/ppc64le/capi-rowcache">CAPI-Rowcache plugin</a> contains further details how to build/run/download the plugin.</p>
+</div>
+<div class="section" id="stratios-cassandra-lucene-index">
+<h2>Stratio’s Cassandra Lucene Index<a class="headerlink" href="#stratios-cassandra-lucene-index" title="Permalink to this headline">¶</a></h2>
+<p>Stratio’s Lucene index is a Cassandra secondary index implementation based on <a class="reference external" href="http://lucene.apache.org/">Apache Lucene</a>. It extends Cassandra’s functionality to provide near real-time distributed search engine capabilities such as with ElasticSearch or <a class="reference external" href="http://lucene.apache.org/solr/">Apache Solr</a>, including full text search capabilities, free multivariable, geospatial and bitemporal search, relevance queries and sorting based on column value, relevance or distance. Each node indexes its own data, so high availability and scalability is guaranteed.</p>
+<p>The official Github repository <a class="reference external" href="http://www.github.com/stratio/cassandra-lucene-index">Cassandra Lucene Index</a> contains everything you need to build/run/configure the plugin.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../bugs.html" class="btn btn-default pull-right " role="button" title="Reporting Bugs" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../faq/index.html" class="btn btn-default" role="button" title="Frequently Asked Questions" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/search.html b/src/doc/4.0-rc1/search.html
new file mode 100644
index 0000000..b689593
--- /dev/null
+++ b/src/doc/4.0-rc1/search.html
@@ -0,0 +1,105 @@
+---
+layout: docpage
+
+title: "Search"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: ""
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="index.html"/>
+'
+doc-search-path: "#"
+
+extra-footer: '
+  <script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+  </script>
+  <script type="text/javascript">
+    jQuery(function() { Search.loadIndex("searchindex.js"); });
+  </script>
+  
+  <script type="text/javascript" id="searchindexloader"></script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="#" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <noscript>
+  <div id="fallback" class="admonition warning">
+    <p class="last">
+      Please activate JavaScript to enable the search
+      functionality.
+    </p>
+  </div>
+  </noscript>
+
+  
+  <div id="search-results">
+  
+  </div>
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/searchindex.js b/src/doc/4.0-rc1/searchindex.js
new file mode 100644
index 0000000..4bd819e
--- /dev/null
+++ b/src/doc/4.0-rc1/searchindex.js
@@ -0,0 +1 @@
+Search.setIndex({docnames:["architecture/dynamo","architecture/guarantees","architecture/index","architecture/overview","architecture/storage_engine","bugs","configuration/cass_cl_archive_file","configuration/cass_env_sh_file","configuration/cass_jvm_options_file","configuration/cass_logback_xml_file","configuration/cass_rackdc_file","configuration/cass_topo_file","configuration/cass_yaml_file","configuration/cassandra_config_file","configuration/index","contactus","cql/appendices","cql/changes","cql/ddl","cql/definitions","cql/dml","cql/functions","cql/index","cql/indexes","cql/json","cql/mvs","cql/operators","cql/security","cql/triggers","cql/types","data_modeling/data_modeling_conceptual","data_modeling/data_modeling_logical","data_modeling/data_modeling_physical","data_modeling/data_modeling_queries","data_modeling/data_modeling_rdbms","data_modeling/data_modeling_refining","data_modeling/data_modeling_schema","data_modeling/data_modeling_tools","data_modeling/index","data_modeling/intro","development/ci","development/code_style","development/dependencies","development/documentation","development/gettingstarted","development/how_to_commit","development/how_to_review","development/ide","development/index","development/license_compliance","development/patches","development/release_process","development/testing","faq/index","getting_started/configuring","getting_started/drivers","getting_started/index","getting_started/installing","getting_started/production","getting_started/querying","glossary","index","new/auditlogging","new/fqllogging","new/index","new/java11","new/messaging","new/streaming","new/transientreplication","new/virtualtables","operating/audit_logging","operating/backups","operating/bloom_filters","operating/bulk_loading","operating/cdc","operating/compaction/index","operating/compaction/lcs","operating/compaction/stcs","operating/compaction/twcs","operating/compression","operating/hardware","operating/hints","operating/index","operating/metrics","operating/read_repair","operating/repair","operating/security","operating/snitch","operating/topo_changes","plugins/index","tools/cassandra_stress","tools/cqlsh","tools/generatetokens","tools/index","tools/nodetool/assassinate","tools/nodetool/bootstrap","tools/nodetool/cleanup","tools/nodetool/clearsnapshot","tools/nodetool/clientstats","tools/nodetool/compact","tools/nodetool/compactionhistory","tools/nodetool/compactionstats","tools/nodetool/decommission","tools/nodetool/describecluster","tools/nodetool/describering","tools/nodetool/disableauditlog","tools/nodetool/disableautocompaction","tools/nodetool/disablebackup","tools/nodetool/disablebinary","tools/nodetool/disablefullquerylog","tools/nodetool/disablegossip","tools/nodetool/disablehandoff","tools/nodetool/disablehintsfordc","tools/nodetool/disableoldprotocolversions","tools/nodetool/drain","tools/nodetool/enableauditlog","tools/nodetool/enableautocompaction","tools/nodetool/enablebackup","tools/nodetool/enablebinary","tools/nodetool/enablefullquerylog","tools/nodetool/enablegossip","tools/nodetool/enablehandoff","tools/nodetool/enablehintsfordc","tools/nodetool/enableoldprotocolversions","tools/nodetool/failuredetector","tools/nodetool/flush","tools/nodetool/garbagecollect","tools/nodetool/gcstats","tools/nodetool/getbatchlogreplaythrottle","tools/nodetool/getcompactionthreshold","tools/nodetool/getcompactionthroughput","tools/nodetool/getconcurrency","tools/nodetool/getconcurrentcompactors","tools/nodetool/getconcurrentviewbuilders","tools/nodetool/getendpoints","tools/nodetool/getfullquerylog","tools/nodetool/getinterdcstreamthroughput","tools/nodetool/getlogginglevels","tools/nodetool/getmaxhintwindow","tools/nodetool/getseeds","tools/nodetool/getsnapshotthrottle","tools/nodetool/getsstables","tools/nodetool/getstreamthroughput","tools/nodetool/gettimeout","tools/nodetool/gettraceprobability","tools/nodetool/gossipinfo","tools/nodetool/help","tools/nodetool/import","tools/nodetool/info","tools/nodetool/invalidatecountercache","tools/nodetool/invalidatekeycache","tools/nodetool/invalidaterowcache","tools/nodetool/join","tools/nodetool/listsnapshots","tools/nodetool/move","tools/nodetool/netstats","tools/nodetool/nodetool","tools/nodetool/pausehandoff","tools/nodetool/profileload","tools/nodetool/proxyhistograms","tools/nodetool/rangekeysample","tools/nodetool/rebuild","tools/nodetool/rebuild_index","tools/nodetool/refresh","tools/nodetool/refreshsizeestimates","tools/nodetool/reloadlocalschema","tools/nodetool/reloadseeds","tools/nodetool/reloadssl","tools/nodetool/reloadtriggers","tools/nodetool/relocatesstables","tools/nodetool/removenode","tools/nodetool/repair","tools/nodetool/repair_admin","tools/nodetool/replaybatchlog","tools/nodetool/resetfullquerylog","tools/nodetool/resetlocalschema","tools/nodetool/resumehandoff","tools/nodetool/ring","tools/nodetool/scrub","tools/nodetool/setbatchlogreplaythrottle","tools/nodetool/setcachecapacity","tools/nodetool/setcachekeystosave","tools/nodetool/setcompactionthreshold","tools/nodetool/setcompactionthroughput","tools/nodetool/setconcurrency","tools/nodetool/setconcurrentcompactors","tools/nodetool/setconcurrentviewbuilders","tools/nodetool/sethintedhandoffthrottlekb","tools/nodetool/setinterdcstreamthroughput","tools/nodetool/setlogginglevel","tools/nodetool/setmaxhintwindow","tools/nodetool/setsnapshotthrottle","tools/nodetool/setstreamthroughput","tools/nodetool/settimeout","tools/nodetool/settraceprobability","tools/nodetool/sjk","tools/nodetool/snapshot","tools/nodetool/status","tools/nodetool/statusautocompaction","tools/nodetool/statusbackup","tools/nodetool/statusbinary","tools/nodetool/statusgossip","tools/nodetool/statushandoff","tools/nodetool/stop","tools/nodetool/stopdaemon","tools/nodetool/tablehistograms","tools/nodetool/tablestats","tools/nodetool/toppartitions","tools/nodetool/tpstats","tools/nodetool/truncatehints","tools/nodetool/upgradesstables","tools/nodetool/verify","tools/nodetool/version","tools/nodetool/viewbuildstatus","tools/sstable/index","tools/sstable/sstabledump","tools/sstable/sstableexpiredblockers","tools/sstable/sstablelevelreset","tools/sstable/sstableloader","tools/sstable/sstablemetadata","tools/sstable/sstableofflinerelevel","tools/sstable/sstablerepairedset","tools/sstable/sstablescrub","tools/sstable/sstablesplit","tools/sstable/sstableupgrade","tools/sstable/sstableutil","tools/sstable/sstableverify","troubleshooting/finding_nodes","troubleshooting/index","troubleshooting/reading_logs","troubleshooting/use_nodetool","troubleshooting/use_tools"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.todo":1,sphinx:54},filenames:["architecture/dynamo.rst","architecture/guarantees.rst","architecture/index.rst","architecture/overview.rst","architecture/storage_engine.rst","bugs.rst","configuration/cass_cl_archive_file.rst","configuration/cass_env_sh_file.rst","configuration/cass_jvm_options_file.rst","configuration/cass_logback_xml_file.rst","configuration/cass_rackdc_file.rst","configuration/cass_topo_file.rst","configuration/cass_yaml_file.rst","configuration/cassandra_config_file.rst","configuration/index.rst","contactus.rst","cql/appendices.rst","cql/changes.rst","cql/ddl.rst","cql/definitions.rst","cql/dml.rst","cql/functions.rst","cql/index.rst","cql/indexes.rst","cql/json.rst","cql/mvs.rst","cql/operators.rst","cql/security.rst","cql/triggers.rst","cql/types.rst","data_modeling/data_modeling_conceptual.rst","data_modeling/data_modeling_logical.rst","data_modeling/data_modeling_physical.rst","data_modeling/data_modeling_queries.rst","data_modeling/data_modeling_rdbms.rst","data_modeling/data_modeling_refining.rst","data_modeling/data_modeling_schema.rst","data_modeling/data_modeling_tools.rst","data_modeling/index.rst","data_modeling/intro.rst","development/ci.rst","development/code_style.rst","development/dependencies.rst","development/documentation.rst","development/gettingstarted.rst","development/how_to_commit.rst","development/how_to_review.rst","development/ide.rst","development/index.rst","development/license_compliance.rst","development/patches.rst","development/release_process.rst","development/testing.rst","faq/index.rst","getting_started/configuring.rst","getting_started/drivers.rst","getting_started/index.rst","getting_started/installing.rst","getting_started/production.rst","getting_started/querying.rst","glossary.rst","index.rst","new/auditlogging.rst","new/fqllogging.rst","new/index.rst","new/java11.rst","new/messaging.rst","new/streaming.rst","new/transientreplication.rst","new/virtualtables.rst","operating/audit_logging.rst","operating/backups.rst","operating/bloom_filters.rst","operating/bulk_loading.rst","operating/cdc.rst","operating/compaction/index.rst","operating/compaction/lcs.rst","operating/compaction/stcs.rst","operating/compaction/twcs.rst","operating/compression.rst","operating/hardware.rst","operating/hints.rst","operating/index.rst","operating/metrics.rst","operating/read_repair.rst","operating/repair.rst","operating/security.rst","operating/snitch.rst","operating/topo_changes.rst","plugins/index.rst","tools/cassandra_stress.rst","tools/cqlsh.rst","tools/generatetokens.rst","tools/index.rst","tools/nodetool/assassinate.rst","tools/nodetool/bootstrap.rst","tools/nodetool/cleanup.rst","tools/nodetool/clearsnapshot.rst","tools/nodetool/clientstats.rst","tools/nodetool/compact.rst","tools/nodetool/compactionhistory.rst","tools/nodetool/compactionstats.rst","tools/nodetool/decommission.rst","tools/nodetool/describecluster.rst","tools/nodetool/describering.rst","tools/nodetool/disableauditlog.rst","tools/nodetool/disableautocompaction.rst","tools/nodetool/disablebackup.rst","tools/nodetool/disablebinary.rst","tools/nodetool/disablefullquerylog.rst","tools/nodetool/disablegossip.rst","tools/nodetool/disablehandoff.rst","tools/nodetool/disablehintsfordc.rst","tools/nodetool/disableoldprotocolversions.rst","tools/nodetool/drain.rst","tools/nodetool/enableauditlog.rst","tools/nodetool/enableautocompaction.rst","tools/nodetool/enablebackup.rst","tools/nodetool/enablebinary.rst","tools/nodetool/enablefullquerylog.rst","tools/nodetool/enablegossip.rst","tools/nodetool/enablehandoff.rst","tools/nodetool/enablehintsfordc.rst","tools/nodetool/enableoldprotocolversions.rst","tools/nodetool/failuredetector.rst","tools/nodetool/flush.rst","tools/nodetool/garbagecollect.rst","tools/nodetool/gcstats.rst","tools/nodetool/getbatchlogreplaythrottle.rst","tools/nodetool/getcompactionthreshold.rst","tools/nodetool/getcompactionthroughput.rst","tools/nodetool/getconcurrency.rst","tools/nodetool/getconcurrentcompactors.rst","tools/nodetool/getconcurrentviewbuilders.rst","tools/nodetool/getendpoints.rst","tools/nodetool/getfullquerylog.rst","tools/nodetool/getinterdcstreamthroughput.rst","tools/nodetool/getlogginglevels.rst","tools/nodetool/getmaxhintwindow.rst","tools/nodetool/getseeds.rst","tools/nodetool/getsnapshotthrottle.rst","tools/nodetool/getsstables.rst","tools/nodetool/getstreamthroughput.rst","tools/nodetool/gettimeout.rst","tools/nodetool/gettraceprobability.rst","tools/nodetool/gossipinfo.rst","tools/nodetool/help.rst","tools/nodetool/import.rst","tools/nodetool/info.rst","tools/nodetool/invalidatecountercache.rst","tools/nodetool/invalidatekeycache.rst","tools/nodetool/invalidaterowcache.rst","tools/nodetool/join.rst","tools/nodetool/listsnapshots.rst","tools/nodetool/move.rst","tools/nodetool/netstats.rst","tools/nodetool/nodetool.rst","tools/nodetool/pausehandoff.rst","tools/nodetool/profileload.rst","tools/nodetool/proxyhistograms.rst","tools/nodetool/rangekeysample.rst","tools/nodetool/rebuild.rst","tools/nodetool/rebuild_index.rst","tools/nodetool/refresh.rst","tools/nodetool/refreshsizeestimates.rst","tools/nodetool/reloadlocalschema.rst","tools/nodetool/reloadseeds.rst","tools/nodetool/reloadssl.rst","tools/nodetool/reloadtriggers.rst","tools/nodetool/relocatesstables.rst","tools/nodetool/removenode.rst","tools/nodetool/repair.rst","tools/nodetool/repair_admin.rst","tools/nodetool/replaybatchlog.rst","tools/nodetool/resetfullquerylog.rst","tools/nodetool/resetlocalschema.rst","tools/nodetool/resumehandoff.rst","tools/nodetool/ring.rst","tools/nodetool/scrub.rst","tools/nodetool/setbatchlogreplaythrottle.rst","tools/nodetool/setcachecapacity.rst","tools/nodetool/setcachekeystosave.rst","tools/nodetool/setcompactionthreshold.rst","tools/nodetool/setcompactionthroughput.rst","tools/nodetool/setconcurrency.rst","tools/nodetool/setconcurrentcompactors.rst","tools/nodetool/setconcurrentviewbuilders.rst","tools/nodetool/sethintedhandoffthrottlekb.rst","tools/nodetool/setinterdcstreamthroughput.rst","tools/nodetool/setlogginglevel.rst","tools/nodetool/setmaxhintwindow.rst","tools/nodetool/setsnapshotthrottle.rst","tools/nodetool/setstreamthroughput.rst","tools/nodetool/settimeout.rst","tools/nodetool/settraceprobability.rst","tools/nodetool/sjk.rst","tools/nodetool/snapshot.rst","tools/nodetool/status.rst","tools/nodetool/statusautocompaction.rst","tools/nodetool/statusbackup.rst","tools/nodetool/statusbinary.rst","tools/nodetool/statusgossip.rst","tools/nodetool/statushandoff.rst","tools/nodetool/stop.rst","tools/nodetool/stopdaemon.rst","tools/nodetool/tablehistograms.rst","tools/nodetool/tablestats.rst","tools/nodetool/toppartitions.rst","tools/nodetool/tpstats.rst","tools/nodetool/truncatehints.rst","tools/nodetool/upgradesstables.rst","tools/nodetool/verify.rst","tools/nodetool/version.rst","tools/nodetool/viewbuildstatus.rst","tools/sstable/index.rst","tools/sstable/sstabledump.rst","tools/sstable/sstableexpiredblockers.rst","tools/sstable/sstablelevelreset.rst","tools/sstable/sstableloader.rst","tools/sstable/sstablemetadata.rst","tools/sstable/sstableofflinerelevel.rst","tools/sstable/sstablerepairedset.rst","tools/sstable/sstablescrub.rst","tools/sstable/sstablesplit.rst","tools/sstable/sstableupgrade.rst","tools/sstable/sstableutil.rst","tools/sstable/sstableverify.rst","troubleshooting/finding_nodes.rst","troubleshooting/index.rst","troubleshooting/reading_logs.rst","troubleshooting/use_nodetool.rst","troubleshooting/use_tools.rst"],objects:{},objnames:{},objtypes:{},terms:{"000kib":[73,218],"000mib":65,"00t89":29,"011mib":218,"014kib":73,"017kib":73,"018kib":[73,218],"01t02":229,"021kib":[73,218],"022kib":73,"024kib":73,"028809z":215,"029kib":73,"031mib":218,"033kib":73,"036kib":73,"03t04":29,"040kib":73,"044kib":73,"045kib":73,"049kib":73,"054mib":218,"055z":215,"056kib":218,"061kib":218,"062mib":218,"063kib":218,"064kib":218,"0665ae80b2d711e886c66d2c86545d91":216,"06t22":229,"077mib":218,"078kib":218,"081kib":218,"082kib":218,"090kib":218,"092mib":218,"096gib":226,"0974e5a0aa5811e8a0a06d2c86545d91":218,"099kib":218,"0_222":57,"0_232":57,"0d927649052c":73,"0ee8b91fdd0":230,"0f03de2d9ae1":69,"0f9a6a95":57,"0h00m04":230,"0percentil":18,"0x0000000000000000":231,"0x0000000000000003":21,"0x00000004":20,"0x00007f829c001000":231,"0x00007f82d0856000":231,"0x00007f82e800e000":231,"0x00007f82e80cc000":231,"0x00007f82e80d7000":231,"0x00007f82e84d0800":231,"0x2a19":231,"0x2a29":231,"0x2a2a":231,"0x2a2c":231,"0x3a74":231,"1000m":7,"100b":90,"100k":90,"100m":18,"100mb":[12,13,39],"1024l":70,"105kib":218,"10m":18,"10mb":[12,13],"10s":[91,231],"10x":[12,13,76],"115kib":73,"115mib":218,"11e6":91,"11e8":230,"11e9":[69,73,85],"122kib":218,"128kb":231,"128mb":[13,73],"128mib":[12,13,66],"128th":4,"12gb":80,"12h30m":29,"130mib":218,"142mib":222,"147mib":218,"14fa364d":57,"14t00":229,"150kib":218,"1520e8c38f00":85,"155kib":218,"15m":83,"160mb":76,"162kib":218,"165kib":218,"167kb":231,"16kb":58,"16kib":79,"16l":70,"16mb":[53,75],"16th":[12,13],"173kib":218,"176kib":218,"17t06":229,"184kb":231,"192kib":66,"19821dcea330":73,"19t03":[178,222],"1f20868b27c7":85,"1gb":73,"1kb":58,"1mo":29,"1n_r":35,"1st":[29,84],"1ubuntu1":57,"200m":[229,231],"203mib":218,"2062b290":230,"20m":231,"20t20":215,"217kb":231,"217mib":218,"21x":57,"22x":57,"22z":215,"232kib":73,"232mib":218,"233kib":73,"23t06":229,"23z":215,"244m":231,"245mib":218,"247mib":218,"24h":29,"25005289beb2":215,"250m":[12,13],"251m":231,"253mib":218,"256mb":[12,13],"256th":[12,13],"258mib":218,"25mb":231,"265kib":218,"266k":57,"270mib":218,"27t04":229,"280mib":218,"28757dde":57,"28757dde589f70410f9a6a95c39ee7e6cde63440e2b06b91ae6b200614fa364d":57,"28t17":229,"295kib":218,"296a2d30":73,"296a2d30c22a11e9b1350d927649052c":[71,73],"299kib":218,"29d":29,"29t00":229,"2cc0":230,"2e10":17,"2gb":80,"2nd":[12,13,18,84,87],"2xlarg":80,"300mib":218,"300s":[12,13],"307kib":218,"30kb":231,"30s":[12,13],"30t23":229,"30x":57,"311x":57,"314kib":218,"320k":57,"322kib":218,"325kib":218,"327e":91,"32gb":80,"32mb":[12,13,53],"331mib":218,"333kib":218,"33m":229,"348mib":218,"353mib":226,"3578d7de":215,"35ea8c9f":230,"361kib":218,"366b":231,"370mib":218,"378711z":215,"383b":231,"384z":215,"385b":231,"386kib":218,"387mib":218,"388mib":218,"392kib":218,"392mib":218,"394kib":218,"3f22a07b2bc6":215,"3ff3e5109f22":20,"3gb":[79,231],"3ms":231,"3rd":[12,13,83,87],"401mib":218,"406mib":218,"40a7":230,"40f3":20,"40fa":230,"40s":231,"40x":57,"410kib":218,"412kib":218,"416mib":226,"41b52700b4ed11e896476d2c86545d91":219,"41f9":85,"423b":231,"423kib":218,"4248dc9d790e":215,"431kib":218,"43kb":231,"440kib":218,"443kib":218,"446eae30c22a11e9b1350d927649052c":[71,73],"449mib":218,"452kib":218,"457mib":218,"458mib":218,"45f4":85,"461mib":218,"465kib":218,"46b4":85,"46e9":230,"476mib":218,"481mib":218,"482mib":222,"48d6":215,"4ae3":20,"4d40":215,"4dcdadd2":85,"4f34":85,"4f3438394e39374d3730":219,"4f58":230,"4kb":[18,58],"4mib":[12,13,66],"4th":85,"4xlarg":80,"500m":231,"501mib":218,"50kb":[12,13,231],"50m":[18,231],"50mb":[9,12,13,70,77,223],"50th":227,"512mb":[12,13],"512mib":[12,13,66],"513kib":218,"521kib":218,"522kib":73,"524kib":218,"536kib":218,"543mib":218,"545kib":218,"54kb":231,"550mib":218,"5573e5b09f14":20,"559kib":218,"561mib":218,"563kib":218,"563mib":218,"56m":229,"571kib":218,"576kb":231,"5850e9f0a63711e8a5c5091830ac5256":224,"589f7041":57,"591mib":218,"592kib":218,"5gb":[9,70],"5kb":[12,13],"5level":[9,70],"5mb":76,"603kib":218,"606mib":218,"60m":18,"61111111111111e":219,"613mib":218,"619kib":218,"61de":230,"635kib":218,"6365332094dd11e88f324f9c503e4753":[217,220,222,223,225,226],"638mib":218,"640kib":218,"646mib":218,"64k":[12,13],"64kb":58,"64kib":66,"650b":231,"65c429e08c5a11e8939edf4f403979ef":[215,217],"65kb":231,"663kib":218,"665kib":218,"669kb":231,"683kib":73,"684b":85,"684mib":218,"688kib":218,"690mib":218,"6e630115fd75":230,"6gb":230,"6ms":[12,13],"701mib":218,"715b":231,"718mib":218,"71b0a49":229,"725mib":218,"730kib":218,"732mib":218,"734mib":218,"736kb":231,"7374e9b5ab08c1f1e612bf72293ea14c959b0c3c":45,"737mib":218,"738mib":218,"743kib":218,"744mib":218,"751mib":218,"752e278f":230,"75th":83,"771mib":218,"775mib":226,"780mib":218,"782kib":218,"783522z":215,"789z":215,"791mib":218,"793kib":218,"798mib":218,"79kb":231,"7f3a":230,"802kib":218,"807kib":73,"812mib":218,"813kib":218,"814kib":218,"832mib":218,"835kib":218,"840kib":218,"843mib":218,"845b":231,"846kib":218,"848kib":218,"84fc":215,"861mib":218,"86400s":75,"869kb":231,"872kib":218,"877mib":218,"880mib":218,"882kib":218,"889mib":218,"892kib":218,"894mib":218,"89h4m48":29,"8gb":[80,231],"8th":[12,13,74],"8u222":57,"903mib":218,"90percentil":18,"90th":83,"911kib":218,"920kib":218,"920mib":218,"9328455af73f":230,"938kib":218,"954kib":218,"957mib":218,"95ac6470":91,"95th":83,"965kib":218,"9695b790a63211e8a6fb091830ac5256":224,"974b":230,"975kib":218,"983kib":218,"98th":83,"993mib":218,"996kib":218,"99f7":85,"99p":[18,73],"99percentil":[18,68],"99th":[83,227],"9dc1a293":230,"9e6054da04a7":230,"9eeb":85,"9gb":231,"9percentil":18,"9th":83,"\u00eatre":16,"abstract":[41,46],"boolean":[16,18,19,21,24,27,29,35,36,63,69,91],"break":[18,38,50,75,84,224,228,231],"byte":[4,12,13,16,20,29,35,58,60,63,66,69,83,101,119,155,206,218,230],"case":[4,10,11,12,13,17,18,19,20,21,23,24,25,29,31,33,34,35,42,45,46,50,52,53,58,60,66,68,72,73,80,81,86,88,90,91,92,218,229,230,231],"catch":[41,66,220],"class":[3,12,13,18,21,29,36,41,47,52,58,62,63,65,68,69,70,71,73,75,79,82,85,86,90,156,168,189,218,229],"default":[0,4,6,7,10,11,12,13,17,18,20,21,24,25,27,29,34,40,47,51,52,53,54,58,62,63,66,67,68,70,71,72,73,74,75,76,77,78,79,81,83,84,85,86,88,90,91,96,115,119,126,155,156,158,161,171,178,194,196,207,215,218,219,222,223,227,229,230,231],"enum":[16,67],"export":[47,51,65,83,91,231],"final":[21,27,31,35,41,43,47,51,63,70,73,74,75,80,86,93,172,214,231],"float":[16,17,18,19,21,24,26,29,72,79],"function":[0,3,12,13,16,17,19,22,23,25,27,29,35,39,46,55,61,62,63,69,70,86,87,89,91,214],"goto":40,"import":[1,18,21,29,30,31,34,39,47,48,52,58,63,67,68,71,75,80,81,82,83,85,91,156,227,230,231],"int":[4,16,17,18,20,21,24,25,26,27,29,39,52,63,69,71,73,74,79,83,84,85],"long":[4,12,13,20,29,34,45,46,53,62,65,71,75,79,81,83,84,90,221,222,229,231],"new":[0,1,3,4,7,12,13,17,18,21,23,24,25,26,27,28,29,31,34,35,39,40,41,43,44,46,47,50,51,52,56,57,58,60,61,62,63,65,66,67,69,70,71,72,73,75,76,78,80,81,84,86,88,90,147,154,156,217,218,220,222,225,227],"null":[16,17,18,19,20,21,24,25,29,41,69,91],"public":[12,13,21,39,41,42,51,52,53,73,86,87],"return":[12,13,16,18,20,21,23,24,25,26,27,29,31,34,46,63,67,68,69,79,81,84,90,171,172,216,217,231],"short":[4,32,35,43,83],"static":[7,8,12,13,16,17,18,25,31,32,35,43,73,83,87,219],"super":[4,18,31,86,89,90],"switch":[4,12,13,17,27,31,47,51,53,66,82,83,86,87],"throw":[12,13,21,41,52,227],"transient":[3,12,13,18,61,64],"true":[9,10,12,13,18,19,24,27,29,34,35,47,53,62,63,65,67,68,69,70,71,74,75,76,78,81,86,88,91,119,153,156,224],"try":[0,12,13,18,31,33,34,41,42,47,50,53,65,70,73,75,79,85,171,218,230,231],"var":[4,12,13,41,57,215,216,217,218,219,220,221,222,223,224,225,226,229,231],"void":52,"while":[0,4,12,13,16,17,18,19,20,29,32,35,37,45,50,51,62,63,66,67,68,72,73,76,78,79,80,81,85,86,91,218,227,229,230,231],AES:[12,13],AND:[16,18,20,21,25,27,36,63,69,73,86,90,91,229],ARE:10,AWS:[58,80,87],Added:[17,64],Adding:[12,13,18,27,29,35,53,61,66,82,86],And:[21,27,66,86],Are:46,Ave:29,BUT:41,Being:68,But:[18,20,27,29,34,40,41,50,53,73,84,91],CAS:[1,12,13,230],CCS:231,CFs:[171,178],CLS:91,CMS:231,DCs:[12,13,68],DNS:53,Doing:[17,93,214],EBS:80,For:[0,3,4,7,12,13,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,32,33,35,39,44,50,52,53,54,57,58,59,63,66,67,70,75,76,78,79,80,81,84,85,86,87,90,91,92,218,219,220,223,227,229,230,231],GCs:[12,13],HDs:231,Has:46,IDE:[37,44,48,61],IDEs:[37,47,48],IDs:[18,32,34,156,197],INTO:[12,13,16,18,20,21,24,29,63,71,73,85],IPs:[12,13,87,177,197],Ids:203,Its:73,JKS:[12,13],JPS:231,KBs:[12,13,81],LCS:[18,75,219],LTS:[57,65],MVs:39,NFS:80,NOT:[12,13,16,17,18,20,21,23,25,27,28,29,73],NTS:[13,58],N_s:35,Not:[20,27,50,58,60,65,75,79],ONE:[0,12,13,18,83,84,90,91],One:[0,6,11,31,34,50,52,53,54,60,65,73,75,78,231],PFS:[12,13],Pis:80,QPS:227,THE:[10,12,13],TLS:[12,13,73,82,218],That:[0,18,19,25,29,34,50,53,68,77,91,231],The:[0,1,3,4,6,7,8,9,10,11,12,13,15,16,17,18,19,21,23,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,43,44,45,47,49,50,51,52,53,54,57,58,59,60,61,62,63,64,65,66,67,68,71,72,73,74,76,77,78,79,80,81,83,84,85,86,87,88,89,90,91,92,96,99,104,106,112,116,122,125,126,129,134,141,143,147,154,156,158,162,163,169,171,172,178,181,182,189,196,197,198,205,207,210,211,213,217,218,219,220,222,223,224,225,228,229,230,231],Their:29,Then:[13,20,52,53,63,75,86,220,224,231],There:[12,13,17,18,19,20,21,29,32,34,35,37,47,50,52,53,58,60,62,66,75,77,81,83,85,86,90,221,223,227,230,231],These:[0,4,12,13,18,21,37,47,57,62,66,73,83,85,86,90,91,225,227,228,229,230,231],USE:[10,16,21,22,62,63,69,70,71],USING:[16,20,23,28,29,78],Use:[7,12,13,18,20,27,31,32,53,59,61,63,73,74,82,86,90,91,93,94,99,156,161,171,172,203,210,214,215,220,221,222,225,228],Used:[30,31,32,33,34,35,36,37,83,231],Useful:[75,92,231],Uses:[12,13,24,82,87],Using:[1,18,20,38,43,52,53,58,64,82,86,93,214,215,218,222,225,229],WILL:[12,13],WITH:[16,18,19,23,25,27,36,39,58,62,63,68,69,71,72,73,74,75,79,85,86,90,91],Will:[12,13,61,63,81,119,156,189,220],With:[0,1,12,13,20,24,49,53,58,63,67,68,73,75,84,85,88,95,172,229,231],Yes:53,_build:65,_build_java:65,_by_:31,_cache_max_entri:86,_cdc:74,_development_how_to_review:44,_if_:[12,13],_main:65,_must_:[12,13],_onli:13,_only_:229,_path_to_snapshot_fold:73,_trace:[83,230],_udt:21,_update_interval_in_m:86,_use:21,_validity_in_m:86,_x86_64_:231,a6fd:230,a8ed:69,abil:[21,27,29,37,53,79],abilityid:23,abl:[0,1,12,13,21,29,32,33,35,40,43,47,52,53,62,67,68,71,75,86,227,228],abort:40,about:[0,1,4,10,12,13,18,27,30,31,33,34,35,36,43,47,48,50,52,53,58,63,67,69,72,75,85,87,91,98,156,177,219,229,230,231],abov:[0,4,12,13,15,18,19,20,21,29,42,47,50,53,58,77,79,83,90,93,214,218,225,231],absenc:19,absent:0,abstracttyp:29,ac79:230,acceler:89,accept:[0,12,13,17,18,19,20,24,29,50,52,58,62,63,72,81,84,88,114,156],access:[3,12,13,17,18,27,29,31,33,37,39,47,50,69,70,73,80,81,82,83,89,218,219,227,228,231],accident:[31,217],accompani:[12,13],accomplish:33,accord:[0,1,4,12,31,53],accordingli:[12,13,21,53],account:[1,12,13,29,43,52,231],accru:[75,83],accrual:0,accumul:[12,13,75,81,83],accur:[12,13,31,35,53,72,88,177,219],accuraci:[72,158,207],acheiv:86,achiev:[0,1,12,13,39,75,83],achil:55,ack:[4,12,13,68,84],acknowledg:[0,32,81,84],acoount:83,acquir:[27,66,83],across:[0,1,10,12,13,18,27,32,34,35,39,50,67,81,83,85,86,87,90,156,160,219,226],act:[0,13,33,35,68,229],action:[12,13,20,27,47,63,81,226,231],activ:[4,9,12,13,37,44,50,62,66,69,74,83,85,91,156,158,207,227,229,230,231],active_task:69,active_tasks_limit:69,activetask:83,actor:86,actual:[0,4,12,13,20,28,35,37,41,43,46,51,53,66,67,69,70,75,76,85,87,90,171,222,231],acycl:27,adapt:[30,31,32,33,34,35,36,37],add:[0,6,7,12,13,16,17,18,29,31,32,35,39,40,43,44,45,46,48,50,51,54,57,61,62,63,65,67,68,70,71,73,75,81,84,85,86,90,92,220,225,229],addamsfamili:18,added:[0,1,3,4,12,17,18,21,26,31,43,46,51,57,63,66,67,69,71,73,74,75,77,81,84,85,223],adding:[0,12,13,20,21,31,35,39,46,58,80,85,91,220,226],addit:[0,1,3,7,12,13,16,18,20,26,27,29,31,32,33,34,35,39,47,50,54,58,60,62,63,66,67,68,69,70,71,75,78,79,80,81,83,84,86,91,172,229,231],addition:[18,20,40,68,78,85,90,229],additional_write_polici:[18,73],addr:66,address:[10,12,13,15,24,29,32,33,36,40,47,50,54,60,61,62,63,65,66,69,70,71,73,83,85,87,88,89,91,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,147,148,149,150,151,152,153,154,155,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,230,231],addrow:73,adher:17,adjac:[39,78],adjust:[12,13,18,32,58,72],adler32:4,adopt:[18,66],advanc:[0,3,12,13,43,69,70,82,86,92,228],advantag:[0,34,58,80],advers:[53,230],advic:[50,53],advis:[12,13,19,25,29,53,57],advoc:0,ae6b2006:57,aefb:215,af08:20,afd:29,affect:[0,7,8,13,18,31,39,46,50,53,60,62,67,75,84,178,222,227,231],afford:[12,13],afraid:34,after:[5,9,12,13,16,17,18,19,20,21,23,24,25,31,32,34,39,47,50,51,53,57,58,62,63,65,68,71,73,74,75,76,80,81,82,83,84,85,86,87,91,220,221,224],afterward:[7,40,43,47,52],afunct:21,again:[0,12,13,32,50,51,63,65,71,75,85,88,91,221,224],against:[12,13,21,25,34,37,43,50,52,53,63,67,69,79,80,81,85,88,90,91,171,219,231],agent:[31,49,62,63,71,73,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,147,148,149,150,151,152,153,154,155,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,231],agentlib:47,aggreg:[3,12,13,16,17,20,22,25,27,62,63,69,70,83,91],aggregate_nam:18,aggress:227,ago:221,agre:[0,84],ahead:56,aid:[3,19],aim:[12,229],akeyspac:21,akin:66,alg:[73,218],algorithm:[0,12,13,18,58,73,79,88,92,218,229],alia:[17,20,21,55],alias:[12,13,17,25],alic:27,align:41,aliv:[0,12,13],all:[0,1,3,4,7,9,12,13,16,18,19,20,21,24,25,26,29,30,31,32,33,34,35,36,37,39,40,41,42,43,45,46,47,49,50,52,57,60,61,62,63,65,66,67,68,69,70,72,73,74,75,76,77,78,79,81,83,84,85,86,88,90,91,92,93,96,97,98,114,126,131,147,148,153,156,158,160,169,172,178,194,196,198,207,209,210,211,214,216,220,222,226,227,229,230,231],allmemtableslivedatas:83,allmemtablesoffheaps:83,allmemtablesonheaps:83,alloc:[0,12,13,53,58,65,66,74,80,83,92],allocate_tokens_for_keyspac:[69,88],allocate_tokens_for_local_replication_factor:58,allow:[0,1,3,4,7,10,11,12,13,16,17,18,19,21,23,24,25,29,30,31,34,40,43,44,54,58,63,67,68,69,72,73,74,75,78,79,80,84,85,87,90,222,230,231],allow_unlimited_concurrent_valid:13,allowallauthent:[12,13,86],allowallauthor:[12,13,86],allowallinternodeauthent:[12,13],allowallnetworkauthor:[12,13],almost:[0,4,12,13,21,29,66,76,227,231],alon:[18,41],along:[0,12,13,20,34,44,51,65,70,81,153,156,229],alongsid:[59,91],alphabet:41,alphanumer:[18,27],alreadi:[12,13,18,21,23,25,29,31,33,34,50,53,58,63,65,66,73,77,79,86,90,93,210,214,223],also:[0,3,4,9,12,13,17,18,19,20,21,24,25,27,29,30,31,32,33,35,37,39,40,43,47,50,51,52,53,54,57,58,63,65,67,68,70,71,73,74,75,76,77,78,80,81,83,84,86,88,91,126,211,224,225,229,230,231],alter:[0,16,17,22,24,35,53,68,69,72,74,75,79,85,86],alter_keyspac:62,alter_keyspace_stat:19,alter_rol:62,alter_role_stat:19,alter_t:62,alter_table_instruct:18,alter_table_stat:19,alter_typ:62,alter_type_modif:29,alter_type_stat:[19,29],alter_user_stat:19,alter_view:62,altern:[17,18,19,20,24,29,47,50,54,57,73,80,81,84,86,218],although:[12,13,34,35,50,66,90,229,231],altogeth:66,alwai:[0,3,4,12,13,16,17,18,20,21,25,29,34,41,43,50,51,52,53,58,66,68,75,76,80,90,227,231],amazon:[0,3,57],amazonaw:65,amen:[31,33,34,36],amend:45,amenities_by_room:[31,36],amenity_nam:36,ami:57,among:[39,84],amongst:18,amount:[0,7,12,13,18,20,29,35,47,50,52,53,67,68,75,79,80,81,83,85,88,91,171,172,231],amplif:[58,76,80],anaggreg:21,analogu:20,analysi:[31,35,38,228,229],analyt:[31,72],analyz:[32,35,39,52,231],ancestor:[4,225],angl:29,ani:[0,4,7,12,13,17,18,19,20,21,24,25,27,28,29,31,32,34,37,40,42,43,45,46,47,49,50,51,52,54,57,58,61,62,63,65,66,67,68,69,73,75,78,80,81,83,84,85,86,88,90,91,94,147,153,156,161,178,194,215,219,222,224,225,228,229,230],announc:87,anonym:[19,62,69,70],anoth:[1,12,13,18,21,27,29,31,34,35,39,52,63,66,68,69,71,73,75,84,86,91,216,223,228,231],anotherarg:21,answer:[48,231],ant:[40,42,45,47,50,52,65],antclassload:52,anti:[0,12,13,29,38,60,68,81],anticip:[0,18,68],anticompact:[75,83,203,223],anticompactiontim:83,antientropystag:[69,83,230],antipattern:80,anymor:[45,75],anyon:41,anyth:[54,68,75],anywai:[12,13,65],anywher:[20,66,74],apach:[0,1,2,3,5,7,9,12,13,14,21,28,37,39,41,42,43,45,46,48,49,50,52,53,56,57,60,62,63,65,66,67,68,69,70,71,73,75,79,81,83,86,89,92,93,215,216,217,218,219,220,221,222,223,225,226,229],apart:70,api:[0,12,13,15,24,59,67,69,87],appar:31,appear:[12,13,18,19,21,31,63,75,78,84,91],append:[4,29,31,45,60,70,80,81,83,91,229],appendic:[22,61],appendix:[19,22],appl:29,appli:[0,4,6,12,13,16,17,18,19,20,27,29,45,50,52,53,66,81,83,84,88,90,91],applic:[0,1,3,12,13,18,27,30,31,32,34,35,36,38,39,41,44,46,47,61,62,64,65,68,69,70,73,79,86,90,229],appreci:50,approach:[4,12,13,31,32,33,34,35,39,66,75,88],appropri:[12,13,18,27,29,46,49,50,51,63,66,86,87,88,229],approv:40,approxim:[0,35,58,63,77,78,83,219],apt:[57,231],arbitrari:[18,19,29,60,71,90],architectur:[3,32,53,61,89],archiv:[4,7,9,12,13,14,51,54,57,61,63,74,119],archive_command:[62,119],archive_retri:[63,119],archiveit:63,area:[3,44,79,231],aren:[20,85],arg:[21,92,156,195,215,222,225],argnam:21,argnum:21,argument:[6,12,18,20,21,23,24,53,54,58,62,63,71,73,79,90,91,94,95,96,97,99,104,106,112,116,122,125,126,129,131,134,141,143,146,147,154,158,161,162,163,169,170,171,172,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,203,205,206,207,209,210,211,213,222],arguments_declar:21,arguments_signatur:21,arithmet:[17,19,22,61],arithmetic_oper:19,around:[12,13,27,31,34,39,62,75,80,87,231],arrai:[12,13,30,53,57,66],arriv:[12,13,50,53,66],arrow:33,artem:31,artifact:[33,40,42,47,48,49],artifici:18,asap:17,asc:[16,18,20,36,69],ascend:[18,20],ascii:[16,19,21,24,29],asdf:215,asf:[15,47,49,51],ask:[5,35,50,51,52,61,86],aspect:[0,18,68,90],assassin:156,assertionerror:41,assertrow:52,assess:[230,231],assign:[0,12,13,20,27,32,34,53],assist:31,associ:[0,12,13,18,33,63,69,89,225,227],assum:[0,7,12,13,18,21,32,33,34,35,43,47,86,87,227,231],assumpt:[0,86],assur:64,assynchron:9,asterisk:32,astyanax:55,async:[12,13,86],asyncappend:9,asyncdebuglog:9,asynchron:[9,23,53,63,67,80],asynchroni:83,asynclog:9,ata:34,atabl:21,atom:[3,18,20,28,45,84],atomiclong:83,attach:[44,50,86,89,231],attack:86,attemp:83,attempt:[0,12,13,18,23,25,27,29,31,53,58,62,66,68,70,78,81,83,84,85,86,91,93,172,214,224,229],attent:[41,42,50,51],attract:31,attribut:[30,31,32,39,57,62,70,75],audienc:[0,68],audit:[3,12,13,34,61,63,64,105,115,156],audit_log:[12,13],audit_logging_opt:[62,70],audit_logging_options_en:69,audit_logs_dir:[62,70],auditlog:[62,115],auditlogentrytyp:62,auditlogkeyspac:62,auditlogview:[3,62,70],audt:70,aug:[62,71,73,224],auth:[12,13,62,70,73,218],authent:[17,57,62,63,70,73,82,91,218],authenticatedus:[12,13],author:[16,27,29,43,50,82,90],authorizationproxi:86,authprovid:[73,218],auto:[0,12,13,18,53,65,71,90,198],auto_bootstrap:88,auto_snapshot:[69,71],autocompact:[75,106,116,156,198],autom:[37,41,44],automat:[7,12,13,20,21,23,39,40,43,47,52,53,57,62,63,67,71,75,85,86,88,90,92,172],automatic_sstable_upgrad:69,avail:[0,2,3,7,10,12,13,15,18,21,27,29,30,31,32,33,34,35,36,37,40,47,50,51,52,58,60,65,66,68,70,74,79,81,84,85,86,87,89,91,96,126,169,178,189,210,227,229,231],availabil:[12,13],available_rooms_by_hotel_d:[31,35,36],availablil:58,averag:[12,13,18,21,35,57,77,83,218,229,230,231],average_live_cells_per_slice_last_five_minut:206,average_s:18,average_tombstones_per_slice_last_five_minut:206,averagefin:21,averagest:21,avg:[35,73,218,231],avg_bucket_s:77,avgqu:231,avgrq:231,avoid:[0,12,13,18,19,34,39,41,46,50,63,66,67,68,72,75,76,78,80,83,86,87,91,211,218],awai:[47,88,91,230],await:231,awar:[0,12,13,18,50,66,72,79,81,177,227,230],awesom:90,axi:65,az123:32,azur:80,b00c:85,b09:57,b10:57,b124:20,b135:73,b2c5b10:229,b32a:85,b64cb32a:85,b70de1d0:20,b7a2:230,b7c5:230,b957:215,b9c5:230,back:[3,12,13,18,39,43,63,66,68,69,70,75,81,83,84,88,153,156,230],backend:[12,13],background:[51,53,82,86,229,231],backlog:[12,13,66],backpressur:[12,13,66],backpressurestrategi:12,backup:[3,6,12,13,61,75,82,88,91,107,117,156,199,224,225],backward:[12,13,17,18,22,27,29,79],bad:[12,13,21,53,79,86,87,227,230],balanc:[0,3,12,13,31,58,67,81,88,227,230],banana:29,band:29,bandwidth:[12,13,66,67,89,231],bank:31,bar:[19,41,231],bardet:29,bare:[12,13],base:[0,1,4,8,12,13,17,18,20,21,25,26,27,29,31,32,34,35,39,40,42,44,45,48,50,51,52,53,57,58,62,64,66,70,75,79,80,83,84,86,88,89,219,227,230],baseurl:57,bash:[7,8,53,65,231],bashrc:65,basi:[0,12,13,18,40,53,63,66,79],basic:[0,12,13,18,31,32,39,66,69,75,77,78,80,90,93,214,225,228],bat:49,batch:[0,2,4,12,13,16,18,22,34,52,61,62,63,68,69,82,84,90,91,227,231],batch_remov:[83,230],batch_stat:19,batch_stor:[83,230],batchlog:[1,20,83,128,156,173,179],batchtimemilli:63,batchtyp:90,bbee:73,bc9cf530b1da11e886c66d2c86545d91:222,be34:20,bear:18,beatl:29,beca:91,becam:[0,3],becaus:[0,4,12,13,18,20,21,27,31,34,35,39,63,65,66,71,75,79,81,83,84,86,219,222,231],becom:[0,4,12,13,18,21,27,39,50,71,75,78,83,84,86,88],been:[0,1,4,12,13,17,18,20,21,22,27,29,31,39,46,50,51,58,65,66,67,68,69,71,73,75,76,79,80,84,85,86,178,222,225,227],befor:[0,4,7,12,13,17,18,20,21,23,26,28,29,32,33,35,40,43,44,47,48,51,52,55,62,63,66,68,69,70,71,73,75,77,79,81,83,84,86,87,88,90,91,92,119,196,214,215,216,217,218,219,220,221,222,223,224,225,226,227],began:3,begin:[16,19,20,31,33,34,52,63,86,91],beginn:50,begintoken:91,behalf:31,behav:[12,13,68],behavior:[0,12,13,16,17,18,21,24,29,41,46,72,78,82,88,227],behind:[12,13,41,53,62,63,70,76],being:[0,4,12,13,18,20,24,29,31,35,46,51,52,53,62,63,66,68,70,72,73,75,76,77,83,84,85,88,220,229,230,231],believ:[81,227],bellow:9,belong:[0,3,10,11,18,20,21,67,83,96,156],below:[12,13,18,19,20,24,27,29,30,31,32,33,34,35,39,42,50,64,66,70,75,77,83,91,102,218,220,227,229],benchmark:[7,63,67,79,80,90],benefici:78,benefit:[0,12,13,44,58,62,72,75,80,82,218],best:[0,3,12,13,31,34,36,37,39,43,51,52,58,75,76,81,82,86,87,92,227,231],best_effort:[12,13],beta1:57,better:[12,13,41,43,44,50,66,76,79,80,81,218,230,231],between:[0,1,4,12,13,16,17,18,19,20,22,30,31,32,33,38,39,50,53,60,63,64,66,67,72,75,79,81,83,84,85,86,89,90,171,194,231],beyond:[12,13,54,68,78,91,211],big:[12,13,35,71,73,75,99,215,216,217,218,219,221,222,223,224,225,226],bigg:35,bigger:[18,58,77],biggest:21,bigint:[16,21,24,26,29,69],bigintasblob:21,bigtabl:3,bigtableread:[216,222,224,226],billion:35,bin:[6,47,57,59,63,65,73,91,92,229],binari:[21,51,56,62,63,70,86,108,118,156,200,229],binauditlogg:[62,115],bind:[12,13,17,19,21,53,60,63,73],bind_mark:[19,20,25,29],binlog:[63,70],biolat:231,biolog:18,biosnoop:231,birth:20,birth_year:20,bit:[21,24,29,35,42,50,51,53,57,65,68,79,80],bite:53,bitempor:89,bitrot:79,bitstr:16,black:[12,13],blank:[6,12,13,41,53,219],blindli:53,blob:[16,17,19,24,29,61,79,81,90],blob_plain:51,blobasbigint:21,blobastyp:21,block:[4,12,13,18,45,54,62,66,67,69,70,75,76,79,80,82,83,85,86,93,119,214,229,230,231],blockdev:58,blocked_task:69,blocked_tasks_all_tim:69,blockedonalloc:[12,13],blockingbufferhandl:66,blog:[12,13,20,58],blog_til:20,blog_titl:20,blogpost:90,bloom:[4,18,61,67,68,80,82,83,219],bloom_filter_false_posit:206,bloom_filter_false_ratio:206,bloom_filter_fp_ch:[4,18,72,73],bloom_filter_off_heap_memory_us:206,bloom_filter_space_us:206,bloomfilterdiskspaceus:83,bloomfilterfalseposit:83,bloomfilterfalseratio:83,bloomfilteroffheapmemoryus:83,blunt:86,bnf:19,bob:[20,27],bodi:[12,18,19,66,90],bog:30,boilerpl:48,book:[30,33],boolstyl:91,boost:[12,13],boot:53,bootstrap:[0,7,12,13,58,60,61,65,67,75,79,82,83,86,92,156,161,189,220],born:20,borrow:66,both:[0,1,3,7,12,13,18,20,21,25,29,30,31,35,44,45,46,50,51,53,54,57,60,62,63,66,67,68,72,75,79,80,83,84,86,88,90,91,225,231],bottleneck:[12,13],bottom:53,bound:[4,12,13,18,19,29,63,66,67,70,73,80,86],boundari:[67,220],box:[3,12,13,33,86,87],brace:41,bracket:[19,29],braket:19,branch:[40,43,45,46,47,51,52],branchnam:50,brand:0,breadcrumb:227,breakdown:[230,231],breakpoint:47,breed:52,brendangregg:231,breviti:66,brief:[58,231],briefli:[1,230],bring:[0,12,13,60,65,67],brk:53,broadcast:[12,13],broadcast_address:87,broken:[12,75,83,222],brows:[12,13,51,79,92,215,216,217,218,219,220,221,222,223,225,226],browser:[91,231],btm:49,bucket:[0,35,77],bucket_high:77,bucket_low:77,buff:231,buffer:[4,12,13,58,63,65,66,73,74,81,83],bufferpool:[65,82],buffers_mb:231,bug:[17,45,48,51,52,53,61,85],build:[13,25,34,37,40,42,43,44,45,48,49,50,51,52,57,61,64,73,83,85,89,90,156,213],builder:[12,13,73,133,156,186],buildfil:65,built:[1,25,35,39,47,65,83],bulk:[61,67,81,82,218],bump:[4,17,220],bunch:41,burn:74,busi:[0,31,34],button:[43,47,53],bypassconcurrentvalidatorslimit:13,bytebuff:[21,66],byteorderedpartition:[12,13,21],bytesanticompact:83,bytescompact:83,bytesflush:83,bytesmutatedanticompact:83,bytespendingrepair:83,bytesrepair:83,bytestyp:[16,219],bytesunrepair:83,bytesvalid:83,c09b:85,c217:73,c22a:73,c3909740:69,c39ee7e6:57,c60d:215,c73de1d3:20,c7556770:69,c_l:35,cach:[0,7,12,13,18,27,42,53,54,58,73,80,82,87,147,149,150,151,156,180,181,230],cachecleanupexecutor:[69,83,230],cached_mb:231,cachenam:83,cachestat:231,cadenc:65,calcul:[0,8,12,13,30,31,32,38,66,72,73,74,78,83,84,87,218],call:[0,7,13,16,18,19,20,21,27,31,41,43,48,61,63,68,70,71,73,75,79,80,83,88,156,189,231],callback:[66,83],caller:41,can:[0,3,4,5,6,7,8,9,10,12,13,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,34,35,37,40,41,42,43,44,45,46,47,50,51,52,54,57,58,59,61,62,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,83,84,85,86,87,88,90,91,94,96,97,99,104,106,112,116,119,122,125,126,129,131,134,141,143,146,147,154,158,161,162,163,169,170,171,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,203,205,206,207,209,210,211,213,215,216,217,218,220,221,222,223,224,227,228,229,230,231],cancel:[17,172],candid:76,cannot:[1,6,12,13,16,18,20,21,24,25,27,29,34,39,52,60,62,63,65,66,67,68,69,73,75,81,86,94,156,230],cap:[2,19,130,136,142,156,183,188,191,192],capabl:[0,12,13,53,63,89,91],capac:[0,12,13,35,39,62,66,74,83,87,89,156,158,180,207,226,227,229,231],capacit:227,capacity_byt:69,capi:61,captur:[12,13,18,31,61,63,82,86,93,229],cardin:219,care:[12,13,75,90,171,231],carefulli:[42,58],carlo:27,carpent:[30,31,32,33,34,35,36,37],carri:[41,171],cascad:34,cascommit:83,cascontent:[143,193],casprepar:83,caspropos:83,casread:83,cassablanca:29,cassafort:55,cassanda:0,cassandra:[0,1,2,3,4,5,8,9,15,17,18,19,20,21,25,27,28,29,30,31,32,33,35,36,38,39,41,42,44,45,49,50,55,56,58,59,60,62,65,66,67,68,69,71,72,73,75,76,79,80,81,83,85,87,88,91,92,115,119,135,156,167,171,174,178,204,212,214,215,216,217,218,219,220,221,222,223,225,226,227,228,230,231],cassandra_env:7,cassandra_flam:231,cassandra_hom:[4,12,13,65,74,81,86,229],cassandra_job_dsl_se:40,cassandra_rackdc:11,cassandra_stack:231,cassandra_use_jdk11:65,cassandraauthor:[12,13,86],cassandradaemon:[47,65],cassandrafullquerylog:63,cassandrakeyspacesimpl:68,cassandralogin:86,cassandranetworkauthor:[12,13],cassandrarolemanag:[12,13,86],casser:55,cassi:55,cast:[17,20,25],caswrit:83,cat:[29,215,231],catalog:[71,73],catalogkeyspac:[71,73],catalokeyspac:71,categor:83,categori:[18,19,20,21,70,115],caught:[46,83],caus:[0,4,7,12,13,25,34,53,66,75,77,78,85,86,220,222,229,230,231],caution:[12,13,79],caveat:86,cbc:[12,13],ccm:[40,46,52,231],ccmlib:52,cd941b956e60:230,cdc:[12,13,18,73],cdc_enabl:74,cdc_free_space_check_interval_m:74,cdc_free_space_in_mb:74,cdc_raw:[12,13,74],cdc_raw_directori:74,cdccompactor:[12,13],cde63440:57,cdf7:69,cell:[12,13,16,29,35,83,126,211,215,219,230],center:[12,13,18,27,29,31,53,58,60,81,87,88,112,122,156,171],cento:57,central:[47,86,91,227],centric:[27,39,43],certain:[0,1,4,12,13,16,18,27,43,52,58,67,68,75,86,216],certainli:[21,31,33,35],certif:[13,82,156,167],cf188983:215,cfname:[141,158,207],cfs:41,chain:27,challeng:[3,44,89],chanc:[44,72,84,219],chang:[0,4,7,12,13,18,19,22,27,29,34,39,40,42,43,44,45,47,48,51,56,58,60,61,62,63,66,68,69,71,75,76,79,82,83,85,86,189,217,220,229,231],changelog:51,channel:0,charact:[18,19,20,24,27,29,35,41,90,91],character:[12,13],characterist:7,chat:15,cheap:[12,13,18,64],chebotko:[31,32,37],check:[0,12,13,20,31,40,41,46,47,49,50,51,52,53,54,57,63,65,66,68,72,73,74,75,76,78,83,86,93,147,156,171,206,211,214,226,230],checklist:[48,50,61],checkout:[43,47,50,51],checksum:[4,12,13,18,67,79,156,211,225],chen:30,cherri:45,chess:20,child:91,chmod:[62,73,86],choic:[0,6,12,13,18,39,51,57,61,75,78,79,82,221],choos:[0,1,3,12,13,18,48,51,55,56,80,83],chord:0,chose:0,chosen:[0,12,13,18,21,230],chown:86,christoph:29,chrome:91,chronicl:[62,63,70],chunk:[4,12,13,18,53,58,66,67,69,79,91],chunk_length_in_kb:[18,58,73,79],chunk_length_kb:[12,13],chunk_lenth_in_kb:18,chunkcach:83,chunksiz:91,churn:[12,13],cipher:[12,13,73,86,218],cipher_suit:[12,13],circular:27,circumst:[18,34,84],citi:[29,36],claim:37,clash:19,class_nam:[4,12,13,62],classic:9,classload:[52,65],classpath:[12,13,21,29,83],claus:[17,18,21,23,24,25,27,41],clean:[12,13,41,63,83,93,96,156,172,174,214,218],cleanli:50,cleanup:[53,68,75,82,83,126,156,172,203,225],clear:[7,13,46,50,63,73,93,98,147],clearconnectionhistori:83,clearli:33,clearsnapshot:[71,140,156,191],click:[20,47,50,51,52,231],client:[0,1,4,6,7,8,12,13,15,17,18,20,24,27,29,34,39,46,53,54,56,57,58,61,62,70,73,74,80,81,82,84,91,98,156,218,222,228,229,230,231],client_encryption_opt:[73,86,218],clientrequest:83,clientsbyprotocolvers:83,clientstat:156,clock:[0,12,13],clockr:[12,13],clockwis:0,clojur:56,clone:[47,51,53,65,91,231],close:[12,13,22,43,51,73,86,231],closer:72,closest:84,cloud:[58,82],clue:[31,231],cluster:[1,2,3,4,7,8,9,10,11,12,13,16,17,20,21,28,29,31,34,35,36,37,39,46,52,54,58,59,60,61,63,65,66,67,68,69,71,73,75,77,80,81,83,84,85,86,87,88,90,91,93,103,124,128,145,156,179,197,214,219,226,227,228,229,231],cluster_nam:[54,59,69],clustering_column:18,clustering_ord:18,clusteringtyp:219,cmake:231,cmd:231,cmsparallelremarken:47,coalesc:[12,13],coalescingstrategi:[12,13],codahal:9,codd:34,code:[12,13,17,19,21,28,29,32,35,39,40,43,44,45,46,47,48,49,52,61,65,79,83,227,231],codebas:51,codestyl:41,coher:89,col:[21,90],cold:[12,13],collat:[12,13],collect:[0,3,8,12,13,17,18,19,20,21,22,24,30,32,37,54,80,82,83,84,90,126,229],collection_liter:19,collection_typ:29,collector:229,color:[29,91,231],colum:29,column1:16,column:[0,1,3,4,12,13,16,17,18,19,20,21,22,23,24,25,27,31,32,34,35,36,37,39,57,63,66,69,71,79,83,84,85,89,90,91,141,158,178,196,207,219,222,224,229,230],column_count:63,column_definit:[18,63],column_nam:[18,20,23],columnfamili:[4,12,13,16,41,75,85,217,220],columnspec:90,colupdatetimedeltahistogram:83,com:[9,12,13,21,40,41,43,45,51,57,65,86,231],combin:[0,3,4,12,13,17,58,66,78,84],come:[12,13,16,33,35,62,86,231],comingl:78,comma:[12,13,18,19,20,54,62,70,73,86,88,91,92,115,158,161,207,218],command:[0,3,7,9,12,13,18,25,29,34,37,42,45,51,52,53,54,59,62,63,65,69,71,73,79,81,82,85,86,90,92,93,94,95,96,97,99,104,106,112,116,119,122,125,126,129,131,134,141,143,146,147,154,156,158,161,162,163,169,170,171,172,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,203,205,206,207,209,210,211,213,214,217,218,223,224,225,228,229,230,231],commandlin:71,comment:[4,9,10,12,13,18,22,25,36,41,43,44,46,73,86],commit:[4,7,12,13,15,18,43,48,50,51,61,66,83,225,231],commitlog:[2,12,13,14,53,54,60,61,80,82,219,229,230],commitlog_archiv:[4,12,13,54],commitlog_compress:4,commitlog_directori:[4,54,80],commitlog_segment_size_in_mb:[4,53],commitlog_sync:4,commitlog_sync_batch_window_in_m:4,commitlog_sync_period_in_m:4,commitlog_total_space_in_mb:4,commitlogposit:219,commitlogread:74,commitlogreadhandl:74,commitlogseg:[12,13,82,83],committ:[44,45,48,50,51,52],commod:[2,3],common:[0,21,22,31,32,34,41,43,46,50,58,62,63,64,66,67,78,82,85,91,227,228,231],common_nam:18,commonli:[7,81,156],commun:[0,7,10,12,13,15,31,44,46,47,50,53,54,59,60,66,70,73,86,218],commut:53,compact:[4,7,12,13,18,22,53,56,61,67,68,69,71,72,73,78,79,80,82,90,96,100,101,126,129,130,156,169,172,178,182,183,189,198,203,210,216,217,218,219,220,222,225,228,229,231],compacted_partition_maximum_byt:206,compacted_partition_mean_byt:206,compacted_partition_minimum_byt:206,compaction_:203,compaction_histori:[12,229],compaction_throughput:230,compaction_window_s:78,compaction_window_unit:78,compactionbyteswritten:83,compactionexecutor:[69,83,230],compactionhistori:[75,156],compactionid:203,compactionparamet:75,compactionparametersjson:75,compactions_in_progress:225,compactionstat:[75,156,230],compactiontask:229,compactor:[132,156,185],compani:34,compar:[0,1,3,4,12,13,38,42,50,57,63,76,83,84,85,90,227,230],compareslog:63,comparis:35,comparison:[12,13,63],compat:[12,13,16,17,18,20,22,27,46,50,73,79,93,231],compatilibi:29,compet:[12,13,79],compil:[41,42,45,47,65,91],compilerthread3:231,complain:47,complet:[1,12,13,20,21,31,36,37,50,51,53,63,66,67,68,69,71,74,78,81,83,84,85,86,88,91,156,170,172,222,224,225,230],completed_task:69,completedtask:83,complex:[0,4,12,13,16,21,29,30,32,34,35,39,50],complexarg:21,complianc:[48,61,63],compliant:[12,13,21,86],complic:50,compon:[0,4,12,13,18,31,39,46,72,83,86,156,189,231],compos:[18,20,29],composit:[4,18,39],compound:[24,39],comprehens:46,compress:[0,4,7,12,13,18,52,56,61,66,69,73,76,80,81,82,83,90,219],compression_level:[18,79],compression_metadata_off_heap_memory_us:206,compressioninfo:[4,67,71,73],compressionmetadataoffheapmemoryus:83,compressionratio:83,compressor:[4,12,13,18,79,81,219],compris:[4,18,62,79],compromis:[1,51,86],comput:[0,4,7,12,13,18,21,35,65,226],concaten:[21,62,70],concentr:30,concept:[0,27,34,37,39,75,78],conceptu:[31,33,34,37,38,39,61],concern:[20,21,32,231],conclus:[12,13],concret:[19,29],concurr:[0,1,12,13,40,66,73,80,83,90,131,132,133,156,171,184,185,186,218,230,231],concurrent_compactor:230,concurrent_materialized_view_build:25,concurrent_writ:4,concurrentmarksweep:80,condens:20,condit:[12,13,17,19,20,27,29,39,41,45,69,77,83,86,90,91,231],conditionnotmet:83,conduct:57,conf:[7,12,13,51,53,54,57,65,73,83,86,91,218,229],confid:0,config:[40,54,66,73,83,86,91,93,214],configu:[70,231],configur:[0,3,4,6,8,9,10,11,18,27,29,34,47,51,52,53,56,57,60,61,64,65,66,68,69,73,82,83,86,87,89,90,91,92,102,119,135,156,174,189,217,218,219,227,229,230],confirm:[12,13,15,32,33,36,40,46,47],confirm_numb:36,conflict:[0,20,29,45,48],conform:[25,46,49,73],confus:[17,19,53,231],congratul:43,conjunct:[12,91],connect:[0,7,12,13,18,29,30,37,47,57,59,60,61,67,69,73,83,86,87,90,91,98,102,155,156,218,231],connectednativecli:83,connectednativeclientsbyus:83,connection_stag:69,connectionsperhost:[73,218],connector:[30,53,55,86],connnect:83,consecut:[35,54],consensu:[1,68,81],consequ:[18,20,26,29,80],conserv:[12,13,81],consid:[0,12,13,20,29,31,35,39,44,50,54,70,72,75,78,80,81,84,226],consider:[20,29,30,31,32,34,39,73],consist:[2,3,12,13,18,19,20,21,36,39,46,49,60,66,68,69,71,81,82,83,86,88,93,227,230],consol:[9,47,54,70,91],consoleappend:9,constant:[17,18,22,24,29,73],constantli:[0,12,13,75],constitut:39,constrain:34,constraint:1,construct:[0,19,84,231],constructor:[12,13,41,62],consum:[12,13,52,62,63,66,72,74,83,230],consumpt:74,contact:[0,12,13,18,29,53,60,61,84,227],contain:[0,1,3,12,13,15,16,17,18,19,20,22,23,25,27,29,31,32,42,47,49,50,52,63,66,69,71,75,79,81,83,86,89,91,196,216,221,225,227,229,230,231],container:40,contend:[12,13,83],content:[4,12,13,18,19,20,29,31,43,57,61,62,63,67,75,78,84,91,119,215,231],contentionhistogram:83,context:[4,12,13,16,27,29,33,47,50,53,79,86,229],contigu:20,continu:[0,1,6,12,13,16,35,41,52,62,65,66,67,70,76,81,86,87,222],contrarili:19,contrast:[0,31,34,39,52,86],contribut:[5,40,43,45,52,61],contributor:[43,45,50],control:[0,3,12,13,17,18,20,22,46,54,75,86,87,91],conveni:[16,19,21,24,52,88],convent:[10,12,13,18,21,22,32,43,45,48,50,52,86,87],converg:0,convers:17,convert:[17,20,21,63,75,231],convict:0,coordin:[0,1,3,12,13,18,20,21,29,39,53,66,71,81,83,84,172,227,228],coordinator_read:69,coordinator_scan:69,coordinator_writ:69,coordinatorreadlat:[83,227],coordinatorscanlat:83,coordinatorwritelat:[83,227],cop:41,copi:[0,1,3,11,12,13,35,40,42,53,64,65,66,71,73,75,84,93,147,218,227],copyright:[30,31,32,33,34,35,36,37,49],core:[9,12,13,21,70,80,89,184,230,231],correct:[0,12,13,17,42,46,57,73,76,79,86,156,169,206,217,223],correctli:[12,13,18,43,53,58,62,66,70,75,86],correl:[12,13,17,87,227,230],correspond:[0,4,8,9,12,13,16,18,20,21,25,29,43,50,52,53,57,67,68,73,74,81,87,218],corrupt:[12,13,69,73,75,79,80,85,93,178,211,214],corrupt_frames_recov:69,corrupt_frames_unrecov:69,cost:[12,13,20,29,58,79,85],couchbas:[71,73],could:[0,3,12,13,18,19,29,31,32,34,35,39,44,46,50,62,66,67,69,71,73,75,76,85,91,229,231],couldn:[81,83],count:[4,12,13,16,20,29,35,53,58,66,67,69,75,83,88,90,92,219,229,230,231],counter1:222,counter:[0,4,12,13,16,21,26,68,69,80,83,90,93,149,156,178,180,181,214],counter_mut:[83,230],counter_read:90,counter_writ:90,countercach:83,countermutationstag:[69,83,230],counterwrit:[90,143,193],countri:[20,29,32,36],country_cod:29,coupl:[0,12,13,32,34],cours:[20,85,226,231],cover:[18,32,43,46,50,52,53,56,64,75,76,83,84,219],coverag:[42,44],cph:[73,218],cpu:[0,7,12,13,18,58,74,79,82,227,229,230],cpu_idl:231,cq4:[62,229],cq4t:62,cqerl:55,cqex:55,cql3:[21,46,52,91],cql:[0,3,7,12,13,17,18,19,20,21,23,24,26,27,29,32,34,35,36,37,39,49,51,52,54,55,57,59,61,62,63,69,70,71,73,78,82,86,90,93,189,215,231],cql_type:[18,19,20,21,27,29],cqlc:55,cqldefinit:21,cqlkeyspac:[71,73,85],cqlsh:[53,54,56,57,61,63,69,71,73,85,86,93],cqlshlib:40,cqlshrc:[54,93],cqltester:[46,52],cqltrace:231,craft:86,crash:80,crc32:[4,67,71,73,224,225],crc:[4,66,67,224,225],crc_check_chanc:[18,73,79],crdt:0,creat:[0,3,4,6,9,12,13,16,17,19,20,22,24,26,30,31,32,33,34,35,36,37,39,40,43,47,48,52,53,56,57,62,63,65,67,68,69,73,74,75,76,77,78,79,81,84,85,86,88,90,91,99,218,223,231],create_aggreg:62,create_aggregate_stat:19,create_funct:62,create_function_stat:19,create_index:62,create_index_stat:19,create_keyspac:62,create_keyspace_stat:19,create_materialized_view_stat:19,create_rol:62,create_role_stat:19,create_stat:18,create_t:62,create_table_stat:19,create_trigg:62,create_trigger_stat:19,create_typ:62,create_type_stat:[19,29],create_user_stat:19,create_view:62,createkeystor:[12,13],createt:52,creation:[12,13,17,18,20,21,25,29,74,229],creativ:49,creator:27,credenti:[12,13,86],critic:[0,46,50,79,81,86,227,230],cross:[0,3,12,13,53,81,87],crossnodedroppedlat:83,crucial:[86,229,230,231],cryptographi:[12,13],css:49,csv:[73,91],ctrl:231,cuddli:29,cue:32,culprit:227,cumul:[230,231],curent:219,curl:[45,57],current:[0,1,9,12,13,16,18,20,27,29,31,47,49,50,51,57,62,63,66,69,70,73,75,76,77,78,81,83,88,90,91,93,121,139,144,147,156,170,202,210,214,219,220,225,229,230],currentd:[17,21],currentlyblockedtask:83,currenttim:[17,21],currenttimestamp:[17,21],currenttimeuuid:[17,21],custom:[12,13,16,17,18,21,22,23,27,31,33,34,35,40,50,62,67,70,73,87,90,91,218],custom_option1:27,custom_option2:27,custom_typ:[21,29],cut:[51,229],cute:29,cvh:46,cycl:[12,13,63,65,66,74,79,84,119],cython:93,d1006625dc9e:85,d132e240:73,d132e240c21711e9bbee19821dcea330:[71,73],d18250c0:215,d85b:215,d936bd20a17c11e8bc92a55ed562cd82:221,d993a390c22911e9b1350d927649052c:71,daemon:[47,156,204,231],dai:[9,21,24,26,29,35,70,75,78,85],daili:[9,40,62,63,70,119],danger:[12,13],dart:56,dart_cassandra_cql:55,dash:19,data:[1,2,3,4,7,12,13,17,19,21,22,23,25,33,34,36,46,54,57,58,60,61,63,66,67,68,69,72,76,77,78,79,80,81,82,83,84,85,86,87,89,90,91,94,99,112,119,122,126,147,156,161,171,172,196,211,215,216,217,218,219,220,221,222,223,224,225,226,229,230,231],data_file_directori:[54,80],data_read:27,data_writ:27,databas:[0,1,3,11,19,20,22,28,31,34,37,38,39,51,57,60,61,62,63,68,70,71,75,80,86,92,228,229,231],datacent:[0,1,3,10,11,12,13,18,54,60,66,67,69,73,85,87,92,112,122,136,156,171,188,218,227,230],datacenter1:[12,13,58,90],dataset:[2,3,12,13,58,79,85,231],datastax:[12,13,21,37,55,227],datastor:230,datatyp:21,date:[1,4,9,16,17,22,24,26,31,32,33,34,35,36,39,70,84,93,178,214,215,219],dateof:[17,21],datestamp:24,datetieredcompactionstrategi:[18,75],datetim:22,datum:3,daylight:29,db532690a63411e8b4ae091830ac5256:224,db_user:86,dba:[73,86],dbd:55,dc1:[10,11,12,13,18,27,68,81,86,230],dc1c1:226,dc2:[11,12,13,18,68,81,86,230],dc3:[11,27],dcassandra:[7,76,78,83,86,88],dcawareroundrobin:227,dcl:[62,70],dclocal_read_repair_ch:84,dcom:86,dcpar:171,ddl:[18,62,63,69,70,71,73,91],ddl_statement:19,deactiv:[12,13],dead:[0,12,13,82,94,156,231],dead_node_ip:88,deal:[66,93,214],deb:[51,57],debemail:51,debfullnam:51,debian:[51,53,56,231],debug:[9,54,63,91,222,223,224,225,226,227,228,231],debuglog:9,decai:227,decid:[16,43,66,73,76,77,81,87],decim:[16,21,24,26,29,91],decimalsep:91,decis:0,declar:[18,19,21,29,32],decod:[24,29,66,231],decommiss:[0,12,13,64,68,88,156],decompress:[79,231],decoupl:[0,67,68],decreas:[12,13,58,78,218,231],decrement:[20,29],decrypt:[12,13],dedic:[4,12,13,31,67],dedupl:[153,156],deem:[12,13],deep:[61,228,229],deeper:[50,231],default_time_to_l:[17,18,20,73],defend:53,defens:[12,13],defer:[18,231],defin:[0,3,6,7,11,12,13,16,17,18,19,20,22,23,24,25,27,28,30,31,32,34,35,38,47,51,61,63,73,75,81,83,86,87,88,90,91,99,156,219],defineclass1:65,defineclass:65,definit:[11,16,20,21,22,25,29,30,31,32,33,34,35,36,37,39,61,64,71,72,73,90,219],deflat:[4,12,13,79,81],deflatecompressor:[18,79],degrad:[0,12,13,31],degre:49,delai:[1,4,71,83,85],deleg:47,delet:[0,4,12,13,16,17,18,19,22,24,25,27,29,31,34,50,61,62,63,69,70,71,78,81,85,91,119,126,156,209,219,224,225,229],delete_stat:[19,20],deletingarchiv:63,deletiontim:4,delimit:[12,13],deliv:[0,12,13,66,81,83],deliveri:[12,13,66,82,83,156,157,176,187],delta:[83,219],demand:[0,86],demo:[63,64],demonstr:[62,63,65,71,73,85,228],deni:53,denorm:[29,31,32,39],denot:[12,19,32],dens:[18,72],dep:42,departur:0,depend:[0,4,7,12,13,18,19,20,21,29,40,43,46,47,48,50,52,54,61,63,65,67,77,79,81,85,93,227],dependenic:42,depict:30,deploi:[42,51,53,54,57,231],deploy:[0,7,12,13,64,68,81,86,87,89],deprec:[12,13,17,18,21,22,57,73,75,91],depth:231,deriv:[66,73],desc:[16,18,20,39,63,69,91],descend:[18,20],describ:[2,12,13,14,16,17,19,20,21,22,24,27,29,33,34,37,46,47,50,51,63,64,72,86,93,156,214],describeclust:156,descript:[17,18,21,26,29,31,33,36,40,43,50,58,67,69,73,81,83,84,91],descriptor:[83,225],deseri:[64,79,226],design:[0,1,3,10,21,30,31,32,33,35,37,38,61,68,75,78,80,85],desir:[23,29,31,40,53,79,221],destin:[74,81,91],destroyjavavm:231,detail:[5,12,13,17,18,19,20,21,29,30,31,32,33,40,43,44,49,53,65,69,71,79,82,86,89,90,91,93,214,224,229,230,231],detect:[1,2,7,12,13,18,45,53,66,86,222,226],detector:[0,124,156],determin:[0,10,11,12,13,18,20,27,31,34,35,39,58,67,71,72,79,84,87,171,227,230,231],determinist:[0,53],detractor:34,dev1:70,dev:[12,13,15,51,53,58,231],devcent:37,devel:65,develop:[3,15,37,43,44,47,50,52,65,80],devic:[4,89,231],devscript:51,df303ac7:230,dfb660d92ad8:91,dfp:211,dht:[7,12,13,219],diagnost:[12,13,64,82],diagram:[30,31,33,37,66],diagrammat:31,diamond:30,dictat:[12,13,86],did:[33,46,83,217],didn:[0,31],die:[12,13],died:7,dies:[61,88],diff:[22,41,229],differ:[0,1,7,10,12,13,18,19,20,21,22,27,29,31,32,38,39,40,45,47,50,52,53,54,58,62,63,64,67,68,73,75,76,77,79,80,83,84,85,88,90,227,231],difficult:[0,12,13,52,231],difficulti:29,digest:[4,12,13,67,71,73,84,224,225],digit:[24,29,53],digitalpacif:57,diminish:29,dinclud:42,dir:[63,65],dir_path:[73,218],direct:[0,12,13,18,24,27,31,50,83,84,231],directli:[20,25,27,43,47,49,69,73,75,86,219,231],director:20,directori:[4,12,13,28,42,43,47,52,53,56,57,59,63,65,67,70,73,74,77,80,81,82,91,147,156,174,218,231],dirti:[4,12,13,231],disabl:[7,9,12,13,18,21,29,62,64,67,71,75,79,81,86,87,91,105,106,107,108,109,110,111,112,113,122,156,179,181,183,188,191,192,193,194],disable_stcs_in_l0:76,disableauditlog:[62,70,156],disableautocompact:[75,156],disablebackup:[71,156],disablebinari:156,disablefullquerylog:[63,156,229],disablegossip:156,disablehandoff:[81,156],disablehintsfordc:[81,156],disableoldprotocolvers:[69,156],disablesnapshot:178,disableuditlog:70,disadvantag:0,disagre:84,disallow:[12,13,64],disambigu:[62,63,71,73,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,147,148,149,150,151,152,153,154,155,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],disappear:[18,84],discard:[12,13,66,68],discardingthreshold:9,disconnect:[66,75],discourag:[18,29,50],discov:[53,85],discoveri:[0,73],discret:0,discuss:[15,18,29,31,33,35,50,62,63,65,66,69,71,73,84],disk:[4,12,13,18,31,34,38,39,54,58,61,62,63,67,69,70,71,72,74,75,78,79,82,83,85,119,153,156,169,211,216,220,223,224,229,230,231],disk_spac:69,disk_usag:69,dispar:[12,13,34],dispatch:66,displai:[18,31,62,63,69,70,73,91,93,95,101,131,146,148,155,156,206,214,218,222,223,224,225,226,231],displaystyl:35,disrupt:[53,86],dissect:231,dist:51,distanc:[30,89],distinct:[0,16,17,20],distinguish:[16,21,67,71],distribut:[1,2,3,10,11,12,13,30,39,42,50,52,53,57,60,69,75,83,85,86,88,89,90,219,220,228,229,230,231],distro:51,dive:[61,228,229],diverg:1,divid:[19,32,34],divis:26,djava:[47,53,86],dload:57,dml:[28,62,69,70],dml_statement:19,dmx4jaddress:83,dmx4jport:83,dns:53,dobar:41,doc:[12,13,42,43,46,51,57,85,86,217,231],document:[5,19,21,22,24,31,32,34,36,37,40,46,48,49,50,58,59,63,86,90,91],doe:[0,3,12,13,18,19,20,21,23,24,25,27,29,34,39,45,46,50,57,61,63,64,67,68,71,72,73,75,76,78,79,81,84,85,86,87,88,153,156,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231],doesn:[12,13,21,29,31,41,45,52,53,66,67,85,90,218,219,221,222,229,231],dofoo:41,doing:[12,13,20,25,34,52,53,58,75,76,83,88,231],dollar:[17,19],domain:[0,30,31,34,44,86,90,177,197],domin:231,don:[0,5,12,13,20,33,34,35,39,41,44,45,46,47,49,50,51,53,54,67,68,69,73,75,85,147,171,218,222,223,228,230,231],done:[12,13,18,20,29,32,34,40,43,44,50,51,52,54,59,66,76,77,90,220,223,224],dont:70,doubl:[12,13,16,17,18,19,21,24,26,29,47,58,69,83,87],doubt:18,down:[0,12,13,27,30,35,58,67,75,83,85,87,88,110,156,171,220,227,229,230,231],downgrad:224,download:[12,13,37,40,47,51,57,65,83,89],downsampl:4,downstream:[33,230],downtim:[3,58,81],downward:27,dozen:230,dpkg:51,drag:18,drain:[4,66,81,156],draw:[0,32],drive:[0,12,13,58,75,80,229,230,231],driven:[3,34,38],driver:[12,13,19,21,27,35,37,52,56,61,69,91,227],driver_nam:69,driver_vers:69,drop:[1,12,13,17,22,61,62,63,64,66,68,69,70,71,73,75,76,78,83,85,86,119,216,219,220,222,227,230,231],drop_aggreg:62,drop_aggregate_stat:19,drop_funct:62,drop_function_stat:19,drop_index:62,drop_index_stat:19,drop_keyspac:62,drop_keyspace_stat:19,drop_materialized_view_stat:19,drop_rol:62,drop_role_stat:19,drop_tabl:62,drop_table_stat:19,drop_trigg:62,drop_trigger_stat:19,drop_typ:62,drop_type_stat:[19,29],drop_user_stat:19,drop_view:62,dropdown:231,droppabl:[12,13,66,75,219],dropped_mut:206,droppedmessag:82,droppedmut:83,dropwizard:83,drwxr:224,drwxrwxr:[71,73],dry:[93,214,222],dsl:40,dt_socket:47,dtest:[40,46,48],due:[0,1,16,18,20,29,42,53,58,66,71,78,81,83,88,227,231],dump:[62,63,70,91,93,214,229],duplic:[32,34,35,39,46,85,225],durabl:[0,2,4,71,74,81],durable_writ:18,durat:[12,13,17,22,26,27,75,81,83,90,158,207,218],dure:[12,13,18,21,28,30,42,50,52,53,67,68,69,73,76,77,78,79,81,83,84,86,88,90,91,178,216,222,226,229,231],duse:65,dverbos:42,dying:53,dynam:[7,8,12,13,30,81,82,84,86],dynamic_snitch:87,dynamic_snitch_badness_threshold:87,dynamic_snitch_reset_interval_in_m:87,dynamic_snitch_update_interval_in_m:87,dynamo:[2,3,61],e123fa8fc287:85,e2b06b91:57,each:[0,1,3,4,7,8,9,12,13,17,18,19,20,21,24,25,27,29,30,31,32,33,34,35,36,39,40,43,45,50,57,58,59,61,62,63,65,66,67,68,69,70,71,73,75,76,79,80,81,83,85,86,87,88,89,90,91,92,93,156,181,198,211,214,215,229,230,231],each_quorum:[0,12,13,64],eagerli:66,earli:[12,13,19,50],earlier:[50,57,62,65,84],eas:231,easi:[3,16,30,43,50,63,231],easier:[0,43,50,58,62,215],easiest:53,easili:[0,30,34,86],east:85,eben:[30,31,32,33,34,35,36,37],ec2:[12,13,58,62,65,69,71,73,80,85,87],ec2multiregionsnitch:[7,12,13,87],ec2snitch:[12,13,58,87],ecc:80,echo:[57,65,219],eclips:[41,48,52],ecosystem:46,eden:231,edg:[46,92],edit:[3,43,47,51,54,57,83,86,225],editor:43,effect:[0,3,12,13,18,29,32,34,50,53,66,68,72,79,86,110,156,227,230,231],effectiv:83,effici:[10,11,12,13,18,39,62,70,73,75,78,87,88],effort:[0,12,13,43,50,81,85],eight:0,either:[0,4,9,12,13,15,18,19,20,21,23,29,34,35,40,41,43,45,47,50,53,57,59,63,65,66,71,74,75,81,83,86,90,92,209,227,229,230,231],elaps:[75,83,231],elast:58,elasticsearch:89,elder:47,element:[0,18,29,31,32,36,43,58,91],elig:[12,13],elimin:[35,227],elixir:56,els:[18,20,41,50],elsewher:66,email:[15,23,29,36,51,61],embed:52,emerg:[3,42],emit:[12,13],emploi:72,empti:[12,13,16,17,18,19,73,91,222],emptytyp:16,enabl:[0,7,10,12,13,18,21,24,27,52,53,64,65,69,71,75,78,79,81,87,88,91,115,116,117,119,122,123,135,156,194,218,219,229,231],enable_legacy_ssl_storage_port:[12,13],enable_transient_repl:[68,69],enable_user_defined_funct:21,enableauditlog:[62,70,156],enableautocompact:[75,156],enablebackup:[71,156],enablebinari:156,enablefullquerylog:[12,13,63,156,229],enablegossip:156,enablehandoff:[81,156],enablehintsfordc:[81,156],enableoldprotocolvers:[69,156],encapsul:[41,83],enclos:[16,17,19,21,27,34,90],enclosur:19,encod:[22,29,46,66,70,91,219],encodingstat:219,encount:[0,5,6,20,51,66,83,90,222],encourag:[18,74,79],encrypt:[7,12,13,56,65,67,69,73,82,218],end:[10,29,31,34,40,53,62,63,70,75,76,77,84,86,87,91,99,134,156,171,172,220,225,231],end_dat:36,end_resultset:63,end_token:[99,171,172],end_token_1:161,end_token_2:161,end_token_n:161,endpoint:[0,12,13,18,66,68,81,83,84,87,94,134,156,171,209],endpoint_snitch:87,endpointsnitchinfo:86,endtoken:91,enforc:[24,34,49,66,86],engag:83,engin:[0,2,3,18,35,50,61,83,89],enhac:44,enhanc:[44,66,80],enjoi:51,enough:[0,12,13,29,30,33,35,53,62,63,76,84,85,87,91,229,231],enqueu:[12,13,66,229],ensur:[1,9,12,13,20,25,28,35,51,53,56,63,66,68,74,75,79,81,84,86,217,229,230],entail:53,enter:[0,31,33,40,53,63,91,229,231],enterpris:57,entir:[0,4,12,13,18,21,29,34,53,58,63,66,67,68,72,73,78,81,85,86,88,91,93,214,216,227,231],entiti:[30,31,32,33,34,39],entri:[4,12,13,16,20,23,40,50,51,57,61,62,63,83,86,91,219],entropi:[0,12,13,60,81],entry_count:69,entry_titl:20,enumer:[27,215],env:[8,14,53,54,61,65,83,86],environ:[0,1,5,7,12,13,18,37,42,47,48,51,52,53,56,57,58,61,65,73,80,221],envis:31,ephemer:80,epoch:[29,63,219],epol:[12,13],equal:[0,6,12,13,17,18,20,29,31,35,41,75,90],equival:[7,17,18,19,20,21,27,45,75,228],equivil:58,eras:[18,66],erlang:56,erlcass:55,err:91,errfil:91,error:[1,9,12,13,18,19,21,23,25,27,29,31,37,40,41,46,47,52,61,62,63,65,69,70,85,90,91,172,217,222,226,228,229,230],error_byt:69,error_count:69,escap:[19,24,90],especi:[0,13,31,32,50,53,58,75,91,231],essenc:31,essenti:[21,53,65,71,91],establish:[12,13,27,66,73,87,218],estim:[4,35,67,83,85,219,230],estimatedcolumncounthistogram:83,estimatedpartitioncount:83,estimatedpartitionsizehistogram:83,etc:[12,13,18,25,29,41,46,53,54,57,67,70,75,76,79,83,86,90,218,231],eth0:[12,13],eth1:[12,13],evalu:[12,13,26,36,38,61],even:[0,1,12,13,17,18,19,20,21,24,29,31,32,33,34,36,39,44,50,58,61,62,66,67,68,69,71,75,81,84,85,86,91,102,178,210,227,229,230,231],evenli:[0,10,11,12,13,39],evenlog:[217,220],event:[1,3,4,12,13,20,29,60,63,64,66,70,75,82,90,91,171,215],event_typ:20,eventlog:[215,217,220,223,225,226],eventlog_dump_2018jul26:215,eventlog_dump_2018jul26_d:215,eventlog_dump_2018jul26_excludekei:215,eventlog_dump_2018jul26_justkei:215,eventlog_dump_2018jul26_justlin:215,eventlog_dump_2018jul26_singlekei:215,eventlog_dump_2018jul26_tim:215,eventlog_dump_2018jul26b:215,eventu:[0,2,3,4,20,43,58,60,66,81,85],ever:[41,52,53,80],everi:[0,1,4,11,12,13,18,20,21,25,27,28,29,31,35,59,62,65,66,67,68,70,72,73,75,80,85,90,91,227,230,231],everyon:[30,84],everyth:[4,19,41,47,53,89],evict:83,evil:[12,13,21],ex1:90,ex2:90,exact:[18,19,21,79,81,228],exactli:[18,21,25,86,215,231],examin:[32,35],exampl:[0,3,6,7,8,9,10,12,13,18,20,21,24,27,29,30,31,32,33,34,35,38,44,51,52,54,57,58,59,62,64,65,68,69,70,73,75,76,78,79,81,82,86,87,90,91,93,215,216,217,218,219,220,221,222,223,225,226,227,228,229,230,231],example2:90,exaust:[12,13],excalibur:18,exce:[4,12,13,18,24,41,66,83,229],exceed:[12,13,66,80,220],excel:[18,35,79],excelsior:18,except:[0,7,12,13,19,20,21,24,46,48,49,50,52,53,65,66,70,73,83,215,220,229,231],excess:72,exchang:[0,12,13,53,60,67],exclud:[0,18,62,63,70,83,93,115,139,156,214],excluded_categori:[62,70,115],excluded_keyspac:[62,70,115],excluded_us:[62,70,115],exclus:[29,42,52,171],execut:[6,12,13,16,18,19,20,21,27,37,40,42,47,52,59,63,70,75,83,86,91,214,215,216,217,218,219,220,221,222,223,224,225,226,230,231],executor:40,exhaust:[12,13,57,65,227],exhibit:20,exist:[0,1,12,13,16,17,18,19,20,21,23,24,25,27,28,29,34,35,43,44,46,47,51,52,61,62,63,69,70,72,73,75,78,79,84,87,88,90,216],exit:[63,93,225],exp:90,expand:[18,58,93],expans:[18,58,67,68],expect:[0,1,4,12,13,17,19,29,34,39,41,46,50,51,66,67,73,75,78,81,82,85,86,92,220,230],expedit:172,expens:[12,13,72,87],experi:[7,12,13,31,57,66,75,230],experienc:[0,12,13,229],experiment:[0,3,32,39,57,65,68,171],expert:68,expir:[12,13,17,18,20,29,66,69,78,81,82,85,86,178,216,219,222],expired_byt:69,expired_count:69,expiri:75,explain:[33,41,43,46,50],explan:[58,93,214],explicit:[0,17,18,27,36,66],explicitli:[3,4,12,13,17,18,20,24,29,41,62,63,69,71,78,87,90],explor:[7,31,47,54],expon:17,exponenti:[83,90,227],expos:[12,13,16,66,69,79,84,86],express:[0,12,13,17,19,26,87],expung:53,extend:[29,50,52,66,73,89,93,147,211,214],extens:[12,13,18,31,73,86],extent:1,extern:[34,61,62,82,83,88,89,228],extra:[0,4,12,13,66,75,83],extract:[41,57],extrem:[12,13,20,31,58,79,90],f6845640a6cb11e8b6836d2c86545d91:219,f8a4fa30aa2a11e8af27091830ac5256:218,facebook:3,facilit:[7,12,13],fact:[29,44,52,53,227],factor:[0,12,13,18,30,35,61,67,68,73,79,81,85,86,92],factori:90,fail:[0,1,12,13,18,20,21,29,35,40,42,49,51,61,62,63,65,66,67,75,81,83,84,91,156,171,172],failur:[1,2,7,12,13,50,60,61,67,68,71,75,80,81,83,87,124,156,211,227],failuredetector:156,fairli:[12,13,31,74,86,231],fake:21,fall:[0,12,13,31,62,63,70],fallback:[12,13,75,87],fals:[12,13,18,19,24,27,29,63,69,70,71,72,73,74,75,78,79,83,85,86,88,91,119,178],famili:[12,13,18,71,80,141,158,196,207,224],familiar:30,fanout_s:[75,76],faq:93,far:[43,44],fare:231,fashion:0,fast:[0,12,13,31,35,39,72,75,79,89,229,231],faster:[0,12,13,29,39,50,67,68,79,80,156,181,230],fastest:[12,13,45,84,87],fatal:[12,13],fault:[1,53,81],fav:[23,29],favor:65,favorit:231,fax:29,fct:21,fct_using_udt:21,fd576da0:85,fd8e5c20:85,fear:53,feasibl:29,featur:[0,2,32,34,36,37,44,46,47,50,58,61,62,63,65,66,67,68,86],fed:[12,13],feedback:50,feel:[43,45],felt:[33,35],fetch:[12,13,18,43,91],few:[0,12,13,18,32,49,71,75,76,80,227,229],fewer:[12,13,39,50,81],fewest:58,fffffffff:[24,29],fgc:231,fgct:231,field:[17,20,21,24,29,39,41,63,66,70,72,79,90,222],field_definit:29,field_nam:20,fifteen:83,fifteenminutecachehitr:83,fifth:230,figur:[0,1,31,32,33,34,35,39,44,71,77,84,216],file:[3,4,14,18,34,35,43,47,48,49,50,51,52,53,54,57,58,60,61,62,63,65,66,67,69,71,72,73,74,75,78,80,81,83,86,90,91,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,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,219,220,221,222,224,225,227,228,231],fileauditlogg:62,filenam:[4,6,18,91,141,156,219,223],filenamepattern:70,filesystem:[40,62,63,81,86],fill:[18,51,66,71,74,76],fillion:20,filter:[0,4,9,13,16,18,25,61,67,68,69,71,73,80,82,83,171,219,224,225],finalfunc:[16,21],find:[0,4,12,13,31,32,33,34,36,40,43,47,51,52,61,69,72,75,81,84,86,88,134,215,219,221,224,228,230,231],fine:[4,12,13,50,62,85,86],finer:[4,12,13],finish:[35,36,47,50,63,65,85,156,173,229],finish_releas:51,fip:[12,13,86],fire:[28,44],firefox:91,firewal:[12,13,53,54,87],first:[0,1,4,5,6,7,12,13,18,20,21,29,30,31,32,33,35,39,50,51,53,56,60,62,63,65,68,71,76,78,80,84,85,86,90,91,92,171,178,215,219,222,225,227,229,230,231],first_nam:36,firstnam:20,fit:[12,13,35,67,75,76,83],five:[79,83],fiveminutecachehitr:83,fix:[12,13,17,18,19,25,29,34,40,43,45,48,51,53,58,66,75,80,84,85,90,222],fixabl:222,flag:[12,13,20,45,46,50,51,63,66,74,83,85,88,217],flash:89,flat:81,flexibl:[0,3,18,58,63,64,86],flight:[12,13,66,86],flip:18,floor:[12,13],flow:[12,27,33,46,48,70],fluent:55,flush:[4,12,13,18,66,71,73,74,75,76,78,79,80,81,83,114,156,196,225,229],fname:21,focu:[30,33,40,50],focus:90,focuss:231,folder:[47,73,203,223],follow:[0,1,3,4,5,7,10,12,13,15,16,17,18,19,20,21,24,25,26,27,29,33,35,39,40,41,42,43,44,45,46,47,49,50,51,52,53,54,58,61,62,63,65,66,67,68,69,70,71,73,74,75,79,81,83,84,85,86,87,88,91,96,99,106,116,125,126,162,171,178,193,198,210,211,216,221,222,225,227,231],font:19,foo:[18,19,74,231],footprint:[3,63,79,156,158],forc:[4,12,13,18,20,67,85,91,99,102,156,170,171,172,226],forcefulli:[94,156],foreground:[54,84],foreign:[3,34,39],forev:[66,75],forget:5,fork:[43,50],form:[0,12,13,17,18,19,21,27,31,34,58,67,73,101,155,206],formal:[0,7,19,43,51],format:[4,6,9,12,13,17,18,24,29,32,35,43,45,46,48,50,62,63,66,70,73,83,91,93,100,119,141,161,206,208,214,225,230],former:[12,13,83],formerli:68,formula:35,fortabl:73,forward:[12,13,18,42,51,84],found:[0,1,5,12,13,19,21,30,40,43,44,50,52,54,59,71,73,84,86,88,90,91,93,203,211,214,218,219,224,225],four:[0,20,35,66,69],fourth:[35,230],fqcn:52,fql:[61,64,135,156,229],fql_log:229,fqltool:[3,64,65,229],fraction:[0,12,13],frame:[12,13,69],framework:[46,52],franc:[20,29],free:[0,12,13,18,29,37,43,45,47,66,83,89,226,231],freed:4,freestyl:40,freez:29,frequenc:[12,13,18,39,63,74,85],frequent:[12,13,18,31,32,34,58,61,65,78,86,227,231],fresh:88,friendli:[12,13,18,29,52],from:[0,1,3,4,6,7,12,13,16,18,19,20,21,22,24,25,26,27,29,30,31,32,33,34,35,36,37,39,44,45,48,50,52,57,58,59,60,61,62,63,64,65,67,68,70,72,74,75,76,78,79,80,81,82,83,84,85,86,87,88,90,92,93,94,96,97,99,104,106,112,115,116,122,125,126,129,131,134,141,143,146,147,154,156,158,161,162,163,165,166,169,170,171,172,174,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,203,205,206,207,209,210,211,213,214,216,217,219,220,222,225,227,229,230,231],fromjson:22,front:[31,63],froom:29,frozen:[16,17,18,20,21,22,36],fruit:[29,50],fsync:[4,12,13,74,81,83,230],fulfil:90,full:[0,1,3,12,13,16,18,20,23,27,29,33,50,53,59,60,61,64,73,75,76,79,81,82,84,86,89,90,91,109,119,156,162,171,174,218,220,225,230],full_nam:206,full_query_logging_opt:63,fulli:[0,1,6,12,13,16,18,19,21,39,51,68,73,78,82,83,86],function_cal:19,function_nam:[18,20,21,27],fundament:24,further:[5,18,25,29,39,56,66,75,82,86,89,230],furthermor:[0,17,20,86],futher:70,futur:[12,13,16,17,18,29,50,66,68,81,121,156,202],g1gc:80,gain:37,galleri:30,game:[21,29],garbag:[8,18,67,80,82,83,126,229],garbage_collect:203,garbagecollect:156,gather:[63,75],gaug:83,gaurante:0,gaussian:90,gc_grace_second:[18,73,219],gc_type:83,gce:[53,80],gcg:[12,13],gcinspector:229,gcstat:156,gct:231,gcutil:231,gcviewer:229,gear:31,gen:231,gener:[0,2,4,6,8,9,12,13,15,18,19,20,21,24,29,37,39,40,43,46,47,48,50,51,53,63,66,69,79,80,81,83,86,89,90,91,92,143,178,193,222,228,229,230,231],generatetoken:[61,93],genuin:41,geoloc:30,geospati:89,get:[0,4,12,13,15,31,32,34,35,39,40,42,43,45,47,48,50,53,57,58,61,62,65,69,71,72,73,75,76,79,81,83,84,85,93,131,132,133,137,139,156,214,216,220,228,230,231],getbatchlogreplaythrottl:156,getcompactionthreshold:156,getcompactionthroughput:156,getconcurr:156,getconcurrentcompactor:156,getconcurrentviewbuild:[25,156],getendpoint:156,getfullquerylog:[63,156],getint:21,getinterdcstreamthroughput:156,getlocalhost:[12,13,53],getlogginglevel:[9,156,229],getlong:21,getloopbackaddress:13,getmaxhintwindow:[81,156],getpartition:41,getse:156,getsnapshotthrottl:156,getsstabl:156,getstr:21,getstreamthroughput:156,gettempsstablepath:41,getter:[27,41],gettimeout:156,getting_start:13,gettraceprob:156,getudtyp:73,gib:[62,63,81,101,155,206,230],gigabyt:81,gist:[4,41],git1:51,git:[5,40,43,45,47,50,51,65,229,231],gitbox:[47,51],github:[40,41,45,48,50,51,52,65,89,231],give:[0,25,27,29,35,43,50,52,61,79,91,217,229,230],giveawai:231,given:[0,12,13,18,19,20,21,23,29,31,33,34,35,36,39,40,50,62,66,67,68,71,72,73,75,76,78,84,85,86,88,90,91,92,97,99,104,106,116,129,143,156,162,172,182,189,194,198,205,215,217,219,220,221,224,225],glanc:231,global:[0,3,12,13,32,40,65,66,91,156,180],gms:229,gmt:[6,29],gnupg:51,goal:[12,13,34,35,38,58,78,227],gocassa:55,gocql:55,goe:[18,34],going:[12,13,32,35,50,76,78,222,228,230,231],gone:[12,13,18],good:[12,13,35,41,43,50,52,53,66,75,79,85,91,221,227,229,230,231],googl:[3,41,91,231],gori:53,gossip:[1,7,10,12,13,53,60,65,66,81,83,87,110,120,145,156,201,229],gossipinfo:156,gossipingpropertyfilesnitch:[12,13,58,87],gossipstag:[69,83,229,230],got:[12,13],gotcha:231,gp2:80,gpg:57,gpg_name:51,gpgcheck:57,gpgkei:57,grace:[82,85,93,214],gracefulli:66,grade:[13,79],grafana:227,grai:29,grain:[34,86],grammar:[18,19,42],grant:[12,13,16,62,86],grant_permission_stat:19,grant_role_stat:19,granular:[4,12,13,18,84,126],graph:[27,93],graphit:227,gravesit:18,great:[33,44,50,75,228,229,230,231],greater:[0,6,12,13,29,53,58,87,185,186,229,231],greatest:69,greatli:[12,13,67],greeater:13,green:[29,47],grep:[4,217,219,221,229,230,231],groovi:40,group:[12,13,17,18,27,31,35,39,60,66,68,78,83,86,87,227],group_by_claus:20,grow:[29,31,89],growth:[0,3],guarante:[0,2,12,13,18,20,21,29,31,50,60,61,66,67,72,75,76,81,84,85,88,89,90,91,216],guard:67,guest:[30,31,32,33,34,36],guest_id:[32,36],guest_last_nam:36,gui:231,guid:[12,13,30,31,32,33,34,35,36,37,43,47],guidanc:49,guidelin:[17,39,46,51,80],habit:51,hackolad:37,had:[0,3,12,13,16,17,31,66,73,75,84,222,228,230],half:[4,12,13,45,53,81],hand:[3,12,13,20,80,230],handi:[35,231],handl:[0,1,12,13,21,46,48,50,53,63,66,68,74,80,83,86,90,119,229],handler:66,handoff:[0,12,13,82,83,111,156,187],handoffwindow:81,hang:50,happen:[0,12,13,20,41,45,50,61,75,76,81,83,87,172,227,229,230,231],happi:50,happili:80,hard:[3,12,13,21,34,35,71,74,75,80,224,229],harder:[12,13],hardest:44,hardlink:191,hardwar:[2,3,12,13,40,58,60,61,67,81,82,227],has:[0,1,3,4,7,12,13,16,17,18,19,20,21,25,27,29,32,34,35,37,39,41,50,51,53,58,63,65,66,67,68,69,70,71,73,74,75,76,79,80,81,83,84,86,87,88,90,91,93,214,218,227,229,230,231],hash:[2,4,12,13,39,57,69,75,81,84,85,226,231],hashcod:41,hashtabl:30,haskel:56,hasn:[0,63,68,119],have:[0,3,5,7,12,13,16,17,18,19,20,21,22,25,26,27,29,31,32,33,34,35,36,39,40,41,43,44,45,46,47,49,50,51,52,53,54,57,58,62,63,66,67,68,69,70,71,72,73,75,76,77,78,79,80,81,83,85,86,87,119,178,216,218,220,222,225,226,227,228,229,230,231],haven:50,hayt:55,hdd:[4,12,13,80],head:[43,50,66,231],header:[47,49,66,91,222],headroom:[12,13],health:231,healthi:[58,231],heap:[4,7,8,12,13,47,54,61,63,65,72,73,79,80,83,229,230,231],heap_buff:[12,13],hear:[7,34],heartbeat:[0,12,13,229],heavi:[0,9,12,13,58,75,229,230,231],heavili:[58,80],held:[12,13,80,156,160],help:[0,5,12,13,17,31,32,33,35,37,42,44,50,52,57,59,62,63,70,71,73,79,81,90,93,95,156,195,218,222,223,224,225,226,227,228,229,230,231],helper:52,henc:[5,12,13,18,29,62],here:[10,12,13,30,31,33,34,35,36,42,43,45,51,53,55,57,58,63,76,79,83,86,90,230],hewitt:[30,31,32,33,34,35,36,37],hex:[19,24,141],hexadecim:[17,19,141],hibern:88,hidden:[18,88,231],hide:[41,46,69,93,214],hierarch:[0,27],hierarchi:[27,85],high:[0,2,12,13,18,39,43,51,53,58,60,75,76,79,80,81,89,227,229,230],higher:[0,26,27,29,50,72,76,79,83,84,88,158,207,229,231],highest:[76,219,220],highli:[1,3,7,50,53,63,79,80,86,229,230],highlight:[34,37],hint:[0,12,13,18,19,25,53,54,60,61,64,68,69,82,83,85,111,112,121,122,138,156,157,176,187,190,202,209,230],hint_delai:83,hinted_handoff_disabled_datacent:81,hinted_handoff_en:[69,81],hinted_handoff_throttl:81,hinted_handoff_throttle_in_kb:81,hints_compress:81,hints_directori:[54,69,81],hints_flush_period_in_m:81,hintsdispatch:[69,83,230],hintsfail:83,hintsservic:82,hintssucceed:83,hintstimedout:83,histogram:[4,75,81,83,156,159,205,219,229],histor:[18,34,50],histori:[9,34,40,41,70,98,100,156],hit:[12,13,76,83,231],hit_count:69,hit_ratio:69,hitrat:83,hmtl:49,hoc:52,hold:[0,12,13,17,20,27,53,67,77,81,91,227,229,231],home:[0,29,65,69,90,91],honor:[12,13,47],hook:9,hope:75,hopefulli:50,horizont:[0,65],hospit:32,host:[0,12,13,18,43,57,61,62,63,67,70,71,73,83,84,85,87,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,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,218,230,231],hostnam:[12,13,53,62,63,65,69,71,73,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,147,148,149,150,151,152,153,154,155,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,231],hot:[12,13,58,82,83,231],hotel:[30,33,34,35,36,38],hotel_id:[31,32,35,36],hotels_by_poi:[31,32,36],hotspot:[0,18],hotspotdiagnost:86,hottest:[12,13],hour:[12,13,29,50,51,62,78,81],hourli:[62,63,70,119],how:[0,3,5,12,13,14,15,18,19,29,30,31,32,33,34,35,40,44,46,47,48,49,50,52,54,56,57,58,59,61,62,63,64,68,71,73,74,75,77,79,81,83,84,87,89,90,91,119,217,222,229,230,231],howev:[0,4,12,13,16,17,18,19,20,22,24,25,27,29,31,33,34,35,40,50,52,53,54,57,63,69,72,73,79,80,81,85,86,88,91],hoytech:231,html:[12,13,49,90,217],http:[12,13,40,41,43,45,47,49,51,57,65,79,83,92,215,216,217,218,219,220,221,222,223,225,226,231],httpadaptor:83,hub:53,huge:66,huge_daili:70,human:[9,18,62,63,70,74,101,155,206,230],hundr:35,hurt:18,hybrid:18,hypothet:45,iauditlogg:62,iauthent:[12,13],iauthor:[12,13],ibm:89,icompressor:79,id1:39,id2:39,idct:[73,218],ide:47,idea:[12,13,21,35,37,43,48,50,52,53,76,77,91,230,231],ideal:[12,13,52,78,83,86],idealclwritelat:83,idempot:[20,29,81],idemptot:29,ident:[0,11,19,68,90],identifi:[0,3,12,13,16,17,18,20,21,22,23,27,28,29,30,31,32,33,35,37,39,69,81,90,227],idiomat:15,idl:[12,13],idx:74,ieee:[24,29],iendpointsnitch:[12,13,87],iftop:231,ignor:[0,7,12,13,17,21,29,41,69,73,91,171,206,218],iinternodeauthent:[12,13],illeg:21,illegalargumentexcept:220,illustr:[1,27,39,71,84,220],imag:[29,43,231],imagin:75,imbal:[0,58],iml:49,immedi:[4,12,13,18,29,31,50,66,68,72,79,86,96,156],immut:[4,53,60,71,75,79,80],impact:[12,13,18,45,46,50,58,62,63,66,78,82,86,229,231],imper:[0,3],implement:[0,1,3,4,12,13,17,20,21,25,27,35,36,39,40,41,52,53,60,62,66,68,69,70,74,79,81,86,87,89],implementor:12,impli:[0,1,18,19,29,39,62,67,68,84],implic:[0,86],implicitli:[21,27],import_:91,impos:[12,13,66],imposs:[58,76],improv:[0,3,12,13,18,29,39,44,50,52,61,64,72,76,79,80,82,87,88,91,231],inaccur:231,inact:53,inam:221,inboundconnectioniniti:65,inboundmessagehandl:66,inc:[30,31,32,33,34,35,36,37],incast:231,includ:[0,3,4,6,8,10,11,12,13,17,18,19,20,25,27,29,30,31,32,33,34,35,37,39,40,41,42,43,50,51,54,57,62,63,65,66,67,68,69,70,71,73,75,76,77,80,81,83,84,86,89,91,93,115,172,210,214,221,227,228,229,230,231],includecallerdata:9,included_categori:[62,70,115],included_keyspac:[62,70,115],included_us:[62,70,115],inclus:[50,79,171],incom:[12,13,66,70,83],incomingbyt:83,incomingprocesstim:83,incompat:[12,13,17,66,69],incomplet:[46,225],incompli:49,inconsist:[53,81,84,85],incorrect:[49,53],increas:[0,3,4,9,12,13,18,25,53,58,67,68,72,76,79,80,81,83,85,87,88,171,218,226,227],increment:[2,3,12,13,17,20,29,50,51,58,60,66,68,75,81,82,83,107,117,156,172,178,199,222,225],incremental_backup:[69,71],incur:[20,29,65,68,83],inde:0,indefinit:[62,70],indent:41,independ:[0,7,18,29,75,80,86,230],index:[2,4,12,13,16,17,19,20,22,29,32,39,57,61,63,67,68,69,71,73,74,75,82,91,156,162,218,224,225,229],index_build:203,index_identifi:23,index_nam:[18,23],index_summari:203,index_summary_off_heap_memory_us:206,indexclass:23,indexedentrys:83,indexinfocount:83,indexinfoget:83,indexnam:162,indexsummaryoffheapmemoryus:83,indic:[0,3,5,7,12,13,19,20,31,33,41,50,53,65,70,73,74,79,85,171,219,220,227,229,230,231],indirectli:20,indirectori:73,individu:[0,12,13,17,21,29,31,35,50,51,52,66,67,80,86,218,226],induc:20,industri:32,inequ:[17,20],inet:[16,18,21,24,29,69],inetaddress:[12,13,53],inetaddressandport:62,inetworkauthor:[12,13],inexpens:80,inf:65,infin:[16,17,19],inflex:58,influenc:18,info:[9,12,13,54,56,65,70,83,104,156,172,215,229],inform:[0,4,7,9,10,12,13,18,19,20,29,31,32,33,34,36,49,54,57,58,59,60,64,66,67,69,73,81,83,84,85,86,87,88,90,91,95,98,124,145,146,147,148,155,156,177,195,197,217,218,219,227,228],infrastructur:[50,89],ing:18,ingest:[12,13,81],ingestr:91,inher:[1,18,29],inherit:27,init:83,initcond:[16,21],initi:[3,7,12,13,21,25,41,46,48,51,58,66,68,69,70,73,83,84,86,88,91,156,189,218],initial_token:[69,88],inject:[62,70],innov:89,input:[0,16,17,21,24,29,46,67,73,79,91,221,229],inputd:29,insecur:[12,13],insensit:[18,19],insert:[0,6,12,13,16,17,18,19,21,22,23,27,29,53,56,61,63,70,71,73,80,85,86,90,91,225],insert_stat:[19,20],insertedtimestamp:215,insertstmt:73,insid:[12,13,18,19,20,29,41,90,91],insight:[31,37,229,230],inspect:[0,12,13,47,90,91,226],instabl:[12,13],instal:[7,12,13,28,40,42,52,53,54,56,61,65,73,86,91,224,231],instanc:[0,7,17,18,19,20,21,23,25,26,27,28,29,31,40,47,52,53,60,66,67,74,75,80,83],instantan:83,instanti:17,instantli:[12,13,66],instead:[0,4,7,12,17,18,20,25,29,31,34,35,37,41,43,53,62,69,70,73,75,76,147,177,197,215,231],instrospect:228,instruct:[0,12,15,18,43,44,45,47,57,61,81,231],instrument:[42,86],instrumentedappend:9,insuffic:227,insuffici:231,insufici:229,int16:63,int32:63,intact:66,intasblob:20,integ:[0,17,18,19,20,24,29,35,66,74,83,222],integr:[3,37,39,48,52,57,61,66,89],intellig:0,intellij:[37,41,48],intend:[18,34,39,46,68,86,218],intens:[12,13,52,53],intent:[0,46,67],intention:27,inter:[7,12,13,66,67,73,87,136,156,188,218],inter_dc_stream_throughput_outbound_megabits_per_sec:67,interact:[3,37,52,59,91,231],interest:[0,30,31,33,34,77,86,230],interfac:[3,12,13,17,21,33,41,43,53,54,57,60,69,79,86,89,231],interleav:90,intern:[10,12,13,16,18,20,25,29,43,46,53,65,69,80,81,83,93,214,227,231],internaldroppedlat:83,internalresponsestag:[69,83,230],internet:[12,13],internod:[0,12,13,53,61,64,67,73,86,218,227,231],internode_application_receive_queue_capacity_in_byt:66,internode_application_receive_queue_reserve_endpoint_capacity_in_byt:66,internode_application_receive_queue_reserve_global_capacity_in_byt:66,internode_application_send_queue_capacity_in_byt:66,internode_application_send_queue_reserve_endpoint_capacity_in_byt:66,internode_application_send_queue_reserve_global_capacity_in_byt:66,internode_application_timeout_in_m:[13,66],internode_encrypt:[12,13,86],internode_inbound:[66,69],internode_outbound:[66,69],internode_streaming_tcp_user_timeout_in_m:13,internode_tcp_connect_timeout_in_m:13,internode_tcp_user_timeout_in_m:13,internodeconnect:[143,193],internodestreamingus:[143,193],internodeus:[143,193],interpret:[12,17,29,37,91],interrupt:[53,63],intersect:0,interv:[4,12,13,16,31,83,86,90,219],intra:[12,13,66,83,87,90],intrins:29,introduc:[0,1,12,13,17,24,31,35,44,63,66,68,70,81,88,225],introduct:[17,27,38,52,61],introspect:231,intrus:217,inttyp:73,intvalu:21,invalid:[0,12,13,20,27,29,46,66,73,86,147,149,150,151,156,220,226,230],invalidatecountercach:156,invalidatekeycach:156,invalidaterowcach:156,invalidrequest:29,invalidrequestexcept:18,inventori:35,invert:90,invertedindex:28,investig:[12,13,48,228,229,230,231],invoc:[21,63],invoic:34,invok:[18,21,45,62,63,67,73,86,211],involv:[0,1,12,13,20,30,31,35,39,43,66,67,76,79,84,85,86,225,229,231],ioerror:41,ios:231,ip1:[12,13],ip2:[12,13],ip3:[12,13],ip_address:94,ipaddressandport:66,ipartition:73,ips:83,ipv4:[12,13,24,29,53,66],ipv6:[12,13,24,29,66],irolemanag:[12,13],irrevers:[18,29],irrevoc:66,is_avail:[35,36],isn:[0,25,41,50,53],iso8601:[9,70,215],iso:29,isol:[1,12,13,18,20,66,83,227,228,230],issu:[0,12,13,27,35,40,42,43,44,45,50,51,52,53,57,58,64,66,72,75,79,92,171,215,216,217,218,219,220,221,222,223,225,226,227,229,230,231],item:[19,29,30,31,32,40,46,47,50],iter:[0,12,13,32,67,220],its:[0,1,4,7,12,13,18,19,20,21,29,31,33,47,53,57,62,65,66,67,70,71,73,75,76,78,81,83,86,87,88,89,90,216,220],itself:[12,13,18,23,34,53,62,66,75,81,88,230],iuk:171,iv_length:[12,13],jaa:86,jacki:45,jamm:47,januari:29,jar:[7,21,41,42,45,47,52,65,83],java7:86,java8_hom:47,java:[3,7,12,13,21,28,29,41,47,49,50,56,57,61,63,64,74,78,80,83,86,156,195,220,228,229,231],java_hom:[65,231],javaag:47,javac:65,javadoc:[40,41,46,57],javas:[12,13],javascript:[12,13,21],javax:86,jbod:80,jce8:[12,13],jce:[12,13],jcek:[12,13],jconsol:[61,62,75,86],jdbc:37,jdk11:65,jdk:[12,13,40,65],jdwp:47,jeff:[30,31,32,33,34,35,36,37],jenkin:[42,48,61],jetbrain:47,jflex:49,jira:[5,12,13,42,44,46,48,50,52,74,79,92,215,216,217,218,219,220,221,222,223,225,226],jks:[49,90],jkskeyprovid:[12,13],jmap:231,jmc:[75,86],jmh:40,jmx:[7,12,13,25,27,61,62,63,66,69,71,73,82,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,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],jmx_password:86,jmx_user:86,jmxconfigur:9,jmxremot:86,jni:65,job:[50,85,96,126,169,171,178,210],job_thread:171,john:[20,29],join:[3,7,12,13,15,20,39,60,61,65,78,85,86,88,156,229,230],joss:20,journal:[71,73],jpg:29,jre:65,jre_hom:65,jsmith:29,json:[16,17,20,22,61,73,75,79,100,206,208,215],json_claus:20,jsonz:71,jsr:[12,13,21],jsse:[12,13],jsserefguid:[12,13],jstackjunit:52,jstackjunittask:52,judgement:41,jul:[65,231],jump:65,junit:[40,41,42,47,52],junittask:52,jurisdict:[12,13],just:[0,12,13,21,27,29,31,32,34,44,47,50,52,53,62,66,69,74,75,85,86,90,92,227,231],jvm11:8,jvm8:8,jvm:[7,12,13,14,28,40,47,53,54,58,61,65,78,82,86,88,228,229],jvm_extra_opt:47,jvm_opt:[7,54,86],jvmstabilityinspector:46,k_i:35,kashlev:37,kbp:81,keep:[0,9,12,13,15,18,32,34,35,39,41,44,50,53,58,66,67,70,73,75,76,83,84,93,147,214,225,227,230,231],keepal:[12,13,53],kei:[0,3,4,12,13,16,17,18,20,21,24,29,31,32,33,34,35,36,37,39,52,53,57,58,60,62,63,66,67,69,71,73,74,75,76,79,80,81,83,84,85,86,89,90,93,96,134,141,150,156,160,180,181,206,214,219],kept:[1,4,12,13,39,73,75,76,79,83,225],kernel:[12,13,53,74,231],key1:62,key2:62,key_alia:[12,13],key_id:51,key_password:[12,13],key_provid:[12,13],keycach:83,keycachehitr:83,keyserv:51,keyspac:[0,3,11,12,13,16,17,19,21,22,23,27,29,32,35,36,56,61,63,64,68,70,72,75,79,81,82,85,86,88,90,91,93,96,97,99,104,106,115,116,125,126,129,134,141,147,156,158,160,161,162,163,169,171,177,178,182,196,197,198,205,206,207,210,211,213,214,215,216,217,218,221,222,223,224,225,226,229,230],keyspace1:[27,69,73,216,218,219,220,221,222,224,229],keyspace_definit:90,keyspace_nam:[18,21,27,29,63,69,73,75,85,229],keystor:[12,13,73,86,218],keystore_password:[12,13],keystorepassword:86,keytyp:219,keyvalu:69,keyword:[17,18,20,21,22,23,24,29],kib:[71,81,85,101,155,206,230],kick:[156,173],kill:[12,13],kilobyt:79,kind:[0,3,18,19,29,40,50,66,69,71,74,75,84,227,230],kitten:29,knife:[156,195],know:[0,4,12,13,18,20,29,31,41,44,51,63,67,69,75,221,229,230,231],knowledg:44,known:[0,12,13,27,29,31,34,35,39,55,59,68,72,75,92],krumma:52,ks_owner:86,ks_user:86,kspw:[73,218],ktlist:[71,196],kundera:55,label:[29,40],lack:[83,229,230],lag:83,laid:34,land:79,landlin:29,lang:[61,65,83,86,220,231],languag:[3,12,13,16,17,19,21,28,29,39,43,55,59,61,63,91],larg:[0,1,3,12,13,18,20,21,29,38,40,52,61,66,68,73,76,80,83,86,89,91,215,221,223,227,229,230,231],large_daili:70,larger:[0,12,13,52,53,58,76,79,80],largest:[12,13,83],last:[0,10,12,13,19,20,21,22,26,43,58,65,75,76,83,94,156,219,220,221,227,229,231],last_nam:36,lastli:[20,29],lastnam:20,latenc:[0,1,3,12,13,18,39,53,58,62,63,68,69,79,83,87,89,90,228,229],latent:[0,227,231],later:[0,16,18,29,33,35,41,43,45,50,53,81],latest:[0,12,13,39,40,51,57,75,84,91,211,217,229],latest_ev:90,latter:[19,34],launch:0,law:34,layer:80,layout:[0,18,43],lazi:18,lazili:18,lead:[0,12,13,17,18,29,31,58,75,78,229,231],learn:[12,13,30,31,33,52,53,58,60,91],least:[0,4,9,12,13,18,19,20,25,43,53,68,73,75,80,85],leav:[0,12,13,19,20,31,41,52,53,63,66,85,91,227,229,230],left:[12,13,16,24,26,57,76,225],legaci:[4,10,12,13,27,90],legal:[17,49],len:66,length:[4,12,13,17,18,24,29,46,58,66,67,75],lengthier:50,less:[0,4,6,12,13,29,42,50,53,57,66,67,72,79,80,223,226,229,230,231],let:[12,13,30,31,32,33,34,35,44,51,76,92],letter:[10,24],level:[1,4,12,13,17,18,20,26,27,41,46,54,68,69,70,73,75,79,80,81,82,83,86,91,93,137,147,156,189,214,219,220,222,227,229,230],leveledcompactionstrategi:[18,67,72,75,76,78,217,220,230],leverag:[37,58],lexic:53,lib:[4,12,13,28,42,46,47,52,57,65,215,216,217,218,219,220,221,222,223,224,225,226,231],libqtcassandra:55,librari:[15,46,48,52,55,83,91],licenc:46,licens:[42,46,47,48,50,61],lie:227,lies:227,lieu:84,life:50,lifespan:80,light:66,lightweight:[0,2,3,34,39,68,93],like:[0,3,8,12,13,18,19,20,21,24,29,32,33,34,35,41,43,45,46,50,52,53,54,57,61,62,66,68,69,73,75,76,78,79,80,81,84,85,86,220,221,222,227,228,229,231],likewis:27,limit:[0,1,4,12,13,16,17,18,27,29,35,39,53,57,58,63,64,67,74,75,79,83,86,90,229,231],line:[7,9,12,13,19,31,34,41,50,51,52,54,58,59,63,65,66,71,73,74,86,93,94,96,97,99,104,106,112,116,122,125,126,129,131,134,141,143,146,147,154,158,161,162,163,169,170,171,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,203,205,206,207,209,210,211,213,215,218,220,225,229],linear:[0,3,80],lineariz:2,linearli:72,link:[12,13,15,18,19,50,52,63,66,71,74,224],linux:[12,13,43,51,53,57,58,65,228,229,231],list:[1,3,4,5,12,13,16,17,18,19,20,21,24,31,33,34,36,39,40,42,43,47,48,50,51,52,54,57,59,60,61,62,63,64,65,66,67,70,73,74,75,81,83,85,86,88,90,91,93,94,96,97,98,99,104,106,112,115,116,122,125,126,129,131,134,139,141,143,146,147,153,154,156,158,161,162,163,166,169,170,171,172,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,203,205,206,207,209,210,211,213,214,216,218,219,220,221,226],list_liter:[20,29],list_permiss:62,list_permissions_stat:19,list_rol:62,list_roles_stat:19,list_us:62,list_users_stat:19,listarg:21,listen:[7,12,13,54,57,60,61,65,83,231],listen_address:[54,59,61],listen_interfac:54,listsnapshot:[71,156,224],liter:[17,19,21,24,27,37,91],littl:[41,63,227,230],live:[0,3,6,16,20,37,43,61,63,75,83,88,219,224,225,229,231],live_scan:69,livediskspaceus:83,liveness_info:215,livescannedhistogram:83,livesstablecount:83,load:[0,3,12,13,18,28,29,44,58,61,65,67,81,82,83,85,86,87,88,90,93,148,156,163,171,197,214,227,230,231],loader:[73,218],loadm:218,local:[0,1,3,4,10,12,13,18,27,40,42,47,48,50,52,54,59,62,63,64,69,71,80,81,83,86,87,91,156,165,171,175,209,219,227,228,229,231],local_jmx:86,local_on:[0,13,84,86,91,227,230],local_quorum:[0,81,84,91,227,231],local_read:69,local_read_count:206,local_read_lat:69,local_read_latency_m:206,local_scan:69,local_seri:91,local_writ:69,local_write_latency_m:206,localhost:[12,13,54,57,59,65,69,70,86],localpartition:69,locat:[6,7,12,13,31,33,39,51,56,57,60,70,79,83,86,87,91,203,206,218,227,229,231],lock:[12,13,53,83,231],log:[0,3,4,7,9,12,13,18,20,43,46,51,52,56,57,61,64,66,68,69,74,82,83,86,90,93,105,109,115,119,137,156,171,174,189,203,214,228,231],log_al:75,logback:[14,54,61,70,229],logbackmetr:9,logdir:[9,62,70],logger:[9,41,54,63,70,115],loggernam:70,logic:[0,12,13,28,32,35,37,38,61,66,68,229,230],login:[12,13,16,27,51,52,62,65,70,86,93,227],login_error:62,login_success:62,logmessag:[62,70],lol:29,longer:[12,13,17,18,37,51,53,66,67,75,88,96,156,222,225,227],longest:229,look:[0,12,13,19,31,32,35,40,43,44,45,50,52,66,75,76,80,84,85,220,222,227,229,231],lookup:[33,39,83],loop:[41,66],lose:[0,4,12,13,34,66,75,88,225],loss:[0,12,13,29,58,66,78,85,231],lost:[1,12,13,67,70,71,75,88,222],lot:[12,13,31,34,35,43,59,61,75,85,93,214,223,229,230,231],low:[0,3,12,13,50,89,156,158,231],lower:[0,4,12,13,18,19,20,27,53,72,73,75,76,79,83,88,227,229],lowercas:19,lowest:[12,13,50,76,81,219],lsm:[0,230,231],lucen:61,luckili:228,lwt:[0,39,68],lww:0,lz4:[4,12,13,66,79,81],lz4_compressor_typ:79,lz4_high_compressor_level:79,lz4compressor:[4,12,13,18,58,73,79,81,219],lz4hc:[12,13,79],mac:231,macaddr:16,machin:[7,12,13,18,52,53,63,71,83,86,87,88,219,228,231],made:[0,3,12,13,29,39,61,62,65,66,67,68,72,80,81,84,86,229],magazin:[39,71,73],magazine_nam:39,magazine_publish:39,magic:66,magnet:[4,12,13],magnitud:20,mai:[0,1,4,12,13,16,17,18,20,21,23,24,25,27,29,32,33,34,35,39,40,42,43,46,47,50,52,53,58,62,63,65,66,67,68,69,70,71,72,73,75,78,79,81,83,84,86,87,88,90,91,178,220,222,227,228,229,230,231],mail:[5,44,50,51,61],main:[0,8,12,13,21,25,47,53,56,57,63,65,71,73,79,86,91,220,227,229],main_actor:20,mainli:[12,13,67],maintain:[0,12,13,18,30,44,49,50,66,81],mainten:[0,81,83],major:[0,4,17,43,50,57,75,78,84,86,99,156,224,230],make:[0,1,7,12,13,15,16,28,29,30,31,32,34,35,36,37,39,40,41,42,43,44,45,47,50,52,53,66,68,69,73,75,76,78,79,84,85,86,88,90,91,153,156,215,229,231],malform:227,malfunct:66,malici:86,man:[12,13],manag:[0,3,12,13,27,31,32,34,35,37,40,43,47,48,51,52,61,68,69,83,86,88,93,95,156,214],mandatori:[3,18,21,73],mani:[0,3,12,13,18,30,31,32,34,37,41,46,50,63,68,69,73,75,76,77,79,80,81,83,84,86,90,91,93,96,99,106,116,119,125,126,171,178,198,210,211,214,220,226,227,230,231],manifest:[71,73,93,214],manipul:[3,19,22,25,52,61,215],manual:[12,13,32,42,45,53,225,231],map:[0,3,12,13,16,17,18,20,21,24,27,30,36,39,58,60,61,62,63,74,83,229,231],map_liter:[18,23,27,29],mar:29,mark:[0,12,13,19,27,31,50,63,75,85,88,110,156,172,219,221,225],marker:[4,12,13,18,19,46,53,225],markup:43,marshal:219,mashup:30,massiv:[44,58,231],master:[2,3],match:[0,4,12,13,19,20,21,24,27,83,84,87,219,224],materi:[0,3,12,13,17,19,22,30,31,32,33,34,35,36,37,38,61,68,69,83,91,156,213],materialized_view_stat:19,math:81,matrix:64,matter:[18,53,84,231],maven:42,max:[4,12,13,18,61,63,65,66,69,75,81,83,86,90,91,119,129,138,156,171,182,190,219,222,229,230],max_archive_retri:62,max_hint_window_in_m:[81,88],max_hints_delivery_thread:81,max_hints_file_size_in_mb:81,max_index_interv:73,max_log_s:[62,70,119],max_m:69,max_map_count:53,max_mutation_size_in_kb:[4,12,13,53],max_partition_s:69,max_queue_weight:[62,70,119],max_threshold:[73,75],maxattempt:91,maxbatchs:91,maxfiledescriptorcount:83,maxfiles:70,maxhintwindow:190,maxhistori:70,maxim:80,maximum:[4,7,9,12,13,21,40,58,62,63,66,69,70,72,81,83,91,119,131,156,178,184,219,222,223,227,229,230],maximum_live_cells_per_slice_last_five_minut:206,maximum_tombstones_per_slice_last_five_minut:206,maxinserterror:91,maxldt:216,maxoutputs:91,maxparseerror:91,maxpartitions:83,maxpools:83,maxrequest:91,maxrow:91,maxt:216,maxtasksqueu:83,maxthreshold:182,maxtimestamp:4,maxtimeuuid:17,mayb:20,mbean:[12,13,27,75,83,86],mbeanserv:27,mbit:[73,218],mbp:[12,13,67,81],mct:[12,13],mean:[0,12,13,16,18,19,20,21,24,25,29,34,61,63,68,73,75,76,79,81,83,84,87,90,91,171,227,228,229,230,231],meaning:[20,67],meanpartitions:83,meant:[0,29,53,81,83],measur:[12,13,31,35,39,46,50,52,66,79,83,88,90,91,231],mebibyt:69,mechan:[0,13,60,62,74],media:[30,31,32,33,34,35,36,37],median:[69,83,229],medium:231,meet:[0,1,3,12,13,46,84,86],megabit:[81,218],megabyt:[12,13,81,223,230],mem:231,member:[0,41,51,86,90],membership:[1,2,12,13],memlock:53,memori:[0,4,12,13,18,58,61,62,63,66,70,72,74,76,79,82,89,226,229,231],memory_pool:83,memtabl:[2,12,13,18,71,72,73,74,77,78,79,80,83,196,229,231],memtable_allocation_typ:4,memtable_cell_count:206,memtable_cleanup_threshold:4,memtable_data_s:206,memtable_flush_period_in_m:[18,73],memtable_off_heap_memory_us:206,memtable_switch_count:206,memtablecolumnscount:83,memtableflushwrit:[69,83,230],memtablelivedatas:83,memtableoffheaps:83,memtableonheaps:83,memtablepool:[12,13],memtablepostflush:[69,83,230],memtablereclaimmemori:[69,83,230],memtableswitchcount:83,mention:[12,13,29,34,50,62,65,83,86,218,227],menu:[0,47],mere:41,merg:[0,43,45,50,51,72,77,79,80,82,84,231],mergetool:45,merkl:[0,12,13,83,85],mess:[50,52],messag:[0,1,9,12,13,29,40,43,46,50,60,61,62,63,64,65,67,68,70,73,81,83,84,85,86,218,222,223,224,225,226,227,229,230],messagingservic:66,met:20,meta:[20,65,83,90],metadata:[0,4,27,35,62,67,79,80,83,93,214,222,225,226,229],metal:[12,13],meter:83,method:[13,17,20,21,27,41,44,46,47,52,56,61,62,63,65,73,86,90],methodolog:37,metric:[7,9,12,13,54,64,69,81,82,90,228,230,231],metricnam:83,metricsreporterconfigfil:83,mib:[62,63,101,155,206],micro:230,microsecond:[6,12,13,18,20,29,83,219,230],microservic:32,midnight:29,midpoint:0,might:[0,12,13,18,20,30,31,32,33,34,35,62,63,71,73,75,76,83,84,94,96,97,99,104,106,112,116,119,122,125,126,129,131,134,141,143,146,147,154,158,161,162,163,169,170,171,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,203,205,206,207,209,210,211,213,226,227,230],migrat:[12,13,58,63,69,83,87],migrationstag:[69,83,230],milli:4,millisecond:[4,6,12,13,17,18,29,35,63,83,158,178,207,219,222,230,231],min:[4,12,13,18,53,74,75,83,90,91,129,156,182,219,229,230],min_index_interv:73,min_sstable_s:77,min_threshold:[73,75],minbatchs:91,mind:[18,35],minim:[12,13,32,34,63,68,78,80],minimum:[7,12,13,18,21,35,39,54,63,83,85,217,219],minlocaldeletiontim:219,minor:[17,19,43,63,82,84],minpartitions:83,mint:216,minthreshold:182,mintimestamp:219,mintimeuuid:17,minttl:219,minu:35,minut:[12,13,29,34,62,63,65,70,75,78,81,83,86,90,119],mirror:[43,57],misbehav:[61,75,228],misc:[143,193],miscelen:83,miscellan:[12,13],miscstag:[69,83,230],mismatch:[0,12,13,66,84],misrepres:222,miss:[18,25,40,42,49,75,81,83,85,88,225,231],misslat:83,misspel:217,mistak:58,mistaken:[63,71,73,94,96,97,99,104,106,112,116,122,125,126,129,131,134,141,143,146,147,154,158,161,162,163,169,170,171,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,203,205,206,207,209,210,211,213],mistun:229,mit:51,mitig:[12,13,86],mix:[12,13,57,58,63,75,78,90,231],mkdir:[62,65,73,229],mmap:53,mnt:23,mock:52,mod:49,mode:[4,12,13,57,62,63,71,73,79,86,91,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,147,148,149,150,151,152,153,154,155,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,227],model:[3,18,22,27,33,34,36,50,61,65,67,86,90,231],moder:[9,35],modern:[80,81,231],modestli:[12,13],modif:[20,27,229],modifi:[12,13,16,17,18,21,27,29,34,39,50,63,69,72,78,79,221],modification_stat:20,modul:91,modular:46,modulo:0,moment:[12,50],monitor:[53,57,61,62,82,86,87,95,156,227,231],monkeyspeci:[18,25],monkeyspecies_by_popul:25,monoton:[0,18,68,82],month:[29,35,65],monument:30,more:[0,1,4,7,12,13,17,18,19,20,29,30,31,32,35,36,39,41,43,44,49,50,54,57,58,59,60,61,62,63,65,66,67,68,69,70,71,72,73,76,78,79,80,81,82,83,84,86,87,88,90,93,99,125,126,156,158,171,178,195,207,211,214,219,220,226,228,230,231],moreov:[20,73],most:[0,1,9,12,13,18,19,20,29,31,34,35,43,44,47,50,52,53,57,58,63,66,69,70,75,76,77,79,80,81,83,84,86,91,98,156,172,207,219,220,227,229,230,231],mostli:[4,12,13,18,29,32,75,228,229],motiv:78,mount:[12,13,231],move:[0,12,13,35,50,51,53,61,68,74,82,83,85,147,156,222,225,230],movement:[0,67,68,82,229],movi:[20,29],movingaverag:[12,13],msg:[9,70],mtime:[18,221],mtr:231,much:[0,5,12,13,18,30,31,34,35,58,67,69,72,73,74,75,76,77,78,79,87,218,227,229,231],multi:[1,2,3,7,10,12,13,19,46,54,64,71,81,229,231],multilin:48,multipl:[1,4,6,7,10,12,13,17,18,19,20,21,26,29,30,31,34,37,39,41,46,47,50,53,54,58,63,67,78,80,81,84,87,90,91,93,161,214,215,227,230],multipli:[35,76],multivari:89,murmur3:4,murmur3partit:4,murmur3partition:[7,12,13,21,73,91,92,219],museum:30,must:[0,1,3,4,7,8,10,11,12,13,17,18,20,21,24,25,27,29,31,34,35,39,41,42,47,49,50,51,52,53,58,62,63,65,66,67,68,71,73,75,78,79,83,84,86,88,90,91,92,196,214,215,216,217,218,219,220,221,222,223,224,225,226],mutant:23,mutat:[0,4,6,12,13,20,53,66,69,74,81,83,84,211,230],mutatedanticompactiongaug:83,mutationsizehistogram:83,mutationstag:[69,83,230],mutual:13,mv1:25,mvn:42,mx4j:83,mx4j_address:83,mx4j_port:83,mx4jtool:83,mxbean:27,myaggreg:21,mycolumn:24,mycustomauditlogg:62,mydir:91,myevent:20,myfunct:21,myid:19,mykei:24,mykeyspac:[21,58],mytabl:[18,21,24,26,28],mytrigg:28,n_c:35,n_r:35,n_v:35,nairo:29,naiv:0,name:[4,6,10,11,12,13,16,17,18,19,20,21,23,24,25,27,28,29,31,33,36,37,39,40,43,46,47,49,50,51,52,53,54,57,60,62,63,69,70,71,83,85,86,90,91,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,215,217,218,221,224,227,229,230,231],names_valu:20,nan:[16,17,19,69],nano:[66,69],nanosecond:[29,83],narrow:[227,229,230,231],nathan:20,nativ:[4,7,12,13,17,19,22,24,37,46,53,59,62,65,69,70,73,83,91,108,118,156,162,200,218,230,231],native_transport_port:54,native_transport_port_ssl:86,native_typ:29,natur:[18,29,33,41,66,75,78,79,81,231],navig:43,nbproject:47,ncurs:231,nearli:[47,92],neccessari:[12,13],necessari:[12,13,18,21,27,34,50,62,63,66,70,79,86,215,219,222],necessarili:[12,13,19,32,60],need:[0,1,4,7,12,13,17,18,19,20,27,29,30,31,32,33,34,35,39,40,41,45,46,47,50,51,52,53,59,62,63,66,67,68,69,70,71,72,73,75,76,79,80,81,84,85,86,87,89,91,92,134,172,218,223,224,226,230,231],needlessli:0,neg:[12,13,58],negat:[26,86],neglig:[20,231],neighbor:[0,67,227],neighbour:75,neither:[12,13,25,29,86],neon:47,nerdmovi:[20,23],nest:[19,20,41],net:[12,13,47,53,56,70,86],netbean:[37,48],netstat:[88,156],netti:[12,13,64,66],network:[0,1,10,11,12,13,20,53,58,66,67,71,80,81,84,85,86,87,155,156,159,229],network_author:27,network_permiss:[12,13],networktopologystrategi:[56,68,86,90],never:[0,12,13,17,18,19,20,21,29,34,41,53,58,66,68,75,76,85,220],nevertheless:[20,39],new_rol:27,new_superus:86,newargtuplevalu:21,newargudtvalu:21,newer:[0,35,75,78,80,91,126,216,231],newest:[18,78,216],newli:[0,18,27,29,50,74,156,163],newreturntuplevalu:21,newreturnudtvalu:21,newtuplevalu:21,newudtvalu:21,newvalu:73,next:[0,7,12,13,31,53,59,63,65,68,69,71,73,76,77,81,84,91,228,229],ngem3b:20,ngem3c:20,nic:[65,231],nice:[35,66],nid:231,nifti:45,night:[31,35],ninth:0,nio:[12,13,21,64,67,83],nntp:231,node:[1,3,4,8,10,11,12,13,18,20,21,28,29,34,35,39,40,46,52,54,55,58,59,60,61,62,63,64,65,66,68,69,70,71,72,73,74,75,76,80,82,83,84,85,87,89,90,91,92,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,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,218,219,220,228,229,230,231],nodej:56,nodetool:[3,4,7,8,9,12,13,25,54,57,61,63,64,65,67,68,69,71,72,79,82,85,86,88,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,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,221,224,226,227,228,229,231],nois:[12,13,229],noiser:229,noisi:229,nologin:16,nomenclatur:0,nomin:35,non:[0,12,13,16,17,18,19,20,21,27,29,32,53,54,65,66,67,69,72,75,79,83,86,91,219,222],nonblockingbufferhandl:66,none:[0,1,12,13,18,20,29,68,69,71,73,83,85,86,219],nonsens:27,noopauditlogg:62,nor:[12,13,18,25,29,57],norecurs:[16,27],norm:83,normal:[1,16,18,21,24,27,34,39,47,51,53,57,65,68,69,79,81,83,85,90,91,227,229,230,231],nosql:[3,37,60,89],nosuperus:[16,27],notabl:[21,24,57],notat:[17,19,20,31,32,35,91],note:[0,4,5,7,9,12,13,17,18,19,20,21,22,24,27,29,31,32,45,48,50,51,53,57,58,65,66,68,73,75,79,86,214,215,216,217,218,219,220,221,222,223,224,225,226,229,231],noth:[12,13,18,21,45,52,53,216],notic:[12,13,31,36,49,67,86,230,231],notif:[15,40],notifi:66,notion:[0,18,19],notori:[0,30],noun:34,now:[17,31,32,33,36,40,41,43,47,58,63,75,88,231],nowinsecond:63,npercentil:18,ntp:[0,12,13],nullval:91,num_cor:91,num_token:[58,88,92],number:[0,1,4,10,12,13,17,18,19,20,21,22,24,25,29,31,32,33,34,35,36,39,40,47,50,51,52,53,54,58,62,63,64,66,68,70,71,72,73,75,76,78,79,81,83,84,86,88,90,91,92,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,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,218,219,223,227,228,230,231],number_of_cor:[12,13],number_of_dr:[12,13],number_of_partitions_estim:206,numer:[3,22,26,40,72,90],numprocess:91,numsampl:229,ny229:32,object:[1,3,12,13,19,46,63,64,65,66,67,73,215],object_nam:18,objectnam:27,observ:[18,41],obsolet:[12,13,80,83,226],obtain:[19,31,33,35,71,73,86,231],obviou:[21,45,57],obvious:[18,30],occasion:[85,230],occup:[20,231],occupi:[12,13,66,83],occur:[0,12,13,17,19,20,28,29,53,63,65,66,75,80,83,85,214,215,216,217,218,219,220,221,222,223,224,225,226,231],occurr:29,octet:[12,13,87],odbc:37,oddli:[12,13],off:[0,4,9,12,13,32,53,58,66,74,79,83,86,91,156,173,222,231],off_heap_memory_used_tot:206,offer:[0,22,52,63,79,90],offheap:[72,80],offheap_buff:[12,13],offheap_object:[12,13],offici:[43,50,61,89,91],offset:[4,18,67,74,83],often:[0,12,13,18,19,32,33,34,35,41,43,44,50,52,53,62,63,70,73,75,79,80,81,85,86,87,91,119,220,227,230,231],ohc:[12,13],ohcprovid:[12,13],okai:41,old:[0,4,12,13,63,66,69,75,78,88,93,113,123,156,214,225,231],older:[4,12,13,21,45,47,57,75,80,84,91,216,224],oldest:[4,12,13,18,62,63,70,216],omit:[4,12,13,17,18,20,24,29,31,63,81,189],onc:[0,4,12,13,18,19,21,29,32,35,36,40,45,47,50,52,53,58,63,66,71,74,75,76,79,80,83,85,86,88,90,91,220,227],one:[0,1,4,10,12,13,16,17,18,19,20,21,24,25,27,29,31,32,34,35,39,41,44,47,50,52,54,57,58,60,61,62,65,66,67,68,70,71,72,73,75,76,77,80,81,83,84,85,86,87,88,91,93,96,99,106,116,125,126,143,156,171,178,193,196,198,210,211,214,215,219,222,224,225,227,229,230,231],oneminutecachehitr:83,ones:[12,13,18,19,20,21,25,27,63,83,220],ongo:[44,76,83,88],onli:[0,4,6,8,12,13,16,18,19,20,21,24,25,27,29,31,33,34,35,39,41,43,50,51,52,57,58,60,61,63,65,66,67,68,69,71,72,73,74,75,76,77,79,80,83,84,85,86,87,88,90,91,93,171,196,206,214,216,218,221,222,223,224,226,227,230,231],onlin:[3,91],only_purge_repaired_tombston:75,onto:[0,4,75],open:[0,3,5,12,13,27,40,44,48,51,60,65,67,73,86,87,89,218,231],openfiledescriptorcount:83,openhft:70,openjdk:[57,65],openssl:65,oper:[0,1,2,8,12,13,17,18,19,20,22,23,25,27,29,34,41,48,57,58,61,62,63,64,66,68,69,70,71,72,73,74,75,80,81,83,85,86,88,90,91,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,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,217,224,225,227,228,229,230,231],operand:26,operatingsystem:83,operationtimedoutexcept:227,opertaion:[12,13],oplog:225,opnam:90,opportun:[43,72],oppos:[58,66],ops:[53,90],opt:21,optim:[0,4,12,13,18,19,20,35,39,53,64,67,68,75,76,78,80,88,219,229],optimis:[85,171],option1_valu:27,option:[0,3,4,7,8,10,11,12,13,16,17,18,19,20,21,23,27,29,31,34,35,37,43,47,50,52,53,57,58,63,64,65,66,67,69,71,79,80,82,84,86,88,90,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,215,218,219,220,221,222,223,224,225,226,229,230,231],oracl:[12,13,57,86,231],order:[0,1,4,12,13,16,17,18,21,25,29,31,32,33,34,35,36,39,41,50,53,60,62,63,68,69,72,73,74,78,87,88,90,91,219],ordering_claus:20,orderpreservingpartition:[12,13],ordinari:[12,13],org:[7,9,12,13,21,28,40,41,42,43,47,49,51,52,53,57,63,65,70,73,75,79,83,86,92,215,216,217,218,219,220,221,222,223,225,226,229],organ:[3,4,31,34,39,40,47,55],orgapachecassandra:51,orient:3,origin:[0,4,16,35,43,45,50,62,74,81,178,220,222,223,224],orign:20,os_prio:231,osx:43,other:[0,3,4,7,10,11,12,13,17,18,19,20,21,25,27,29,30,31,32,34,36,37,39,42,43,44,45,47,50,54,57,60,61,63,66,67,70,71,72,73,75,76,78,80,81,82,83,84,86,87,88,90,156,161,172,216,219,220,225,227,228,229,230,231],other_rol:27,otherwis:[0,12,13,16,19,20,23,29,31,67,81,85,131,135,156,171,216,227],our:[5,12,13,15,40,43,44,45,47,51,66,68,75,231],ourselv:[9,45],out:[1,2,3,4,10,12,13,16,18,19,31,32,34,37,41,42,44,47,50,51,63,67,75,76,77,78,83,84,85,86,87,88,89,171,215,216,227,230,231],outag:0,outbound:[12,13,67,69],outboundtcpconnect:[12,13],outdat:84,outgo:[12,13,66,231],outgoingbyt:83,outlin:[40,86],outofmemori:73,outofmemoryerror:61,output:[9,18,21,27,46,47,51,57,62,63,65,67,68,72,73,75,77,85,90,91,93,99,100,206,208,214,219,222,223,225,226],output_dir:73,outputdir:73,outsid:[18,28,29,66],outstand:[225,230],oval:30,over:[0,3,4,9,12,13,18,29,31,34,39,40,53,58,62,63,66,67,68,75,76,83,85,86,87,88,90,220,222,225],overal:[21,66],overflow:[24,93,178,214],overhead:[12,13,39,53,58,63,68,79,83,88],overidden:86,overlap:[0,75,76,220],overli:[34,35],overload:[12,13,21,53,63,218],overrid:[12,13,18,40,62,63,73,81,86,88,91,178,218,222],overridden:[12,13,18,63,69,70],overs:84,oversizedmut:83,overview:[2,49,61,82],overwrit:[31,70,79,80,81,86],overwritten:[83,126],own:[0,18,19,21,29,44,48,50,53,57,65,66,73,75,79,83,85,86,89,90,92,134,141,147,156,211,220,230],owner:[29,49],ownership:[0,18,75,177],ownersip:229,p0000:29,p50:230,p50th_m:69,p99:[18,231],p99th:18,p99th_m:69,pacif:29,packag:[40,47,52,53,54,56,59,91,229],packet:[12,13,229],page:[12,13,18,29,40,43,44,47,52,53,58,63,80,83,89,93,228,230],paged_rang:230,paged_slic:83,pages:91,pagetimeout:91,pai:[41,42,51],pair:[12,13,18,27,29,66,71,78,86],pane:37,paper:[0,58],parallel:[25,52,64,75,76,85,171,230],param:[18,66],paramet:[4,7,8,12,13,18,21,39,40,41,46,47,54,62,63,66,70,72,79,80,87,88,156,189],parameter:40,params:66,paranoid:[12,13],parent:[42,218],parenthes:[36,39,62],parenthesi:[18,90,91,227],park:30,parnew:80,pars:[12,13,19,29,62,66,70,74,91,231],parser:[16,17],part:[3,5,9,10,12,13,18,20,21,25,29,31,32,33,35,42,46,47,50,52,53,57,73,86,87,88,91,218,227],parti:[46,61,83,215],partial:[4,18,29,35,63,84,225],particip:[0,28,66],particular:[0,12,13,18,19,20,21,24,27,29,31,39,53,66,71,80,83,86,227,229,230,231],particularli:[19,29,57,86,229,230,231],partit:[1,2,3,4,12,13,17,18,20,21,31,34,36,37,38,53,58,67,69,71,72,73,75,76,80,81,83,84,90,126,134,156,178,207,215,219,227,229,230],partition:[4,17,18,20,21,69,73,85,91,92,103,156,171,219],partition_kei:[18,20],partitionspercounterbatch:83,partitionsperloggedbatch:83,partitionsperunloggedbatch:83,partitionsvalid:83,partli:20,pass:[7,46,50,54,62,91,195,218,219,230,231],password:[12,13,16,20,27,62,63,69,71,73,90,91,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,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,218],password_a:27,password_b:27,passwordauthent:[12,13,86],passwordfilepath:[62,63,71,73,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,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],past:31,patch:[17,20,40,41,43,45,46,48,52,61,67],path1:[62,63,70],path2:[62,63,70],path:[0,5,6,12,13,23,34,46,62,63,65,67,68,71,72,73,78,79,80,83,86,89,91,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,147,148,149,150,151,152,153,154,155,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,215,216,218,222,224,226,229,231],pathn:[62,63,70],patter:27,pattern:[12,13,18,27,29,30,36,37,38,39,70,227,230,231],paus:[12,13,53,81,156,157,229,231],pausehandoff:[81,156],pauser:[62,63],paxo:[1,12,20,64,83,91],paxos_prepar:66,payload:66,payloads:66,pcap:231,peak:[218,231],peer:[0,12,13,27,58,60,63,65,66,83,231],peerip:83,pem:65,penalti:[12,13,20,58],pend:[12,13,64,66,69,75,81,83,85,156,170,172,230],pending_flush:206,pending_task:69,pendingcompact:83,pendingflush:83,pendingrangecalcul:[69,83,230],pendingtask:83,pendingtasksbytablenam:83,pennsylvania:29,peopl:[43,50,53],per:[4,12,13,17,18,20,35,39,40,41,45,50,51,53,63,66,68,72,73,74,75,76,77,78,79,81,83,85,86,90,91,92,156,179,187,191,215,218,225,227,229,230,231],per_second:69,percent:83,percent_repair:206,percentag:[12,13,83,87,231],percentil:[18,83,227,230,231],percentrepair:83,perdiskmemtableflushwriter_0:[69,83,230],perf:231,perfdisablesharedmem:231,perfect:21,perfectli:[34,66],perform:[0,1,3,7,12,13,18,20,27,29,31,32,34,35,37,39,44,45,46,48,50,53,54,58,62,63,67,68,69,70,72,75,76,79,80,81,83,84,85,86,87,91,171,222,229,230,231],perhap:[31,35,66,227,229],period:[0,4,12,13,40,62,66,68,80,83,85,86,88,156,158,231],perl:56,perman:[18,53,75,80,81,229],permiss:[12,13,16,19,30,31,32,33,34,35,36,37,52,57,62,63,73,86],permit:[12,13,27,66,67,74,86],persist:[0,4,53,60,65,72,74,80,86,231],person:231,perspect:[31,33,53],pet:29,petabyt:[0,1],peter:30,pgp:51,phantom:55,phase:[88,91,230],phi:[0,12,13],phone:[20,29,32,36],phone_numb:36,php:56,physic:[12,13,18,35,36,37,38,53,60,61,80,87],pib:0,pick:[12,13,45,50,53,67,75,76,79,86,88,90,161],pickl:58,pid:[53,231],piec:[0,19,75,83],pile:[12,13],pin:[12,13,87],ping:[50,231],pkcs5pad:[12,13],place:[5,7,12,13,23,28,30,39,41,45,50,63,74,78,83,85,86,91,156,163,218,223,229,231],placehold:[21,91],plai:[21,29],plain:4,plan:[18,35,45,50,58],plane:[0,43],platform:[27,40,57,89],platter:[12,13,80],player:[21,29],playorm:55,pleas:[5,12,13,18,20,21,29,40,41,43,47,50,51,52,53,65,70,86,90,226],plu:[10,21,35,75,83,230],plug:[12,13,35,40],pluggabl:[0,7,27,86],plugin:[37,61,83],pmc:51,poe:29,poi:[33,36],poi_nam:[31,36],point:[0,3,4,12,13,17,24,29,30,31,33,34,37,41,43,47,51,58,61,66,68,79,81,86,90,91,134,156,218,227,231],pointer:[6,21,67],pois_by_hotel:[31,36],polici:[9,12,13,18,49,50,51,86,211,227],poll:86,pom:[48,49],pool:[12,13,65,83,85,156,184,208,230,231],poorli:31,pop:90,popul:[18,25,90],popular:[30,31,37,47,57,80],port:[0,12,13,47,54,61,62,63,69,70,71,73,83,86,90,91,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,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,218,231],portabl:71,portion:[0,10,31,58,80,91,223],posit:[0,4,12,13,17,18,26,29,63,67,72,83,88,215,219],possbili:[12,13],possess:27,possibl:[0,1,9,12,13,17,18,20,21,24,27,29,35,40,46,50,52,53,58,62,66,67,68,72,75,76,80,81,83,86,88,90,220,222,227,229],post:[20,29,40,48,66,156,181],post_at:20,postal_cod:36,posted_at:20,posted_bi:18,posted_month:18,posted_tim:18,potenti:[0,12,13,16,18,19,21,31,35,46,63,70,78,80,86,88,178,220,222],power8:89,power:[12,13,18,89],pr3z1den7:29,practic:[0,12,13,18,19,20,34,36,37,51,66,68,81,82,86],pre:[10,12,13,18,24,29,66,67,80,86,92,222,223,225],preced:[10,26,39,53,71,73,90],precis:[17,24,29,75,219],precondit:83,predefin:18,predict:[20,35,63,220],prefer:[0,12,13,18,19,29,34,41,50,66,68,79,86,87],preferipv4stack:47,prefix:[18,19,29,219,225],premis:58,prepar:[7,12,13,21,22,62,64,70,73,83],prepare_releas:51,prepare_stat:62,prepared_stat:12,preparedstatementscount:83,preparedstatementsevict:83,preparedstatementsexecut:83,preparedstatementsratio:83,prepend:29,prerequisit:[48,56],prescript:57,presenc:[12,13],presens:4,present:[0,3,16,19,20,25,37,62,69,74,83,86,222,231],preserv:[12,13,24,27,34,35,84],preserveframepoint:231,pressur:[12,13,67,83,230,231],presum:34,pretti:[31,35,91,231],prevent:[0,12,13,18,40,52,63,74,79,83,84,85,172,218,222,231],preview:[43,64,85,171],previewkind:85,previou:[0,12,13,17,18,29,35,57,70,76,85,88,224],previous:[12,13,31,35,66,81,225],previous_vers:51,previsouli:[122,156],price:34,primari:[0,3,16,17,18,20,21,29,31,32,34,35,36,39,52,63,69,71,73,74,78,79,84,85,86,88,90],primarili:[0,12,13,18,62],primary_kei:[18,25],print0:221,print:[57,62,63,71,73,81,85,90,91,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,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,229],prio:231,prior:[8,12,13,20,27,29,63,73,88],prioriti:[1,50,231],privat:[12,13,41,51,86,87],privileg:[27,86],proactiv:66,probabilist:[0,72,79],probabl:[0,4,12,13,18,31,52,72,75,85,144,156,194,229,230,231],problem:[0,5,12,13,18,21,31,34,45,46,51,53,58,79,81,86,227,228,230,231],problemat:[29,58,227],proc:[12,13,53],proce:[46,79,88,227],procedur:[20,51,86],proceed:226,process:[0,1,12,13,21,29,31,32,39,40,42,44,45,46,47,48,50,52,53,58,60,61,66,67,68,69,74,79,80,81,83,84,85,86,88,89,91,95,131,156,157,176,184,217,218,222,224,225,226,229,230,231],processed_byt:69,processed_count:69,processor:[3,7,62,63,79],prod_clust:91,produc:[20,21,33,44,63,66,75,78,119,227],product:[0,1,7,10,12,13,18,34,35,42,44,50,53,56,57,61,63,65,68,80,87],profil:[20,47,79,93,156,158,231],profileload:156,program:[21,52,228,231],programm:0,programmat:[62,221],progress:[41,45,50,57,66,69,72,73,82,85,90,93,156,213,214,225,230],project:[33,40,41,42,43,44,49,51,52,83],promin:18,promot:[4,172],prompt:[51,91],prone:58,propag:[0,10,12,13,21,41,46,66,81,87],proper:[0,18,29,43,53,86],properli:[12,13,34,46],properti:[4,7,12,13,14,18,25,27,32,39,47,51,56,61,62,68,74,75,84,86,87,88],propertyfilesnitch:[11,12,13,87],proport:[12,13,20,58],proportion:[12,13,81,128,156,179],propos:[12,13,31,51,64,83],protect:[12,13,18,31,66,68,79,80,83,85,86,225],protocol:[0,1,12,13,46,53,59,60,63,64,69,70,73,83,86,91,98,108,113,118,123,156,200,218,229,231],protocol_vers:69,prove:[32,231],provid:[0,1,3,4,5,12,13,18,19,20,21,22,24,29,31,34,35,37,39,47,49,50,51,59,60,62,63,66,67,70,73,74,75,79,80,81,83,84,85,86,87,88,89,90,93,155,156,166,170,172,218,219,220,223,225,226,227,229],provis:[58,73,231],proxim:[11,12,13,87],proxyhistogram:[156,230],prtcl:[73,218],prune:66,prv:[67,85,171],ps22dhd:20,pt89h8m53:29,publicationfrequ:39,publish:[30,31,32,33,34,35,36,37,39,40,42,71,73],published_d:90,pull:[0,34,43,52,58,78,83,85,171],pure:[75,231],purg:80,purpos:[19,20,29,34,60,66,67,71,80,86],push:[45,50,51,83],put:[22,31,35,50,54,63,67,73,75,76,77,88,147,171,220,230],pwf:[62,63,71,73,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,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],pylib:57,python:[21,40,50,52,56,57,91],pytz:93,qos:[9,70],quak:[21,29],qualifi:[6,18,21,50,73,230],qualiti:[43,64,86],quantiti:[1,29,68,230],queri:[1,3,12,13,16,17,18,19,20,21,23,25,27,29,31,32,35,36,37,38,56,61,62,64,66,68,69,70,71,73,75,78,83,85,89,90,91,109,119,156,174,228,231],query_fail:63,queryabl:1,querylogkeyspac:63,queryopt:[62,63],queryst:[62,63],querytimemilli:63,queryvalidationexcept:227,question:[15,27,34,48,61,231],queu:[12,13,64,83],queue:[12,13,31,62,63,66,70,83,119,230,231],queuesiz:9,quick:[31,73,147,211,226],quickli:[31,53,67,71,76,81,230],quill:55,quintana:29,quit:[0,35,69,75,91,218,230,231],quorum:[0,18,64,81,82,86,91,227],quot:[16,17,18,19,21,24,27,90,91],quotat:[19,27],quoted_identifi:19,quoted_nam:18,r_await:231,r_k:35,rac1:[10,11],rac2:11,race:[29,45],rack1:[12,13],rack:[0,11,12,13,54,56,60,69,85,86,87,92,227,230],rack_node_count:92,rackdc:[12,13,14,54,61,87],rackinferringsnitch:[12,13,87],raid0:80,raid1:80,raid5:80,rain:19,rais:[12,13,19,53,62,81,227],raison:16,ram:[58,72,79,80,231],ran:221,random:[0,18,21,53,79,88],randomli:[12,13,88],randompartition:[12,13,20,21,92],rang:[0,12,13,17,18,20,29,31,33,46,64,67,75,76,82,83,85,90,91,99,104,143,156,161,171,172,193,227,230],range_ownership:18,range_slic:[83,230],rangekeysampl:156,rangelat:83,rangemov:88,rangeslic:83,rapid:[18,39,68,80],rapidli:231,rare:[17,34,72,73,227],raspberri:80,rat:49,rate:[0,12,13,18,30,33,81,83,86,90,91,218,231],ratebasedbackpressur:12,ratefil:91,rather:[7,12,13,20,31,33,53,66,67,69,74,75,80,90],ratio:[12,13,79,80,83,90,219],ration:4,raw:[4,12,13,21,93,214,229],rc1:[18,61],rdbm:[0,38,61],reacah:70,reach:[0,1,4,12,13,18,35,50,53,58,62,63,68,74,75,84,220],react:62,read:[0,1,3,12,13,18,20,29,31,36,39,41,43,46,52,53,56,60,61,63,64,66,69,72,73,75,76,77,78,79,80,81,82,83,86,87,90,91,143,193,206,211,218,219,226,227,229,230,231],read_ahead_kb:231,read_lat:206,read_repair:[0,18,68,83,84,230],read_repair_ch:84,read_request_timeout:53,readabl:[9,18,32,62,63,70,74,101,155,206,230],readi:[0,18,31,36,43,50,57,69,86],readlat:[83,227],readm:43,readrepair:83,readrepairrequest:83,readrepairstag:[83,230],readstag:[69,83,85,230],readtimeoutexcept:227,readwrit:86,real:[1,4,15,18,30,32,34,41,53,89,229],realclean:[42,45],realis:90,realiz:[34,75],realli:[12,13,34,35,52,67,69,217,221,227,231],realtim:74,reappear:85,reason:[0,4,12,13,18,20,21,22,25,34,35,53,54,62,66,73,78,80,85,86,88,230,231],rebas:43,rebuild:[0,45,67,68,72,75,79,83,156,162,178],rebuild_index:156,receiv:[0,1,12,13,21,25,50,53,57,60,66,67,68,69,75,80,81,84,88,227,231],received_byt:69,received_count:69,recent:[1,12,13,50,52,65,80,84,98,172,220,225],recent_hit_rate_per_second:69,recent_request_rate_per_second:69,reclaim:[66,68,70,78],recogn:[20,35,47,50,65],recommend:[4,7,10,12,13,18,29,34,43,53,56,57,61,65,68,69,70,73,80,86,88,229],recompact:75,recompress:79,reconcil:[0,1,18,84],reconnect:86,reconstruct:220,record:[4,12,13,18,20,26,29,30,31,33,34,35,50,58,62,63,70,75,83,90,231],recov:[12,13,53,64,67,69,75],recoveri:[6,7,12,60,67],recreat:[18,27,63,91],rectangl:30,recurs:[63,119],recycl:[4,12,13,83],redhat:[57,65],redirect:70,redistribut:[12,13,85,229],redo:50,reduc:[4,12,13,18,32,35,44,53,63,66,67,68,71,76,79,81,84,85,93,102,128,156,171,179,214],reduct:[12,13],redund:[0,12,13,39,41,46,50,66,68,80],reenabl:[118,120,121,156],ref:[9,11,51,70,92,215,216,217,218,219,220,221,222,223,225,226],refer:[1,12,13,18,19,20,21,29,31,32,33,34,35,39,40,41,42,52,53,58,59,63,68,70,88,90,91,227,229],referenc:[12,13,33,35,90],referenti:3,refin:[36,38,61],reflect:[74,75,135,156,215],refresh:[12,13,73,86,91,156,164],refreshsizeestim:156,refus:[61,66],regain:66,regard:[18,20],regardless:[0,12,13,27,50,68,81,231],regener:[67,72],regexp:19,region:[10,12,13,87],regist:29,registri:86,regress:[46,52],regular:[16,19,35,43,47,52,53,64,66,83,91],regularcolumn:219,regularli:[58,85],regularstatementsexecut:83,regularupd:90,reifi:67,reilli:[30,31,32,33,34,35,36,37],reinforc:37,reinsert:[178,222],reject:[12,13,20,53,66,74,86,227],rel:[12,13,29,32,35,79,91,231],relat:[0,3,15,17,19,20,29,30,31,34,35,37,38,42,47,50,60,62,67,75,81,83,90,219,227,231],relationship:[12,13,30,31,34,39],releas:[12,13,17,34,35,39,48,49,50,57,61,65,68,91,231],relev:[20,27,29,50,73,79,86,89,218,219,222,231],relevel:[93,214],reli:[0,12,13,21,29,31,53,79],reliabl:[1,3,44,58,78],reload:[12,13,82,156,165,166,167,168],reloadlocalschema:156,reloadse:156,reloadssl:[86,156],reloadtrigg:156,reloc:[67,156,169,203,229],relocatesst:156,remain:[0,12,13,20,21,27,29,39,45,58,66,67,69,75,78,83,85,88,206,230],remaind:[24,26,63,79],remeb:70,remedi:76,rememb:[31,32,35,70,227],remind:31,remot:[0,4,43,45,47,61,62,63,71,73,76,86,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,147,148,149,150,151,152,153,154,155,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,227],remov:[0,1,4,12,13,17,18,19,20,21,22,24,25,27,29,42,46,51,53,61,66,68,73,74,82,84,86,94,97,126,156,170,220,225,226,231],removenod:[88,94,156],renam:[16,29],render:43,reorder:[12,13],repair:[0,4,12,13,18,25,53,60,61,64,69,73,77,78,79,81,82,83,87,88,93,147,156,172,189,211,214,219,222,226,230],repair_admin:156,repairedat:[172,221],repairpreparetim:83,repairtim:83,repeat:[19,51,63,79,86],replac:[0,7,8,12,13,16,21,27,29,42,46,53,61,62,63,66,67,68,75,82,84,85,119,224,225],replace_address_first_boot:[0,88],replai:[0,3,4,29,63,80,81,83,128,156,173,179,219],replaybatchlog:156,repli:[44,66],replic:[1,2,3,12,13,18,35,36,39,58,60,61,62,63,64,67,69,71,73,75,80,81,85,86,88,90,92,94,156,171,172],replica:[1,10,11,12,13,18,20,35,53,60,64,75,81,83,84,85,87,88,102,227,230,231],replica_2:81,replicafilteringprotectionrequest:83,replicafilteringprotectionrowscachedperqueri:83,replication_factor:[0,18,36,62,63,68,71,85,86,90,92],repo:[42,45,47,51,57],repo_gpgcheck:57,report:[7,12,13,34,40,42,48,49,50,54,57,61,82,172,227],report_writ:27,reportfrequ:91,repositori:[5,15,40,42,43,44,47,49,50,52,57,89],repres:[0,12,13,17,18,24,27,29,30,31,32,33,34,35,53,75,79,83,86,87,90,91,191,219,229],represent:[17,24,32,215],reproduc:[32,44],reproduct:44,request:[0,1,10,11,12,13,18,20,27,28,39,43,52,53,60,62,63,64,67,68,69,70,71,72,75,78,80,82,84,86,87,91,156,194,210,226,227,230,231],request_count:69,request_failur:62,request_respons:[66,83,230],requestresponsest:230,requestresponsestag:[69,83,85,230],requestss:83,requestssizebyipdistribut:83,requesttyp:83,requir:[0,1,3,6,12,13,18,20,21,27,31,34,35,39,41,43,45,46,47,48,49,50,51,53,54,57,58,62,63,67,68,72,73,79,80,84,86,90,217,218,221,224],require_client_auth:[12,13],require_endpoint_verif:[12,13],requisit:84,resampl:[12,13],reserv:[12,13,17,19,22,30,33,34,35,36,37,38,66,69,231],reservations_by_confirm:36,reservations_by_guest:[31,36],reservations_by_hotel_d:36,reservoir:227,reset:[12,13,20,43,64,66,83,156,175,189,217],reset_bootstrap_progress:88,resetfullquerylog:[63,156],resetlocalschema:156,resid:[12,13,20,53,83,231],resiz:13,resolut:[0,12,13,20,48,53],resolv:[0,42,45,53,84,177,197],resort:[94,156],resourc:[0,27,40,58,64,86,218,230],resp:21,respect:[9,12,13,17,18,21,40,42,51,62,63,66,69,71,73,85,87,119,229],respond:[0,12,13,19,81,84,231],respons:[0,1,12,13,27,32,39,53,66,67,68,83,84,88,230],ressourc:29,rest:[12,13,18,19,29,39,40,46,88,227],restart:[3,7,13,53,75,81,86,88,156,163,181,217,229],restor:[6,7,67,73,75,82,88,91,218,224,225],restrict:[12,13,17,18,20,25,32,68,85],restructuredtext:43,result:[0,12,13,16,17,18,19,21,24,27,29,32,34,35,37,39,44,50,53,58,63,66,67,73,75,77,83,85,91,214,215,216,217,218,219,220,221,222,223,224,225,226,231],resultset:18,resum:[81,95,156,176],resumehandoff:[81,156],resurrect:75,resync:[156,175],retain:[27,53,62,63,70,75,81,222,224],retent:34,rethrow:41,retir:43,retri:[0,12,13,18,29,63,66,83,84,119],retriev:[0,18,20,27,31,39,42],reus:[35,46],reveal:35,revers:[18,20,31],revert:[7,229],review:[18,41,43,48,50,52,61],revis:[32,90],revok:[16,62,86],revoke_permission_stat:19,revoke_role_stat:19,rewrit:[72,75,79,93,156,178,210,214,222],rewritten:[80,178,222],rfc:[21,29],rhel:[57,61],rich:[29,229],rid:42,rider:29,riderresult:29,right:[12,13,26,30,31,32,33,34,35,36,37,47,51,53,75,79,85,91,230,231],ring:[7,12,13,18,60,61,65,68,73,81,85,86,88,91,152,154,156,189,218,227],rise:[0,227],risk:[0,1,18,31,57,78],riski:78,rmb:231,rmem_max:[12,13],rmi:[53,86],robin:81,rogu:21,role:[12,13,16,17,19,22,82],role_a:27,role_admin:27,role_b:27,role_c:27,role_manag:86,role_nam:27,role_opt:27,role_or_permission_stat:19,role_permiss:[12,13],roll:[9,53,63,70,81,86,119],roll_cycl:[62,70,119],rollcycl:70,rollingfileappend:[9,70],rollingpolici:70,rollov:[9,70],romain:29,room:[5,15,30,31,33,34,35,36,51],room_id:35,room_numb:[35,36],root:[9,12,13,45,50,57,65,73,226,229],rotat:[12,13,63,229],rough:79,roughli:[0,12,13,73],round:[20,31,76,81,83],rout:[0,10,11,12,13,60,66,87],routin:[81,231],row:[0,3,4,12,13,16,17,18,20,21,22,24,25,31,35,39,52,58,59,63,67,69,71,72,73,79,80,83,84,85,90,91,93,126,147,151,156,178,180,181,214,219,222,226,231],row_column_count:63,rowcach:[61,83],rowcachehit:83,rowcachehitoutofrang:83,rowcachemiss:83,rowindexentri:83,rows_per_partit:[18,73],rpc:[7,12,13,83],rpc_address:69,rpc_timeout_in_m:[143,193],rpm:[51,56],rpmmacro:51,rrqm:231,rsa:51,rsc:211,rst:43,rubi:[21,56],rule:[0,12,13,19,21,50,53,227,229],run:[0,4,5,7,9,12,13,19,29,31,35,37,40,42,45,47,50,51,53,54,57,62,63,65,66,67,68,69,71,73,75,77,78,80,81,83,84,85,86,88,89,90,92,93,147,156,171,195,214,217,218,219,221,222,223,224,228,229,230,231],runnabl:231,runtim:[3,12,13,25,35,50,56,57,65,82,137,156],runtimeexcept:41,rust:56,s_j:35,s_t:35,safe:[0,7,18,21,29,63,66,68,75,86,231],safeguard:80,safepoint:229,safeti:[18,63,75,88],sai:[61,66],said:[18,50,53,73,156,210,231],salient:69,same:[0,1,4,5,7,12,13,18,19,20,21,22,24,25,26,27,29,31,32,34,39,43,45,47,50,58,61,62,63,66,68,69,72,73,75,76,77,78,81,83,84,85,86,87,88,90,171,220,225,227,229,231],samerow:90,sampl:[4,12,13,19,21,32,54,63,67,73,83,90,91,119,156,158,160,207],sampler:[69,83,158,207,230],san:80,sandbox:[12,13,21],sasi:[12,13],satisfi:[0,18,31,34,41,68,80,83,84,88],satur:[12,13,83,230,231],save:[12,13,20,29,40,42,53,54,66,72,79,80,88,90,156,181],saved_cach:[12,13],saved_caches_directori:54,sbin:53,scala:[21,56],scalabl:[0,2,3,51,89],scalar:22,scale:[1,2,3,52,79,89,90],scan:[6,9,12,13,20,31,68,72,83],scanperiod:9,scenario:45,scene:53,schedul:[0,12,13,40,66,69],scheduled_byt:69,scheduled_count:69,schema:[0,3,16,21,24,37,38,58,61,63,69,71,73,83,84,86,90,91,103,156,165,175,217,219],schema_own:27,scheme:0,scientif:31,scope:[27,32,62,70,83,86],score:[7,12,13,21,29,87],script:[6,7,8,12,13,21,37,40,47,51,52,57,62,63,65,93,119,214,215,216,217,218,219,220,222,223,224,225,226,231],scrub:[72,75,79,83,93,156,203,214],sda1:58,sda:231,sdb:231,sdc1:231,sdc:231,search:[31,34,35,50,71,89,229],searchabl:231,second:[0,9,12,13,18,19,20,29,31,34,35,39,53,62,65,71,74,80,81,84,85,86,90,91,93,156,179,187,191,214,227,229,230,231],secondari:[0,2,3,13,17,19,20,22,32,34,61,68,69,75,83,89,156,162],secondary_index_stat:19,secondaryindexmanag:[69,83,230],secret:51,section:[2,4,5,13,14,17,18,19,20,22,27,29,51,53,56,57,59,62,63,64,66,70,71,73,75,83,85,86,88,93,214,218,229,230],sector:58,secur:[12,13,21,22,51,61,82,90],seda:3,see:[0,4,7,8,9,12,13,17,18,19,20,21,24,27,29,30,31,33,34,35,42,44,47,50,51,52,57,59,61,66,70,75,77,79,83,86,87,88,91,126,156,171,217,219,220,223,229,230,231],seed:[0,12,13,54,60,61,65,87,139,156,166],seedprovid:[12,13],seek:[0,3,4,12,13,58,80,83],seem:31,seen:[12,13,18],segment:[4,6,12,13,63,70,74,81,83,91,119,229,230],segment_nam:74,segmentid:219,segreg:60,select:[0,7,12,13,16,17,18,19,21,22,26,27,31,33,34,36,37,40,47,51,52,53,59,62,63,67,68,69,70,71,72,73,76,78,84,85,86,90,91,161,229,230,231],select_claus:20,select_stat:[19,25],self:[31,46],selinux:53,semant:[3,17,20,21,34],semi:53,send:[0,12,13,15,18,39,53,66,67,68,69,81,84,90,227,231],sender:66,sendto:90,sens:[17,20,22,32,53],sensic:21,sensit:[10,11,18,19,21,24,60,69,231],sensor:[29,31,35],sent:[0,12,13,18,29,53,62,66,67,68,69,81,83,84,227,231],sentenc:50,separ:[0,4,12,13,18,20,31,32,34,35,39,41,43,50,54,60,62,63,66,67,68,70,71,73,75,78,80,86,88,91,92,94,96,97,99,104,106,112,115,116,122,125,126,129,131,134,141,143,146,147,154,158,161,162,163,169,170,171,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,203,205,206,207,209,210,211,213,215,218,222],septemb:50,seq:[12,13,171],sequenc:[19,64,66],sequenti:[1,12,13,67,80,171],seren:20,seri:[18,31,51,57,75,78,91],serial:[4,12,13,29,63,67,81,90,93,222],serializeds:66,serializingcacheprovid:[12,13],seriou:[43,227,230],serv:[1,20,31,58,66,67,68,80,86,231],server:[7,8,12,13,19,20,29,34,47,48,51,52,53,54,57,58,65,66,73,80,83,86,89,90,218,227],server_encryption_opt:[73,86,218],servic:[0,7,12,13,32,47,57,65,81,83,86,88,229,231],session:[12,13,27,66,85,86,93,156,172],set:[0,1,3,4,6,7,8,9,10,12,13,16,17,18,19,20,21,24,25,31,34,36,39,43,46,48,50,52,54,58,61,63,65,66,67,68,70,72,73,74,75,78,79,80,81,83,84,86,87,88,90,91,92,93,96,115,126,156,169,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,210,214,215,217,218,224,226,227,228,229,230,231],set_liter:[27,29],setbatchlogreplaythrottl:156,setcachecapac:156,setcachekeystosav:156,setcompactionthreshold:[75,156],setcompactionthroughput:[75,156],setconcurr:156,setconcurrentcompactor:156,setconcurrentviewbuild:[25,156],sethintedhandoffthrottlekb:[81,156],setint:[21,73],setinterdcstreamthroughput:156,setlogginglevel:[9,54,156,229],setlong:21,setmaxhintwindow:[81,156],setra:58,setsnapshotthrottl:156,setstr:21,setstreamthroughput:156,setter:[27,40,41],settimeout:156,settraceprob:156,setup:[12,13,43,50,52,86],sever:[3,4,7,8,10,20,27,31,33,34,37,60,62,63,66,67,69,71,75,77,81,85,86,90,218],sfunc:[16,21],sha1:[51,224],sha256:57,sha:[45,51],shadow:[25,75,78],shall:[65,69,71,73,81],shape:90,shard:[4,35],share:[0,18,20,47,58,219,227,231],sharedpool:[66,91],sharp:55,shed:53,shelf:0,shell:[54,59,61,65,93],shift:29,ship:[42,52,59,62,86,91,229,231],shop:[30,31,33],shortcut:25,shorter:[43,86],shorthand:[33,91],shortli:35,shortlog:51,shortreadprotectionrequest:83,should:[0,4,5,7,9,12,13,17,18,19,20,21,24,27,29,31,34,39,40,42,43,46,47,50,52,53,54,55,56,57,58,59,62,63,65,66,68,70,71,72,73,75,76,77,78,79,80,81,83,85,86,87,88,90,91,161,171,193,223,225,227,231],shouldn:18,show:[18,27,30,31,32,34,42,61,66,70,85,88,93,104,124,145,156,160,170,177,197,198,206,213,214,226,227,229,230,231],shown:[19,31,32,33,35,39,84,91,206,218],shrink:[12,13,58],shuffl:66,shut:[12,13],shutdown:[4,9,12,13,80],side:[12,13,18,20,24,29,34,39,66,67,86,227],sign:[20,29,53],signal:[12,13,156,167],signatur:[57,62,74],signifi:231,signific:[12,13,43,47,50,52,58,66,67,79,80,84,227],significantli:[0,12,13,35,58,67,85,231],silent:21,similar:[0,12,13,20,21,31,33,62,65,66,68,73,79,80,226,227,231],similarli:[0,17,24,36,41,71,80,156,161],similiar:85,simpl:[12,13,18,30,31,32,34,35,42,44,47,52,54,68,81,86],simple_classnam:52,simple_select:20,simplequerytest:52,simpler:0,simplereplicationstrategi:86,simpleseedprovid:[12,13],simplesnitch:[12,13,87],simplest:57,simplestrategi:[36,58,62,63,68,71,85,90],simpli:[0,4,12,13,16,18,20,21,24,29,34,35,39,47,52,66,78,80,83,88,211],simplic:12,simplifi:[32,35],simul:52,simultan:[0,1,12,13,66,67,80,81,91,96,126,169,178,210],sinc:[0,12,13,18,20,21,29,35,39,43,47,52,53,58,63,65,69,73,75,76,81,83,84,85,87,88,217,220,222,230,231],singl:[0,1,3,10,12,13,17,18,19,20,21,24,25,27,29,31,34,35,36,39,41,50,54,57,58,59,61,63,65,66,67,76,78,81,82,83,84,85,86,87,91,93,99,214,227,229,230,231],singleton:46,sit:63,site:[43,57],situat:[12,13,52,75,81,172,231],six:65,size:[0,4,7,12,13,18,29,32,38,39,41,53,54,58,62,63,64,65,68,69,70,71,72,73,74,75,76,78,79,80,81,83,86,90,91,93,119,153,156,214,217,219,220,221,224,229,230,231],size_byt:[67,69],size_estim:[156,164,229],sizeandtimebasedrollingpolici:[9,70],sizeof:35,sizetieredcompactionstrategi:[18,73,77,78,230],sjk:156,skinni:230,skip:[0,12,13,18,20,53,63,66,71,83,88,91,93,178,196,214,217,223],skipcol:91,skipflush:71,skiprow:91,sla:[46,58],slack:[5,40,50,61,85],slash:19,slave:40,sleep:231,sleepi:[62,63],slf4j:[41,42,62,70],slf4jexceptionhandl:63,slight:0,slightli:[12,13],slow:[0,3,12,13,18,67,68,79,87,227,229,230,231],slower:[12,13,18,72,79,81,230,231],slowest:12,slowli:[12,13,29],small:[0,4,12,13,18,20,29,35,53,58,66,75,80,93,214,218,227,231],smaller:[0,4,7,12,13,35,53,77,80,91,223],smallest:[0,18,21,83,220],smallint:[16,17,21,24,26,29,36],smith:29,smoother:17,smoothli:[12,13],snappi:[4,12,13,79,81],snappycompressor:[18,79],snapshot:[3,4,12,13,34,42,65,82,83,93,97,140,153,156,178,191,214,222,226,231],snapshot_before_compact:71,snapshot_links_per_second:[140,156,191],snapshot_nam:[97,224],snippet:65,snitch:[0,7,11,12,13,18,56,60,61,82,84,103,156],snt:231,socket:[12,13,86,193],soft:[43,68],softwar:[31,42],sold:31,sole:[18,44],solid:[12,13,58,80],solr:89,solut:[40,58,62],solv:0,some:[0,1,3,12,13,16,18,19,20,21,29,31,32,33,34,35,37,42,43,44,47,49,50,52,53,54,58,62,63,66,67,68,69,71,73,74,75,79,81,83,84,86,88,91,219,221,227,229,230,231],some_funct:21,some_keysopac:[18,68],some_nam:19,someaggreg:21,somearg:21,somefunct:21,someon:[45,75],someth:[12,13,30,34,73,84,221,229,231],sometim:[12,13,19,20,31,66,81,227,228,229,230,231],someudt:21,somewher:85,soon:[33,86],sooner:[12,13],sophist:0,sort:[4,18,20,29,31,35,39,69,73,75,80,89,206,220,229],sort_kei:206,sound:35,sourc:[3,4,5,12,13,15,21,40,42,43,44,48,49,51,57,60,62,65,70,73,83,93,147,161,215,224,227],source_elaps:91,space:[0,4,12,13,35,39,41,53,63,66,67,68,71,74,75,76,78,80,83,223,231],space_used_by_snapshots_tot:206,space_used_l:206,space_used_tot:206,span:[0,12,13,20,75],spare:[40,229],sparingli:20,spark:55,spd:73,speak:[0,79,228,229,231],spec:[46,49,59,83,90,91],speci:[18,25],special:[0,19,20,52,53,66,69,75,83,93,225],specif:[0,7,16,18,19,20,29,31,35,39,43,47,50,53,55,62,66,69,71,73,74,75,78,83,85,86,90,91,156,161,171,218],specifc:83,specifi:[0,6,7,9,12,13,17,18,19,20,21,23,25,27,29,31,34,35,42,47,53,59,62,63,67,68,71,73,74,78,79,81,83,84,86,88,90,91,93,99,141,156,161,171,172,177,190,193,196,203,206,209,214,218,224,227],specific_dc:171,specific_host:171,specific_keyspac:161,specific_sourc:161,specific_token:161,specifii:[27,63],specnam:90,specul:[0,18,64,83,84],speculative_retri:[18,73],speculative_write_threshold:68,speculativefailedretri:83,speculativeinsufficientreplica:83,speculativeretri:83,speculativesamplelatencynano:83,speed:[12,13,57,61,67,73,79,93,214,230],spend:[79,231],spent:[57,79,83,231],sphinx:48,spike:53,spin:[12,13,58,75,80],spindl:[4,12,13],spirit:[12,13,87],split:[35,41,53,66,75,77,78,83,90,91,93,99,214],spread:[0,12,13,18,87],sql:[0,3,20,22,37],squar:19,squash:[43,50],src:161,ssd:[12,13,23,58,80,231],ssh:[40,65,227],ssl:[7,12,13,53,69,73,82,90,91,93,156,167,214],ssl_cipher_suit:69,ssl_enabl:69,ssl_protocol:69,ssl_storage_port:[69,87],ssp:[73,218],sss:24,sstabl:[2,8,12,13,18,35,53,54,60,61,71,72,77,78,79,80,82,85,93,96,99,126,141,147,153,156,163,169,178,206,210,211,215,219,220,222,223,224,226,229,230,231],sstable_act:229,sstable_compression_ratio:206,sstable_count:206,sstable_s:77,sstable_size_in_mb:[75,76],sstable_task:[69,229],sstabledump:[93,214],sstableexpiredblock:[75,93,214],sstablelevelreset:[93,214],sstableload:[71,82,86,93,214],sstablemetadata:[93,214,217,221],sstableofflinerelevel:[93,214],sstablerepairedset:[93,214,219],sstablerepairset:221,sstablescrub:[93,214],sstablesperreadhistogram:83,sstablesplit:[93,214],sstableupgrad:[93,214],sstableutil:[93,214,215,219],sstableverifi:[93,214],sstablewrit:41,stabil:[40,50,66],stabl:[91,229],stack:[12,13,66,222,223,224,225,226,231],stackcollaps:231,staff:[31,33,90],staff_act:90,stage:[3,50,51,64,69,131,156,184,227,230],stai:[30,31,61,68,75],stakehold:[31,33],stale:[13,86],stall:[12,13,88],stamp:70,stand:[52,57],standalon:52,standard1:[69,73,216,218,219,221,222,224,229],standard:[10,12,13,29,40,44,53,57,62,83,90,215,219,229],start:[0,7,12,13,20,31,32,33,34,35,37,43,48,53,54,57,58,61,63,65,68,71,75,76,78,79,80,81,83,84,85,86,88,92,99,171,172,203,220,224,227,229,230,231],start_dat:36,start_native_transport:69,start_token:[99,171,172],start_token_1:161,start_token_2:161,start_token_n:161,starter:50,starttl:73,startup:[4,8,12,13,28,47,53,57,69,76,83,88,225],startupcheck:229,starvat:[12,13],stat:219,state:[0,1,7,12,13,18,21,58,60,62,64,65,68,72,75,80,83,85,88,156,197,228,229],state_or_provinc:36,statement:[7,12,13,16,17,18,20,21,22,23,24,27,28,29,34,46,48,63,69,70,71,72,73,75,83,84,86,90,91,227,231],static0:18,static1:18,staticcolumn:219,statist:[4,67,71,73,75,83,91,101,127,156,159,205,206,208,218,219,224,225,230],statu:[27,40,46,50,53,57,71,81,85,86,91,93,156,170,198,199,200,201,202,211,214,227,228],statusautocompact:156,statusbackup:[71,156],statusbinari:156,statusgossip:156,statushandoff:[81,156],stc:[18,75],stdev:[90,231],stdin:[6,91],stdout:[6,9,91],stdvrng:90,steadi:68,step:[0,12,13,33,35,40,43,47,48,51,86,228,229],still:[0,1,8,12,13,16,17,18,20,21,24,27,29,34,35,37,40,41,45,66,81,85,86,88,91,216,227,231],stop:[0,4,12,13,63,65,66,91,114,156,174,204,214,215,216,217,218,219,220,221,222,223,224,225,226,229],stop_commit:[12,13],stop_paranoid:[12,13],stopdaemon:[65,156],storag:[0,1,2,3,18,22,23,35,39,50,53,61,63,68,71,73,79,80,82,89,218,219],storage_port:[54,69,87],storageservic:[9,12,13,41,65,83,86],storageservicembean:62,store:[1,4,8,12,13,17,18,19,20,29,31,33,34,35,36,39,58,61,62,63,66,67,68,69,71,72,73,75,79,80,81,83,86,89,91,111,119,121,156,202,218,219,222],store_queri:63,store_typ:[12,13],stort:220,straggler:63,straight:[42,88,231],straightforward:[35,74],strain:35,strategi:[7,12,13,18,35,58,67,71,73,79,81,82,87,90,217,230],stratio:61,stream:[4,12,13,29,58,61,64,66,68,71,73,75,76,78,79,81,82,85,95,136,142,156,161,171,188,189,192,193,218,225,231],stream_entire_sst:[67,69],stream_throughput_outbound_megabits_per_sec:[67,73,218],streamer:67,street:[29,36],strength:[12,13],stress:[61,65,93,231],stresscql:90,strict:[17,66,75],strictli:[15,18,21],string:[4,12,13,17,18,19,20,21,23,24,27,28,29,40,60,62,66,73,83,91,141,215],strong:0,strongli:[12,13,18,19,35,86],structur:[0,4,12,13,16,27,30,34,39,43,46,72,73,82,83,93,214,231],struggl:[0,3],stub:86,stuck:220,style:[0,12,13,31,32,35,46,47,48,50,52,61],stype:[16,21],sub:[0,18,20,29,71,75,76,231],subclass:[12,13],subdirectori:[12,13,28,57,71],subject:[12,13,21,27,67,86],submiss:[12,13,50],submit:[48,49,50,52,61,99],subopt:90,subqueri:34,subrang:[12,13],subscrib:[15,44,62],subscript:15,subsequ:[0,12,13,18,20,27,33,53,65,71,73,78,79,84,86],subset:[0,27,68,75,91,227],substanti:[67,231],substract:26,subsystem:86,subtract:219,subvert:78,succe:[0,1],succed:83,succeed:226,succesfulli:83,success:[33,35,51,62,63,65,66,70,84,91],successfulli:[0,1,51,63,66,68,70,81,83,85,226],sudden:[12,13],sudo:[53,57,62,65,73,231],suffer:231,suffici:[0,12,13,35,54,66,68,86],suffix:57,suggest:[19,34,43,44,50,80,226],suit:[12,13,39,40,50,52,73,86,218],suitabl:[20,21,35,46,50,68],sum:[35,74],sum_i:35,sum_j:35,sum_k:35,sum_l:35,summar:172,summari:[4,12,13,50,67,71,73,83,218,219,224,225],sun:[41,86,231],sunx509:218,supercolumn:16,supersed:[17,178,222],superus:[16,27,86],suppli:[3,6,18,20,34,45,63,73,215,227],supplier:31,support:[0,3,4,12,13,17,18,19,20,21,22,23,25,26,27,29,31,32,34,36,37,39,44,47,50,52,53,55,57,61,62,63,64,67,69,71,73,76,79,81,84,86,91,93,178,203,222,229,231],suppos:20,sure:[0,12,13,15,31,37,40,41,42,43,44,45,47,50,52,53,75,76,90,231],surfac:[0,86],surplu:53,surpris:[0,68],surprisingli:[12,13],surround:[24,36,91],suscept:21,suse:57,suspect:[5,50,231],suspend:47,svctm:231,svg:231,svn:51,swamp:53,swap:[0,4,12,13,231],swiss:[156,195],symbol:[31,231],symlink:73,symmetri:24,symptom:53,sync:[0,4,12,13,34,43,53,81,83,85,171,231],synchron:[9,62,67,85],synctim:83,synonym:27,synopsi:[63,71,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,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],syntact:[18,27],syntax:[17,19,20,21,27,29,37,43,62,63,71,75,79,90],syntaxerror:227,sys:[12,13],sysctl:[12,13,53],sysf:231,sysintern:[12,13],system:[0,1,3,7,8,9,12,13,18,21,27,32,35,40,47,52,53,54,57,58,59,62,63,66,69,70,71,75,80,83,86,89,91,130,132,133,136,142,147,156,163,164,165,183,185,186,188,192,218,223,225,227,228,231],system_auth:[12,13,63,69,86],system_distribut:[63,69],system_schema:[27,62,63,69,70],system_trac:[63,69,171],system_view:[63,69,229],system_virtual_schema:[62,63,64,70,229],systemlog:9,tab:[41,47],tabl:[0,1,3,4,16,17,19,20,21,22,23,24,25,27,28,29,31,32,33,34,35,36,39,52,58,61,62,63,64,65,67,68,70,72,73,75,79,81,82,85,86,90,91,93,96,99,106,114,116,125,126,129,134,147,156,162,163,165,169,171,178,182,196,198,203,205,206,210,211,214,216,218,219,221,225,226,227,229,230],table1:[27,85],table2:85,table_definit:90,table_nam:[18,20,23,27,28,63,69,73,75,206,229],table_opt:[18,25],tablehistogram:[156,230],tablestat:[79,156],tag:[29,46,51,71,196],tail:[18,57,68,229],take:[0,3,12,13,17,18,20,21,29,34,35,43,46,47,50,51,53,58,66,67,68,72,75,76,77,79,80,81,88,156,196,221,223,226,229,230,231],taken:[1,12,13,63,74,78,83,90,224],talk:33,tar:57,tarbal:[54,56,91],tarball_instal:57,target:[18,27,42,47,49,52,63,70,76,81,218],task:[0,12,13,33,40,42,44,47,50,67,83,85,91,229,230,231],task_id:69,taskdef:52,taught:34,tbl:84,tcp:[12,13,53,66,231],tcp_keepalive_intvl:53,tcp_keepalive_prob:53,tcp_keepalive_tim:53,tcp_nodelai:[12,13],tcp_retries2:[12,13],tcp_wmem:[12,13],tcpdump:231,teach:[0,12,13,87],team:[31,51,53],technetwork:[12,13],technic:[18,22],techniqu:[0,3,34,35,39,81,228,231],technot:[12,13],tee:57,tell:[12,13,20,46,53,54,60,83,231],templat:[40,51],tempor:[12,13],temporari:[81,86,93,214],temporarili:[0,1,12,13,68],tempt:[31,35],ten:[13,35],tend:[4,12,13,35,53,80,81],tendenc:[12,13,33],tension:33,tent:51,terabyt:79,term:[0,12,13,20,21,22,25,29,33,34,35,65,89],termin:[19,27,91],ternari:41,test:[0,7,12,13,32,41,42,45,46,48,50,57,59,61,63,65,67,69,80,90,91],test_keyspac:[86,229],testabl:[46,50],testbatchandlist:52,testmethod1:52,testmethod2:52,testsom:52,testtablewithoneclust:52,text:[4,16,18,19,20,21,24,29,32,35,36,39,43,51,63,69,70,71,73,74,79,85,86,89,90,231],textil:49,than:[0,1,4,6,7,12,13,18,19,20,21,22,25,26,29,31,35,41,50,58,61,62,66,67,74,75,76,77,78,79,80,81,84,86,87,88,90,172,185,186,216,218,220,223,224,227,229,230,231],thei:[0,1,3,7,12,13,16,17,18,19,20,21,22,25,26,27,29,30,31,32,33,34,37,39,41,46,50,52,61,62,63,65,67,68,69,70,71,72,73,76,79,80,81,83,86,216,220,225,226,227,229,230,231],them:[0,7,12,13,17,18,20,21,29,30,33,34,39,40,41,44,50,51,52,53,59,62,63,66,68,70,72,75,78,81,83,84,86,147,156,210,218,225,227,229,231],themselv:[0,20,27],theorem:1,theoret:18,therefor:[0,31,35,43,50,52,86,217,225],theses:86,thi:[0,1,2,4,5,6,7,9,10,11,12,13,14,17,18,19,20,21,22,24,25,27,29,30,31,32,33,34,35,36,37,40,41,42,43,44,45,46,47,49,50,51,52,53,54,56,57,58,61,62,63,64,65,66,67,68,70,71,72,73,75,76,77,78,79,80,81,83,84,85,86,87,88,90,91,92,93,94,96,97,99,102,104,106,112,116,122,125,126,128,129,131,134,141,143,146,147,154,156,158,161,162,163,169,170,171,172,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,203,205,206,207,209,210,211,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,229,230,231],thing:[12,13,29,31,35,44,45,50,53,56,66,75,85,231],think:[12,13,33,34],thinkaureliu:9,third:[29,35,46,61,83,230],thobb:91,those:[12,13,18,19,20,21,23,24,25,27,29,30,31,34,50,51,53,63,74,75,76,77,81,86,91,210,218,222,223,225,227,231],though:[17,18,19,36,39,61,66,69,71,75,79,83],thought:223,thousand:[13,91],thousandssep:91,thread:[4,9,12,13,25,63,65,66,67,70,80,81,83,85,86,90,96,126,156,169,171,178,187,208,210,220,229,230],thread_pool:69,threaddump:231,threadpool:[82,228],threadpoolnam:83,threadprioritypolici:47,three:[0,11,12,13,18,32,35,60,66,67,69,71,72,75,79,81,84,85,86,91,92,227,229,230],threshold:[4,18,62,68,74,80,87,129,156,182,189,231],thresholdfilt:9,thrift:[7,9,16,90],throttl:[12,13,66,67,69,73,81,93,128,140,156,179,183,187,188,191,192,214],throttled_count:69,throttled_nano:69,through:[0,5,6,16,17,18,19,20,25,31,32,33,40,43,47,50,53,57,58,59,66,69,70,74,75,91,231],throughout:[33,86],throughput:[0,3,12,13,39,58,67,73,75,79,80,83,130,136,142,156,183,188,192,218,229,230],throwabl:[46,52],thrown:[29,73,220],thu:[12,13,17,18,19,20,25,29,53,83,84,87,88,156,210],thumb:[12,13,50],thusli:29,tib:[101,155,206],tick:50,ticket:[5,43,44,45,46,50,51,52,74],tid:231,tie:53,tier:75,ties:[20,230],tighter:[12,13],tightli:[12,13],tild:91,time:[0,1,3,4,6,7,12,13,15,16,17,18,19,20,22,23,24,25,31,33,34,35,39,41,43,46,47,50,51,52,53,57,58,60,63,65,66,67,68,69,70,71,72,74,75,79,83,84,85,86,89,90,91,156,158,219,221,226,227,229,230,231],timefram:88,timehorizon:[12,13],timelin:18,timeout:[12,13,29,53,64,81,83,91,143,156,193,227,230],timeout_in_m:193,timeout_typ:[143,193],timer:[12,13,83],timestamp:[0,4,16,17,18,20,21,22,24,26,31,35,40,61,62,63,66,70,71,78,81,84,91,93,172,178,214,216,219,222],timeunit:78,timeuuid:[16,17,18,24,29,90],timewindowcompactionstrategi:[18,75],timezon:[24,91],tini:[12,13,75],tinyint:[16,17,21,24,26,29],tip:227,titl:[29,31,36,50,90],tjake:41,tlp_stress:69,tls_dhe_rsa_with_aes_128_cbc_sha:12,tls_dhe_rsa_with_aes_256_cbc_sha:12,tls_ecdhe_ecdsa_with_aes_128_gcm_sha256:13,tls_ecdhe_ecdsa_with_aes_256_gcm_sha384:13,tls_ecdhe_rsa_with_aes_128_cbc_sha:[12,13],tls_ecdhe_rsa_with_aes_128_gcm_sha256:13,tls_ecdhe_rsa_with_aes_256_cbc_sha:[12,13],tls_rsa_with_aes_128_cbc_sha:[12,13],tls_rsa_with_aes_128_gcm_sha256:13,tls_rsa_with_aes_256_cbc_sha:[12,13],tmp:[63,224,225,229,231],tmpf:231,tmplink:225,toc:[4,67,71,73,224,225],tock:50,todai:19,todat:21,todo:46,togeth:[0,12,13,18,20,21,29,34,35,39,40,60,78,227,230,231],toggl:86,tojson:22,token:[4,12,13,16,17,19,20,29,53,56,66,67,68,73,75,76,81,83,85,90,91,92,99,104,147,148,154,156,161,171,172,177,211,219,220,227,229,230],tokenawar:227,tokenrang:90,toler:[0,1,72,81],tom:20,tombston:[4,12,13,18,24,31,53,76,82,83,85,126,178,216,219,222,231],tombstone_compact:203,tombstone_compaction_interv:75,tombstone_threshold:75,tombstones_scan:69,tombstonescannedhistogram:83,ton:52,too:[12,13,18,19,21,29,35,46,58,69,75,76,79,90,227,230,231],took:[227,229],tool:[3,8,12,13,19,38,40,42,43,49,50,51,53,57,58,61,62,63,65,70,71,75,82,83,86,88,90,92,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230],toolset:231,top:[20,29,40,50,51,61,83,158,206,207,220],topcount:[158,207],topic:[58,91],topolog:[10,12,13,14,54,60,61,87,177],toppartit:156,total:[4,12,13,20,35,57,62,65,67,69,71,73,74,75,77,83,84,90,92,153,156,218,229,230,231],total_replica:[0,18,68],totalblockedtask:83,totalcolumnsset:219,totalcommitlogs:83,totalcompactionscomplet:83,totaldiskspaceus:83,totalhint:83,totalhintsinprogress:83,totallat:83,totalrow:219,totalsizecap:[9,70],totimestamp:21,touch:[15,30,35,53,75,77],tough:52,tounixtimestamp:21,tour:29,tpstat:[85,156,230],trace:[9,12,13,37,66,83,93,144,156,171,194,222,223,224,225,226,229,231],tracerout:231,track:[0,4,12,13,63,66,75,81,83],trackeddatainputplu:66,tracker:[43,50],trade:[32,79],tradeoff:[0,1,12,13,58,79,231],tradit:[78,79],traffic:[12,13,58,63,67,68,84,86,87,231],traffick:9,trail:41,trailer:66,transact:[0,2,3,20,28,31,34,39,66,68,83,93,203,214],transfer:[12,13,53,67,71,86,218],transform:20,transient_replica:[0,18,68],transit:[13,17,27,42,64],translat:231,transmit:[67,84],transpar:[12,13,34,53],transport:[7,12,13,47,62,69,73,83,90,108,118,156,200,218,230],trap:31,treat:[0,12,13,17,34,53,87],tree:[0,12,13,42,47,83,85],tri:[12,13,62,67,76,78,227],trigger:[4,7,9,12,13,16,18,19,22,40,61,69,70,72,78,79,81,82,86,96,156,168],trigger_nam:28,trigger_stat:19,trip:[12,13,20],trivial:86,troubl:[35,229],troubleshoot:[12,13,46,48,57,58,61,85,227,229,230,231],true_:13,truediskspaceus:[71,153,156],truesnapshotss:83,truli:16,truncat:[4,12,13,16,17,22,27,29,62,69,71,81,86,90,143,156,193,209],truncate_stat:19,truncatehint:[81,156],trunk:[43,45,46,47,50,52],trust:[57,86],trusti:231,trustor:[12,13],truststor:[12,13,69,73,86,90,218],truststore_password:[12,13],truststorepassword:86,tspw:[73,218],tstamp:215,ttl:[4,12,13,16,17,18,21,24,29,35,78,82,178,219,222],tty:91,tunabl:2,tune:[0,18,53,58,72,76,79,80,84,229,230],tupl:[0,12,13,16,17,19,20,21,22,24],tuple_liter:[19,20],tuple_typ:29,tuplevalu:[17,21],turn:[0,12,13,31,50,53,79,86,227],twc:[18,78],twice:[4,12,13,29,66],two:[0,1,3,10,11,12,13,18,19,20,21,24,26,34,35,39,47,54,60,61,62,63,65,66,69,70,71,72,73,75,77,78,79,80,81,84,86,87,91,219,230,231],txt:[4,21,45,46,49,50,51,57,67,71,73,224,225],type:[0,3,4,7,9,12,13,17,19,20,21,22,26,27,31,32,35,36,37,46,48,54,57,60,61,62,63,64,68,69,70,73,80,82,85,86,90,91,143,156,193,203,215,218,219,223,225,229,230],type_hint:19,type_nam:18,typeasblob:21,typecodec:21,typic:[0,3,12,13,18,20,30,32,34,35,37,39,53,71,72,73,75,78,79,80,83,85,86,89,91,224,227,229,230,231],typo:43,ubuntu:[47,57],udf:[12,13,21],udf_stat:19,udfcontext:[17,21],udt:[21,24,32,37],udt_liter:19,udt_nam:29,udt_stat:19,udtarg:21,udtnam:21,udtvalu:[17,21],ulimit:53,ultim:[0,34],ultra:79,unabl:[4,46,61,65,230],unacknowledg:[12,13],unaffect:29,unari:26,unauthorized_attempt:62,unavail:[0,12,13,18,68,81,83,86,88,231],unavailableexcept:227,unblock:83,unbootstrap:67,unbound:[12,29],uncaught:229,unchecked_tombstone_compact:[75,78],uncom:[9,12,13,63,83,86],uncommit:1,uncommon:[31,50],uncompress:[4,12,13,18,67,79,81,83],unconfirm:[12,13],undecor:4,undelet:75,under:[0,12,13,29,40,41,52,58,70,83,86,231],underli:[12,13,25,66,75,79,86,231],underlin:30,undersold:31,understand:[1,12,13,30,50,53,58,81,85,86,229,231],understood:30,undropp:66,unencrypt:[12,13,57,86],uneven:0,unexpect:[4,66,214,215,216,217,218,219,220,221,222,223,224,225,226],unexpectedli:29,unfinishedcommit:83,unflush:[71,196],unfortun:[52,81],unifi:1,uniform:90,uniq:229,uniqu:[0,3,18,21,29,30,31,32,33,37,64,66,90,219],unit:[29,34,46,48,69,78,156,180,218,223,230],unix:[70,228],unixtimestampof:[17,21],unknown:[11,64,220],unknowncfexcept:66,unless:[12,13,18,20,23,25,27,29,41,57,63,66,68,74,79,86,87,219,223,231],unlik:[0,12,13,17,20,29,39],unlimit:[12,13,53,73,91,218],unlock:33,unlog:[16,83,90],unmodifi:81,unnecessari:[46,67,88],unnecessarili:[66,74],unpack:57,unpredict:20,unprepar:83,unprocess:66,unprotect:66,unquot:19,unquoted_identifi:19,unquoted_nam:18,unreach:[0,85],unrecogn:63,unrecov:[66,69],unrecover:1,unrel:[50,227],unrepair:[12,13,68,77,82,83,85,93,214],unrepl:171,unresolv:13,unrespons:[18,68],unsafe_aggressive_sstable_expir:[75,78],unsecur:86,unselected_column:25,unset:[12,13,17,20,24,67,81,221],unsign:29,unspecifi:[12,13],unsubscrib:[15,61],unsuccess:70,unsupport:58,unsupportedclassversionerror:65,until:[0,4,12,13,18,25,29,63,66,68,72,74,75,76,79,81,84,86,87],unus:[12,13,66],unusu:46,unwant:29,unwrit:[12,13,66],upcom:31,updat:[0,1,3,12,13,16,17,18,19,21,22,24,25,27,31,34,39,43,46,48,50,52,57,60,61,62,69,70,73,75,79,81,83,84,86,90,91,229,230],update_paramet:20,update_stat:[19,20],updatewithlwt:90,upgrad:[4,10,12,13,18,68,69,75,156,210,224,225],upgrade_sst:203,upgradesst:[72,75,79,156],upload:[50,57,73],upon:[12,13,29,51,62,70,72,74,79],upper:[19,24,75,86],ups:80,upstream:50,uptim:[148,156],urgent:[12,13,51,66],url:[43,45,90],usag:[0,4,12,13,18,29,58,61,62,63,66,68,69,71,72,73,74,79,82,83,91,93,214],use:[0,4,7,9,10,12,13,16,17,18,19,20,21,23,24,25,27,29,30,31,32,33,34,35,39,40,41,43,46,47,50,52,54,57,58,59,61,62,63,65,67,68,69,70,71,72,73,74,75,76,79,80,81,83,84,85,86,87,88,90,91,96,126,139,156,158,169,178,207,210,215,218,219,221,222,223,225,227,228,229,230,231],use_k:70,use_keyspac:62,use_stat:19,usec:231,usecas:75,useconcmarksweepgc:47,usecondcardmark:47,used:[0,1,3,4,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,27,29,31,32,33,35,37,39,42,46,47,50,51,52,53,60,62,63,65,66,67,68,69,70,71,73,75,79,80,81,83,84,86,87,88,90,91,92,94,96,97,99,104,106,112,115,116,122,125,126,129,131,134,141,143,146,147,154,156,158,161,162,163,169,170,171,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,203,205,206,207,209,210,211,213,215,216,217,218,219,220,221,223,224,225,227,230,231],useecassandra:86,useful:[0,4,8,12,13,18,21,31,35,37,42,50,63,68,69,71,73,75,79,81,83,85,88,91,94,96,97,99,104,106,112,116,122,125,126,129,131,134,141,143,146,147,154,158,161,162,163,169,170,171,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,203,205,206,207,209,210,211,213,217,219,229,230,231],useparnewgc:47,user1:20,user2:20,user3:20,user4:20,user:[0,3,5,12,13,15,16,17,18,19,20,22,23,24,25,31,32,33,34,40,46,48,50,51,53,57,63,64,65,67,68,69,70,71,72,73,75,76,78,79,80,85,86,91,93,99,115,156,216,224,229,231],user_count:20,user_defined_typ:29,user_funct:27,user_nam:20,user_occup:20,user_opt:27,useract:20,userid:[18,20,21],userindex:23,usernam:[12,13,20,21,62,63,69,71,73,83,86,91,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,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,218],usertyp:73,uses:[0,4,10,11,12,13,18,19,20,21,23,27,28,31,32,43,52,53,62,63,65,69,84,86,90,226,230,231],usethreadprior:47,using:[1,3,4,6,7,9,10,12,13,17,18,19,20,21,25,27,29,30,32,34,35,36,37,39,40,47,48,49,50,51,52,54,56,57,58,59,60,61,62,63,65,66,67,68,69,70,71,72,73,76,78,79,80,81,82,83,84,86,88,91,92,99,161,178,196,215,217,219,220,221,222,225,227,228,229,230,231],using_byt:69,using_reserve_byt:69,usr:[63,65,91,231],usual:[0,12,13,20,29,34,45,50,52,58,63,72,86,171,222,227,229],utc:[24,91],utd:18,utf8:[29,91],utf8typ:[16,219],utf:[66,91],util:[4,21,46,57,63,66,75,91,229,231],uuid:[16,17,18,19,24,29,32,36,62],val0:[18,63,71,73,85],val1:[18,63,71,73,85],val2:[71,73,85],val:[21,90],valid:[0,12,13,17,18,19,20,21,24,29,31,32,51,53,65,66,68,75,79,83,85,86,91,93,171,178,203,214,226],validationexecutor:[69,83,230],validationtim:83,valu:[0,1,4,6,7,10,12,13,16,17,18,19,20,21,23,24,26,29,32,35,39,46,47,51,53,58,60,62,63,66,67,68,69,70,71,72,73,75,79,81,83,84,85,86,87,89,90,91,93,115,144,147,156,179,183,185,186,187,188,190,191,192,193,194,214,215,222,226,227,229,231],valuabl:229,value1:[20,62],value2:[20,62],value_in_kb_per_sec:[179,187],value_in_m:190,value_in_mb:[183,188,192],valueof:21,varchar:[16,18,21,24,29],vari:[18,35,39,54,79],variabl:[12,13,17,19,24,29,35,40,47,51,56,65,73,221],varianc:[32,229],variant:[0,19,39],variat:39,varieti:74,varint:[16,18,21,24,26,29],variou:[12,13,18,30,31,32,33,40,47,52,54,80,84,86,90,214,228,229],vector:[0,86],vendor:65,verb:66,verbatim:66,verbos:[9,73,172,218,222,225,226],veri:[0,12,13,18,20,34,39,43,50,52,53,72,75,76,79,80,221,226,227,229,230,231],verif:[93,214],verifi:[13,18,49,50,51,53,55,57,73,79,85,147,156,203,214,215,216,217,218,219,220,221,222,223,224,225,226],versa:225,version:[1,2,5,8,12,13,18,21,22,29,42,47,50,55,57,63,65,66,67,68,69,73,75,79,81,83,88,93,98,103,113,123,156,210,211,214,222,225,229],versu:34,vertic:[65,91],via:[0,4,12,13,15,17,25,27,31,34,42,46,47,53,66,69,70,71,73,78,79,80,81,83,85,86,87,219,221,231],vice:225,view:[0,3,12,13,17,19,22,27,31,32,33,34,37,38,61,63,64,68,69,83,91,133,156,186,213,221,229,230,231],view_build:203,view_nam:[18,25],viewbuildexecutor:[69,83,230],viewbuildstatu:156,viewlockacquiretim:83,viewmutationstag:[69,83,230],viewpendingmut:83,viewreadtim:83,viewreplicasattempt:83,viewreplicassuccess:83,viewwrit:83,viewwritelat:83,vint:66,violat:[0,7,13,34],virtual:[0,3,7,12,13,53,60,61,64,78,83,88],virtualenv:40,visibl:[0,18,27,41,72,81,84],visit:[30,57,90],visual:[0,31,32,43,229],vnode:[7,12,13,58,68,79,92],volum:[3,4,12,13,74,79,226,230,231],vote:48,vpc:87,vulner:[12,13,51,86],w_await:231,wai:[0,4,12,13,19,22,24,25,29,31,34,35,40,44,45,47,52,53,60,62,70,75,78,79,81,171,219,220,221,222,229,231],wait:[0,4,7,12,13,18,50,53,62,63,65,66,67,68,70,71,81,83,84,156,173,229,230,231],waitingoncommit:83,waitingonfreememtablespac:83,waitingonsegmentalloc:83,walk:[0,32],want:[0,4,12,13,18,20,30,33,34,35,37,40,47,50,51,52,53,57,63,70,81,85,86,88,90,217,218,221,229,231],warmup:[90,156,181],warn:[9,12,13,18,41,49,52,62,63,82,85,171,226,229],warrant:230,washington:29,wasn:17,wast:[12,13],watch:[52,231],weaker:0,web:[1,43],websit:[31,52,231],wed:65,week:[29,85,221],weibul:90,weigh:18,weight:[62,63,66,70,83,119],welcom:15,well:[0,12,13,18,20,21,24,29,31,33,34,35,37,46,47,57,58,62,63,66,68,70,71,74,79,80,86,87,156,174,224,229,231],went:83,were:[0,3,12,13,16,17,27,31,37,46,47,51,63,73,75,83,84,222,225,229,230],west:[10,51],what:[0,2,18,20,29,30,31,38,43,44,48,52,54,61,63,64,66,67,75,78,79,80,84,86,90,91,219,227,228,229,230,231],whatev:[17,20,53],whedon:20,wheel:224,when:[0,1,4,6,7,10,12,13,16,17,18,19,20,21,22,23,24,27,29,31,33,34,35,40,41,43,46,50,51,52,54,57,58,61,62,63,64,65,68,70,71,72,73,74,76,77,78,79,80,81,82,83,84,85,86,87,88,90,91,92,94,96,97,99,102,104,106,112,116,122,125,126,129,131,134,141,143,146,147,154,158,161,162,163,169,170,171,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,203,205,206,207,209,210,211,213,219,220,225,227,229,230,231],whenev:[220,231],where:[0,3,4,12,13,16,17,18,19,21,23,24,25,26,27,29,31,33,35,46,52,54,58,60,62,63,66,68,69,70,72,73,76,78,79,81,86,88,90,91,119,171,172,227,229,231],where_claus:20,wherea:[29,86,230],whether:[0,12,13,16,18,20,34,35,47,62,63,66,71,75,84,87,91,119,206,222],which:[0,1,3,4,5,7,10,11,12,13,17,18,19,20,21,22,23,25,26,27,28,29,30,31,32,33,34,35,39,43,50,51,52,53,54,57,58,59,60,62,63,65,66,67,68,70,71,72,73,74,75,76,77,78,79,80,81,83,84,85,86,87,88,90,99,134,147,153,156,161,171,172,225,227,228,229,230,231],whichev:[0,12,13],whilst:[12,13],whitelist:86,whitespac:48,who:[27,40,50,53,68,81],whole:[0,12,13,18,20,21,29,67,75,85],whose:[18,29,34,203],why:[0,31,46,50,58,61,79,216,227,229,231],wide2:69,wide:[0,3,4,30,31,35,57,74,230],wider:68,width:19,wiki:[43,47],wildcard:[20,27,63,223],wildli:18,win:[0,12,13],window:[0,4,12,13,75,81,138,156,190,228],winner:53,wip:50,wipe:[53,88],wire:[12,13,53,63,66],wirefram:33,wireshark:231,wise:18,wish:[12,13,31,51,78,83,229],withbuffersizeinmb:73,within:[0,3,4,12,13,18,19,20,23,29,31,39,47,50,53,54,60,67,71,77,78,80,83,86],withing:[12,13],without:[0,1,7,12,13,18,19,20,21,27,29,45,47,49,50,51,52,53,58,62,63,65,66,67,68,73,74,78,80,81,83,86,91,93,94,147,156,163,214,215],withpartition:73,withtyp:73,wmb:231,wmem_max:[12,13],wnen:37,won:[4,12,13,20,43,45,66,84,85,231],wont:[70,76],word:[17,18,19,25,27,29,53,74,86],work:[0,4,12,13,17,18,21,22,24,30,31,32,34,37,40,41,44,45,47,48,49,51,52,53,58,61,68,75,76,78,80,83,85,86,87,88,91,218,231],workaround:[218,222],worker:[66,91],workflow:[31,33],workload:[0,7,12,13,44,46,58,60,63,72,75,76,78,80,90,230,231],workspac:47,worktre:47,world:[30,34],worri:[33,50,53],wors:[12,13,87],worst:[12,13,35,50],worth:[9,12,13,34,66,70],worthwhil:[12,13,31],would:[0,12,13,18,19,20,21,24,27,29,30,31,32,33,34,35,39,43,47,50,52,58,61,62,66,67,68,69,73,75,78,79,80,81,84,85,86,87,219,221,225,229,231],wouldn:18,wrap:[31,66,87],writabl:73,write:[0,2,3,4,7,9,12,13,17,18,20,29,31,34,39,41,43,44,46,52,53,58,63,64,69,73,74,75,76,77,78,79,80,83,84,85,86,87,88,90,91,114,143,156,193,206,219,222,225,227,229,230,231],write_lat:206,write_request_timeout:53,write_request_timeout_in_m:81,writefailedideacl:83,writelat:[83,227],writer:[4,12,13,41,73],writetim:[16,21],writetimeoutexcept:[12,13,227],written:[0,1,3,4,9,12,13,16,18,28,33,34,40,53,62,63,66,68,70,72,73,75,78,79,81,83,84,85],wrong:[12,13,34,230],wrqm:231,wrst:231,wrte:83,www:[12,13,49,231],x86:89,xandra:55,xarg:[221,229],xdm:231,xferd:57,xlarge_daili:70,xml:[14,42,47,49,51,52,54,61,65,73,229],xmn220m:47,xms1024m:47,xmx1024m:47,xmx:80,xss256k:47,xzvf:57,yaml:[0,3,4,7,13,14,21,25,27,49,54,58,60,61,62,64,66,67,68,69,71,73,81,83,84,86,87,88,90,92,100,115,119,135,156,174,206,208,218,219,227],year:[20,29,34,35,65],yes:[16,18],yet:[0,12,13,18,40,44,71,74,83,225],ygc:231,ygct:231,yield:[20,34,35,70,88,231],yml:49,ymmv:229,you:[0,4,5,7,9,10,12,13,15,17,18,19,20,21,23,24,25,27,28,29,30,31,32,33,34,35,36,37,40,41,42,43,44,45,47,48,51,52,53,54,55,56,57,58,59,60,61,62,63,68,70,71,73,74,75,76,77,79,81,83,84,85,86,87,88,89,90,91,94,156,196,215,217,218,219,221,222,223,225,226,227,228,229,230,231],young:231,younger:21,your:[0,5,11,12,13,15,17,18,19,31,32,33,34,35,36,37,41,43,44,47,48,50,52,53,54,57,58,61,62,63,65,68,75,76,79,80,85,86,87,90,91,218,223,226,228,229,230,231],yourself:[44,45,52,81],yum:[57,65],yyyi:[6,9,24,29,70],z_0:[18,23,25],zero:[3,12,13,17,18,53,64,83,87,229],zerocopi:67,zgrep:229,zip:[9,29,70],zipcod:29,zlib:79,zone:[0,10,12,13,29,87],zoomabl:231,zstd:[4,12,13,79],zstdcompressor:[18,79]},titles:["Dynamo","Guarantees","Architecture","Overview","Storage Engine","Reporting Bugs","commitlog-archiving.properties file","cassandra-env.sh file","jvm-* files","logback.xml file","cassandra-rackdc.properties file","cassandra-topologies.properties file","cassandra.yaml file configuration","Cassandra Configuration File","Configuring Cassandra","Contact us","Appendices","Changes","Data Definition","Definitions","Data Manipulation","Functions","The Cassandra Query Language (CQL)","Secondary Indexes","JSON Support","Materialized Views","Arithmetic Operators","Security","Triggers","Data Types","Conceptual Data Modeling","Logical Data Modeling","Physical Data Modeling","Defining Application Queries","RDBMS Design","Evaluating and Refining Data Models","Defining Database Schema","Cassandra Data Modeling Tools","Data Modeling","Introduction","Jenkins CI Environment","Code Style","Dependency Management","Working on Documentation","Getting Started","How-to Commit","Review Checklist","Building and IDE Integration","Contributing to Cassandra","License Compliance","Contributing Code Changes","Release Process","Testing","Frequently Asked Questions","Configuring Cassandra","Client drivers","Getting Started","Installing Cassandra","Production Recommendations","Inserting and querying","Glossary","Welcome to Apache Cassandra\u2019s documentation!","Audit Logging","Full Query Logging (FQL)","New Features in Apache Cassandra 4.0","Support for Java 11","Improved Internode Messaging","Improved Streaming","Transient Replication","Virtual Tables","Audit Logging","Backups","Bloom Filters","Bulk Loading","Change Data Capture","Compaction","Leveled Compaction Strategy","Size Tiered Compaction Strategy","Time Window CompactionStrategy","Compression","Hardware Choices","Hints","Operating Cassandra","Monitoring","Read repair","Repair","Security","Snitch","Adding, replacing, moving and removing nodes","Third-Party Plugins","Cassandra Stress","cqlsh: the CQL shell","generatetokens","Cassandra Tools","assassinate","bootstrap","cleanup","clearsnapshot","clientstats","compact","compactionhistory","compactionstats","decommission","describecluster","describering","disableauditlog","disableautocompaction","disablebackup","disablebinary","disablefullquerylog","disablegossip","disablehandoff","disablehintsfordc","disableoldprotocolversions","drain","enableauditlog","enableautocompaction","enablebackup","enablebinary","enablefullquerylog","enablegossip","enablehandoff","enablehintsfordc","enableoldprotocolversions","failuredetector","flush","garbagecollect","gcstats","getbatchlogreplaythrottle","getcompactionthreshold","getcompactionthroughput","getconcurrency","getconcurrentcompactors","getconcurrentviewbuilders","getendpoints","getfullquerylog","getinterdcstreamthroughput","getlogginglevels","getmaxhintwindow","getseeds","getsnapshotthrottle","getsstables","getstreamthroughput","gettimeout","gettraceprobability","gossipinfo","help","import","info","invalidatecountercache","invalidatekeycache","invalidaterowcache","join","listsnapshots","move","netstats","Nodetool","pausehandoff","profileload","proxyhistograms","rangekeysample","rebuild","rebuild_index","refresh","refreshsizeestimates","reloadlocalschema","reloadseeds","reloadssl","reloadtriggers","relocatesstables","removenode","repair","repair_admin","replaybatchlog","resetfullquerylog","resetlocalschema","resumehandoff","ring","scrub","setbatchlogreplaythrottle","setcachecapacity","setcachekeystosave","setcompactionthreshold","setcompactionthroughput","setconcurrency","setconcurrentcompactors","setconcurrentviewbuilders","sethintedhandoffthrottlekb","setinterdcstreamthroughput","setlogginglevel","setmaxhintwindow","setsnapshotthrottle","setstreamthroughput","settimeout","settraceprobability","sjk","snapshot","status","statusautocompaction","statusbackup","statusbinary","statusgossip","statushandoff","stop","stopdaemon","tablehistograms","tablestats","toppartitions","tpstats","truncatehints","upgradesstables","verify","version","viewbuildstatus","SSTable Tools","sstabledump","sstableexpiredblockers","sstablelevelreset","sstableloader","sstablemetadata","sstableofflinerelevel","sstablerepairedset","sstablescrub","sstablesplit","sstableupgrade","sstableutil","sstableverify","Find The Misbehaving Nodes","Troubleshooting","Cassandra Logs","Use Nodetool","Diving Deep, Use External Tools"],titleterms:{"break":35,"class":[9,87],"default":9,"final":225,"function":[18,20,21,24],"import":[41,73,147],"long":52,"new":[53,64],"switch":75,"transient":[0,68],"true":7,AWS:10,Added:66,Adding:88,Doing:220,IDE:47,IDEs:41,LCS:76,QoS:66,TLS:86,The:[20,22,24,69,75,227],USE:18,Use:[79,218,230,231],Uses:79,Using:[39,47,62,63,65,73,221],Will:53,With:86,about:40,abov:219,accept:73,access:[51,86],account:51,adcanc:70,add:[42,53],address:53,advanc:[79,231],after:88,aggreg:[18,21],ahead:58,alias:20,all:[27,53,71,219,225],alloc:88,allocate_tokens_for_keyspac:[12,13],allocate_tokens_for_local_replication_factor:[12,13],allow:[20,81],alreadi:217,alter:[18,25,27,29],analysi:39,ani:53,announc:51,answer:44,anti:31,apach:[40,47,51,61,64],api:73,append:9,appender_choic:9,appendic:16,appendix:16,applic:[33,66,81],architectur:2,archiv:[6,62],archive_command:[6,63],arithmet:26,artifact:51,ask:53,assassin:94,assign:88,assur:66,attempt:223,audit:[62,70],audit_logging_opt:[12,13],auditlog:70,auth:86,authent:[12,13,27,86],author:[12,13,86],auto_bootstrap:7,auto_snapshot:[12,13],automat:27,automatic_sstable_upgrad:[12,13],avail:[1,67],available_processor:7,avg:21,back_pressure_en:12,back_pressure_strategi:12,background:84,backup:[71,73],base:[43,67],basic:[222,226,231],batch:[1,20,53,83],batch_size_fail_threshold_in_kb:[12,13],batch_size_warn_threshold_in_kb:[12,13],batchlog_replay_throttle_in_kb:[12,13],bcc:231,befor:50,behavior:84,below:67,benefit:[67,79],best:85,between:[34,68],binari:57,binauditlogg:70,bintrai:51,blob:[21,53],block:[63,84,216],bloom:72,boilerpl:41,bootstrap:[53,76,88,95],branch:50,broadcast_address:[7,12,13],broadcast_rpc_address:[12,13],buffer_pool_use_heap_if_exhaust:[12,13],bufferpool:83,bug:[5,44,50],build:[47,65],bulk:[53,73],cach:[69,83,86,231],cache_s:7,calcul:35,call:[51,53],can:53,cap:1,capi:89,captur:[70,74,91,231],cas_contention_timeout_in_m:[12,13],cassandra:[7,10,11,12,13,14,22,24,34,37,40,43,47,48,51,52,53,54,57,61,63,64,70,74,82,84,86,89,90,93,224,229],cast:21,categori:[40,62],cdc:74,cdc_enabl:[12,13],cdc_free_space_check_interval_m:[12,13],cdc_raw_directori:[12,13],cdc_total_space_in_mb:[12,13],certif:86,chang:[17,50,53,54,72,74,78],characterist:29,cheap:68,check:222,checklist:46,choic:80,choos:[50,57],circleci:52,claus:20,clean:225,cleanup:[88,96],clear:[71,91],clearsnapshot:97,client:[55,59,69,83,86,227],client_encryption_opt:[12,13],clientstat:98,clojur:55,close:66,cloud:80,cluster:[0,18,53,218,230],cluster_nam:[12,13],code:[4,41,50],collect:[29,75,231],column:29,column_index_cache_size_in_kb:[12,13],column_index_size_in_kb:[12,13],command:[6,47,70,75,91,221],comment:19,commit:45,commit_failure_polici:[12,13],commitlog:[4,6,83],commitlog_compress:[12,13],commitlog_directori:[12,13],commitlog_segment_size_in_mb:[12,13],commitlog_sync:[12,13],commitlog_sync_batch_window_in_m:[12,13],commitlog_sync_group_window_in_m:[12,13],commitlog_sync_period_in_m:[12,13],commitlog_total_space_in_mb:[12,13],commitlogseg:74,committ:43,commod:0,common:[18,65,75,80,229],compact:[16,58,75,76,77,83,99,230],compaction_large_partition_warning_threshold_mb:[12,13],compaction_throughput_mb_per_sec:[12,13],compactionhistori:100,compactionstat:101,compactionstrategi:78,compar:39,compat:91,complianc:49,compon:67,compress:[58,79],conceptu:30,concern:78,concurrent_compactor:[12,13],concurrent_counter_writ:[12,13],concurrent_materialized_view_build:[12,13],concurrent_materialized_view_writ:[12,13],concurrent_read:[12,13],concurrent_valid:[12,13],concurrent_writ:[12,13],condition:27,config:[7,218],configur:[12,13,14,40,54,58,62,63,67,70,71,74,79,81,84],conflict:42,connect:[27,53,66],consist:[0,1,7,84,91],constant:19,contact:15,content:[9,51,70],contribut:[44,48,50],control:27,convent:[19,41],convers:21,coordin:230,copi:[67,91],corrupt:[66,222,226],corrupted_tombstone_strategi:[12,13],count:21,counter:[20,29,222],counter_cache_keys_to_sav:[12,13],counter_cache_save_period:[12,13],counter_cache_size_in_mb:[12,13],counter_write_request_timeout_in_m:[12,13],cpu:[80,231],cql:[16,22,83,91],cqlsh:[59,91],cqlshrc:91,cqlsstablewrit:73,creat:[18,21,23,25,27,28,29,44,50,51,58,71],credenti:27,credentials_update_interval_in_m:[12,13],credentials_validity_in_m:[12,13],cross_node_timeout:[12,13],cstar_perf:52,current:[21,224],custom:29,cython:91,dart:55,data:[0,18,20,24,27,29,30,31,32,35,37,38,39,53,71,73,74,75,88],data_file_directori:[12,13],databas:[27,36],datacent:27,dataset:0,date:[21,29,222],datetim:[21,26],dead:[7,88],deal:222,debian:57,debug:[47,229],decis:34,decommiss:[67,102],deep:231,defin:[21,29,33,36],definit:[18,19,69],defragment:77,delet:[20,51,53,75],deliveri:81,demo:[62,73],denorm:34,depend:[42,91],deploy:67,describ:[18,69,91,104],describeclust:103,deseri:66,design:[34,39],detail:[75,218],detect:0,develop:51,diagnost:[62,84],diagnostic_events_en:[12,13],dies:53,differ:[34,69,71],directori:[6,7,54,62,71,75],disabl:[63,70,74],disableauditlog:105,disableautocompact:106,disablebackup:107,disablebinari:108,disablefullquerylog:109,disablegossip:110,disablehandoff:111,disablehintsfordc:112,disableoldprotocolvers:113,disallow:67,disk:[35,53,80,81],disk_failure_polici:[12,13],disk_optimization_strategi:[12,13],displai:215,distribut:[0,51],dive:231,document:[43,44,61],doe:[53,62,70],down:81,drain:114,driven:39,driver:[55,59],drop:[16,18,21,23,25,27,28,29,53,67],droppedmessag:83,dry:220,dtest:[44,52],dump:215,durabl:1,durat:29,dynam:87,dynamic_snitch_badness_threshold:[12,13],dynamic_snitch_reset_interval_in_m:[12,13],dynamic_snitch_update_interval_in_m:[12,13],dynamo:0,each:[53,219],each_quorum:68,ec2:10,ec2_naming_schem:10,eclips:47,effici:66,either:10,elig:67,elixir:55,email:53,enabl:[62,63,67,68,70,74,86],enable_materialized_view:[12,13],enable_sasi_index:[12,13],enable_scripted_user_defined_funct:[12,13],enable_transient_repl:[12,13],enable_user_defined_funct:[12,13],enableauditlog:115,enableautocompact:116,enablebackup:117,enablebinari:118,enablefullquerylog:119,enablegossip:120,enablehandoff:121,enablehintsfordc:122,enableoldprotocolvers:123,encod:[9,24],encrypt:[58,86],endpoint_snitch:[12,13],engin:4,ensur:58,entir:215,entri:53,env:7,environ:[40,54],erlang:55,error:[53,66,227],evalu:35,even:53,event:[62,84],eventu:1,exampl:[4,11,39,63,71,84,85,92],except:41,exclud:215,exist:53,exit:91,expand:91,expect:84,experiment:[12,13],expir:75,expiri:66,explan:219,extend:226,extern:[73,231],factor:53,fail:[53,88],failur:[0,53,66],failuredetector:124,fals:7,faq:90,faster:81,featur:[3,12,13,64],file:[6,7,8,9,10,11,12,13,41,42,70,218,223,226,229],file_cache_en:13,file_cache_size_in_mb:[12,13],fileauditlogg:70,filedescriptorratio:83,filenam:[7,9],filenamepattern:9,filter:[20,70,72],find:[71,227],first:34,fix:[44,50],flamegraph:231,flexibl:62,flow:43,flush:125,flush_compress:[12,13],format:[41,215],found:[217,220],fql:63,fqltool:63,frame:66,freez:50,frequenc:62,frequent:53,from:[47,51,53,66,69,71,73,91,218],fromjson:24,frozen:29,full:[63,68,85,229],full_query_logging_opt:[12,13],fulli:75,further:[57,74],garbag:[75,231],garbagecollect:126,garbagecollector:83,gc_grace_second:75,gc_log_threshold_in_m:[12,13],gc_warn_threshold_in_m:[12,13],gcstat:127,gener:[41,73],generatetoken:92,get:[44,56,218,229],getbatchlogreplaythrottl:128,getcompactionthreshold:129,getcompactionthroughput:130,getconcurr:131,getconcurrentcompactor:132,getconcurrentviewbuild:133,getendpoint:134,getfullquerylog:135,getinterdcstreamthroughput:136,getlogginglevel:137,getmaxhintwindow:138,getse:139,getsnapshotthrottl:140,getsstabl:141,getstreamthroughput:142,gettimeout:143,gettraceprob:144,github:43,give:53,glossari:60,goal:39,gossip:0,gossipinfo:145,gossipingpropertyfilesnitch:10,gpg:51,grace:[75,219],grant:27,graph:90,group:20,guarante:1,handl:41,handoff:81,hang:88,happen:53,hardwar:[0,80],has:217,hash:0,haskel:55,heap:53,help:[91,146],hide:218,high:[1,67,231],hint:[66,81],hinted_handoff_disabled_datacent:[12,13],hinted_handoff_en:[12,13],hinted_handoff_throttle_in_kb:[12,13],hints_compress:[12,13],hints_directori:[12,13],hints_flush_period_in_m:[12,13],hintsservic:83,host:[53,91],hot:86,hotel:[31,32],how:[43,45,53,69,70],htop:231,idea:47,ideal_consistency_level:[12,13],identifi:19,ignore_dynamic_snitch_sever:7,impact:79,improv:[66,67,84],inbound:[66,69],includ:225,increment:[0,71,73,85],incremental_backup:[12,13],index:[1,18,23,83,89],index_summary_capacity_in_mb:[12,13],index_summary_resize_interval_in_minut:[12,13],info:[57,148],inform:[63,229,231],initi:44,initial_token:[7,12,13],insert:[20,24,59],instal:57,integr:[34,47,86],intellij:47,inter:86,inter_dc_stream_throughput_outbound_megabits_per_sec:[12,13],inter_dc_tcp_nodelai:[12,13],interfac:0,intern:[27,86,215],internod:[66,69],internode_application_receive_queue_capacity_in_byt:[12,13],internode_application_receive_queue_reserve_endpoint_capacity_in_byt:[12,13],internode_application_receive_queue_reserve_global_capacity_in_byt:[12,13],internode_application_send_queue_capacity_in_byt:[12,13],internode_application_send_queue_reserve_endpoint_capacity_in_byt:[12,13],internode_application_send_queue_reserve_global_capacity_in_byt:[12,13],internode_application_timeout_in_m:12,internode_authent:[12,13],internode_compress:[12,13],internode_recv_buff_size_in_byt:[12,13],internode_send_buff_size_in_byt:[12,13],internode_streaming_tcp_user_timeout_in_m:12,internode_tcp_connect_timeout_in_m:12,internode_tcp_user_timeout_in_m:12,introduct:39,invalidatecountercach:149,invalidatekeycach:150,invalidaterowcach:151,investig:[44,227],iostat:231,issu:65,java:[53,55,65,73],jconsol:53,jenkin:40,jira:[43,51],jmx:[53,75,83,86],job:40,join:[34,53,152],join_r:7,json:24,jstack:231,jstat:231,jvm:[8,83,231],keep:224,kei:[23,25,51,215],key_cache_keys_to_sav:[12,13],key_cache_save_period:[12,13],key_cache_size_in_mb:[12,13],keyspac:[18,53,58,62,67,69,71,73,83,220],keyspace_count_warn_threshold:13,keyword:[16,19],lang:53,languag:22,larg:[35,53],latenc:[227,230,231],level:[0,9,76,84,217,231],librari:42,licens:49,lightweight:[1,90],limit:[20,25,66,69,70],line:[47,91],lineariz:1,list:[15,27,29,44,53,69,71,225],listen:53,listen_address:[7,12,13,53],listen_interfac:[12,13],listen_interface_prefer_ipv6:[12,13],listen_on_broadcast_address:[12,13],listsnapshot:153,liter:29,live:53,load:[53,73,218],load_ring_st:7,local:[43,66,230],local_system_data_file_directori:[12,13],locat:54,log:[53,54,62,63,70,75,225,227,229],log_dir:63,log_level:9,logback:9,logger:[62,229],logic:31,login:91,longer:81,lot:[53,221],lucen:89,made:53,mail:15,main:54,major:[76,77],make:81,manag:[42,215],mani:221,manifest:222,manipul:20,manual:88,map:[23,29,53],master:0,materi:[18,25,39],matrix:65,max:[21,53],max_archive_retri:63,max_concurrent_automatic_sstable_upgrad:[12,13],max_hint_window_in_m:[12,13],max_hints_delivery_thread:[12,13],max_hints_file_size_in_mb:[12,13],max_log_s:63,max_queue_weight:63,max_value_size_in_mb:[12,13],maxfiles:9,maxhistori:9,maxtimeuuid:21,mean:53,membership:0,memori:[53,80,83],memorypool:83,memtabl:4,memtable_allocation_typ:[12,13],memtable_cleanup_threshold:[12,13],memtable_flush_writ:[12,13],memtable_heap_space_in_mb:[12,13],memtable_offheap_space_in_mb:[12,13],merg:75,messag:[53,66,69],metadata:[219,221],method:[53,57],metric:[66,83,227],metricsreporterconfigfil:7,min:21,minor:75,mintimeuuid:21,misbehav:227,mode:90,model:[0,30,31,32,35,37,38,39],monitor:[81,83,88],monoton:84,more:[53,75,215,218,229],move:[88,154],movement:88,multi:[0,67],multilin:41,multipl:[0,71,223],name:[9,73],nativ:[21,29],native_transport_allow_older_protocol:[12,13],native_transport_flush_in_batches_legaci:[12,13],native_transport_frame_block_size_in_kb:12,native_transport_idle_timeout_in_m:[12,13],native_transport_max_concurrent_connect:[12,13],native_transport_max_concurrent_connections_per_ip:[12,13],native_transport_max_frame_size_in_mb:[12,13],native_transport_max_thread:[12,13],native_transport_port:[7,12,13],native_transport_port_ssl:[12,13],net:55,netbean:47,netstat:155,netti:67,network:231,network_author:[12,13],networking_cache_size_in_mb:13,networktopologystrategi:[0,18,58],newer:47,next:[51,227],nexu:51,nio:66,node:[0,7,53,67,81,86,88,227],nodej:55,nodetool:[53,62,70,73,75,81,156,230],none:84,note:43,noteworthi:29,now:21,num_token:[12,13],number:[26,67],number_of_dai:9,number_of_m:7,number_of_processor:7,object:[18,68,69],old:[51,224],one:[53,221],onli:[53,215,225],open:[47,66],oper:[3,26,51,53,67,78,79,82],optim:[34,66],option:[6,9,25,62,68,70,73,75,76,77,78,85,91],order:20,organis:51,otc_backlog_expiration_interval_m:[12,13],otc_coalescing_enough_coalesced_messag:[12,13],otc_coalescing_strategi:[12,13],otc_coalescing_window_u:[12,13],other:[53,62,69,85],out:[0,81],outbound:66,outofmemoryerror:53,output:[70,92,215,216,218],overflow:222,overload:66,overview:[3,74],own:40,packag:[51,57],packet:231,page:[91,231],parallel:67,paramet:[20,74,75],parti:89,partit:[0,35,39],partition:[7,12,13],password:86,patch:[44,50],path:66,pattern:[9,31],pattern_info:9,pausehandoff:157,paxo:66,pend:68,per:0,perform:[51,52],periodic_commitlog_sync_lag_block_in_m:[12,13],perl:55,permiss:27,permissions_update_interval_in_m:[12,13],permissions_validity_in_m:[12,13],phi_convict_threshold:[12,13],php:55,physic:[0,32],pick:0,plai:81,plugin:[40,89],point:53,pom:42,pool:69,port:[7,53],post:51,practic:85,precis:6,prefer_loc:10,prepar:[19,66],prepared_statements_cache_size_in_byt:7,prepared_statements_cache_size_mb:[12,13],prerequisit:[51,57],prevent:66,preview:67,primari:25,print:[219,221],process:51,product:58,profil:90,profileload:158,progress:[88,218],project:47,promot:51,properti:[6,10,11,54],propos:66,protocol:66,proxyhistogram:159,publish:[43,51],python:55,pytz:91,qualiti:66,queri:[0,22,33,34,39,59,63,227,229,230],question:[44,53],queu:66,quorum:[68,84],rack:[10,58],rackdc:10,rang:[68,88],range_request_timeout_in_m:[12,13],rangekeysampl:160,rangemov:7,rate:227,raw:215,rdbm:34,read:[58,68,74,84],read_request_timeout_in_m:[12,13],rebuild:161,rebuild_index:162,recommend:58,reconnect:66,record:0,recov:66,reduc:217,referenti:34,refin:35,refresh:163,refreshsizeestim:164,refus:53,regular:69,relat:39,releas:51,relevel:220,reliabl:231,reload:[70,86],reloadlocalschema:165,reloadse:166,reloadssl:167,reloadtrigg:168,relocatesst:169,remot:53,remov:[75,88],removenod:170,repair:[67,68,75,84,85,171,221],repair_admin:172,repair_session_space_in_mb:[12,13],repaired_data_tracking_for_partition_reads_en:[12,13],repaired_data_tracking_for_range_reads_en:[12,13],replac:88,replace_address:7,replaybatchlog:173,replaylist:7,replic:[0,53,68],replica:[0,67,68],replica_filtering_protect:13,report:[5,44,53,83],report_unconfirmed_repaired_data_mismatch:[12,13],repositori:51,request:[66,81,83],request_timeout_in_m:[12,13],requir:[40,42],reserv:[16,31,32],reset:63,resetfullquerylog:174,resetlocalschema:175,resili:66,resolut:42,resourc:[66,231],restor:71,restore_command:6,restore_directori:6,restore_point_in_tim:6,restrict:27,result:20,resum:88,resumehandoff:176,retriev:21,review:[44,46],revok:27,rewrit:224,rhel:53,right:50,ring:[0,53,177],ring_delay_m:7,role:[27,86],role_manag:[12,13],roles_update_interval_in_m:[12,13],roles_validity_in_m:[12,13],roll:62,roll_cycl:63,rolling_policy_choic:9,rollingpolici:9,row:215,row_cache_class_nam:[12,13],row_cache_keys_to_sav:[12,13],row_cache_save_period:[12,13],row_cache_size_in_mb:[12,13],rowcach:89,rpc_address:[12,13],rpc_interfac:[12,13],rpc_interface_prefer_ipv6:[12,13],rpc_keepal:[12,13],rpc_port:7,rpm:57,rubi:55,run:[52,220],runtim:[54,81],rust:55,safeti:[12,13],sai:53,same:[53,71],sampl:70,saved_caches_directori:[12,13],scala:55,scalabl:1,scalar:21,scale:0,schema:[18,36,39],script:221,scrub:[178,222],second:219,secondari:[1,23],secur:[27,86],see:53,seed:[40,53],seed_provid:[12,13],select:[20,24,25],selector:20,send:51,sequenc:63,serial:[66,91],server:40,server_encryption_opt:[12,13],session:91,set:[27,29,40,47,53,62,69,71,221],setbatchlogreplaythrottl:179,setcachecapac:180,setcachekeystosav:181,setcompactionthreshold:182,setcompactionthroughput:183,setconcurr:184,setconcurrentcompactor:185,setconcurrentviewbuild:186,sethintedhandoffthrottlekb:187,setinterdcstreamthroughput:188,setlogginglevel:189,setmaxhintwindow:190,setsnapshotthrottl:191,setstreamthroughput:192,settimeout:193,settraceprob:194,setup:[40,47],share:91,shell:91,show:[53,91,221],signatur:21,simpl:0,simplestrategi:[0,18],singl:[53,71,75,215],size:[9,35,66,77,223],sjk:195,skip:222,slack:[15,51],slow_query_log_timeout_in_m:[12,13],small:223,snapshot:[71,73,196,218,223,224],snapshot_before_compact:[12,13],snapshot_links_per_second:13,snitch:[10,58,87],sort:34,sourc:[47,91],special:91,specif:27,specifi:[219,223],specul:68,speed:[53,218],sphinx:43,split:223,ssl:[86,218],ssl_storage_port:[7,12,13],sstabl:[4,67,69,73,75,76,83,214,216,217,218,221,225],sstable_preemptive_open_interval_in_mb:[12,13],sstabledump:215,sstableexpiredblock:216,sstablelevelreset:217,sstableload:[73,218],sstablemetadata:219,sstableofflinerelevel:220,sstablerepairedset:221,sstablescrub:222,sstablesplit:223,sstableupgrad:224,sstableutil:225,sstableverifi:226,stage:66,stai:53,standard:86,start:[44,47,50,56],start_native_transport:[7,12,13],start_rpc:7,starv:76,state:[63,230,231],statement:[19,25,41],statu:[197,221,230],statusautocompact:198,statusbackup:199,statusbinari:200,statusgossip:201,statushandoff:202,stc:[76,77],step:[42,227],stop:203,stopdaemon:204,storag:[4,16,34,81,83],storage_port:[7,12,13],store:[0,53],strategi:[0,75,76,77],stratio:89,stream:[53,67,83,88],stream_entire_sst:[12,13],stream_throughput_outbound_megabits_per_sec:[12,13],streaming_connections_per_host:[12,13],streaming_keep_alive_period_in_sec:[12,13],stress:[52,90],structur:[71,215],style:41,submit:44,sum:21,support:[24,65,68,90],sync:51,synchron:0,system:229,system_virtual_schema:69,tabl:[7,12,13,18,66,69,71,74,83,84,215,217,220,222,224],table_count_warn_threshold:13,tablehistogram:205,tablestat:206,take:71,tarbal:57,target:73,task:69,temporari:225,term:19,test:[40,44,47,52],than:53,thei:53,third:89,though:53,thread:[69,231],threadpool:[83,230],threshold:[12,13],throttl:[40,218],throughput:231,tier:77,time:[21,29,78,81],timeout:66,timestamp:[6,29,53,215],timestamp_precis:6,timeuuid:21,timewindowcompactionstrategi:78,todo:18,tojson:24,token:[0,7,21,58,88],tombston:75,tombstone_failure_threshold:[12,13],tombstone_warn_threshold:[12,13],tool:[37,52,73,93,214,231],top:[53,231],topic:51,topolog:11,toppartit:207,tpstat:208,trace:91,tracetype_query_ttl:[12,13],tracetype_repair_ttl:[12,13],transact:[1,90,225],transit:68,transparent_data_encryption_opt:[12,13],trickle_fsync:[12,13],trickle_fsync_interval_in_kb:[12,13],trigger:[28,75],triggers_dir:7,troubleshoot:[42,228],truncat:18,truncate_request_timeout_in_m:[12,13],truncatehint:209,ttl:[20,75],tunabl:0,tupl:29,tweet:51,two:53,type:[16,18,24,29,42,67,71,75,83],udt:29,unabl:53,uniqu:67,unit:[44,47,52],unknown:66,unlog:20,unlogged_batch_across_partitions_warn_threshold:[12,13],unrepair:[75,221],unsubscrib:53,updat:[20,29,42,44,51,53],upgradesst:210,upload:51,usag:[53,85,90,92,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,215,216,217,218,219,220,221,222,223,224,225,226,231],use:53,user:[21,27,29,44,62,90],using:[0,43,53,75],uuid:21,valid:222,valu:219,variabl:54,verif:226,verifi:211,version:[0,4,17,51,91,212,224],view:[18,25,39,62,70],viewbuildstatu:213,virtual:[66,69],vmtouch:231,vnode:0,vote:51,wait:51,warn:74,websit:51,welcom:61,what:[1,39,50,53,62,70],when:[53,66,67,75],where:20,whitespac:41,why:[53,75],window:78,windows_timer_interv:[12,13],without:[75,222,223],work:[29,43,50],write:[1,68,81],write_request_timeout_in_m:[12,13],write_survei:7,writetim:20,xml:9,yaml:[12,63,70,74],you:50,your:[40,51],zero:67}})
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/cassandra_stress.html b/src/doc/4.0-rc1/tools/cassandra_stress.html
new file mode 100644
index 0000000..7ed3739
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/cassandra_stress.html
@@ -0,0 +1,356 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-title: "Cassandra Stress"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Cassandra Tools" href="index.html"/>
+      <link rel="next" title="Troubleshooting" href="../troubleshooting/index.html"/>
+      <link rel="prev" title="sstableverify" href="sstable/sstableverify.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/index.html">SSTable Tools</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Cassandra Stress</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#user-mode">User mode</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#graphing">Graphing</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#faq">FAQ</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cassandra-stress">
+<span id="id1"></span><h1>Cassandra Stress<a class="headerlink" href="#cassandra-stress" title="Permalink to this headline">¶</a></h1>
+<p>cassandra-stress is a tool for benchmarking and load testing a Cassandra
+cluster. cassandra-stress supports testing arbitrary CQL tables and queries
+to allow users to benchmark their data model.</p>
+<p>This documentation focuses on user mode as this allows the testing of your
+actual schema.</p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>There are several operation types:</p>
+<blockquote>
+<div><ul class="simple">
+<li>write-only, read-only, and mixed workloads of standard data</li>
+<li>write-only and read-only workloads for counter columns</li>
+<li>user configured workloads, running custom queries on custom schemas</li>
+</ul>
+</div></blockquote>
+<p>The syntax is <cite>cassandra-stress &lt;command&gt; [options]</cite>. If you want more information on a given command
+or options, just run <cite>cassandra-stress help &lt;command|option&gt;</cite>.</p>
+<dl class="docutils">
+<dt>Commands:</dt>
+<dd><dl class="first last docutils">
+<dt>read:</dt>
+<dd>Multiple concurrent reads - the cluster must first be populated by a write test</dd>
+<dt>write:</dt>
+<dd>Multiple concurrent writes against the cluster</dd>
+<dt>mixed:</dt>
+<dd>Interleaving of any basic commands, with configurable ratio and distribution - the cluster must first be populated by a write test</dd>
+<dt>counter_write:</dt>
+<dd>Multiple concurrent updates of counters.</dd>
+<dt>counter_read:</dt>
+<dd>Multiple concurrent reads of counters. The cluster must first be populated by a counterwrite test.</dd>
+<dt>user:</dt>
+<dd>Interleaving of user provided queries, with configurable ratio and distribution.</dd>
+<dt>help:</dt>
+<dd>Print help for a command or option</dd>
+<dt>print:</dt>
+<dd>Inspect the output of a distribution definition</dd>
+<dt>legacy:</dt>
+<dd>Legacy support mode</dd>
+</dl>
+</dd>
+<dt>Primary Options:</dt>
+<dd><dl class="first last docutils">
+<dt>-pop:</dt>
+<dd>Population distribution and intra-partition visit order</dd>
+<dt>-insert:</dt>
+<dd>Insert specific options relating to various methods for batching and splitting partition updates</dd>
+<dt>-col:</dt>
+<dd>Column details such as size and count distribution, data generator, names, comparator and if super columns should be used</dd>
+<dt>-rate:</dt>
+<dd>Thread count, rate limit or automatic mode (default is auto)</dd>
+<dt>-mode:</dt>
+<dd>Thrift or CQL with options</dd>
+<dt>-errors:</dt>
+<dd>How to handle errors when encountered during stress</dd>
+<dt>-sample:</dt>
+<dd>Specify the number of samples to collect for measuring latency</dd>
+<dt>-schema:</dt>
+<dd>Replication settings, compression, compaction, etc.</dd>
+<dt>-node:</dt>
+<dd>Nodes to connect to</dd>
+<dt>-log:</dt>
+<dd>Where to log progress to, and the interval at which to do it</dd>
+<dt>-transport:</dt>
+<dd>Custom transport factories</dd>
+<dt>-port:</dt>
+<dd>The port to connect to cassandra nodes on</dd>
+<dt>-sendto:</dt>
+<dd>Specify a stress server to send this command to</dd>
+<dt>-graph:</dt>
+<dd>Graph recorded metrics</dd>
+<dt>-tokenrange:</dt>
+<dd>Token range settings</dd>
+</dl>
+</dd>
+<dt>Suboptions:</dt>
+<dd>Every command and primary option has its own collection of suboptions. These are too numerous to list here.
+For information on the suboptions for each command or option, please use the help command,
+<cite>cassandra-stress help &lt;command|option&gt;</cite>.</dd>
+</dl>
+</div>
+<div class="section" id="user-mode">
+<h2>User mode<a class="headerlink" href="#user-mode" title="Permalink to this headline">¶</a></h2>
+<p>User mode allows you to use your stress your own schemas. This can save time in
+the long run rather than building an application and then realising your schema
+doesn’t scale.</p>
+<div class="section" id="profile">
+<h3>Profile<a class="headerlink" href="#profile" title="Permalink to this headline">¶</a></h3>
+<p>User mode requires a profile defined in YAML.
+Multiple YAML files may be specified in which case operations in the ops argument are referenced as specname.opname.</p>
+<p>An identifier for the profile:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">specname</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">staff_activities</span>
+</pre></div>
+</div>
+<p>The keyspace for the test:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">keyspace</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">staff</span>
+</pre></div>
+</div>
+<p>CQL for the keyspace. Optional if the keyspace already exists:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">keyspace_definition</span><span class="p">:</span> <span class="p p-Indicator">|</span>
+ <span class="no">CREATE KEYSPACE stresscql WITH replication = {&#39;class&#39;: &#39;SimpleStrategy&#39;, &#39;replication_factor&#39;: 3};</span>
+</pre></div>
+</div>
+<p>The table to be stressed:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">table</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">staff_activities</span>
+</pre></div>
+</div>
+<p>CQL for the table. Optional if the table already exists:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">table_definition</span><span class="p">:</span> <span class="p p-Indicator">|</span>
+  <span class="no">CREATE TABLE staff_activities (</span>
+      <span class="no">name text,</span>
+      <span class="no">when timeuuid,</span>
+      <span class="no">what text,</span>
+      <span class="no">PRIMARY KEY(name, when, what)</span>
+  <span class="no">)</span>
+</pre></div>
+</div>
+<p>Optional meta information on the generated columns in the above table.
+The min and max only apply to text and blob types.
+The distribution field represents the total unique population
+distribution of that column across rows:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">columnspec</span><span class="p">:</span>
+  <span class="p p-Indicator">-</span> <span class="nt">name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">name</span>
+    <span class="nt">size</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">uniform(5..10)</span> <span class="c1"># The names of the staff members are between 5-10 characters</span>
+    <span class="nt">population</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">uniform(1..10)</span> <span class="c1"># 10 possible staff members to pick from</span>
+  <span class="p p-Indicator">-</span> <span class="nt">name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">when</span>
+    <span class="nt">cluster</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">uniform(20..500)</span> <span class="c1"># Staff members do between 20 and 500 events</span>
+  <span class="p p-Indicator">-</span> <span class="nt">name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">what</span>
+    <span class="nt">size</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">normal(10..100,50)</span>
+</pre></div>
+</div>
+<p>Supported types are:</p>
+<p>An exponential distribution over the range [min..max]:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="l l-Scalar l-Scalar-Plain">EXP(min..max)</span>
+</pre></div>
+</div>
+<p>An extreme value (Weibull) distribution over the range [min..max]:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="l l-Scalar l-Scalar-Plain">EXTREME(min..max,shape)</span>
+</pre></div>
+</div>
+<p>A gaussian/normal distribution, where mean=(min+max)/2, and stdev is (mean-min)/stdvrng:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="l l-Scalar l-Scalar-Plain">GAUSSIAN(min..max,stdvrng)</span>
+</pre></div>
+</div>
+<p>A gaussian/normal distribution, with explicitly defined mean and stdev:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="l l-Scalar l-Scalar-Plain">GAUSSIAN(min..max,mean,stdev)</span>
+</pre></div>
+</div>
+<p>A uniform distribution over the range [min, max]:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="l l-Scalar l-Scalar-Plain">UNIFORM(min..max)</span>
+</pre></div>
+</div>
+<p>A fixed distribution, always returning the same value:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="l l-Scalar l-Scalar-Plain">FIXED(val)</span>
+</pre></div>
+</div>
+<p>If preceded by ~, the distribution is inverted</p>
+<p>Defaults for all columns are size: uniform(4..8), population: uniform(1..100B), cluster: fixed(1)</p>
+<p>Insert distributions:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">insert</span><span class="p">:</span>
+  <span class="c1"># How many partition to insert per batch</span>
+  <span class="nt">partitions</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">fixed(1)</span>
+  <span class="c1"># How many rows to update per partition</span>
+  <span class="nt">select</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">fixed(1)/500</span>
+  <span class="c1"># UNLOGGED or LOGGED batch for insert</span>
+  <span class="nt">batchtype</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">UNLOGGED</span>
+</pre></div>
+</div>
+<p>Currently all inserts are done inside batches.</p>
+<p>Read statements to use during the test:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">queries</span><span class="p">:</span>
+   <span class="nt">events</span><span class="p">:</span>
+      <span class="nt">cql</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">select *  from staff_activities where name = ?</span>
+      <span class="nt">fields</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">samerow</span>
+   <span class="nt">latest_event</span><span class="p">:</span>
+      <span class="nt">cql</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">select * from staff_activities where name = ?  LIMIT 1</span>
+      <span class="nt">fields</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">samerow</span>
+</pre></div>
+</div>
+<p>Running a user mode test:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="l l-Scalar l-Scalar-Plain">cassandra-stress user profile=./example.yaml duration=1m &quot;ops(insert=1,latest_event=1,events=1)&quot; truncate=once</span>
+</pre></div>
+</div>
+<p>This will create the schema then run tests for 1 minute with an equal number of inserts, latest_event queries and events
+queries. Additionally the table will be truncated once before the test.</p>
+<p>The full example can be found here <a class="reference download internal" download="" href="../_downloads/0bad10109f737a1dc8fae9db51a00e36/stress-example.yaml"><code class="xref download docutils literal notranslate"><span class="pre">yaml</span></code></a></p>
+<dl class="docutils">
+<dt>Running a user mode test with multiple yaml files::</dt>
+<dd>cassandra-stress user profile=./example.yaml,./example2.yaml duration=1m “ops(ex1.insert=1,ex1.latest_event=1,ex2.insert=2)” truncate=once</dd>
+<dt>This will run operations as specified in both the example.yaml and example2.yaml files. example.yaml and example2.yaml can reference the same table</dt>
+<dd>although care must be taken that the table definition is identical (data generation specs can be different).</dd>
+</dl>
+</div>
+<div class="section" id="lightweight-transaction-support">
+<h3>Lightweight transaction support<a class="headerlink" href="#lightweight-transaction-support" title="Permalink to this headline">¶</a></h3>
+<p>cassandra-stress supports lightweight transactions. In this it will first read current data from Cassandra and then uses read value(s)
+to fulfill lightweight transaction condition(s).</p>
+<p>Lightweight transaction update query:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">queries</span><span class="p">:</span>
+  <span class="nt">regularupdate</span><span class="p">:</span>
+      <span class="nt">cql</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">update blogposts set author = ? where domain = ? and published_date = ?</span>
+      <span class="nt">fields</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">samerow</span>
+  <span class="nt">updatewithlwt</span><span class="p">:</span>
+      <span class="nt">cql</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">update blogposts set author = ? where domain = ? and published_date = ? IF body = ? AND url = ?</span>
+      <span class="nt">fields</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">samerow</span>
+</pre></div>
+</div>
+<p>The full example can be found here <a class="reference download internal" download="" href="../_downloads/073727311784b6e183b3e78dbd702329/stress-lwt-example.yaml"><code class="xref download docutils literal notranslate"><span class="pre">yaml</span></code></a></p>
+</div>
+</div>
+<div class="section" id="graphing">
+<h2>Graphing<a class="headerlink" href="#graphing" title="Permalink to this headline">¶</a></h2>
+<p>Graphs can be generated for each run of stress.</p>
+<img alt="../_images/example-stress-graph.png" src="../_images/example-stress-graph.png" />
+<p>To create a new graph:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="l l-Scalar l-Scalar-Plain">cassandra-stress user profile=./stress-example.yaml &quot;ops(insert=1,latest_event=1,events=1)&quot; -graph file=graph.html title=&quot;Awesome graph&quot;</span>
+</pre></div>
+</div>
+<p>To add a new run to an existing graph point to an existing file and add a revision name:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="l l-Scalar l-Scalar-Plain">cassandra-stress user profile=./stress-example.yaml duration=1m &quot;ops(insert=1,latest_event=1,events=1)&quot; -graph file=graph.html title=&quot;Awesome graph&quot; revision=&quot;Second run&quot;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="faq">
+<h2>FAQ<a class="headerlink" href="#faq" title="Permalink to this headline">¶</a></h2>
+<p><strong>How do you use NetworkTopologyStrategy for the keyspace?</strong></p>
+<p>Use the schema option making sure to either escape the parenthesis or enclose in quotes:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="l l-Scalar l-Scalar-Plain">cassandra-stress write -schema &quot;replication(strategy=NetworkTopologyStrategy,datacenter1=3)&quot;</span>
+</pre></div>
+</div>
+<p><strong>How do you use SSL?</strong></p>
+<p>Use the transport option:</p>
+<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="l l-Scalar l-Scalar-Plain">cassandra-stress &quot;write n=100k cl=ONE no-warmup&quot; -transport &quot;truststore=$HOME/jks/truststore.jks truststore-password=cassandra&quot;</span>
+</pre></div>
+</div>
+<p><strong>Is Cassandra Stress a secured tool?</strong></p>
+<p>Cassandra stress is not a secured tool. Serialization and other aspects of the tool offer no security guarantees.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../troubleshooting/index.html" class="btn btn-default pull-right " role="button" title="Troubleshooting" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="sstable/sstableverify.html" class="btn btn-default" role="button" title="sstableverify" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/cqlsh.html b/src/doc/4.0-rc1/tools/cqlsh.html
new file mode 100644
index 0000000..293f9a4
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/cqlsh.html
@@ -0,0 +1,489 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-title: "cqlsh: the CQL shell"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Cassandra Tools" href="index.html"/>
+      <link rel="next" title="generatetokens" href="generatetokens.html"/>
+      <link rel="prev" title="Cassandra Tools" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">cqlsh: the CQL shell</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#compatibility">Compatibility</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#optional-dependencies">Optional Dependencies</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#cqlshrc">cqlshrc</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#command-line-options">Command Line Options</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#special-commands">Special Commands</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/index.html">SSTable Tools</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cqlsh-the-cql-shell">
+<span id="cqlsh"></span><h1>cqlsh: the CQL shell<a class="headerlink" href="#cqlsh-the-cql-shell" title="Permalink to this headline">¶</a></h1>
+<p>cqlsh is a command line shell for interacting with Cassandra through CQL (the Cassandra Query Language).  It is shipped
+with every Cassandra package, and can be found in the bin/ directory alongside the cassandra executable.  cqlsh utilizes
+the Python native protocol driver, and connects to the single node specified on the command line.</p>
+<div class="section" id="compatibility">
+<h2>Compatibility<a class="headerlink" href="#compatibility" title="Permalink to this headline">¶</a></h2>
+<p>cqlsh is compatible with Python 3.6+ (and 2.7, deprecated).</p>
+<p>In general, a given version of cqlsh is only guaranteed to work with the version of Cassandra that it was released with.
+In some cases, cqlsh make work with older or newer versions of Cassandra, but this is not officially supported.</p>
+</div>
+<div class="section" id="optional-dependencies">
+<h2>Optional Dependencies<a class="headerlink" href="#optional-dependencies" title="Permalink to this headline">¶</a></h2>
+<p>cqlsh ships with all essential dependencies.  However, there are some optional dependencies that can be installed to
+improve the capabilities of cqlsh.</p>
+<div class="section" id="pytz">
+<h3>pytz<a class="headerlink" href="#pytz" title="Permalink to this headline">¶</a></h3>
+<p>By default, cqlsh displays all timestamps with a UTC timezone.  To support display of timestamps with another timezone,
+the <a class="reference external" href="http://pytz.sourceforge.net/">pytz</a> library must be installed.  See the <code class="docutils literal notranslate"><span class="pre">timezone</span></code> option in <a class="reference internal" href="#cqlshrc">cqlshrc</a> for
+specifying a timezone to use.</p>
+</div>
+<div class="section" id="cython">
+<h3>cython<a class="headerlink" href="#cython" title="Permalink to this headline">¶</a></h3>
+<p>The performance of cqlsh’s <code class="docutils literal notranslate"><span class="pre">COPY</span></code> operations can be improved by installing <a class="reference external" href="http://cython.org/">cython</a>.  This will
+compile the python modules that are central to the performance of <code class="docutils literal notranslate"><span class="pre">COPY</span></code>.</p>
+</div>
+</div>
+<div class="section" id="cqlshrc">
+<h2>cqlshrc<a class="headerlink" href="#cqlshrc" title="Permalink to this headline">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">cqlshrc</span></code> file holds configuration options for cqlsh.  By default this is in the user’s home directory at
+<code class="docutils literal notranslate"><span class="pre">~/.cassandra/cqlsh</span></code>, but a custom location can be specified with the <code class="docutils literal notranslate"><span class="pre">--cqlshrc</span></code> option.</p>
+<p>Example config values and documentation can be found in the <code class="docutils literal notranslate"><span class="pre">conf/cqlshrc.sample</span></code> file of a tarball installation.  You
+can also view the latest version of <a class="reference external" href="https://github.com/apache/cassandra/blob/trunk/conf/cqlshrc.sample">cqlshrc online</a>.</p>
+</div>
+<div class="section" id="command-line-options">
+<h2>Command Line Options<a class="headerlink" href="#command-line-options" title="Permalink to this headline">¶</a></h2>
+<p>Usage:</p>
+<p><code class="docutils literal notranslate"><span class="pre">cqlsh</span> <span class="pre">[options]</span> <span class="pre">[host</span> <span class="pre">[port]]</span></code></p>
+<p>Options:</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">-C</span></code> <code class="docutils literal notranslate"><span class="pre">--color</span></code></dt>
+<dd>Force color output</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--no-color</span></code></dt>
+<dd>Disable color output</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--browser</span></code></dt>
+<dd>Specify the browser to use for displaying cqlsh help.  This can be one of the <a class="reference external" href="https://docs.python.org/3/library/webbrowser.html">supported browser names</a> (e.g. <code class="docutils literal notranslate"><span class="pre">firefox</span></code>) or a browser path followed by <code class="docutils literal notranslate"><span class="pre">%s</span></code> (e.g.
+<code class="docutils literal notranslate"><span class="pre">/usr/bin/google-chrome-stable</span> <span class="pre">%s</span></code>).</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--ssl</span></code></dt>
+<dd>Use SSL when connecting to Cassandra</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-u</span></code> <code class="docutils literal notranslate"><span class="pre">--user</span></code></dt>
+<dd>Username to authenticate against Cassandra with</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-p</span></code> <code class="docutils literal notranslate"><span class="pre">--password</span></code></dt>
+<dd>Password to authenticate against Cassandra with, should
+be used in conjunction with <code class="docutils literal notranslate"><span class="pre">--user</span></code></dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-k</span></code> <code class="docutils literal notranslate"><span class="pre">--keyspace</span></code></dt>
+<dd>Keyspace to authenticate to, should be used in conjunction
+with <code class="docutils literal notranslate"><span class="pre">--user</span></code></dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-f</span></code> <code class="docutils literal notranslate"><span class="pre">--file</span></code></dt>
+<dd>Execute commands from the given file, then exit</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--debug</span></code></dt>
+<dd>Print additional debugging information</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--encoding</span></code></dt>
+<dd>Specify a non-default encoding for output (defaults to UTF-8)</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--cqlshrc</span></code></dt>
+<dd>Specify a non-default location for the <code class="docutils literal notranslate"><span class="pre">cqlshrc</span></code> file</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-e</span></code> <code class="docutils literal notranslate"><span class="pre">--execute</span></code></dt>
+<dd>Execute the given statement, then exit</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--connect-timeout</span></code></dt>
+<dd>Specify the connection timeout in seconds (defaults to 2s)</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--python</span> <span class="pre">/path/to/python</span></code></dt>
+<dd>Specify the full path to Python interpreter to override default on systems with multiple interpreters installed</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">--request-timeout</span></code></dt>
+<dd>Specify the request timeout in seconds (defaults to 10s)</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">-t</span></code> <code class="docutils literal notranslate"><span class="pre">--tty</span></code></dt>
+<dd>Force tty mode (command prompt)</dd>
+</dl>
+</div>
+<div class="section" id="special-commands">
+<h2>Special Commands<a class="headerlink" href="#special-commands" title="Permalink to this headline">¶</a></h2>
+<p>In addition to supporting regular CQL statements, cqlsh also supports a number of special commands that are not part of
+CQL.  These are detailed below.</p>
+<div class="section" id="consistency">
+<h3><code class="docutils literal notranslate"><span class="pre">CONSISTENCY</span></code><a class="headerlink" href="#consistency" title="Permalink to this headline">¶</a></h3>
+<p><cite>Usage</cite>: <code class="docutils literal notranslate"><span class="pre">CONSISTENCY</span> <span class="pre">&lt;consistency</span> <span class="pre">level&gt;</span></code></p>
+<p>Sets the consistency level for operations to follow.  Valid arguments include:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">ANY</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">ONE</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">TWO</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">THREE</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">QUORUM</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">ALL</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">LOCAL_QUORUM</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">LOCAL_ONE</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">SERIAL</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">LOCAL_SERIAL</span></code></li>
+</ul>
+</div>
+<div class="section" id="serial-consistency">
+<h3><code class="docutils literal notranslate"><span class="pre">SERIAL</span> <span class="pre">CONSISTENCY</span></code><a class="headerlink" href="#serial-consistency" title="Permalink to this headline">¶</a></h3>
+<p><cite>Usage</cite>: <code class="docutils literal notranslate"><span class="pre">SERIAL</span> <span class="pre">CONSISTENCY</span> <span class="pre">&lt;consistency</span> <span class="pre">level&gt;</span></code></p>
+<p>Sets the serial consistency level for operations to follow.  Valid arguments include:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">SERIAL</span></code></li>
+<li><code class="docutils literal notranslate"><span class="pre">LOCAL_SERIAL</span></code></li>
+</ul>
+<p>The serial consistency level is only used by conditional updates (<code class="docutils literal notranslate"><span class="pre">INSERT</span></code>, <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> with an <code class="docutils literal notranslate"><span class="pre">IF</span></code>
+condition). For those, the serial consistency level defines the consistency level of the serial phase (or “paxos” phase)
+while the normal consistency level defines the consistency for the “learn” phase, i.e. what type of reads will be
+guaranteed to see the update right away. For example, if a conditional write has a consistency level of <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code> (and
+is successful), then a <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code> read is guaranteed to see that write. But if the regular consistency level of that
+write is <code class="docutils literal notranslate"><span class="pre">ANY</span></code>, then only a read with a consistency level of <code class="docutils literal notranslate"><span class="pre">SERIAL</span></code> is guaranteed to see it (even a read with
+consistency <code class="docutils literal notranslate"><span class="pre">ALL</span></code> is not guaranteed to be enough).</p>
+</div>
+<div class="section" id="show-version">
+<h3><code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">VERSION</span></code><a class="headerlink" href="#show-version" title="Permalink to this headline">¶</a></h3>
+<p>Prints the cqlsh, Cassandra, CQL, and native protocol versions in use.  Example:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; SHOW VERSION
+[cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
+</pre></div>
+</div>
+</div>
+<div class="section" id="show-host">
+<h3><code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">HOST</span></code><a class="headerlink" href="#show-host" title="Permalink to this headline">¶</a></h3>
+<p>Prints the IP address and port of the Cassandra node that cqlsh is connected to in addition to the cluster name.
+Example:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; SHOW HOST
+Connected to Prod_Cluster at 192.0.0.1:9042.
+</pre></div>
+</div>
+</div>
+<div class="section" id="show-session">
+<h3><code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">SESSION</span></code><a class="headerlink" href="#show-session" title="Permalink to this headline">¶</a></h3>
+<p>Pretty prints a specific tracing session.</p>
+<p><cite>Usage</cite>: <code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">SESSION</span> <span class="pre">&lt;session</span> <span class="pre">id&gt;</span></code></p>
+<p>Example usage:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; SHOW SESSION 95ac6470-327e-11e6-beca-dfb660d92ad8
+
+Tracing session: 95ac6470-327e-11e6-beca-dfb660d92ad8
+
+ activity                                                  | timestamp                  | source    | source_elapsed | client
+-----------------------------------------------------------+----------------------------+-----------+----------------+-----------
+                                        Execute CQL3 query | 2016-06-14 17:23:13.979000 | 127.0.0.1 |              0 | 127.0.0.1
+ Parsing SELECT * FROM system.local; [SharedPool-Worker-1] | 2016-06-14 17:23:13.982000 | 127.0.0.1 |           3843 | 127.0.0.1
+...
+</pre></div>
+</div>
+</div>
+<div class="section" id="source">
+<h3><code class="docutils literal notranslate"><span class="pre">SOURCE</span></code><a class="headerlink" href="#source" title="Permalink to this headline">¶</a></h3>
+<p>Reads the contents of a file and executes each line as a CQL statement or special cqlsh command.</p>
+<p><cite>Usage</cite>: <code class="docutils literal notranslate"><span class="pre">SOURCE</span> <span class="pre">&lt;string</span> <span class="pre">filename&gt;</span></code></p>
+<p>Example usage:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; SOURCE &#39;/home/thobbs/commands.cql&#39;
+</pre></div>
+</div>
+</div>
+<div class="section" id="capture">
+<h3><code class="docutils literal notranslate"><span class="pre">CAPTURE</span></code><a class="headerlink" href="#capture" title="Permalink to this headline">¶</a></h3>
+<p>Begins capturing command output and appending it to a specified file.  Output will not be shown at the console while it
+is captured.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CAPTURE &#39;&lt;file&gt;&#39;;
+CAPTURE OFF;
+CAPTURE;
+</pre></div>
+</div>
+<p>That is, the path to the file to be appended to must be given inside a string literal. The path is interpreted relative
+to the current working directory. The tilde shorthand notation (<code class="docutils literal notranslate"><span class="pre">'~/mydir'</span></code>) is supported for referring to <code class="docutils literal notranslate"><span class="pre">$HOME</span></code>.</p>
+<p>Only query result output is captured. Errors and output from cqlsh-only commands will still be shown in the cqlsh
+session.</p>
+<p>To stop capturing output and show it in the cqlsh session again, use <code class="docutils literal notranslate"><span class="pre">CAPTURE</span> <span class="pre">OFF</span></code>.</p>
+<p>To inspect the current capture configuration, use <code class="docutils literal notranslate"><span class="pre">CAPTURE</span></code> with no arguments.</p>
+</div>
+<div class="section" id="help">
+<h3><code class="docutils literal notranslate"><span class="pre">HELP</span></code><a class="headerlink" href="#help" title="Permalink to this headline">¶</a></h3>
+<p>Gives information about cqlsh commands. To see available topics, enter <code class="docutils literal notranslate"><span class="pre">HELP</span></code> without any arguments. To see help on a
+topic, use <code class="docutils literal notranslate"><span class="pre">HELP</span> <span class="pre">&lt;topic&gt;</span></code>.  Also see the <code class="docutils literal notranslate"><span class="pre">--browser</span></code> argument for controlling what browser is used to display help.</p>
+</div>
+<div class="section" id="tracing">
+<h3><code class="docutils literal notranslate"><span class="pre">TRACING</span></code><a class="headerlink" href="#tracing" title="Permalink to this headline">¶</a></h3>
+<p>Enables or disables tracing for queries.  When tracing is enabled, once a query completes, a trace of the events during
+the query will be printed.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>TRACING ON
+TRACING OFF
+</pre></div>
+</div>
+</div>
+<div class="section" id="paging">
+<h3><code class="docutils literal notranslate"><span class="pre">PAGING</span></code><a class="headerlink" href="#paging" title="Permalink to this headline">¶</a></h3>
+<p>Enables paging, disables paging, or sets the page size for read queries.  When paging is enabled, only one page of data
+will be fetched at a time and a prompt will appear to fetch the next page.  Generally, it’s a good idea to leave paging
+enabled in an interactive session to avoid fetching and printing large amounts of data at once.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>PAGING ON
+PAGING OFF
+PAGING &lt;page size in rows&gt;
+</pre></div>
+</div>
+</div>
+<div class="section" id="expand">
+<h3><code class="docutils literal notranslate"><span class="pre">EXPAND</span></code><a class="headerlink" href="#expand" title="Permalink to this headline">¶</a></h3>
+<p>Enables or disables vertical printing of rows.  Enabling <code class="docutils literal notranslate"><span class="pre">EXPAND</span></code> is useful when many columns are fetched, or the
+contents of a single column are large.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>EXPAND ON
+EXPAND OFF
+</pre></div>
+</div>
+</div>
+<div class="section" id="login">
+<h3><code class="docutils literal notranslate"><span class="pre">LOGIN</span></code><a class="headerlink" href="#login" title="Permalink to this headline">¶</a></h3>
+<p>Authenticate as a specified Cassandra user for the current session.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>LOGIN &lt;username&gt; [&lt;password&gt;]
+</pre></div>
+</div>
+</div>
+<div class="section" id="exit">
+<h3><code class="docutils literal notranslate"><span class="pre">EXIT</span></code><a class="headerlink" href="#exit" title="Permalink to this headline">¶</a></h3>
+<p>Ends the current session and terminates the cqlsh process.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>EXIT
+QUIT
+</pre></div>
+</div>
+</div>
+<div class="section" id="clear">
+<h3><code class="docutils literal notranslate"><span class="pre">CLEAR</span></code><a class="headerlink" href="#clear" title="Permalink to this headline">¶</a></h3>
+<p>Clears the console.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CLEAR
+CLS
+</pre></div>
+</div>
+</div>
+<div class="section" id="describe">
+<h3><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code><a class="headerlink" href="#describe" title="Permalink to this headline">¶</a></h3>
+<p>Prints a description (typically a series of DDL statements) of a schema element or the cluster.  This is useful for
+dumping all or portions of the schema.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>DESCRIBE CLUSTER
+DESCRIBE SCHEMA
+DESCRIBE KEYSPACES
+DESCRIBE KEYSPACE &lt;keyspace name&gt;
+DESCRIBE TABLES
+DESCRIBE TABLE &lt;table name&gt;
+DESCRIBE INDEX &lt;index name&gt;
+DESCRIBE MATERIALIZED VIEW &lt;view name&gt;
+DESCRIBE TYPES
+DESCRIBE TYPE &lt;type name&gt;
+DESCRIBE FUNCTIONS
+DESCRIBE FUNCTION &lt;function name&gt;
+DESCRIBE AGGREGATES
+DESCRIBE AGGREGATE &lt;aggregate function name&gt;
+</pre></div>
+</div>
+<p>In any of the commands, <code class="docutils literal notranslate"><span class="pre">DESC</span></code> may be used in place of <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code>.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span> <span class="pre">CLUSTER</span></code> command prints the cluster name and partitioner:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cqlsh&gt; DESCRIBE CLUSTER
+
+Cluster: Test Cluster
+Partitioner: Murmur3Partitioner
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">DESCRIBE</span> <span class="pre">SCHEMA</span></code> command prints the DDL statements needed to recreate the entire schema.  This is especially
+useful for dumping the schema in order to clone a cluster or restore from a backup.</p>
+</div>
+<div class="section" id="copy-to">
+<h3><code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code><a class="headerlink" href="#copy-to" title="Permalink to this headline">¶</a></h3>
+<p>Copies data from a table to a CSV file.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>COPY &lt;table name&gt; [(&lt;column&gt;, ...)] TO &lt;file name&gt; WITH &lt;copy option&gt; [AND &lt;copy option&gt; ...]
+</pre></div>
+</div>
+<p>If no columns are specified, all columns from the table will be copied to the CSV file.  A subset of columns to copy may
+be specified by adding a comma-separated list of column names surrounded by parenthesis after the table name.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">&lt;file</span> <span class="pre">name&gt;</span></code> should be a string literal (with single quotes) representing a path to the destination file.  This
+can also the special value <code class="docutils literal notranslate"><span class="pre">STDOUT</span></code> (without single quotes) to print the CSV to stdout.</p>
+<p>See <a class="reference internal" href="#shared-copy-options"><span class="std std-ref">Shared COPY Options</span></a> for options that apply to both <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code> and <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">FROM</span></code>.</p>
+<div class="section" id="options-for-copy-to">
+<h4>Options for <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code><a class="headerlink" href="#options-for-copy-to" title="Permalink to this headline">¶</a></h4>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">MAXREQUESTS</span></code></dt>
+<dd>The maximum number token ranges to fetch simultaneously. Defaults to 6.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">PAGESIZE</span></code></dt>
+<dd>The number of rows to fetch in a single page. Defaults to 1000.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">PAGETIMEOUT</span></code></dt>
+<dd>By default the page timeout is 10 seconds per 1000 entries
+in the page size or 10 seconds if pagesize is smaller.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">BEGINTOKEN</span></code>, <code class="docutils literal notranslate"><span class="pre">ENDTOKEN</span></code></dt>
+<dd>Token range to export.  Defaults to exporting the full ring.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MAXOUTPUTSIZE</span></code></dt>
+<dd>The maximum size of the output file measured in number of lines;
+beyond this maximum the output file will be split into segments.
+-1 means unlimited, and is the default.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">ENCODING</span></code></dt>
+<dd>The encoding used for characters. Defaults to <code class="docutils literal notranslate"><span class="pre">utf8</span></code>.</dd>
+</dl>
+</div>
+</div>
+<div class="section" id="copy-from">
+<h3><code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">FROM</span></code><a class="headerlink" href="#copy-from" title="Permalink to this headline">¶</a></h3>
+<p>Copies data from a CSV file to table.</p>
+<p><cite>Usage</cite>:</p>
+<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>COPY &lt;table name&gt; [(&lt;column&gt;, ...)] FROM &lt;file name&gt; WITH &lt;copy option&gt; [AND &lt;copy option&gt; ...]
+</pre></div>
+</div>
+<p>If no columns are specified, all columns from the CSV file will be copied to the table.  A subset
+of columns to copy may be specified by adding a comma-separated list of column names surrounded
+by parenthesis after the table name.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">&lt;file</span> <span class="pre">name&gt;</span></code> should be a string literal (with single quotes) representing a path to the
+source file.  This can also the special value <code class="docutils literal notranslate"><span class="pre">STDIN</span></code> (without single quotes) to read the
+CSV data from stdin.</p>
+<p>See <a class="reference internal" href="#shared-copy-options"><span class="std std-ref">Shared COPY Options</span></a> for options that apply to both <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code> and <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">FROM</span></code>.</p>
+<div class="section" id="id1">
+<h4>Options for <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code><a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h4>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">INGESTRATE</span></code></dt>
+<dd>The maximum number of rows to process per second. Defaults to 100000.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MAXROWS</span></code></dt>
+<dd>The maximum number of rows to import. -1 means unlimited, and is the default.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">SKIPROWS</span></code></dt>
+<dd>A number of initial rows to skip.  Defaults to 0.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">SKIPCOLS</span></code></dt>
+<dd>A comma-separated list of column names to ignore.  By default, no columns are skipped.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MAXPARSEERRORS</span></code></dt>
+<dd>The maximum global number of parsing errors to ignore. -1 means unlimited, and is the default.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MAXINSERTERRORS</span></code></dt>
+<dd>The maximum global number of insert errors to ignore. -1 means unlimited.  The default is 1000.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">ERRFILE</span></code> =</dt>
+<dd>A file to store all rows that could not be imported, by default this is <code class="docutils literal notranslate"><span class="pre">import_&lt;ks&gt;_&lt;table&gt;.err</span></code> where <code class="docutils literal notranslate"><span class="pre">&lt;ks&gt;</span></code> is
+your keyspace and <code class="docutils literal notranslate"><span class="pre">&lt;table&gt;</span></code> is your table name.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MAXBATCHSIZE</span></code></dt>
+<dd>The max number of rows inserted in a single batch. Defaults to 20.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MINBATCHSIZE</span></code></dt>
+<dd>The min number of rows inserted in a single batch. Defaults to 2.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">CHUNKSIZE</span></code></dt>
+<dd>The number of rows that are passed to child worker processes from the main process at a time. Defaults to 1000.</dd>
+</dl>
+</div>
+<div class="section" id="shared-copy-options">
+<span id="id2"></span><h4>Shared COPY Options<a class="headerlink" href="#shared-copy-options" title="Permalink to this headline">¶</a></h4>
+<p>Options that are common to both <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code> and <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">FROM</span></code>.</p>
+<dl class="docutils">
+<dt><code class="docutils literal notranslate"><span class="pre">NULLVAL</span></code></dt>
+<dd>The string placeholder for null values.  Defaults to <code class="docutils literal notranslate"><span class="pre">null</span></code>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">HEADER</span></code></dt>
+<dd>For <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code>, controls whether the first line in the CSV output file will contain the column names.  For COPY FROM,
+specifies whether the first line in the CSV input file contains column names.  Defaults to <code class="docutils literal notranslate"><span class="pre">false</span></code>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">DECIMALSEP</span></code></dt>
+<dd>The character that is used as the decimal point separator.  Defaults to <code class="docutils literal notranslate"><span class="pre">.</span></code>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">THOUSANDSSEP</span></code></dt>
+<dd>The character that is used to separate thousands. Defaults to the empty string.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">BOOLSTYlE</span></code></dt>
+<dd>The string literal format for boolean values.  Defaults to <code class="docutils literal notranslate"><span class="pre">True,False</span></code>.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">NUMPROCESSES</span></code></dt>
+<dd>The number of child worker processes to create for <code class="docutils literal notranslate"><span class="pre">COPY</span></code> tasks.  Defaults to a max of 4 for <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">FROM</span></code> and 16
+for <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code>.  However, at most (num_cores - 1) processes will be created.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">MAXATTEMPTS</span></code></dt>
+<dd>The maximum number of failed attempts to fetch a range of data (when using <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code>) or insert a chunk of data
+(when using <code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">FROM</span></code>) before giving up. Defaults to 5.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">REPORTFREQUENCY</span></code></dt>
+<dd>How often status updates are refreshed, in seconds.  Defaults to 0.25.</dd>
+<dt><code class="docutils literal notranslate"><span class="pre">RATEFILE</span></code></dt>
+<dd>An optional file to output rate statistics to.  By default, statistics are not output to a file.</dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="generatetokens.html" class="btn btn-default pull-right " role="button" title="generatetokens" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Cassandra Tools" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/generatetokens.html b/src/doc/4.0-rc1/tools/generatetokens.html
new file mode 100644
index 0000000..f97598e
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/generatetokens.html
@@ -0,0 +1,164 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-title: "generatetokens"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Cassandra Tools" href="index.html"/>
+      <link rel="next" title="Nodetool" href="nodetool/nodetool.html"/>
+      <link rel="prev" title="cqlsh: the CQL shell" href="cqlsh.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">generatetokens</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#example-output">Example Output</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/index.html">SSTable Tools</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="generatetokens">
+<h1>generatetokens<a class="headerlink" href="#generatetokens" title="Permalink to this headline">¶</a></h1>
+<p>Pre-generates tokens for a datacenter with the given number of nodes using the token allocation algorithm. Useful in edge-cases when generated tokens needs to be known in advance of bootstrapping nodes. In nearly all cases it is best to just let the bootstrapping nodes automatically generate their own tokens.
+ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-16205">https://issues.apache.org/jira/browse/CASSANDRA-16205</a></p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>generatetokens -n NODES -t TOKENS –rf REPLICATION_FACTOR [–partitioner PARTITIONER] [–racks RACK_NODE_COUNTS]</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="15%" />
+<col width="85%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>-n,–nodes &lt;arg&gt;</td>
+<td>Number of nodes.</td>
+</tr>
+<tr class="row-even"><td>-t,–tokens &lt;arg&gt;</td>
+<td>Number of tokens/vnodes per node.</td>
+</tr>
+<tr class="row-odd"><td>–rf &lt;arg&gt;</td>
+<td>Replication factor.</td>
+</tr>
+<tr class="row-even"><td>-p,–partitioner &lt;arg&gt;</td>
+<td>Database partitioner, either Murmur3Partitioner or RandomPartitioner.</td>
+</tr>
+<tr class="row-odd"><td>–racks &lt;arg&gt;</td>
+<td>Number of nodes per rack, separated by commas. Must add up to the total node count. For example, ‘generatetokens -n 30 -t 8 –rf 3 –racks 10,10,10’ will generate tokens for three racks of 10 nodes each.</td>
+</tr>
+</tbody>
+</table>
+<p>This command, if used, is expected to be run before the Cassandra node is first started. The output from the command is used to configure the nodes <cite>num_tokens</cite> setting in the <cite>cassandra.yaml</cite></p>
+</div>
+<div class="section" id="example-output">
+<h2>Example Output<a class="headerlink" href="#example-output" title="Permalink to this headline">¶</a></h2>
+<p>Example usage and output is</p>
+<blockquote>
+<div><p>$ tools/bin/generatetokens -n 9 -t 4 –rf 3 –racks 3,3,3</p>
+<p>Generating tokens for 9 nodes with 4 vnodes each for replication factor 3 and partitioner Murmur3Partitioner
+Node 0 rack 0: [-6270077235120413733, -1459727275878514299, 2887564907718879562, 5778609289102954400]
+Node 1 rack 1: [-8780789453057732897, -3279530982831298765, 1242905755717369197, 8125606440590916903]
+Node 2 rack 2: [-7240625170832344686, -4453155190605073029, 74749827226930055, 4615117940688406403]
+Node 3 rack 0: [-5361616212862743381, -2369629129354906532, 2065235331718124379, 6952107864846935651]
+Node 4 rack 1: [-8010707311945038792, -692488724325792122, 3751341424203642982, 7538857152718926277]
+Node 5 rack 2: [-7625666241388691739, -3866343086718185897, 5196863614895680401, 8895780530621367810]
+Node 6 rack 0: [-5815846723991578557, -1076108000102153211, 1654070543717746788, 8510693485606142356]
+Node 7 rack 1: [-2824580056093102649, 658827791472149626, 3319453165961261272, 6365358576974945025]
+Node 8 rack 2: [-4159749138661629463, -1914678202616710416, 4905990777792043402, 6658733220910940338]</p>
+</div></blockquote>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="nodetool/nodetool.html" class="btn btn-default pull-right " role="button" title="Nodetool" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="cqlsh.html" class="btn btn-default" role="button" title="cqlsh: the CQL shell" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/index.html b/src/doc/4.0-rc1/tools/index.html
new file mode 100644
index 0000000..4bd889f
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/index.html
@@ -0,0 +1,264 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Cassandra Tools"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="next" title="cqlsh: the CQL shell" href="cqlsh.html"/>
+      <link rel="prev" title="Hardware Choices" href="../operating/hardware.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Cassandra Tools</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/index.html">SSTable Tools</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cassandra-tools">
+<h1>Cassandra Tools<a class="headerlink" href="#cassandra-tools" title="Permalink to this headline">¶</a></h1>
+<p>This section describes the command line tools provided with Apache Cassandra.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="cqlsh.html">cqlsh: the CQL shell</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cqlsh.html#compatibility">Compatibility</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cqlsh.html#optional-dependencies">Optional Dependencies</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#pytz">pytz</a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#cython">cython</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="cqlsh.html#cqlshrc">cqlshrc</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cqlsh.html#command-line-options">Command Line Options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cqlsh.html#special-commands">Special Commands</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#consistency"><code class="docutils literal notranslate"><span class="pre">CONSISTENCY</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#serial-consistency"><code class="docutils literal notranslate"><span class="pre">SERIAL</span> <span class="pre">CONSISTENCY</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#show-version"><code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">VERSION</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#show-host"><code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">HOST</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#show-session"><code class="docutils literal notranslate"><span class="pre">SHOW</span> <span class="pre">SESSION</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#source"><code class="docutils literal notranslate"><span class="pre">SOURCE</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#capture"><code class="docutils literal notranslate"><span class="pre">CAPTURE</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#help"><code class="docutils literal notranslate"><span class="pre">HELP</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#tracing"><code class="docutils literal notranslate"><span class="pre">TRACING</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#paging"><code class="docutils literal notranslate"><span class="pre">PAGING</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#expand"><code class="docutils literal notranslate"><span class="pre">EXPAND</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#login"><code class="docutils literal notranslate"><span class="pre">LOGIN</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#exit"><code class="docutils literal notranslate"><span class="pre">EXIT</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#clear"><code class="docutils literal notranslate"><span class="pre">CLEAR</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#describe"><code class="docutils literal notranslate"><span class="pre">DESCRIBE</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#copy-to"><code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">TO</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="cqlsh.html#copy-from"><code class="docutils literal notranslate"><span class="pre">COPY</span> <span class="pre">FROM</span></code></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="generatetokens.html">generatetokens</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="generatetokens.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="generatetokens.html#example-output">Example Output</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l1"><a class="reference internal" href="nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sstable/index.html">SSTable Tools</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sstable/sstabledump.html">sstabledump</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstabledump.html#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstabledump.html#dump-entire-table">Dump entire table</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstabledump.html#dump-table-in-a-more-manageable-format">Dump table in a more manageable format</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstabledump.html#dump-only-keys">Dump only keys</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstabledump.html#dump-row-for-a-single-key">Dump row for a single key</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstabledump.html#exclude-a-key-or-keys-in-dump-of-rows">Exclude a key or keys in dump of rows</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstabledump.html#display-raw-timestamps">Display raw timestamps</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstabledump.html#display-internal-structure-in-output">Display internal structure in output</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/sstableexpiredblockers.html">sstableexpiredblockers</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableexpiredblockers.html#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableexpiredblockers.html#output-blocked-sstables">Output blocked sstables</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/sstablelevelreset.html">sstablelevelreset</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablelevelreset.html#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablelevelreset.html#table-not-found">Table not found</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablelevelreset.html#table-has-no-sstables">Table has no sstables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablelevelreset.html#table-already-at-level-0">Table already at level 0</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablelevelreset.html#table-levels-reduced-to-0">Table levels reduced to 0</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/sstableloader.html">sstableloader</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableloader.html#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableloader.html#load-sstables-from-a-snapshot">Load sstables from a Snapshot</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableloader.html#use-a-config-file-for-ssl-clusters">Use a Config File for SSL Clusters</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableloader.html#hide-progress-output">Hide Progress Output</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableloader.html#get-more-detail">Get More Detail</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableloader.html#throttling-load">Throttling Load</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableloader.html#speeding-up-load">Speeding up Load</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/sstablemetadata.html">sstablemetadata</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablemetadata.html#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablemetadata.html#print-all-the-metadata">Print all the metadata</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablemetadata.html#specify-gc-grace-seconds">Specify gc grace seconds</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablemetadata.html#explanation-of-each-value-printed-above">Explanation of each value printed above</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/sstableofflinerelevel.html">sstableofflinerelevel</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableofflinerelevel.html#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableofflinerelevel.html#doing-a-dry-run">Doing a dry run</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableofflinerelevel.html#running-a-relevel">Running a relevel</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableofflinerelevel.html#keyspace-or-table-not-found">Keyspace or table not found</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/sstablerepairedset.html">sstablerepairedset</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablerepairedset.html#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablerepairedset.html#set-a-lot-of-sstables-to-unrepaired-status">Set a lot of sstables to unrepaired status</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablerepairedset.html#set-one-to-many-sstables-to-repaired-status">Set one to many sstables to repaired status</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablerepairedset.html#print-metadata-showing-repaired-status">Print metadata showing repaired status</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablerepairedset.html#using-command-in-a-script">Using command in a script</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/sstablescrub.html">sstablescrub</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablescrub.html#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablescrub.html#basic-scrub">Basic Scrub</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablescrub.html#scrub-without-validation">Scrub without Validation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablescrub.html#skip-corrupted-counter-tables">Skip Corrupted Counter Tables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablescrub.html#dealing-with-overflow-dates">Dealing with Overflow Dates</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablescrub.html#manifest-check">Manifest Check</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/sstablesplit.html">sstablesplit</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablesplit.html#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablesplit.html#split-a-file">Split a File</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablesplit.html#split-multiple-files">Split Multiple Files</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablesplit.html#attempt-to-split-a-small-file">Attempt to Split a Small File</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablesplit.html#split-a-file-into-specified-size">Split a File into Specified Size</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstablesplit.html#split-without-snapshot">Split Without Snapshot</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/sstableupgrade.html">sstableupgrade</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableupgrade.html#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableupgrade.html#rewrite-tables-to-the-current-cassandra-version">Rewrite tables to the current Cassandra version</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableupgrade.html#rewrite-tables-to-the-current-cassandra-version-and-keep-tables-in-old-version">Rewrite tables to the current Cassandra version, and keep tables in old version</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableupgrade.html#rewrite-a-snapshot-to-the-current-cassandra-version">Rewrite a snapshot to the current Cassandra version</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/sstableutil.html">sstableutil</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableutil.html#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableutil.html#list-all-sstables">List all sstables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableutil.html#list-only-temporary-sstables">List only temporary sstables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableutil.html#list-only-final-sstables">List only final sstables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableutil.html#include-transaction-logs">Include transaction logs</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableutil.html#clean-up-sstables">Clean up sstables</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="sstable/sstableverify.html">sstableverify</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableverify.html#usage">Usage</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableverify.html#basic-verification">Basic Verification</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableverify.html#extended-verification">Extended Verification</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstable/sstableverify.html#corrupted-file">Corrupted File</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cassandra_stress.html">Cassandra Stress</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cassandra_stress.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cassandra_stress.html#user-mode">User mode</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="cassandra_stress.html#profile">Profile</a></li>
+<li class="toctree-l3"><a class="reference internal" href="cassandra_stress.html#lightweight-transaction-support">Lightweight transaction support</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="cassandra_stress.html#graphing">Graphing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cassandra_stress.html#faq">FAQ</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="cqlsh.html" class="btn btn-default pull-right " role="button" title="cqlsh: the CQL shell" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../operating/hardware.html" class="btn btn-default" role="button" title="Hardware Choices" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/assassinate.html b/src/doc/4.0-rc1/tools/nodetool/assassinate.html
new file mode 100644
index 0000000..a6de155
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/assassinate.html
@@ -0,0 +1,134 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "assassinate"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="assassinate">
+<span id="nodetool-assassinate"></span><h1>assassinate<a class="headerlink" href="#assassinate" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">assassinate</span> <span class="o">-</span> <span class="n">Forcefully</span> <span class="n">remove</span> <span class="n">a</span> <span class="n">dead</span> <span class="n">node</span> <span class="n">without</span>
+        <span class="n">re</span><span class="o">-</span><span class="n">replicating</span> <span class="nb">any</span> <span class="n">data</span><span class="o">.</span> <span class="n">Use</span> <span class="k">as</span> <span class="n">a</span> <span class="n">last</span> <span class="n">resort</span> <span class="k">if</span> <span class="n">you</span> <span class="n">cannot</span> <span class="n">removenode</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">assassinate</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">ip_address</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">ip_address</span><span class="o">&gt;</span>
+            <span class="n">IP</span> <span class="n">address</span> <span class="n">of</span> <span class="n">the</span> <span class="n">endpoint</span> <span class="n">to</span> <span class="n">assassinate</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/bootstrap.html b/src/doc/4.0-rc1/tools/nodetool/bootstrap.html
new file mode 100644
index 0000000..3f7c8a4
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/bootstrap.html
@@ -0,0 +1,133 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "bootstrap"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="bootstrap">
+<span id="nodetool-bootstrap"></span><h1>bootstrap<a class="headerlink" href="#bootstrap" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">bootstrap</span> <span class="o">-</span> <span class="n">Monitor</span><span class="o">/</span><span class="n">manage</span> <span class="n">node</span><span class="s1">&#39;s bootstrap process</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="n">bootstrap</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="n">bootstrap</span> <span class="n">resume</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+<span class="n">COMMANDS</span>
+        <span class="n">With</span> <span class="n">no</span> <span class="n">arguments</span><span class="p">,</span> <span class="n">Display</span> <span class="n">help</span> <span class="n">information</span>
+
+        <span class="n">resume</span>
+            <span class="n">Resume</span> <span class="n">bootstrap</span> <span class="n">streaming</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/cleanup.html b/src/doc/4.0-rc1/tools/nodetool/cleanup.html
new file mode 100644
index 0000000..180dd7d
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/cleanup.html
@@ -0,0 +1,139 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "cleanup"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cleanup">
+<span id="nodetool-cleanup"></span><h1>cleanup<a class="headerlink" href="#cleanup" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">cleanup</span> <span class="o">-</span> <span class="n">Triggers</span> <span class="n">the</span> <span class="n">immediate</span> <span class="n">cleanup</span> <span class="n">of</span> <span class="n">keys</span> <span class="n">no</span> <span class="n">longer</span>
+        <span class="n">belonging</span> <span class="n">to</span> <span class="n">a</span> <span class="n">node</span><span class="o">.</span> <span class="n">By</span> <span class="n">default</span><span class="p">,</span> <span class="n">clean</span> <span class="nb">all</span> <span class="n">keyspaces</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">cleanup</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">sstables</span> <span class="n">to</span> <span class="n">cleanup</span> <span class="n">simultanously</span><span class="p">,</span> <span class="nb">set</span> <span class="n">to</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">use</span> <span class="nb">all</span>
+            <span class="n">available</span> <span class="n">compaction</span> <span class="n">threads</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/clearsnapshot.html b/src/doc/4.0-rc1/tools/nodetool/clearsnapshot.html
new file mode 100644
index 0000000..aa5e6f2
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/clearsnapshot.html
@@ -0,0 +1,141 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "clearsnapshot"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="clearsnapshot">
+<span id="nodetool-clearsnapshot"></span><h1>clearsnapshot<a class="headerlink" href="#clearsnapshot" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">clearsnapshot</span> <span class="o">-</span> <span class="n">Remove</span> <span class="n">the</span> <span class="n">snapshot</span> <span class="k">with</span> <span class="n">the</span> <span class="n">given</span> <span class="n">name</span> <span class="kn">from</span>
+        <span class="nn">the</span> <span class="n">given</span> <span class="n">keyspaces</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">clearsnapshot</span> <span class="p">[</span><span class="o">--</span><span class="nb">all</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">-</span><span class="n">t</span> <span class="o">&lt;</span><span class="n">snapshot_name</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspaces</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">--</span><span class="nb">all</span>
+            <span class="n">Removes</span> <span class="nb">all</span> <span class="n">snapshots</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">t</span> <span class="o">&lt;</span><span class="n">snapshot_name</span><span class="o">&gt;</span>
+            <span class="n">Remove</span> <span class="n">the</span> <span class="n">snapshot</span> <span class="k">with</span> <span class="n">a</span> <span class="n">given</span> <span class="n">name</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspaces</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">Remove</span> <span class="n">snapshots</span> <span class="kn">from</span> <span class="nn">the</span> <span class="n">given</span> <span class="n">keyspaces</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/clientstats.html b/src/doc/4.0-rc1/tools/nodetool/clientstats.html
new file mode 100644
index 0000000..a93f2d4
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/clientstats.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "clientstats"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="clientstats">
+<span id="nodetool-clientstats"></span><h1>clientstats<a class="headerlink" href="#clientstats" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">clientstats</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">information</span> <span class="n">about</span> <span class="n">connected</span> <span class="n">clients</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">clientstats</span> <span class="p">[</span><span class="o">--</span><span class="nb">all</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">--</span><span class="n">by</span><span class="o">-</span><span class="n">protocol</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">clear</span><span class="o">-</span><span class="n">history</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">--</span><span class="nb">all</span>
+            <span class="n">Lists</span> <span class="nb">all</span> <span class="n">connections</span>
+
+        <span class="o">--</span><span class="n">by</span><span class="o">-</span><span class="n">protocol</span>
+            <span class="n">Lists</span> <span class="n">most</span> <span class="n">recent</span> <span class="n">client</span> <span class="n">connections</span> <span class="n">by</span> <span class="n">protocol</span> <span class="n">version</span>
+
+        <span class="o">--</span><span class="n">clear</span><span class="o">-</span><span class="n">history</span>
+            <span class="n">Clear</span> <span class="n">the</span> <span class="n">history</span> <span class="n">of</span> <span class="n">connected</span> <span class="n">clients</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/compact.html b/src/doc/4.0-rc1/tools/nodetool/compact.html
new file mode 100644
index 0000000..26c5293
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/compact.html
@@ -0,0 +1,151 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "compact"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="compact">
+<span id="nodetool-compact"></span><h1>compact<a class="headerlink" href="#compact" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">compact</span> <span class="o">-</span> <span class="n">Force</span> <span class="n">a</span> <span class="p">(</span><span class="n">major</span><span class="p">)</span> <span class="n">compaction</span> <span class="n">on</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">more</span> <span class="n">tables</span> <span class="ow">or</span>
+        <span class="n">user</span><span class="o">-</span><span class="n">defined</span> <span class="n">compaction</span> <span class="n">on</span> <span class="n">given</span> <span class="n">SSTables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">compact</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">et</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">s</span> <span class="o">|</span> <span class="o">--</span><span class="n">split</span><span class="o">-</span><span class="n">output</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">st</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="n">user</span><span class="o">-</span><span class="n">defined</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span> <span class="ow">or</span> <span class="o">&lt;</span><span class="n">SSTable</span> <span class="n">file</span><span class="o">&gt;...</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">et</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">et</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">compaction</span> <span class="nb">range</span> <span class="n">ends</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">s</span><span class="p">,</span> <span class="o">--</span><span class="n">split</span><span class="o">-</span><span class="n">output</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">s</span> <span class="n">to</span> <span class="ow">not</span> <span class="n">create</span> <span class="n">a</span> <span class="n">single</span> <span class="n">big</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">st</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">st</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">the</span> <span class="n">compaction</span> <span class="nb">range</span> <span class="n">starts</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span><span class="n">user</span><span class="o">-</span><span class="n">defined</span>
+            <span class="n">Use</span> <span class="o">--</span><span class="n">user</span><span class="o">-</span><span class="n">defined</span> <span class="n">to</span> <span class="n">submit</span> <span class="n">listed</span> <span class="n">files</span> <span class="k">for</span> <span class="n">user</span><span class="o">-</span><span class="n">defined</span>
+            <span class="n">compaction</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span> <span class="ow">or</span> <span class="o">&lt;</span><span class="n">SSTable</span> <span class="n">file</span><span class="o">&gt;...</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span> <span class="ow">or</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">SSTable</span> <span class="n">data</span>
+            <span class="n">files</span> <span class="n">when</span> <span class="n">using</span> <span class="o">--</span><span class="n">user</span><span class="o">-</span><span class="n">defined</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/compactionhistory.html b/src/doc/4.0-rc1/tools/nodetool/compactionhistory.html
new file mode 100644
index 0000000..33cab53
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/compactionhistory.html
@@ -0,0 +1,129 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "compactionhistory"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="compactionhistory">
+<span id="nodetool-compactionhistory"></span><h1>compactionhistory<a class="headerlink" href="#compactionhistory" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">compactionhistory</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">history</span> <span class="n">of</span> <span class="n">compaction</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">compactionhistory</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">F</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="nb">format</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span><span class="p">)]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">F</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="nb">format</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span>
+            <span class="n">Output</span> <span class="nb">format</span> <span class="p">(</span><span class="n">json</span><span class="p">,</span> <span class="n">yaml</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/compactionstats.html b/src/doc/4.0-rc1/tools/nodetool/compactionstats.html
new file mode 100644
index 0000000..c82ecf3
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/compactionstats.html
@@ -0,0 +1,129 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "compactionstats"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="compactionstats">
+<span id="nodetool-compactionstats"></span><h1>compactionstats<a class="headerlink" href="#compactionstats" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">compactionstats</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">statistics</span> <span class="n">on</span> <span class="n">compactions</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">compactionstats</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">H</span> <span class="o">|</span> <span class="o">--</span><span class="n">human</span><span class="o">-</span><span class="n">readable</span><span class="p">)]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">H</span><span class="p">,</span> <span class="o">--</span><span class="n">human</span><span class="o">-</span><span class="n">readable</span>
+            <span class="n">Display</span> <span class="nb">bytes</span> <span class="ow">in</span> <span class="n">human</span> <span class="n">readable</span> <span class="n">form</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">e</span><span class="o">.</span> <span class="n">KiB</span><span class="p">,</span> <span class="n">MiB</span><span class="p">,</span> <span class="n">GiB</span><span class="p">,</span> <span class="n">TiB</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/decommission.html b/src/doc/4.0-rc1/tools/nodetool/decommission.html
new file mode 100644
index 0000000..8cf2f54
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/decommission.html
@@ -0,0 +1,129 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "decommission"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="decommission">
+<span id="nodetool-decommission"></span><h1>decommission<a class="headerlink" href="#decommission" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">decommission</span> <span class="o">-</span> <span class="n">Decommission</span> <span class="n">the</span> <span class="o">*</span><span class="n">node</span> <span class="n">I</span> <span class="n">am</span> <span class="n">connecting</span> <span class="n">to</span><span class="o">*</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">decommission</span> <span class="p">[(</span><span class="o">-</span><span class="n">f</span> <span class="o">|</span> <span class="o">--</span><span class="n">force</span><span class="p">)]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">f</span><span class="p">,</span> <span class="o">--</span><span class="n">force</span>
+            <span class="n">Force</span> <span class="n">decommission</span> <span class="n">of</span> <span class="n">this</span> <span class="n">node</span> <span class="n">even</span> <span class="n">when</span> <span class="n">it</span> <span class="n">reduces</span> <span class="n">the</span> <span class="n">number</span> <span class="n">of</span>
+            <span class="n">replicas</span> <span class="n">to</span> <span class="n">below</span> <span class="n">configured</span> <span class="n">RF</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/describecluster.html b/src/doc/4.0-rc1/tools/nodetool/describecluster.html
new file mode 100644
index 0000000..de00cc9
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/describecluster.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "describecluster"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="describecluster">
+<span id="nodetool-describecluster"></span><h1>describecluster<a class="headerlink" href="#describecluster" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">describecluster</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">name</span><span class="p">,</span> <span class="n">snitch</span><span class="p">,</span> <span class="n">partitioner</span> <span class="ow">and</span>
+        <span class="n">schema</span> <span class="n">version</span> <span class="n">of</span> <span class="n">a</span> <span class="n">cluster</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">describecluster</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/describering.html b/src/doc/4.0-rc1/tools/nodetool/describering.html
new file mode 100644
index 0000000..b85ffa7
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/describering.html
@@ -0,0 +1,133 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "describering"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="describering">
+<span id="nodetool-describering"></span><h1>describering<a class="headerlink" href="#describering" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">describering</span> <span class="o">-</span> <span class="n">Shows</span> <span class="n">the</span> <span class="n">token</span> <span class="n">ranges</span> <span class="n">info</span> <span class="n">of</span> <span class="n">a</span> <span class="n">given</span> <span class="n">keyspace</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">describering</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">name</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/disableauditlog.html b/src/doc/4.0-rc1/tools/nodetool/disableauditlog.html
new file mode 100644
index 0000000..3395483
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/disableauditlog.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disableauditlog"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disableauditlog">
+<span id="nodetool-disableauditlog"></span><h1>disableauditlog<a class="headerlink" href="#disableauditlog" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disableauditlog</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">the</span> <span class="n">audit</span> <span class="n">log</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disableauditlog</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/disableautocompaction.html b/src/doc/4.0-rc1/tools/nodetool/disableautocompaction.html
new file mode 100644
index 0000000..997bce7
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/disableautocompaction.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disableautocompaction"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disableautocompaction">
+<span id="nodetool-disableautocompaction"></span><h1>disableautocompaction<a class="headerlink" href="#disableautocompaction" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disableautocompaction</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">autocompaction</span> <span class="k">for</span> <span class="n">the</span> <span class="n">given</span>
+        <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disableautocompaction</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/disablebackup.html b/src/doc/4.0-rc1/tools/nodetool/disablebackup.html
new file mode 100644
index 0000000..12eb179
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/disablebackup.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disablebackup"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disablebackup">
+<span id="nodetool-disablebackup"></span><h1>disablebackup<a class="headerlink" href="#disablebackup" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disablebackup</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">incremental</span> <span class="n">backup</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disablebackup</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/disablebinary.html b/src/doc/4.0-rc1/tools/nodetool/disablebinary.html
new file mode 100644
index 0000000..4b5d3b5
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/disablebinary.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disablebinary"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disablebinary">
+<span id="nodetool-disablebinary"></span><h1>disablebinary<a class="headerlink" href="#disablebinary" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disablebinary</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">native</span> <span class="n">transport</span> <span class="p">(</span><span class="n">binary</span> <span class="n">protocol</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disablebinary</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/disablefullquerylog.html b/src/doc/4.0-rc1/tools/nodetool/disablefullquerylog.html
new file mode 100644
index 0000000..da2a20c
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/disablefullquerylog.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disablefullquerylog"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disablefullquerylog">
+<span id="nodetool-disablefullquerylog"></span><h1>disablefullquerylog<a class="headerlink" href="#disablefullquerylog" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disablefullquerylog</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">the</span> <span class="n">full</span> <span class="n">query</span> <span class="n">log</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disablefullquerylog</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/disablegossip.html b/src/doc/4.0-rc1/tools/nodetool/disablegossip.html
new file mode 100644
index 0000000..af29890
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/disablegossip.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disablegossip"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disablegossip">
+<span id="nodetool-disablegossip"></span><h1>disablegossip<a class="headerlink" href="#disablegossip" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disablegossip</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">gossip</span> <span class="p">(</span><span class="n">effectively</span> <span class="n">marking</span> <span class="n">the</span> <span class="n">node</span>
+        <span class="n">down</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disablegossip</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/disablehandoff.html b/src/doc/4.0-rc1/tools/nodetool/disablehandoff.html
new file mode 100644
index 0000000..f5ebeb0
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/disablehandoff.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disablehandoff"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disablehandoff">
+<span id="nodetool-disablehandoff"></span><h1>disablehandoff<a class="headerlink" href="#disablehandoff" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disablehandoff</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">storing</span> <span class="n">hinted</span> <span class="n">handoffs</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disablehandoff</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/disablehintsfordc.html b/src/doc/4.0-rc1/tools/nodetool/disablehintsfordc.html
new file mode 100644
index 0000000..2d10421
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/disablehintsfordc.html
@@ -0,0 +1,134 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disablehintsfordc"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disablehintsfordc">
+<span id="nodetool-disablehintsfordc"></span><h1>disablehintsfordc<a class="headerlink" href="#disablehintsfordc" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disablehintsfordc</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">hints</span> <span class="k">for</span> <span class="n">a</span> <span class="n">data</span> <span class="n">center</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disablehintsfordc</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">datacenter</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">datacenter</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">data</span> <span class="n">center</span> <span class="n">to</span> <span class="n">disable</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/disableoldprotocolversions.html b/src/doc/4.0-rc1/tools/nodetool/disableoldprotocolversions.html
new file mode 100644
index 0000000..1209d99
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/disableoldprotocolversions.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "disableoldprotocolversions"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="disableoldprotocolversions">
+<span id="nodetool-disableoldprotocolversions"></span><h1>disableoldprotocolversions<a class="headerlink" href="#disableoldprotocolversions" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">disableoldprotocolversions</span> <span class="o">-</span> <span class="n">Disable</span> <span class="n">old</span> <span class="n">protocol</span> <span class="n">versions</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">disableoldprotocolversions</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/drain.html b/src/doc/4.0-rc1/tools/nodetool/drain.html
new file mode 100644
index 0000000..fdf3b2d
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/drain.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "drain"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="drain">
+<span id="nodetool-drain"></span><h1>drain<a class="headerlink" href="#drain" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">drain</span> <span class="o">-</span> <span class="n">Drain</span> <span class="n">the</span> <span class="n">node</span> <span class="p">(</span><span class="n">stop</span> <span class="n">accepting</span> <span class="n">writes</span> <span class="ow">and</span> <span class="n">flush</span> <span class="nb">all</span>
+        <span class="n">tables</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">drain</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/enableauditlog.html b/src/doc/4.0-rc1/tools/nodetool/enableauditlog.html
new file mode 100644
index 0000000..8eec322
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/enableauditlog.html
@@ -0,0 +1,159 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enableauditlog"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enableauditlog">
+<span id="nodetool-enableauditlog"></span><h1>enableauditlog<a class="headerlink" href="#enableauditlog" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enableauditlog</span> <span class="o">-</span> <span class="n">Enable</span> <span class="n">the</span> <span class="n">audit</span> <span class="n">log</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enableauditlog</span>
+                <span class="p">[</span><span class="o">--</span><span class="n">excluded</span><span class="o">-</span><span class="n">categories</span> <span class="o">&lt;</span><span class="n">excluded_categories</span><span class="o">&gt;</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">--</span><span class="n">excluded</span><span class="o">-</span><span class="n">keyspaces</span> <span class="o">&lt;</span><span class="n">excluded_keyspaces</span><span class="o">&gt;</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">--</span><span class="n">excluded</span><span class="o">-</span><span class="n">users</span> <span class="o">&lt;</span><span class="n">excluded_users</span><span class="o">&gt;</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">--</span><span class="n">included</span><span class="o">-</span><span class="n">categories</span> <span class="o">&lt;</span><span class="n">included_categories</span><span class="o">&gt;</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">--</span><span class="n">included</span><span class="o">-</span><span class="n">keyspaces</span> <span class="o">&lt;</span><span class="n">included_keyspaces</span><span class="o">&gt;</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">--</span><span class="n">included</span><span class="o">-</span><span class="n">users</span> <span class="o">&lt;</span><span class="n">included_users</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">logger</span> <span class="o">&lt;</span><span class="n">logger</span><span class="o">&gt;</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">--</span><span class="n">excluded</span><span class="o">-</span><span class="n">categories</span> <span class="o">&lt;</span><span class="n">excluded_categories</span><span class="o">&gt;</span>
+            <span class="n">Comma</span> <span class="n">separated</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">Audit</span> <span class="n">Log</span> <span class="n">Categories</span> <span class="n">to</span> <span class="n">be</span> <span class="n">excluded</span> <span class="k">for</span>
+            <span class="n">audit</span> <span class="n">log</span><span class="o">.</span> <span class="n">If</span> <span class="ow">not</span> <span class="nb">set</span> <span class="n">the</span> <span class="n">value</span> <span class="kn">from</span> <span class="nn">cassandra.yaml</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
+
+        <span class="o">--</span><span class="n">excluded</span><span class="o">-</span><span class="n">keyspaces</span> <span class="o">&lt;</span><span class="n">excluded_keyspaces</span><span class="o">&gt;</span>
+            <span class="n">Comma</span> <span class="n">separated</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">keyspaces</span> <span class="n">to</span> <span class="n">be</span> <span class="n">excluded</span> <span class="k">for</span> <span class="n">audit</span> <span class="n">log</span><span class="o">.</span> <span class="n">If</span>
+            <span class="ow">not</span> <span class="nb">set</span> <span class="n">the</span> <span class="n">value</span> <span class="kn">from</span> <span class="nn">cassandra.yaml</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
+
+        <span class="o">--</span><span class="n">excluded</span><span class="o">-</span><span class="n">users</span> <span class="o">&lt;</span><span class="n">excluded_users</span><span class="o">&gt;</span>
+            <span class="n">Comma</span> <span class="n">separated</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">users</span> <span class="n">to</span> <span class="n">be</span> <span class="n">excluded</span> <span class="k">for</span> <span class="n">audit</span> <span class="n">log</span><span class="o">.</span> <span class="n">If</span> <span class="ow">not</span>
+            <span class="nb">set</span> <span class="n">the</span> <span class="n">value</span> <span class="kn">from</span> <span class="nn">cassandra.yaml</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">--</span><span class="n">included</span><span class="o">-</span><span class="n">categories</span> <span class="o">&lt;</span><span class="n">included_categories</span><span class="o">&gt;</span>
+            <span class="n">Comma</span> <span class="n">separated</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">Audit</span> <span class="n">Log</span> <span class="n">Categories</span> <span class="n">to</span> <span class="n">be</span> <span class="n">included</span> <span class="k">for</span>
+            <span class="n">audit</span> <span class="n">log</span><span class="o">.</span> <span class="n">If</span> <span class="ow">not</span> <span class="nb">set</span> <span class="n">the</span> <span class="n">value</span> <span class="kn">from</span> <span class="nn">cassandra.yaml</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
+
+        <span class="o">--</span><span class="n">included</span><span class="o">-</span><span class="n">keyspaces</span> <span class="o">&lt;</span><span class="n">included_keyspaces</span><span class="o">&gt;</span>
+            <span class="n">Comma</span> <span class="n">separated</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">keyspaces</span> <span class="n">to</span> <span class="n">be</span> <span class="n">included</span> <span class="k">for</span> <span class="n">audit</span> <span class="n">log</span><span class="o">.</span> <span class="n">If</span>
+            <span class="ow">not</span> <span class="nb">set</span> <span class="n">the</span> <span class="n">value</span> <span class="kn">from</span> <span class="nn">cassandra.yaml</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
+
+        <span class="o">--</span><span class="n">included</span><span class="o">-</span><span class="n">users</span> <span class="o">&lt;</span><span class="n">included_users</span><span class="o">&gt;</span>
+            <span class="n">Comma</span> <span class="n">separated</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">users</span> <span class="n">to</span> <span class="n">be</span> <span class="n">included</span> <span class="k">for</span> <span class="n">audit</span> <span class="n">log</span><span class="o">.</span> <span class="n">If</span> <span class="ow">not</span>
+            <span class="nb">set</span> <span class="n">the</span> <span class="n">value</span> <span class="kn">from</span> <span class="nn">cassandra.yaml</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
+
+        <span class="o">--</span><span class="n">logger</span> <span class="o">&lt;</span><span class="n">logger</span><span class="o">&gt;</span>
+            <span class="n">Logger</span> <span class="n">name</span> <span class="n">to</span> <span class="n">be</span> <span class="n">used</span> <span class="k">for</span> <span class="n">AuditLogging</span><span class="o">.</span> <span class="n">Default</span> <span class="n">BinAuditLogger</span><span class="o">.</span> <span class="n">If</span>
+            <span class="ow">not</span> <span class="nb">set</span> <span class="n">the</span> <span class="n">value</span> <span class="kn">from</span> <span class="nn">cassandra.yaml</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/enableautocompaction.html b/src/doc/4.0-rc1/tools/nodetool/enableautocompaction.html
new file mode 100644
index 0000000..d2d1ff7
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/enableautocompaction.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enableautocompaction"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enableautocompaction">
+<span id="nodetool-enableautocompaction"></span><h1>enableautocompaction<a class="headerlink" href="#enableautocompaction" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enableautocompaction</span> <span class="o">-</span> <span class="n">Enable</span> <span class="n">autocompaction</span> <span class="k">for</span> <span class="n">the</span> <span class="n">given</span>
+        <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enableautocompaction</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/enablebackup.html b/src/doc/4.0-rc1/tools/nodetool/enablebackup.html
new file mode 100644
index 0000000..edcff07
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/enablebackup.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enablebackup"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enablebackup">
+<span id="nodetool-enablebackup"></span><h1>enablebackup<a class="headerlink" href="#enablebackup" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enablebackup</span> <span class="o">-</span> <span class="n">Enable</span> <span class="n">incremental</span> <span class="n">backup</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enablebackup</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/enablebinary.html b/src/doc/4.0-rc1/tools/nodetool/enablebinary.html
new file mode 100644
index 0000000..ab7180a
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/enablebinary.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enablebinary"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enablebinary">
+<span id="nodetool-enablebinary"></span><h1>enablebinary<a class="headerlink" href="#enablebinary" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enablebinary</span> <span class="o">-</span> <span class="n">Reenable</span> <span class="n">native</span> <span class="n">transport</span> <span class="p">(</span><span class="n">binary</span> <span class="n">protocol</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enablebinary</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/enablefullquerylog.html b/src/doc/4.0-rc1/tools/nodetool/enablefullquerylog.html
new file mode 100644
index 0000000..fc4a968
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/enablefullquerylog.html
@@ -0,0 +1,157 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enablefullquerylog"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enablefullquerylog">
+<span id="nodetool-enablefullquerylog"></span><h1>enablefullquerylog<a class="headerlink" href="#enablefullquerylog" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enablefullquerylog</span> <span class="o">-</span> <span class="n">Enable</span> <span class="n">full</span> <span class="n">query</span> <span class="n">logging</span><span class="p">,</span> <span class="n">defaults</span> <span class="k">for</span>
+        <span class="n">the</span> <span class="n">options</span> <span class="n">are</span> <span class="n">configured</span> <span class="ow">in</span> <span class="n">cassandra</span><span class="o">.</span><span class="n">yaml</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enablefullquerylog</span>
+                <span class="p">[</span><span class="o">--</span><span class="n">archive</span><span class="o">-</span><span class="n">command</span> <span class="o">&lt;</span><span class="n">archive_command</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">blocking</span> <span class="o">&lt;</span><span class="n">blocking</span><span class="o">&gt;</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">--</span><span class="nb">max</span><span class="o">-</span><span class="n">archive</span><span class="o">-</span><span class="n">retries</span> <span class="o">&lt;</span><span class="n">archive_retries</span><span class="o">&gt;</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">--</span><span class="nb">max</span><span class="o">-</span><span class="n">log</span><span class="o">-</span><span class="n">size</span> <span class="o">&lt;</span><span class="n">max_log_size</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="nb">max</span><span class="o">-</span><span class="n">queue</span><span class="o">-</span><span class="n">weight</span> <span class="o">&lt;</span><span class="n">max_queue_weight</span><span class="o">&gt;</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">--</span><span class="n">path</span> <span class="o">&lt;</span><span class="n">path</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">roll</span><span class="o">-</span><span class="n">cycle</span> <span class="o">&lt;</span><span class="n">roll_cycle</span><span class="o">&gt;</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">--</span><span class="n">archive</span><span class="o">-</span><span class="n">command</span> <span class="o">&lt;</span><span class="n">archive_command</span><span class="o">&gt;</span>
+            <span class="n">Command</span> <span class="n">that</span> <span class="n">will</span> <span class="n">handle</span> <span class="n">archiving</span> <span class="n">rolled</span> <span class="n">full</span> <span class="n">query</span> <span class="n">log</span> <span class="n">files</span><span class="o">.</span>
+            <span class="n">Format</span> <span class="ow">is</span> <span class="s2">&quot;/path/to/script.sh %path&quot;</span> <span class="n">where</span> <span class="o">%</span><span class="n">path</span> <span class="n">will</span> <span class="n">be</span> <span class="n">replaced</span>
+            <span class="k">with</span> <span class="n">the</span> <span class="n">file</span> <span class="n">to</span> <span class="n">archive</span>
+
+        <span class="o">--</span><span class="n">blocking</span> <span class="o">&lt;</span><span class="n">blocking</span><span class="o">&gt;</span>
+            <span class="n">If</span> <span class="n">the</span> <span class="n">queue</span> <span class="ow">is</span> <span class="n">full</span> <span class="n">whether</span> <span class="n">to</span> <span class="n">block</span> <span class="n">producers</span> <span class="ow">or</span> <span class="n">drop</span> <span class="n">samples</span>
+            <span class="p">[</span><span class="n">true</span><span class="o">|</span><span class="n">false</span><span class="p">]</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">--</span><span class="nb">max</span><span class="o">-</span><span class="n">archive</span><span class="o">-</span><span class="n">retries</span> <span class="o">&lt;</span><span class="n">archive_retries</span><span class="o">&gt;</span>
+            <span class="n">Max</span> <span class="n">number</span> <span class="n">of</span> <span class="n">archive</span> <span class="n">retries</span><span class="o">.</span>
+
+        <span class="o">--</span><span class="nb">max</span><span class="o">-</span><span class="n">log</span><span class="o">-</span><span class="n">size</span> <span class="o">&lt;</span><span class="n">max_log_size</span><span class="o">&gt;</span>
+            <span class="n">How</span> <span class="n">many</span> <span class="nb">bytes</span> <span class="n">of</span> <span class="n">log</span> <span class="n">data</span> <span class="n">to</span> <span class="n">store</span> <span class="n">before</span> <span class="n">dropping</span> <span class="n">segments</span><span class="o">.</span> <span class="n">Might</span>
+            <span class="ow">not</span> <span class="n">be</span> <span class="n">respected</span> <span class="k">if</span> <span class="n">a</span> <span class="n">log</span> <span class="n">file</span> <span class="n">hasn</span><span class="s1">&#39;t rolled so it can be deleted.</span>
+
+        <span class="o">--</span><span class="nb">max</span><span class="o">-</span><span class="n">queue</span><span class="o">-</span><span class="n">weight</span> <span class="o">&lt;</span><span class="n">max_queue_weight</span><span class="o">&gt;</span>
+            <span class="n">Maximum</span> <span class="n">number</span> <span class="n">of</span> <span class="nb">bytes</span> <span class="n">of</span> <span class="n">query</span> <span class="n">data</span> <span class="n">to</span> <span class="n">queue</span> <span class="n">to</span> <span class="n">disk</span> <span class="n">before</span>
+            <span class="n">blocking</span> <span class="ow">or</span> <span class="n">dropping</span> <span class="n">samples</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">--</span><span class="n">path</span> <span class="o">&lt;</span><span class="n">path</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">store</span> <span class="n">the</span> <span class="n">full</span> <span class="n">query</span> <span class="n">log</span> <span class="n">at</span><span class="o">.</span> <span class="n">Will</span> <span class="n">have</span> <span class="n">it</span><span class="s1">&#39;s contents</span>
+            <span class="n">recursively</span> <span class="n">deleted</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">--</span><span class="n">roll</span><span class="o">-</span><span class="n">cycle</span> <span class="o">&lt;</span><span class="n">roll_cycle</span><span class="o">&gt;</span>
+            <span class="n">How</span> <span class="n">often</span> <span class="n">to</span> <span class="n">roll</span> <span class="n">the</span> <span class="n">log</span> <span class="n">file</span> <span class="p">(</span><span class="n">MINUTELY</span><span class="p">,</span> <span class="n">HOURLY</span><span class="p">,</span> <span class="n">DAILY</span><span class="p">)</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/enablegossip.html b/src/doc/4.0-rc1/tools/nodetool/enablegossip.html
new file mode 100644
index 0000000..41ae221
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/enablegossip.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enablegossip"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enablegossip">
+<span id="nodetool-enablegossip"></span><h1>enablegossip<a class="headerlink" href="#enablegossip" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enablegossip</span> <span class="o">-</span> <span class="n">Reenable</span> <span class="n">gossip</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enablegossip</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/enablehandoff.html b/src/doc/4.0-rc1/tools/nodetool/enablehandoff.html
new file mode 100644
index 0000000..cda326f
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/enablehandoff.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enablehandoff"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enablehandoff">
+<span id="nodetool-enablehandoff"></span><h1>enablehandoff<a class="headerlink" href="#enablehandoff" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enablehandoff</span> <span class="o">-</span> <span class="n">Reenable</span> <span class="n">future</span> <span class="n">hints</span> <span class="n">storing</span> <span class="n">on</span> <span class="n">the</span> <span class="n">current</span>
+        <span class="n">node</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enablehandoff</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/enablehintsfordc.html b/src/doc/4.0-rc1/tools/nodetool/enablehintsfordc.html
new file mode 100644
index 0000000..661276f
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/enablehintsfordc.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enablehintsfordc"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enablehintsfordc">
+<span id="nodetool-enablehintsfordc"></span><h1>enablehintsfordc<a class="headerlink" href="#enablehintsfordc" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enablehintsfordc</span> <span class="o">-</span> <span class="n">Enable</span> <span class="n">hints</span> <span class="k">for</span> <span class="n">a</span> <span class="n">data</span> <span class="n">center</span> <span class="n">that</span> <span class="n">was</span>
+        <span class="n">previsouly</span> <span class="n">disabled</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enablehintsfordc</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">datacenter</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">datacenter</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">data</span> <span class="n">center</span> <span class="n">to</span> <span class="n">enable</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/enableoldprotocolversions.html b/src/doc/4.0-rc1/tools/nodetool/enableoldprotocolversions.html
new file mode 100644
index 0000000..d68716a
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/enableoldprotocolversions.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "enableoldprotocolversions"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="enableoldprotocolversions">
+<span id="nodetool-enableoldprotocolversions"></span><h1>enableoldprotocolversions<a class="headerlink" href="#enableoldprotocolversions" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">enableoldprotocolversions</span> <span class="o">-</span> <span class="n">Enable</span> <span class="n">old</span> <span class="n">protocol</span> <span class="n">versions</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">enableoldprotocolversions</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/failuredetector.html b/src/doc/4.0-rc1/tools/nodetool/failuredetector.html
new file mode 100644
index 0000000..ff83602
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/failuredetector.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "failuredetector"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="failuredetector">
+<span id="nodetool-failuredetector"></span><h1>failuredetector<a class="headerlink" href="#failuredetector" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">failuredetector</span> <span class="o">-</span> <span class="n">Shows</span> <span class="n">the</span> <span class="n">failure</span> <span class="n">detector</span> <span class="n">information</span> <span class="k">for</span>
+        <span class="n">the</span> <span class="n">cluster</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">failuredetector</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/flush.html b/src/doc/4.0-rc1/tools/nodetool/flush.html
new file mode 100644
index 0000000..cc9b753
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/flush.html
@@ -0,0 +1,134 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "flush"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="flush">
+<span id="nodetool-flush"></span><h1>flush<a class="headerlink" href="#flush" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">flush</span> <span class="o">-</span> <span class="n">Flush</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">more</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">flush</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/garbagecollect.html b/src/doc/4.0-rc1/tools/nodetool/garbagecollect.html
new file mode 100644
index 0000000..c6a5e6e
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/garbagecollect.html
@@ -0,0 +1,144 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "garbagecollect"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="garbagecollect">
+<span id="nodetool-garbagecollect"></span><h1>garbagecollect<a class="headerlink" href="#garbagecollect" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">garbagecollect</span> <span class="o">-</span> <span class="n">Remove</span> <span class="n">deleted</span> <span class="n">data</span> <span class="kn">from</span> <span class="nn">one</span> <span class="ow">or</span> <span class="n">more</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">garbagecollect</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">g</span> <span class="o">&lt;</span><span class="n">granularity</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">granularity</span> <span class="o">&lt;</span><span class="n">granularity</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">g</span> <span class="o">&lt;</span><span class="n">granularity</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">granularity</span> <span class="o">&lt;</span><span class="n">granularity</span><span class="o">&gt;</span>
+            <span class="n">Granularity</span> <span class="n">of</span> <span class="n">garbage</span> <span class="n">removal</span><span class="o">.</span> <span class="n">ROW</span> <span class="p">(</span><span class="n">default</span><span class="p">)</span> <span class="n">removes</span> <span class="n">deleted</span>
+            <span class="n">partitions</span> <span class="ow">and</span> <span class="n">rows</span><span class="p">,</span> <span class="n">CELL</span> <span class="n">also</span> <span class="n">removes</span> <span class="n">overwritten</span> <span class="ow">or</span> <span class="n">deleted</span> <span class="n">cells</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">sstables</span> <span class="n">to</span> <span class="n">cleanup</span> <span class="n">simultanously</span><span class="p">,</span> <span class="nb">set</span> <span class="n">to</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">use</span> <span class="nb">all</span>
+            <span class="n">available</span> <span class="n">compaction</span> <span class="n">threads</span><span class="o">.</span> <span class="n">Defaults</span> <span class="n">to</span> <span class="mi">1</span> <span class="n">so</span> <span class="n">that</span> <span class="n">collections</span> <span class="n">of</span>
+            <span class="n">newer</span> <span class="n">tables</span> <span class="n">can</span> <span class="n">see</span> <span class="n">the</span> <span class="n">data</span> <span class="ow">is</span> <span class="n">deleted</span> <span class="ow">and</span> <span class="n">also</span> <span class="n">remove</span> <span class="n">tombstones</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/gcstats.html b/src/doc/4.0-rc1/tools/nodetool/gcstats.html
new file mode 100644
index 0000000..dfa9ca4
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/gcstats.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "gcstats"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="gcstats">
+<span id="nodetool-gcstats"></span><h1>gcstats<a class="headerlink" href="#gcstats" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">gcstats</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">GC</span> <span class="n">Statistics</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">gcstats</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getbatchlogreplaythrottle.html b/src/doc/4.0-rc1/tools/nodetool/getbatchlogreplaythrottle.html
new file mode 100644
index 0000000..721ae2a
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getbatchlogreplaythrottle.html
@@ -0,0 +1,127 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getbatchlogreplaythrottle"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getbatchlogreplaythrottle">
+<span id="nodetool-getbatchlogreplaythrottle"></span><h1>getbatchlogreplaythrottle<a class="headerlink" href="#getbatchlogreplaythrottle" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getbatchlogreplaythrottle</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">batchlog</span> <span class="n">replay</span> <span class="n">throttle</span> <span class="ow">in</span>
+        <span class="n">KB</span><span class="o">/</span><span class="n">s</span><span class="o">.</span> <span class="n">This</span> <span class="ow">is</span> <span class="n">reduced</span> <span class="n">proportionally</span> <span class="n">to</span> <span class="n">the</span> <span class="n">number</span> <span class="n">of</span> <span class="n">nodes</span> <span class="ow">in</span> <span class="n">the</span>
+        <span class="n">cluster</span><span class="o">.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getbatchlogreplaythrottle</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getcompactionthreshold.html b/src/doc/4.0-rc1/tools/nodetool/getcompactionthreshold.html
new file mode 100644
index 0000000..1891552
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getcompactionthreshold.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getcompactionthreshold"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getcompactionthreshold">
+<span id="nodetool-getcompactionthreshold"></span><h1>getcompactionthreshold<a class="headerlink" href="#getcompactionthreshold" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getcompactionthreshold</span> <span class="o">-</span> <span class="n">Print</span> <span class="nb">min</span> <span class="ow">and</span> <span class="nb">max</span> <span class="n">compaction</span>
+        <span class="n">thresholds</span> <span class="k">for</span> <span class="n">a</span> <span class="n">given</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getcompactionthreshold</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="k">with</span> <span class="n">a</span> <span class="n">table</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getcompactionthroughput.html b/src/doc/4.0-rc1/tools/nodetool/getcompactionthroughput.html
new file mode 100644
index 0000000..03c0353
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getcompactionthroughput.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getcompactionthroughput"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getcompactionthroughput">
+<span id="nodetool-getcompactionthroughput"></span><h1>getcompactionthroughput<a class="headerlink" href="#getcompactionthroughput" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getcompactionthroughput</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">MB</span><span class="o">/</span><span class="n">s</span> <span class="n">throughput</span> <span class="n">cap</span> <span class="k">for</span>
+        <span class="n">compaction</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getcompactionthroughput</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getconcurrency.html b/src/doc/4.0-rc1/tools/nodetool/getconcurrency.html
new file mode 100644
index 0000000..f3dd1f9
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getconcurrency.html
@@ -0,0 +1,134 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getconcurrency"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getconcurrency">
+<span id="nodetool-getconcurrency"></span><h1>getconcurrency<a class="headerlink" href="#getconcurrency" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getconcurrency</span> <span class="o">-</span> <span class="n">Get</span> <span class="n">maximum</span> <span class="n">concurrency</span> <span class="k">for</span> <span class="n">processing</span> <span class="n">stages</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getconcurrency</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="p">[</span><span class="n">stage</span><span class="o">-</span><span class="n">names</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="n">stage</span><span class="o">-</span><span class="n">names</span><span class="p">]</span>
+            <span class="n">optional</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">stage</span> <span class="n">names</span><span class="p">,</span> <span class="n">otherwise</span> <span class="n">display</span> <span class="nb">all</span> <span class="n">stages</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getconcurrentcompactors.html b/src/doc/4.0-rc1/tools/nodetool/getconcurrentcompactors.html
new file mode 100644
index 0000000..887ceba
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getconcurrentcompactors.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getconcurrentcompactors"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getconcurrentcompactors">
+<span id="nodetool-getconcurrentcompactors"></span><h1>getconcurrentcompactors<a class="headerlink" href="#getconcurrentcompactors" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getconcurrentcompactors</span> <span class="o">-</span> <span class="n">Get</span> <span class="n">the</span> <span class="n">number</span> <span class="n">of</span> <span class="n">concurrent</span>
+        <span class="n">compactors</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span><span class="o">.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getconcurrentcompactors</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getconcurrentviewbuilders.html b/src/doc/4.0-rc1/tools/nodetool/getconcurrentviewbuilders.html
new file mode 100644
index 0000000..f759b54
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getconcurrentviewbuilders.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getconcurrentviewbuilders"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getconcurrentviewbuilders">
+<span id="nodetool-getconcurrentviewbuilders"></span><h1>getconcurrentviewbuilders<a class="headerlink" href="#getconcurrentviewbuilders" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getconcurrentviewbuilders</span> <span class="o">-</span> <span class="n">Get</span> <span class="n">the</span> <span class="n">number</span> <span class="n">of</span> <span class="n">concurrent</span> <span class="n">view</span>
+        <span class="n">builders</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getconcurrentviewbuilders</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getendpoints.html b/src/doc/4.0-rc1/tools/nodetool/getendpoints.html
new file mode 100644
index 0000000..3adecb6
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getendpoints.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getendpoints"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getendpoints">
+<span id="nodetool-getendpoints"></span><h1>getendpoints<a class="headerlink" href="#getendpoints" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getendpoints</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">end</span> <span class="n">points</span> <span class="n">that</span> <span class="n">owns</span> <span class="n">the</span> <span class="n">key</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getendpoints</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">key</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">key</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">the</span> <span class="n">table</span><span class="p">,</span> <span class="ow">and</span> <span class="n">the</span> <span class="n">partition</span> <span class="n">key</span> <span class="k">for</span> <span class="n">which</span> <span class="n">we</span> <span class="n">need</span> <span class="n">to</span>
+            <span class="n">find</span> <span class="n">the</span> <span class="n">endpoint</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getfullquerylog.html b/src/doc/4.0-rc1/tools/nodetool/getfullquerylog.html
new file mode 100644
index 0000000..912489d
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getfullquerylog.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getfullquerylog"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getfullquerylog">
+<span id="nodetool-getfullquerylog"></span><h1>getfullquerylog<a class="headerlink" href="#getfullquerylog" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getfullquerylog</span> <span class="o">-</span> <span class="nb">print</span> <span class="n">configuration</span> <span class="n">of</span> <span class="n">fql</span> <span class="k">if</span> <span class="n">enabled</span><span class="p">,</span>
+        <span class="n">otherwise</span> <span class="n">the</span> <span class="n">configuration</span> <span class="n">reflected</span> <span class="ow">in</span> <span class="n">cassandra</span><span class="o">.</span><span class="n">yaml</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getfullquerylog</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getinterdcstreamthroughput.html b/src/doc/4.0-rc1/tools/nodetool/getinterdcstreamthroughput.html
new file mode 100644
index 0000000..932565f
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getinterdcstreamthroughput.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getinterdcstreamthroughput"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getinterdcstreamthroughput">
+<span id="nodetool-getinterdcstreamthroughput"></span><h1>getinterdcstreamthroughput<a class="headerlink" href="#getinterdcstreamthroughput" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getinterdcstreamthroughput</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">Mb</span><span class="o">/</span><span class="n">s</span> <span class="n">throughput</span> <span class="n">cap</span> <span class="k">for</span>
+        <span class="n">inter</span><span class="o">-</span><span class="n">datacenter</span> <span class="n">streaming</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getinterdcstreamthroughput</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getlogginglevels.html b/src/doc/4.0-rc1/tools/nodetool/getlogginglevels.html
new file mode 100644
index 0000000..53db68a
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getlogginglevels.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getlogginglevels"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getlogginglevels">
+<span id="nodetool-getlogginglevels"></span><h1>getlogginglevels<a class="headerlink" href="#getlogginglevels" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getlogginglevels</span> <span class="o">-</span> <span class="n">Get</span> <span class="n">the</span> <span class="n">runtime</span> <span class="n">logging</span> <span class="n">levels</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getlogginglevels</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getmaxhintwindow.html b/src/doc/4.0-rc1/tools/nodetool/getmaxhintwindow.html
new file mode 100644
index 0000000..99e3429
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getmaxhintwindow.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getmaxhintwindow"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getmaxhintwindow">
+<span id="nodetool-getmaxhintwindow"></span><h1>getmaxhintwindow<a class="headerlink" href="#getmaxhintwindow" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getmaxhintwindow</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="nb">max</span> <span class="n">hint</span> <span class="n">window</span> <span class="ow">in</span> <span class="n">ms</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getmaxhintwindow</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getseeds.html b/src/doc/4.0-rc1/tools/nodetool/getseeds.html
new file mode 100644
index 0000000..5b3f56d
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getseeds.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getseeds"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getseeds">
+<span id="nodetool-getseeds"></span><h1>getseeds<a class="headerlink" href="#getseeds" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getseeds</span> <span class="o">-</span> <span class="n">Get</span> <span class="n">the</span> <span class="n">currently</span> <span class="ow">in</span> <span class="n">use</span> <span class="n">seed</span> <span class="n">node</span> <span class="n">IP</span> <span class="nb">list</span> <span class="n">excluding</span>
+        <span class="n">the</span> <span class="n">node</span> <span class="n">IP</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getseeds</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getsnapshotthrottle.html b/src/doc/4.0-rc1/tools/nodetool/getsnapshotthrottle.html
new file mode 100644
index 0000000..482775c
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getsnapshotthrottle.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getsnapshotthrottle"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getsnapshotthrottle">
+<span id="nodetool-getsnapshotthrottle"></span><h1>getsnapshotthrottle<a class="headerlink" href="#getsnapshotthrottle" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getsnapshotthrottle</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">snapshot_links_per_second</span>
+        <span class="n">throttle</span> <span class="k">for</span> <span class="n">snapshot</span><span class="o">/</span><span class="n">clearsnapshot</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getsnapshotthrottle</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getsstables.html b/src/doc/4.0-rc1/tools/nodetool/getsstables.html
new file mode 100644
index 0000000..0f34cea
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getsstables.html
@@ -0,0 +1,137 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getsstables"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getsstables">
+<span id="nodetool-getsstables"></span><h1>getsstables<a class="headerlink" href="#getsstables" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getsstables</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">sstable</span> <span class="n">filenames</span> <span class="n">that</span> <span class="n">own</span> <span class="n">the</span> <span class="n">key</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getsstables</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">hf</span> <span class="o">|</span> <span class="o">--</span><span class="nb">hex</span><span class="o">-</span><span class="nb">format</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">cfname</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">key</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">hf</span><span class="p">,</span> <span class="o">--</span><span class="nb">hex</span><span class="o">-</span><span class="nb">format</span>
+            <span class="n">Specify</span> <span class="n">the</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">hexadecimal</span> <span class="n">string</span> <span class="nb">format</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">cfname</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">key</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">the</span> <span class="n">column</span> <span class="n">family</span><span class="p">,</span> <span class="ow">and</span> <span class="n">the</span> <span class="n">key</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/getstreamthroughput.html b/src/doc/4.0-rc1/tools/nodetool/getstreamthroughput.html
new file mode 100644
index 0000000..f96540d
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/getstreamthroughput.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "getstreamthroughput"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="getstreamthroughput">
+<span id="nodetool-getstreamthroughput"></span><h1>getstreamthroughput<a class="headerlink" href="#getstreamthroughput" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">getstreamthroughput</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">Mb</span><span class="o">/</span><span class="n">s</span> <span class="n">throughput</span> <span class="n">cap</span> <span class="k">for</span>
+        <span class="n">streaming</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">getstreamthroughput</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/gettimeout.html b/src/doc/4.0-rc1/tools/nodetool/gettimeout.html
new file mode 100644
index 0000000..50bf8bb
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/gettimeout.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "gettimeout"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="gettimeout">
+<span id="nodetool-gettimeout"></span><h1>gettimeout<a class="headerlink" href="#gettimeout" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">gettimeout</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">timeout</span> <span class="n">of</span> <span class="n">the</span> <span class="n">given</span> <span class="nb">type</span> <span class="ow">in</span> <span class="n">ms</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">gettimeout</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">timeout_type</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">timeout_type</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">timeout</span> <span class="nb">type</span><span class="p">,</span> <span class="n">one</span> <span class="n">of</span> <span class="p">(</span><span class="n">read</span><span class="p">,</span> <span class="nb">range</span><span class="p">,</span> <span class="n">write</span><span class="p">,</span> <span class="n">counterwrite</span><span class="p">,</span>
+            <span class="n">cascontention</span><span class="p">,</span> <span class="n">truncate</span><span class="p">,</span> <span class="n">internodeconnect</span><span class="p">,</span> <span class="n">internodeuser</span><span class="p">,</span>
+            <span class="n">internodestreaminguser</span><span class="p">,</span> <span class="n">misc</span> <span class="p">(</span><span class="n">general</span> <span class="n">rpc_timeout_in_ms</span><span class="p">))</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/gettraceprobability.html b/src/doc/4.0-rc1/tools/nodetool/gettraceprobability.html
new file mode 100644
index 0000000..28a45e0
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/gettraceprobability.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "gettraceprobability"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="gettraceprobability">
+<span id="nodetool-gettraceprobability"></span><h1>gettraceprobability<a class="headerlink" href="#gettraceprobability" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">gettraceprobability</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">the</span> <span class="n">current</span> <span class="n">trace</span> <span class="n">probability</span> <span class="n">value</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">gettraceprobability</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/gossipinfo.html b/src/doc/4.0-rc1/tools/nodetool/gossipinfo.html
new file mode 100644
index 0000000..bbef3b4
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/gossipinfo.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "gossipinfo"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="gossipinfo">
+<span id="nodetool-gossipinfo"></span><h1>gossipinfo<a class="headerlink" href="#gossipinfo" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">gossipinfo</span> <span class="o">-</span> <span class="n">Shows</span> <span class="n">the</span> <span class="n">gossip</span> <span class="n">information</span> <span class="k">for</span> <span class="n">the</span> <span class="n">cluster</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">gossipinfo</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/help.html b/src/doc/4.0-rc1/tools/nodetool/help.html
new file mode 100644
index 0000000..dad32c0
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/help.html
@@ -0,0 +1,112 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "help"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="help">
+<span id="nodetool-help"></span><h1>help<a class="headerlink" href="#help" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">help</span> <span class="o">-</span> <span class="n">Display</span> <span class="n">help</span> <span class="n">information</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="n">help</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">command</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">command</span><span class="o">&gt;</span>
+
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/import.html b/src/doc/4.0-rc1/tools/nodetool/import.html
new file mode 100644
index 0000000..33c6aeb
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/import.html
@@ -0,0 +1,163 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "import"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="import">
+<span id="nodetool-import"></span><h1>import<a class="headerlink" href="#import" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="kn">import</span> <span class="o">-</span> <span class="n">Import</span> <span class="n">new</span> <span class="n">SSTables</span> <span class="n">to</span> <span class="n">the</span> <span class="n">system</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="kn">import</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">c</span> <span class="o">|</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">invalidate</span><span class="o">-</span><span class="n">caches</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">e</span> <span class="o">|</span> <span class="o">--</span><span class="n">extended</span><span class="o">-</span><span class="n">verify</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">l</span> <span class="o">|</span> <span class="o">--</span><span class="n">keep</span><span class="o">-</span><span class="n">level</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">|</span> <span class="o">--</span><span class="n">copy</span><span class="o">-</span><span class="n">data</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">q</span> <span class="o">|</span> <span class="o">--</span><span class="n">quick</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">r</span> <span class="o">|</span> <span class="o">--</span><span class="n">keep</span><span class="o">-</span><span class="n">repaired</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">t</span> <span class="o">|</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">tokens</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">v</span> <span class="o">|</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">verify</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">directory</span><span class="o">&gt;</span> <span class="o">...</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">c</span><span class="p">,</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">invalidate</span><span class="o">-</span><span class="n">caches</span>
+            <span class="n">Don</span><span class="s1">&#39;t invalidate the row cache when importing</span>
+
+        <span class="o">-</span><span class="n">e</span><span class="p">,</span> <span class="o">--</span><span class="n">extended</span><span class="o">-</span><span class="n">verify</span>
+            <span class="n">Run</span> <span class="n">an</span> <span class="n">extended</span> <span class="n">verify</span><span class="p">,</span> <span class="n">verifying</span> <span class="nb">all</span> <span class="n">values</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">new</span> <span class="n">sstables</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">l</span><span class="p">,</span> <span class="o">--</span><span class="n">keep</span><span class="o">-</span><span class="n">level</span>
+            <span class="n">Keep</span> <span class="n">the</span> <span class="n">level</span> <span class="n">on</span> <span class="n">the</span> <span class="n">new</span> <span class="n">sstables</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">p</span><span class="p">,</span> <span class="o">--</span><span class="n">copy</span><span class="o">-</span><span class="n">data</span>
+            <span class="n">Copy</span> <span class="n">data</span> <span class="kn">from</span> <span class="nn">source</span> <span class="n">directories</span> <span class="n">instead</span> <span class="n">of</span> <span class="n">moving</span> <span class="n">them</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">q</span><span class="p">,</span> <span class="o">--</span><span class="n">quick</span>
+            <span class="n">Do</span> <span class="n">a</span> <span class="n">quick</span> <span class="kn">import</span> <span class="nn">without</span> <span class="n">verifying</span> <span class="n">sstables</span><span class="p">,</span> <span class="n">clearing</span> <span class="n">row</span> <span class="n">cache</span> <span class="ow">or</span>
+            <span class="n">checking</span> <span class="ow">in</span> <span class="n">which</span> <span class="n">data</span> <span class="n">directory</span> <span class="n">to</span> <span class="n">put</span> <span class="n">the</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">r</span><span class="p">,</span> <span class="o">--</span><span class="n">keep</span><span class="o">-</span><span class="n">repaired</span>
+            <span class="n">Keep</span> <span class="nb">any</span> <span class="n">repaired</span> <span class="n">information</span> <span class="kn">from</span> <span class="nn">the</span> <span class="n">sstables</span>
+
+        <span class="o">-</span><span class="n">t</span><span class="p">,</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">tokens</span>
+            <span class="n">Don</span><span class="s1">&#39;t verify that all tokens in the new sstable are owned by the</span>
+            <span class="n">current</span> <span class="n">node</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">-</span><span class="n">v</span><span class="p">,</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">verify</span>
+            <span class="n">Don</span><span class="s1">&#39;t verify new sstables</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">directory</span><span class="o">&gt;</span> <span class="o">...</span>
+            <span class="n">The</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span> <span class="n">name</span> <span class="ow">and</span> <span class="n">directories</span> <span class="n">to</span> <span class="kn">import</span> <span class="nn">sstables</span> <span class="kn">from</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/info.html b/src/doc/4.0-rc1/tools/nodetool/info.html
new file mode 100644
index 0000000..790b353
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/info.html
@@ -0,0 +1,128 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "info"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="info">
+<span id="nodetool-info"></span><h1>info<a class="headerlink" href="#info" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">info</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">node</span> <span class="n">information</span> <span class="p">(</span><span class="n">uptime</span><span class="p">,</span> <span class="n">load</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">info</span> <span class="p">[(</span><span class="o">-</span><span class="n">T</span> <span class="o">|</span> <span class="o">--</span><span class="n">tokens</span><span class="p">)]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">T</span><span class="p">,</span> <span class="o">--</span><span class="n">tokens</span>
+            <span class="n">Display</span> <span class="nb">all</span> <span class="n">tokens</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/invalidatecountercache.html b/src/doc/4.0-rc1/tools/nodetool/invalidatecountercache.html
new file mode 100644
index 0000000..f812501
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/invalidatecountercache.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "invalidatecountercache"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="invalidatecountercache">
+<span id="nodetool-invalidatecountercache"></span><h1>invalidatecountercache<a class="headerlink" href="#invalidatecountercache" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">invalidatecountercache</span> <span class="o">-</span> <span class="n">Invalidate</span> <span class="n">the</span> <span class="n">counter</span> <span class="n">cache</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">invalidatecountercache</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/invalidatekeycache.html b/src/doc/4.0-rc1/tools/nodetool/invalidatekeycache.html
new file mode 100644
index 0000000..8bc19d7
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/invalidatekeycache.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "invalidatekeycache"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="invalidatekeycache">
+<span id="nodetool-invalidatekeycache"></span><h1>invalidatekeycache<a class="headerlink" href="#invalidatekeycache" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">invalidatekeycache</span> <span class="o">-</span> <span class="n">Invalidate</span> <span class="n">the</span> <span class="n">key</span> <span class="n">cache</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">invalidatekeycache</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/invalidaterowcache.html b/src/doc/4.0-rc1/tools/nodetool/invalidaterowcache.html
new file mode 100644
index 0000000..4237638
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/invalidaterowcache.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "invalidaterowcache"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="invalidaterowcache">
+<span id="nodetool-invalidaterowcache"></span><h1>invalidaterowcache<a class="headerlink" href="#invalidaterowcache" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">invalidaterowcache</span> <span class="o">-</span> <span class="n">Invalidate</span> <span class="n">the</span> <span class="n">row</span> <span class="n">cache</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">invalidaterowcache</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/join.html b/src/doc/4.0-rc1/tools/nodetool/join.html
new file mode 100644
index 0000000..12afb30
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/join.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "join"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="join">
+<span id="nodetool-join"></span><h1>join<a class="headerlink" href="#join" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">join</span> <span class="o">-</span> <span class="n">Join</span> <span class="n">the</span> <span class="n">ring</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">join</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/listsnapshots.html b/src/doc/4.0-rc1/tools/nodetool/listsnapshots.html
new file mode 100644
index 0000000..cd5d950
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/listsnapshots.html
@@ -0,0 +1,128 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "listsnapshots"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="listsnapshots">
+<span id="nodetool-listsnapshots"></span><h1>listsnapshots<a class="headerlink" href="#listsnapshots" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">listsnapshots</span> <span class="o">-</span> <span class="n">Lists</span> <span class="nb">all</span> <span class="n">the</span> <span class="n">snapshots</span> <span class="n">along</span> <span class="k">with</span> <span class="n">the</span> <span class="n">size</span> <span class="n">on</span>
+        <span class="n">disk</span> <span class="ow">and</span> <span class="n">true</span> <span class="n">size</span><span class="o">.</span> <span class="kc">True</span> <span class="n">size</span> <span class="ow">is</span> <span class="n">the</span> <span class="n">total</span> <span class="n">size</span> <span class="n">of</span> <span class="nb">all</span> <span class="n">SSTables</span> <span class="n">which</span>
+        <span class="n">are</span> <span class="ow">not</span> <span class="n">backed</span> <span class="n">up</span> <span class="n">to</span> <span class="n">disk</span><span class="o">.</span> <span class="n">Size</span> <span class="n">on</span> <span class="n">disk</span> <span class="ow">is</span> <span class="n">total</span> <span class="n">size</span> <span class="n">of</span> <span class="n">the</span> <span class="n">snapshot</span> <span class="n">on</span>
+        <span class="n">disk</span><span class="o">.</span> <span class="n">Total</span> <span class="n">TrueDiskSpaceUsed</span> <span class="n">does</span> <span class="ow">not</span> <span class="n">make</span> <span class="nb">any</span> <span class="n">SSTable</span> <span class="n">deduplication</span><span class="o">.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">listsnapshots</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/move.html b/src/doc/4.0-rc1/tools/nodetool/move.html
new file mode 100644
index 0000000..ca7e6cc
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/move.html
@@ -0,0 +1,133 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "move"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="move">
+<span id="nodetool-move"></span><h1>move<a class="headerlink" href="#move" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">move</span> <span class="o">-</span> <span class="n">Move</span> <span class="n">node</span> <span class="n">on</span> <span class="n">the</span> <span class="n">token</span> <span class="n">ring</span> <span class="n">to</span> <span class="n">a</span> <span class="n">new</span> <span class="n">token</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">move</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">new</span> <span class="n">token</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">new</span> <span class="n">token</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">new</span> <span class="n">token</span><span class="o">.</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/netstats.html b/src/doc/4.0-rc1/tools/nodetool/netstats.html
new file mode 100644
index 0000000..0b77ae4
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/netstats.html
@@ -0,0 +1,130 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "netstats"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="netstats">
+<span id="nodetool-netstats"></span><h1>netstats<a class="headerlink" href="#netstats" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">netstats</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">network</span> <span class="n">information</span> <span class="n">on</span> <span class="n">provided</span> <span class="n">host</span>
+        <span class="p">(</span><span class="n">connecting</span> <span class="n">node</span> <span class="n">by</span> <span class="n">default</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">netstats</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">H</span> <span class="o">|</span> <span class="o">--</span><span class="n">human</span><span class="o">-</span><span class="n">readable</span><span class="p">)]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">H</span><span class="p">,</span> <span class="o">--</span><span class="n">human</span><span class="o">-</span><span class="n">readable</span>
+            <span class="n">Display</span> <span class="nb">bytes</span> <span class="ow">in</span> <span class="n">human</span> <span class="n">readable</span> <span class="n">form</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">e</span><span class="o">.</span> <span class="n">KiB</span><span class="p">,</span> <span class="n">MiB</span><span class="p">,</span> <span class="n">GiB</span><span class="p">,</span> <span class="n">TiB</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/nodetool.html b/src/doc/4.0-rc1/tools/nodetool/nodetool.html
new file mode 100644
index 0000000..bc817d6
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/nodetool.html
@@ -0,0 +1,249 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-title: "Nodetool"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="Cassandra Tools" href="../index.html"/>
+      <link rel="next" title="SSTable Tools" href="../sstable/index.html"/>
+      <link rel="prev" title="generatetokens" href="../generatetokens.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../sstable/index.html">SSTable Tools</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="nodetool">
+<h1>Nodetool<a class="headerlink" href="#nodetool" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<dl class="docutils">
+<dt>usage: nodetool [(-u &lt;username&gt; | –username &lt;username&gt;)]</dt>
+<dd>[(-pw &lt;password&gt; | –password &lt;password&gt;)] [(-h &lt;host&gt; | –host &lt;host&gt;)]
+[(-pp | –print-port)] [(-p &lt;port&gt; | –port &lt;port&gt;)]
+[(-pwf &lt;passwordFilePath&gt; | –password-file &lt;passwordFilePath&gt;)] &lt;command&gt;
+[&lt;args&gt;]</dd>
+</dl>
+<p>The most commonly used nodetool commands are:</p>
+<blockquote>
+<div><p><a class="reference internal" href="assassinate.html"><span class="doc">assassinate</span></a> -                   Forcefully remove a dead node without re-replicating any data.  Use as a last resort if you cannot removenode</p>
+<p><a class="reference internal" href="bootstrap.html"><span class="doc">bootstrap</span></a> -                     Monitor/manage node’s bootstrap process</p>
+<p><a class="reference internal" href="cleanup.html"><span class="doc">cleanup</span></a> -                       Triggers the immediate cleanup of keys no longer belonging to a node. By default, clean all keyspaces</p>
+<p><a class="reference internal" href="clearsnapshot.html"><span class="doc">clearsnapshot</span></a> -                 Remove the snapshot with the given name from the given keyspaces</p>
+<p><a class="reference internal" href="clientstats.html"><span class="doc">clientstats</span></a> -                   Print information about connected clients</p>
+<p><a class="reference internal" href="compact.html"><span class="doc">compact</span></a> -                       Force a (major) compaction on one or more tables or user-defined compaction on given SSTables</p>
+<p><a class="reference internal" href="compactionhistory.html"><span class="doc">compactionhistory</span></a> -             Print history of compaction</p>
+<p><a class="reference internal" href="compactionstats.html"><span class="doc">compactionstats</span></a> -               Print statistics on compactions</p>
+<p><a class="reference internal" href="decommission.html"><span class="doc">decommission</span></a> -                  Decommission the <em>node I am connecting to</em></p>
+<p><a class="reference internal" href="describecluster.html"><span class="doc">describecluster</span></a> -               Print the name, snitch, partitioner and schema version of a cluster</p>
+<p><a class="reference internal" href="describering.html"><span class="doc">describering</span></a> -                  Shows the token ranges info of a given keyspace</p>
+<p><a class="reference internal" href="disableauditlog.html"><span class="doc">disableauditlog</span></a> -               Disable the audit log</p>
+<p><a class="reference internal" href="disableautocompaction.html"><span class="doc">disableautocompaction</span></a> -         Disable autocompaction for the given keyspace and table</p>
+<p><a class="reference internal" href="disablebackup.html"><span class="doc">disablebackup</span></a> -                 Disable incremental backup</p>
+<p><a class="reference internal" href="disablebinary.html"><span class="doc">disablebinary</span></a> -                 Disable native transport (binary protocol)</p>
+<p><a class="reference internal" href="disablefullquerylog.html"><span class="doc">disablefullquerylog</span></a> -           Disable the full query log</p>
+<p><a class="reference internal" href="disablegossip.html"><span class="doc">disablegossip</span></a> -                 Disable gossip (effectively marking the node down)</p>
+<p><a class="reference internal" href="disablehandoff.html"><span class="doc">disablehandoff</span></a> -                Disable storing hinted handoffs</p>
+<p><a class="reference internal" href="disablehintsfordc.html"><span class="doc">disablehintsfordc</span></a> -             Disable hints for a data center</p>
+<p><a class="reference internal" href="disableoldprotocolversions.html"><span class="doc">disableoldprotocolversions</span></a> -    Disable old protocol versions</p>
+<p><a class="reference internal" href="drain.html"><span class="doc">drain</span></a> -                         Drain the node (stop accepting writes and flush all tables)</p>
+<p><a class="reference internal" href="enableauditlog.html"><span class="doc">enableauditlog</span></a> -                Enable the audit log</p>
+<p><a class="reference internal" href="enableautocompaction.html"><span class="doc">enableautocompaction</span></a> -          Enable autocompaction for the given keyspace and table</p>
+<p><a class="reference internal" href="enablebackup.html"><span class="doc">enablebackup</span></a> -                  Enable incremental backup</p>
+<p><a class="reference internal" href="enablebinary.html"><span class="doc">enablebinary</span></a> -                  Reenable native transport (binary protocol)</p>
+<p><a class="reference internal" href="enablefullquerylog.html"><span class="doc">enablefullquerylog</span></a> -            Enable full query logging, defaults for the options are configured in cassandra.yaml</p>
+<p><a class="reference internal" href="enablegossip.html"><span class="doc">enablegossip</span></a> -                  Reenable gossip</p>
+<p><a class="reference internal" href="enablehandoff.html"><span class="doc">enablehandoff</span></a> -                 Reenable future hints storing on the current node</p>
+<p><a class="reference internal" href="enablehintsfordc.html"><span class="doc">enablehintsfordc</span></a> -              Enable hints for a data center that was previsouly disabled</p>
+<p><a class="reference internal" href="enableoldprotocolversions.html"><span class="doc">enableoldprotocolversions</span></a> -     Enable old protocol versions</p>
+<p><a class="reference internal" href="failuredetector.html"><span class="doc">failuredetector</span></a> -               Shows the failure detector information for the cluster</p>
+<p><a class="reference internal" href="flush.html"><span class="doc">flush</span></a> -                         Flush one or more tables</p>
+<p><a class="reference internal" href="garbagecollect.html"><span class="doc">garbagecollect</span></a> -                Remove deleted data from one or more tables</p>
+<p><a class="reference internal" href="gcstats.html"><span class="doc">gcstats</span></a> -                       Print GC Statistics</p>
+<p><a class="reference internal" href="getbatchlogreplaythrottle.html"><span class="doc">getbatchlogreplaythrottle</span></a> -     Print batchlog replay throttle in KB/s. This is reduced proportionally to the number of nodes in the cluster.</p>
+<p><a class="reference internal" href="getcompactionthreshold.html"><span class="doc">getcompactionthreshold</span></a> -        Print min and max compaction thresholds for a given table</p>
+<p><a class="reference internal" href="getcompactionthroughput.html"><span class="doc">getcompactionthroughput</span></a> -       Print the MB/s throughput cap for compaction in the system</p>
+<p><a class="reference internal" href="getconcurrency.html"><span class="doc">getconcurrency</span></a> -                Get maximum concurrency for processing stages</p>
+<p><a class="reference internal" href="getconcurrentcompactors.html"><span class="doc">getconcurrentcompactors</span></a> -       Get the number of concurrent compactors in the system.</p>
+<p><a class="reference internal" href="getconcurrentviewbuilders.html"><span class="doc">getconcurrentviewbuilders</span></a> -     Get the number of concurrent view builders in the system</p>
+<p><a class="reference internal" href="getendpoints.html"><span class="doc">getendpoints</span></a> -                  Print the end points that owns the key</p>
+<p><a class="reference internal" href="getfullquerylog.html"><span class="doc">getfullquerylog</span></a> -
+<span class="xref std std-doc">print</span> -  configuration of fql if enabled, otherwise the configuration reflected in cassandra.yaml</p>
+<p><a class="reference internal" href="getinterdcstreamthroughput.html"><span class="doc">getinterdcstreamthroughput</span></a> -    Print the Mb/s throughput cap for inter-datacenter streaming in the system</p>
+<p><a class="reference internal" href="getlogginglevels.html"><span class="doc">getlogginglevels</span></a> -              Get the runtime logging levels</p>
+<p><a class="reference internal" href="getmaxhintwindow.html"><span class="doc">getmaxhintwindow</span></a> -              Print the max hint window in ms</p>
+<p><a class="reference internal" href="getseeds.html"><span class="doc">getseeds</span></a> -                      Get the currently in use seed node IP list excluding the node IP</p>
+<p><a class="reference internal" href="getsnapshotthrottle.html"><span class="doc">getsnapshotthrottle</span></a> -           Print the snapshot_links_per_second throttle for snapshot/clearsnapshot</p>
+<p><a class="reference internal" href="getsstables.html"><span class="doc">getsstables</span></a> -                   Print the sstable filenames that own the key</p>
+<p><a class="reference internal" href="getstreamthroughput.html"><span class="doc">getstreamthroughput</span></a> -           Print the Mb/s throughput cap for streaming in the system</p>
+<p><a class="reference internal" href="gettimeout.html"><span class="doc">gettimeout</span></a> -                    Print the timeout of the given type in ms</p>
+<p><a class="reference internal" href="gettraceprobability.html"><span class="doc">gettraceprobability</span></a> -           Print the current trace probability value</p>
+<p><a class="reference internal" href="gossipinfo.html"><span class="doc">gossipinfo</span></a> -                    Shows the gossip information for the cluster</p>
+<p><a class="reference internal" href="help.html"><span class="doc">help</span></a> -                          Display help information</p>
+<p><a class="reference internal" href="import.html"><span class="doc">import</span></a> -                        Import new SSTables to the system</p>
+<p><a class="reference internal" href="info.html"><span class="doc">info</span></a> -                          Print node information (uptime, load, …)</p>
+<p><a class="reference internal" href="invalidatecountercache.html"><span class="doc">invalidatecountercache</span></a> -        Invalidate the counter cache</p>
+<p><a class="reference internal" href="invalidatekeycache.html"><span class="doc">invalidatekeycache</span></a> -            Invalidate the key cache</p>
+<p><a class="reference internal" href="invalidaterowcache.html"><span class="doc">invalidaterowcache</span></a> -            Invalidate the row cache</p>
+<p><a class="reference internal" href="join.html"><span class="doc">join</span></a> -                          Join the ring</p>
+<p><a class="reference internal" href="listsnapshots.html"><span class="doc">listsnapshots</span></a> -                 Lists all the snapshots along with the size on disk and true size. True size is the total size of all SSTables which are not backed up to disk. Size on disk is total size of the snapshot on disk. Total TrueDiskSpaceUsed does not make any SSTable deduplication.</p>
+<p><a class="reference internal" href="move.html"><span class="doc">move</span></a> -                          Move node on the token ring to a new token</p>
+<p><a class="reference internal" href="netstats.html"><span class="doc">netstats</span></a> -                      Print network information on provided host (connecting node by default)</p>
+<p><a class="reference internal" href="pausehandoff.html"><span class="doc">pausehandoff</span></a> -                  Pause hints delivery process</p>
+<p><a class="reference internal" href="profileload.html"><span class="doc">profileload</span></a> -                   Low footprint profiling of activity for a period of time</p>
+<p><a class="reference internal" href="proxyhistograms.html"><span class="doc">proxyhistograms</span></a> -               Print statistic histograms for network operations</p>
+<p><a class="reference internal" href="rangekeysample.html"><span class="doc">rangekeysample</span></a> -                Shows the sampled keys held across all keyspaces</p>
+<p><a class="reference internal" href="rebuild.html"><span class="doc">rebuild</span></a> -                       Rebuild data by streaming from other nodes (similarly to bootstrap)</p>
+<p><a class="reference internal" href="rebuild_index.html"><span class="doc">rebuild_index</span></a> -                 A full rebuild of native secondary indexes for a given table</p>
+<p><a class="reference internal" href="refresh.html"><span class="doc">refresh</span></a> -                       Load newly placed SSTables to the system without restart</p>
+<p><a class="reference internal" href="refreshsizeestimates.html"><span class="doc">refreshsizeestimates</span></a> -          Refresh system.size_estimates</p>
+<p><a class="reference internal" href="reloadlocalschema.html"><span class="doc">reloadlocalschema</span></a> -             Reload local node schema from system tables</p>
+<p><a class="reference internal" href="reloadseeds.html"><span class="doc">reloadseeds</span></a> -                   Reload the seed node list from the seed node provider</p>
+<p><a class="reference internal" href="reloadssl.html"><span class="doc">reloadssl</span></a> -                     Signals Cassandra to reload SSL certificates</p>
+<p><a class="reference internal" href="reloadtriggers.html"><span class="doc">reloadtriggers</span></a> -                Reload trigger classes</p>
+<p><a class="reference internal" href="relocatesstables.html"><span class="doc">relocatesstables</span></a> -              Relocates sstables to the correct disk</p>
+<p><a class="reference internal" href="removenode.html"><span class="doc">removenode</span></a> -                    Show status of current node removal, force completion of pending removal or remove provided ID</p>
+<p><a class="reference internal" href="repair.html"><span class="doc">repair</span></a> -                        Repair one or more tables</p>
+<p><a class="reference internal" href="repair_admin.html"><span class="doc">repair_admin</span></a> -
+<span class="xref std std-doc">list</span> -  and fail incremental repair sessions</p>
+<p><a class="reference internal" href="replaybatchlog.html"><span class="doc">replaybatchlog</span></a> -                Kick off batchlog replay and wait for finish</p>
+<p><a class="reference internal" href="resetfullquerylog.html"><span class="doc">resetfullquerylog</span></a> -             Stop the full query log and clean files in the configured full query log directory from cassandra.yaml as well as JMX</p>
+<p><a class="reference internal" href="resetlocalschema.html"><span class="doc">resetlocalschema</span></a> -              Reset node’s local schema and resync</p>
+<p><a class="reference internal" href="resumehandoff.html"><span class="doc">resumehandoff</span></a> -                 Resume hints delivery process</p>
+<p><a class="reference internal" href="ring.html"><span class="doc">ring</span></a> -                          Print information about the token ring</p>
+<p><a class="reference internal" href="scrub.html"><span class="doc">scrub</span></a> -                         Scrub (rebuild sstables for) one or more tables</p>
+<p><a class="reference internal" href="setbatchlogreplaythrottle.html"><span class="doc">setbatchlogreplaythrottle</span></a> -     Set batchlog replay throttle in KB per second, or 0 to disable throttling. This will be reduced proportionally to the number of nodes in the cluster.</p>
+<p><a class="reference internal" href="setcachecapacity.html"><span class="doc">setcachecapacity</span></a> -              Set global key, row, and counter cache capacities (in MB units)</p>
+<p><a class="reference internal" href="setcachekeystosave.html"><span class="doc">setcachekeystosave</span></a> -            Set number of keys saved by each cache for faster post-restart warmup. 0 to disable</p>
+<p><a class="reference internal" href="setcompactionthreshold.html"><span class="doc">setcompactionthreshold</span></a> -        Set min and max compaction thresholds for a given table</p>
+<p><a class="reference internal" href="setcompactionthroughput.html"><span class="doc">setcompactionthroughput</span></a> -       Set the MB/s throughput cap for compaction in the system, or 0 to disable throttling</p>
+<p><a class="reference internal" href="setconcurrency.html"><span class="doc">setconcurrency</span></a> -                Set maximum concurrency for processing stage</p>
+<p><a class="reference internal" href="setconcurrentcompactors.html"><span class="doc">setconcurrentcompactors</span></a> -       Set number of concurrent compactors in the system.</p>
+<p><a class="reference internal" href="setconcurrentviewbuilders.html"><span class="doc">setconcurrentviewbuilders</span></a> -     Set the number of concurrent view builders in the system</p>
+<p><a class="reference internal" href="sethintedhandoffthrottlekb.html"><span class="doc">sethintedhandoffthrottlekb</span></a> -    Set hinted handoff throttle in kb per second, per delivery thread.</p>
+<p><a class="reference internal" href="setinterdcstreamthroughput.html"><span class="doc">setinterdcstreamthroughput</span></a> -    Set the Mb/s throughput cap for inter-datacenter streaming in the system, or 0 to disable throttling</p>
+<p><a class="reference internal" href="setlogginglevel.html"><span class="doc">setlogginglevel</span></a> -               Set the log level threshold for a given component or class. Will reset to the initial configuration if called with no parameters.</p>
+<p><a class="reference internal" href="setmaxhintwindow.html"><span class="doc">setmaxhintwindow</span></a> -              Set the specified max hint window in ms</p>
+<p><a class="reference internal" href="setsnapshotthrottle.html"><span class="doc">setsnapshotthrottle</span></a> -           Set the snapshot_links_per_second cap for snapshot and clearsnapshot throttling</p>
+<p><a class="reference internal" href="setstreamthroughput.html"><span class="doc">setstreamthroughput</span></a> -           Set the Mb/s throughput cap for streaming in the system, or 0 to disable throttling</p>
+<p><a class="reference internal" href="settimeout.html"><span class="doc">settimeout</span></a> -                    Set the specified timeout in ms, or 0 to disable timeout</p>
+<p><a class="reference internal" href="settraceprobability.html"><span class="doc">settraceprobability</span></a> -           Sets the probability for tracing any given request to value. 0 disables, 1 enables for all requests, 0 is the default</p>
+<p><a class="reference internal" href="sjk.html"><span class="doc">sjk</span></a> -                           Run commands of ‘Swiss Java Knife’. Run ‘nodetool sjk –help’ for more information.</p>
+<p><a class="reference internal" href="snapshot.html"><span class="doc">snapshot</span></a> -                      Take a snapshot of specified keyspaces or a snapshot of the specified table</p>
+<p><a class="reference internal" href="status.html"><span class="doc">status</span></a> -                        Print cluster information (state, load, IDs, …)</p>
+<p><a class="reference internal" href="statusautocompaction.html"><span class="doc">statusautocompaction</span></a> -
+<a class="reference internal" href="status.html"><span class="doc">status</span></a> -  of autocompaction of the given keyspace and table</p>
+<p><a class="reference internal" href="statusbackup.html"><span class="doc">statusbackup</span></a> -                  Status of incremental backup</p>
+<p><a class="reference internal" href="statusbinary.html"><span class="doc">statusbinary</span></a> -                  Status of native transport (binary protocol)</p>
+<p><a class="reference internal" href="statusgossip.html"><span class="doc">statusgossip</span></a> -                  Status of gossip</p>
+<p><a class="reference internal" href="statushandoff.html"><span class="doc">statushandoff</span></a> -                 Status of storing future hints on the current node</p>
+<p><a class="reference internal" href="stop.html"><span class="doc">stop</span></a> -                          Stop compaction</p>
+<p><a class="reference internal" href="stopdaemon.html"><span class="doc">stopdaemon</span></a> -                    Stop cassandra daemon</p>
+<p><a class="reference internal" href="tablehistograms.html"><span class="doc">tablehistograms</span></a> -               Print statistic histograms for a given table</p>
+<p><a class="reference internal" href="tablestats.html"><span class="doc">tablestats</span></a> -                    Print statistics on tables</p>
+<p><a class="reference internal" href="toppartitions.html"><span class="doc">toppartitions</span></a> -                 Sample and print the most active partitions</p>
+<p><a class="reference internal" href="tpstats.html"><span class="doc">tpstats</span></a> -                       Print usage statistics of thread pools</p>
+<p><a class="reference internal" href="truncatehints.html"><span class="doc">truncatehints</span></a> -                 Truncate all hints on the local node, or truncate hints for the endpoint(s) specified.</p>
+<p><a class="reference internal" href="upgradesstables.html"><span class="doc">upgradesstables</span></a> -               Rewrite sstables (for the requested tables) that are not on the current version (thus upgrading them to said current version)</p>
+<p><a class="reference internal" href="verify.html"><span class="doc">verify</span></a> -                        Verify (check data checksum for) one or more tables</p>
+<p><a class="reference internal" href="version.html"><span class="doc">version</span></a> -                       Print cassandra version</p>
+<p><a class="reference internal" href="viewbuildstatus.html"><span class="doc">viewbuildstatus</span></a> -               Show progress of a materialized view build</p>
+</div></blockquote>
+<p>See ‘nodetool help &lt;command&gt;’ for more information on a specific command.</p>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../sstable/index.html" class="btn btn-default pull-right " role="button" title="SSTable Tools" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../generatetokens.html" class="btn btn-default" role="button" title="generatetokens" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/pausehandoff.html b/src/doc/4.0-rc1/tools/nodetool/pausehandoff.html
new file mode 100644
index 0000000..c828aaf
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/pausehandoff.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "pausehandoff"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="pausehandoff">
+<span id="nodetool-pausehandoff"></span><h1>pausehandoff<a class="headerlink" href="#pausehandoff" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">pausehandoff</span> <span class="o">-</span> <span class="n">Pause</span> <span class="n">hints</span> <span class="n">delivery</span> <span class="n">process</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">pausehandoff</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/profileload.html b/src/doc/4.0-rc1/tools/nodetool/profileload.html
new file mode 100644
index 0000000..b8c0488
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/profileload.html
@@ -0,0 +1,144 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "profileload"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="profileload">
+<span id="nodetool-profileload"></span><h1>profileload<a class="headerlink" href="#profileload" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">profileload</span> <span class="o">-</span> <span class="n">Low</span> <span class="n">footprint</span> <span class="n">profiling</span> <span class="n">of</span> <span class="n">activity</span> <span class="k">for</span> <span class="n">a</span> <span class="n">period</span>
+        <span class="n">of</span> <span class="n">time</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">profileload</span> <span class="p">[</span><span class="o">-</span><span class="n">a</span> <span class="o">&lt;</span><span class="n">samplers</span><span class="o">&gt;</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">-</span><span class="n">k</span> <span class="o">&lt;</span><span class="n">topCount</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">capacity</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">cfname</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">duration</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">a</span> <span class="o">&lt;</span><span class="n">samplers</span><span class="o">&gt;</span>
+            <span class="n">Comma</span> <span class="n">separated</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">samplers</span> <span class="n">to</span> <span class="n">use</span> <span class="p">(</span><span class="n">Default</span><span class="p">:</span> <span class="nb">all</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">k</span> <span class="o">&lt;</span><span class="n">topCount</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">the</span> <span class="n">top</span> <span class="n">samples</span> <span class="n">to</span> <span class="nb">list</span> <span class="p">(</span><span class="n">Default</span><span class="p">:</span> <span class="mi">10</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">capacity</span><span class="o">&gt;</span>
+            <span class="n">Capacity</span> <span class="n">of</span> <span class="n">the</span> <span class="n">sampler</span><span class="p">,</span> <span class="n">higher</span> <span class="k">for</span> <span class="n">more</span> <span class="n">accuracy</span> <span class="p">(</span><span class="n">Default</span><span class="p">:</span> <span class="mi">256</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">cfname</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">duration</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">column</span> <span class="n">family</span> <span class="n">name</span><span class="p">,</span> <span class="ow">and</span> <span class="n">duration</span> <span class="ow">in</span> <span class="n">milliseconds</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/proxyhistograms.html b/src/doc/4.0-rc1/tools/nodetool/proxyhistograms.html
new file mode 100644
index 0000000..6e9595f
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/proxyhistograms.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "proxyhistograms"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="proxyhistograms">
+<span id="nodetool-proxyhistograms"></span><h1>proxyhistograms<a class="headerlink" href="#proxyhistograms" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">proxyhistograms</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">statistic</span> <span class="n">histograms</span> <span class="k">for</span> <span class="n">network</span>
+        <span class="n">operations</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">proxyhistograms</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/rangekeysample.html b/src/doc/4.0-rc1/tools/nodetool/rangekeysample.html
new file mode 100644
index 0000000..2692e97
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/rangekeysample.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "rangekeysample"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="rangekeysample">
+<span id="nodetool-rangekeysample"></span><h1>rangekeysample<a class="headerlink" href="#rangekeysample" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">rangekeysample</span> <span class="o">-</span> <span class="n">Shows</span> <span class="n">the</span> <span class="n">sampled</span> <span class="n">keys</span> <span class="n">held</span> <span class="n">across</span> <span class="nb">all</span>
+        <span class="n">keyspaces</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">rangekeysample</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/rebuild.html b/src/doc/4.0-rc1/tools/nodetool/rebuild.html
new file mode 100644
index 0000000..6133192
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/rebuild.html
@@ -0,0 +1,150 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "rebuild"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="rebuild">
+<span id="nodetool-rebuild"></span><h1>rebuild<a class="headerlink" href="#rebuild" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">rebuild</span> <span class="o">-</span> <span class="n">Rebuild</span> <span class="n">data</span> <span class="n">by</span> <span class="n">streaming</span> <span class="kn">from</span> <span class="nn">other</span> <span class="n">nodes</span> <span class="p">(</span><span class="n">similarly</span>
+        <span class="n">to</span> <span class="n">bootstrap</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">rebuild</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">ks</span> <span class="o">&lt;</span><span class="n">specific_keyspace</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">keyspace</span> <span class="o">&lt;</span><span class="n">specific_keyspace</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">specific_sources</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">sources</span> <span class="o">&lt;</span><span class="n">specific_sources</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">ts</span> <span class="o">&lt;</span><span class="n">specific_tokens</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">tokens</span> <span class="o">&lt;</span><span class="n">specific_tokens</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">src</span><span class="o">-</span><span class="n">dc</span><span class="o">-</span><span class="n">name</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">ks</span> <span class="o">&lt;</span><span class="n">specific_keyspace</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">keyspace</span> <span class="o">&lt;</span><span class="n">specific_keyspace</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">ks</span> <span class="n">to</span> <span class="n">rebuild</span> <span class="n">specific</span> <span class="n">keyspace</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">specific_sources</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">sources</span> <span class="o">&lt;</span><span class="n">specific_sources</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">s</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">hosts</span> <span class="n">that</span> <span class="n">this</span> <span class="n">node</span> <span class="n">should</span> <span class="n">stream</span> <span class="kn">from</span> <span class="nn">when</span> <span class="o">-</span><span class="n">ts</span>
+            <span class="ow">is</span> <span class="n">used</span><span class="o">.</span> <span class="n">Multiple</span> <span class="n">hosts</span> <span class="n">should</span> <span class="n">be</span> <span class="n">separated</span> <span class="n">using</span> <span class="n">commas</span> <span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">g</span><span class="o">.</span>
+            <span class="mf">127.0</span><span class="o">.</span><span class="mf">0.1</span><span class="p">,</span><span class="mf">127.0</span><span class="o">.</span><span class="mf">0.2</span><span class="p">,</span><span class="o">...</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">ts</span> <span class="o">&lt;</span><span class="n">specific_tokens</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">tokens</span> <span class="o">&lt;</span><span class="n">specific_tokens</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">ts</span> <span class="n">to</span> <span class="n">rebuild</span> <span class="n">specific</span> <span class="n">token</span> <span class="n">ranges</span><span class="p">,</span> <span class="ow">in</span> <span class="n">the</span> <span class="nb">format</span> <span class="n">of</span> <span class="s2">&quot;(start_token_1,end_token_1],(start_token_2,end_token_2],...(start_token_n,end_token_n]&quot;</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">src</span><span class="o">-</span><span class="n">dc</span><span class="o">-</span><span class="n">name</span><span class="o">&gt;</span>
+            <span class="n">Name</span> <span class="n">of</span> <span class="n">DC</span> <span class="kn">from</span> <span class="nn">which</span> <span class="n">to</span> <span class="n">select</span> <span class="n">sources</span> <span class="k">for</span> <span class="n">streaming</span><span class="o">.</span> <span class="n">By</span> <span class="n">default</span><span class="p">,</span>
+            <span class="n">pick</span> <span class="nb">any</span> <span class="n">DC</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/rebuild_index.html b/src/doc/4.0-rc1/tools/nodetool/rebuild_index.html
new file mode 100644
index 0000000..4f73da0
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/rebuild_index.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "rebuild_index"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="rebuild-index">
+<span id="nodetool-rebuild-index"></span><h1>rebuild_index<a class="headerlink" href="#rebuild-index" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">rebuild_index</span> <span class="o">-</span> <span class="n">A</span> <span class="n">full</span> <span class="n">rebuild</span> <span class="n">of</span> <span class="n">native</span> <span class="n">secondary</span> <span class="n">indexes</span> <span class="k">for</span>
+        <span class="n">a</span> <span class="n">given</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">rebuild_index</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">indexName</span><span class="o">...&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">indexName</span><span class="o">...&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">table</span> <span class="n">name</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">a</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">index</span> <span class="n">names</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/refresh.html b/src/doc/4.0-rc1/tools/nodetool/refresh.html
new file mode 100644
index 0000000..c231e05
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/refresh.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "refresh"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="refresh">
+<span id="nodetool-refresh"></span><h1>refresh<a class="headerlink" href="#refresh" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">refresh</span> <span class="o">-</span> <span class="n">Load</span> <span class="n">newly</span> <span class="n">placed</span> <span class="n">SSTables</span> <span class="n">to</span> <span class="n">the</span> <span class="n">system</span> <span class="n">without</span>
+        <span class="n">restart</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">refresh</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">table</span> <span class="n">name</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/refreshsizeestimates.html b/src/doc/4.0-rc1/tools/nodetool/refreshsizeestimates.html
new file mode 100644
index 0000000..b05c563
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/refreshsizeestimates.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "refreshsizeestimates"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="refreshsizeestimates">
+<span id="nodetool-refreshsizeestimates"></span><h1>refreshsizeestimates<a class="headerlink" href="#refreshsizeestimates" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">refreshsizeestimates</span> <span class="o">-</span> <span class="n">Refresh</span> <span class="n">system</span><span class="o">.</span><span class="n">size_estimates</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">refreshsizeestimates</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/reloadlocalschema.html b/src/doc/4.0-rc1/tools/nodetool/reloadlocalschema.html
new file mode 100644
index 0000000..5f0d9bf
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/reloadlocalschema.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "reloadlocalschema"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="reloadlocalschema">
+<span id="nodetool-reloadlocalschema"></span><h1>reloadlocalschema<a class="headerlink" href="#reloadlocalschema" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">reloadlocalschema</span> <span class="o">-</span> <span class="n">Reload</span> <span class="n">local</span> <span class="n">node</span> <span class="n">schema</span> <span class="kn">from</span> <span class="nn">system</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">reloadlocalschema</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/reloadseeds.html b/src/doc/4.0-rc1/tools/nodetool/reloadseeds.html
new file mode 100644
index 0000000..1a2840d
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/reloadseeds.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "reloadseeds"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="reloadseeds">
+<span id="nodetool-reloadseeds"></span><h1>reloadseeds<a class="headerlink" href="#reloadseeds" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">reloadseeds</span> <span class="o">-</span> <span class="n">Reload</span> <span class="n">the</span> <span class="n">seed</span> <span class="n">node</span> <span class="nb">list</span> <span class="kn">from</span> <span class="nn">the</span> <span class="n">seed</span> <span class="n">node</span>
+        <span class="n">provider</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">reloadseeds</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/reloadssl.html b/src/doc/4.0-rc1/tools/nodetool/reloadssl.html
new file mode 100644
index 0000000..7defaf8
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/reloadssl.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "reloadssl"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="reloadssl">
+<span id="nodetool-reloadssl"></span><h1>reloadssl<a class="headerlink" href="#reloadssl" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">reloadssl</span> <span class="o">-</span> <span class="n">Signals</span> <span class="n">Cassandra</span> <span class="n">to</span> <span class="n">reload</span> <span class="n">SSL</span> <span class="n">certificates</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">reloadssl</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/reloadtriggers.html b/src/doc/4.0-rc1/tools/nodetool/reloadtriggers.html
new file mode 100644
index 0000000..8fcdfab
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/reloadtriggers.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "reloadtriggers"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="reloadtriggers">
+<span id="nodetool-reloadtriggers"></span><h1>reloadtriggers<a class="headerlink" href="#reloadtriggers" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">reloadtriggers</span> <span class="o">-</span> <span class="n">Reload</span> <span class="n">trigger</span> <span class="n">classes</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">reloadtriggers</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/relocatesstables.html b/src/doc/4.0-rc1/tools/nodetool/relocatesstables.html
new file mode 100644
index 0000000..0df1c92
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/relocatesstables.html
@@ -0,0 +1,138 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "relocatesstables"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="relocatesstables">
+<span id="nodetool-relocatesstables"></span><h1>relocatesstables<a class="headerlink" href="#relocatesstables" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">relocatesstables</span> <span class="o">-</span> <span class="n">Relocates</span> <span class="n">sstables</span> <span class="n">to</span> <span class="n">the</span> <span class="n">correct</span> <span class="n">disk</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">relocatesstables</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">sstables</span> <span class="n">to</span> <span class="n">relocate</span> <span class="n">simultanously</span><span class="p">,</span> <span class="nb">set</span> <span class="n">to</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">use</span> <span class="nb">all</span>
+            <span class="n">available</span> <span class="n">compaction</span> <span class="n">threads</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">table</span> <span class="n">name</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/removenode.html b/src/doc/4.0-rc1/tools/nodetool/removenode.html
new file mode 100644
index 0000000..1129107
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/removenode.html
@@ -0,0 +1,136 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "removenode"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="removenode">
+<span id="nodetool-removenode"></span><h1>removenode<a class="headerlink" href="#removenode" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">removenode</span> <span class="o">-</span> <span class="n">Show</span> <span class="n">status</span> <span class="n">of</span> <span class="n">current</span> <span class="n">node</span> <span class="n">removal</span><span class="p">,</span> <span class="n">force</span>
+        <span class="n">completion</span> <span class="n">of</span> <span class="n">pending</span> <span class="n">removal</span> <span class="ow">or</span> <span class="n">remove</span> <span class="n">provided</span> <span class="n">ID</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">removenode</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">status</span><span class="o">&gt;|&lt;</span><span class="n">force</span><span class="o">&gt;|&lt;</span><span class="n">ID</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">status</span><span class="o">&gt;|&lt;</span><span class="n">force</span><span class="o">&gt;|&lt;</span><span class="n">ID</span><span class="o">&gt;</span>
+            <span class="n">Show</span> <span class="n">status</span> <span class="n">of</span> <span class="n">current</span> <span class="n">node</span> <span class="n">removal</span><span class="p">,</span> <span class="n">force</span> <span class="n">completion</span> <span class="n">of</span> <span class="n">pending</span>
+            <span class="n">removal</span><span class="p">,</span> <span class="ow">or</span> <span class="n">remove</span> <span class="n">provided</span> <span class="n">ID</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/repair.html b/src/doc/4.0-rc1/tools/nodetool/repair.html
new file mode 100644
index 0000000..a109e2f
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/repair.html
@@ -0,0 +1,204 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "repair"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="repair">
+<span id="nodetool-repair"></span><h1>repair<a class="headerlink" href="#repair" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">repair</span> <span class="o">-</span> <span class="n">Repair</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">more</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">repair</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">dc</span> <span class="o">&lt;</span><span class="n">specific_dc</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="ow">in</span><span class="o">-</span><span class="n">dc</span> <span class="o">&lt;</span><span class="n">specific_dc</span><span class="o">&gt;</span><span class="p">)</span><span class="o">...</span><span class="p">]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">dcpar</span> <span class="o">|</span> <span class="o">--</span><span class="n">dc</span><span class="o">-</span><span class="n">parallel</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">et</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">force</span> <span class="o">|</span> <span class="o">--</span><span class="n">force</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">full</span> <span class="o">|</span> <span class="o">--</span><span class="n">full</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">hosts</span> <span class="o">&lt;</span><span class="n">specific_host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="ow">in</span><span class="o">-</span><span class="n">hosts</span> <span class="o">&lt;</span><span class="n">specific_host</span><span class="o">&gt;</span><span class="p">)</span><span class="o">...</span><span class="p">]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">iuk</span> <span class="o">|</span> <span class="o">--</span><span class="n">ignore</span><span class="o">-</span><span class="n">unreplicated</span><span class="o">-</span><span class="n">keyspaces</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">job_threads</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">job</span><span class="o">-</span><span class="n">threads</span> <span class="o">&lt;</span><span class="n">job_threads</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">local</span> <span class="o">|</span> <span class="o">--</span><span class="ow">in</span><span class="o">-</span><span class="n">local</span><span class="o">-</span><span class="n">dc</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">os</span> <span class="o">|</span> <span class="o">--</span><span class="n">optimise</span><span class="o">-</span><span class="n">streams</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pl</span> <span class="o">|</span> <span class="o">--</span><span class="n">pull</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pr</span> <span class="o">|</span> <span class="o">--</span><span class="n">partitioner</span><span class="o">-</span><span class="nb">range</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">prv</span> <span class="o">|</span> <span class="o">--</span><span class="n">preview</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">seq</span> <span class="o">|</span> <span class="o">--</span><span class="n">sequential</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">st</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">tr</span> <span class="o">|</span> <span class="o">--</span><span class="n">trace</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">vd</span> <span class="o">|</span> <span class="o">--</span><span class="n">validate</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">dc</span> <span class="o">&lt;</span><span class="n">specific_dc</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="ow">in</span><span class="o">-</span><span class="n">dc</span> <span class="o">&lt;</span><span class="n">specific_dc</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">dc</span> <span class="n">to</span> <span class="n">repair</span> <span class="n">specific</span> <span class="n">datacenters</span>
+
+        <span class="o">-</span><span class="n">dcpar</span><span class="p">,</span> <span class="o">--</span><span class="n">dc</span><span class="o">-</span><span class="n">parallel</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">dcpar</span> <span class="n">to</span> <span class="n">repair</span> <span class="n">data</span> <span class="n">centers</span> <span class="ow">in</span> <span class="n">parallel</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">et</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">et</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">repair</span> <span class="nb">range</span> <span class="n">ends</span> <span class="p">(</span><span class="n">inclusive</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">force</span><span class="p">,</span> <span class="o">--</span><span class="n">force</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">force</span> <span class="n">to</span> <span class="nb">filter</span> <span class="n">out</span> <span class="n">down</span> <span class="n">endpoints</span>
+
+        <span class="o">-</span><span class="n">full</span><span class="p">,</span> <span class="o">--</span><span class="n">full</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">full</span> <span class="n">to</span> <span class="n">issue</span> <span class="n">a</span> <span class="n">full</span> <span class="n">repair</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">hosts</span> <span class="o">&lt;</span><span class="n">specific_host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="ow">in</span><span class="o">-</span><span class="n">hosts</span> <span class="o">&lt;</span><span class="n">specific_host</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">hosts</span> <span class="n">to</span> <span class="n">repair</span> <span class="n">specific</span> <span class="n">hosts</span>
+
+        <span class="o">-</span><span class="n">iuk</span><span class="p">,</span> <span class="o">--</span><span class="n">ignore</span><span class="o">-</span><span class="n">unreplicated</span><span class="o">-</span><span class="n">keyspaces</span>
+            <span class="n">Use</span> <span class="o">--</span><span class="n">ignore</span><span class="o">-</span><span class="n">unreplicated</span><span class="o">-</span><span class="n">keyspaces</span> <span class="n">to</span> <span class="n">ignore</span> <span class="n">keyspaces</span> <span class="n">which</span> <span class="n">are</span>
+            <span class="ow">not</span> <span class="n">replicated</span><span class="p">,</span> <span class="n">otherwise</span> <span class="n">the</span> <span class="n">repair</span> <span class="n">will</span> <span class="n">fail</span>
+
+        <span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">job_threads</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">job</span><span class="o">-</span><span class="n">threads</span> <span class="o">&lt;</span><span class="n">job_threads</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">threads</span> <span class="n">to</span> <span class="n">run</span> <span class="n">repair</span> <span class="n">jobs</span><span class="o">.</span> <span class="n">Usually</span> <span class="n">this</span> <span class="n">means</span> <span class="n">number</span> <span class="n">of</span>
+            <span class="n">CFs</span> <span class="n">to</span> <span class="n">repair</span> <span class="n">concurrently</span><span class="o">.</span> <span class="n">WARNING</span><span class="p">:</span> <span class="n">increasing</span> <span class="n">this</span> <span class="n">puts</span> <span class="n">more</span> <span class="n">load</span>
+            <span class="n">on</span> <span class="n">repairing</span> <span class="n">nodes</span><span class="p">,</span> <span class="n">so</span> <span class="n">be</span> <span class="n">careful</span><span class="o">.</span> <span class="p">(</span><span class="n">default</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="nb">max</span><span class="p">:</span> <span class="mi">4</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">local</span><span class="p">,</span> <span class="o">--</span><span class="ow">in</span><span class="o">-</span><span class="n">local</span><span class="o">-</span><span class="n">dc</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">local</span> <span class="n">to</span> <span class="n">only</span> <span class="n">repair</span> <span class="n">against</span> <span class="n">nodes</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">same</span> <span class="n">datacenter</span>
+
+        <span class="o">-</span><span class="n">os</span><span class="p">,</span> <span class="o">--</span><span class="n">optimise</span><span class="o">-</span><span class="n">streams</span>
+            <span class="n">Use</span> <span class="o">--</span><span class="n">optimise</span><span class="o">-</span><span class="n">streams</span> <span class="n">to</span> <span class="k">try</span> <span class="n">to</span> <span class="n">reduce</span> <span class="n">the</span> <span class="n">number</span> <span class="n">of</span> <span class="n">streams</span> <span class="n">we</span> <span class="n">do</span>
+            <span class="p">(</span><span class="n">EXPERIMENTAL</span><span class="p">,</span> <span class="n">see</span> <span class="n">CASSANDRA</span><span class="o">-</span><span class="mi">3200</span><span class="p">)</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pl</span><span class="p">,</span> <span class="o">--</span><span class="n">pull</span>
+            <span class="n">Use</span> <span class="o">--</span><span class="n">pull</span> <span class="n">to</span> <span class="n">perform</span> <span class="n">a</span> <span class="n">one</span> <span class="n">way</span> <span class="n">repair</span> <span class="n">where</span> <span class="n">data</span> <span class="ow">is</span> <span class="n">only</span> <span class="n">streamed</span>
+            <span class="kn">from</span> <span class="nn">a</span> <span class="n">remote</span> <span class="n">node</span> <span class="n">to</span> <span class="n">this</span> <span class="n">node</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pr</span><span class="p">,</span> <span class="o">--</span><span class="n">partitioner</span><span class="o">-</span><span class="nb">range</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">pr</span> <span class="n">to</span> <span class="n">repair</span> <span class="n">only</span> <span class="n">the</span> <span class="n">first</span> <span class="nb">range</span> <span class="n">returned</span> <span class="n">by</span> <span class="n">the</span> <span class="n">partitioner</span>
+
+        <span class="o">-</span><span class="n">prv</span><span class="p">,</span> <span class="o">--</span><span class="n">preview</span>
+            <span class="n">Determine</span> <span class="n">ranges</span> <span class="ow">and</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">data</span> <span class="n">to</span> <span class="n">be</span> <span class="n">streamed</span><span class="p">,</span> <span class="n">but</span> <span class="n">don</span><span class="s1">&#39;t</span>
+            <span class="n">actually</span> <span class="n">perform</span> <span class="n">repair</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">seq</span><span class="p">,</span> <span class="o">--</span><span class="n">sequential</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">seq</span> <span class="n">to</span> <span class="n">carry</span> <span class="n">out</span> <span class="n">a</span> <span class="n">sequential</span> <span class="n">repair</span>
+
+        <span class="o">-</span><span class="n">st</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">st</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">the</span> <span class="n">repair</span> <span class="nb">range</span> <span class="n">starts</span>
+            <span class="p">(</span><span class="n">exclusive</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">tr</span><span class="p">,</span> <span class="o">--</span><span class="n">trace</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">tr</span> <span class="n">to</span> <span class="n">trace</span> <span class="n">the</span> <span class="n">repair</span><span class="o">.</span> <span class="n">Traces</span> <span class="n">are</span> <span class="n">logged</span> <span class="n">to</span>
+            <span class="n">system_traces</span><span class="o">.</span><span class="n">events</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">-</span><span class="n">vd</span><span class="p">,</span> <span class="o">--</span><span class="n">validate</span>
+            <span class="n">Checks</span> <span class="n">that</span> <span class="n">repaired</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">in</span> <span class="n">sync</span> <span class="n">between</span> <span class="n">nodes</span><span class="o">.</span> <span class="n">Out</span> <span class="n">of</span> <span class="n">sync</span>
+            <span class="n">repaired</span> <span class="n">data</span> <span class="n">indicates</span> <span class="n">a</span> <span class="n">full</span> <span class="n">repair</span> <span class="n">should</span> <span class="n">be</span> <span class="n">run</span><span class="o">.</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/repair_admin.html b/src/doc/4.0-rc1/tools/nodetool/repair_admin.html
new file mode 100644
index 0000000..80f47d8
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/repair_admin.html
@@ -0,0 +1,220 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "repair_admin"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="repair-admin">
+<span id="nodetool-repair-admin"></span><h1>repair_admin<a class="headerlink" href="#repair-admin" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">repair_admin</span> <span class="o">-</span> <span class="nb">list</span> <span class="ow">and</span> <span class="n">fail</span> <span class="n">incremental</span> <span class="n">repair</span> <span class="n">sessions</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="n">repair_admin</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="n">repair_admin</span> <span class="n">cancel</span> <span class="p">(</span><span class="o">-</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">session</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">session</span> <span class="o">&lt;</span><span class="n">session</span><span class="o">&gt;</span><span class="p">)</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">f</span> <span class="o">|</span> <span class="o">--</span><span class="n">force</span><span class="p">)]</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="n">repair_admin</span> <span class="n">cleanup</span> <span class="p">[(</span><span class="o">-</span><span class="n">f</span> <span class="o">|</span> <span class="o">--</span><span class="n">force</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">et</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">st</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span><span class="p">)]</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="n">repair_admin</span> <span class="nb">list</span> <span class="p">[(</span><span class="o">-</span><span class="n">et</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">st</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">a</span> <span class="o">|</span> <span class="o">--</span><span class="nb">all</span><span class="p">)]</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="n">repair_admin</span> <span class="n">summarize</span><span class="o">-</span><span class="n">pending</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">et</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">v</span> <span class="o">|</span> <span class="o">--</span><span class="n">verbose</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">st</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span><span class="p">)]</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="n">repair_admin</span> <span class="n">summarize</span><span class="o">-</span><span class="n">repaired</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">et</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">end_token</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">v</span> <span class="o">|</span> <span class="o">--</span><span class="n">verbose</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">st</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="o">&lt;</span><span class="n">start_token</span><span class="o">&gt;</span><span class="p">)]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+<span class="n">COMMANDS</span>
+        <span class="n">With</span> <span class="n">no</span> <span class="n">arguments</span><span class="p">,</span> <span class="nb">list</span> <span class="n">repair</span> <span class="n">sessions</span>
+
+        <span class="nb">list</span>
+            <span class="nb">list</span> <span class="n">repair</span> <span class="n">sessions</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="n">option</span><span class="p">,</span> <span class="n">Use</span> <span class="o">-</span><span class="n">et</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">repair</span>
+            <span class="nb">range</span> <span class="n">ends</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="n">option</span><span class="p">,</span> <span class="n">Use</span> <span class="o">-</span><span class="n">st</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">the</span>
+            <span class="n">repair</span> <span class="nb">range</span> <span class="n">starts</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="nb">all</span> <span class="n">option</span><span class="p">,</span> <span class="n">include</span> <span class="n">completed</span> <span class="ow">and</span> <span class="n">failed</span> <span class="n">sessions</span>
+
+        <span class="n">cancel</span>
+            <span class="n">cancel</span> <span class="n">an</span> <span class="n">incremental</span> <span class="n">repair</span> <span class="n">session</span><span class="o">.</span> <span class="n">Use</span> <span class="o">--</span><span class="n">force</span> <span class="n">to</span> <span class="n">cancel</span> <span class="kn">from</span> <span class="nn">a</span>
+            <span class="n">node</span> <span class="n">other</span> <span class="n">than</span> <span class="n">the</span> <span class="n">repair</span> <span class="n">coordinator</span> <span class="n">Attempting</span> <span class="n">to</span> <span class="n">cancel</span>
+            <span class="n">FINALIZED</span> <span class="ow">or</span> <span class="n">FAILED</span> <span class="n">sessions</span> <span class="ow">is</span> <span class="n">an</span> <span class="n">error</span><span class="o">.</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="n">session</span> <span class="n">option</span><span class="p">,</span> <span class="n">The</span> <span class="n">session</span> <span class="n">to</span> <span class="n">cancel</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="n">force</span> <span class="n">option</span><span class="p">,</span> <span class="n">Force</span> <span class="n">a</span> <span class="n">cancellation</span><span class="o">.</span>
+
+        <span class="n">cleanup</span>
+            <span class="n">cleans</span> <span class="n">up</span> <span class="n">pending</span> <span class="n">data</span> <span class="kn">from</span> <span class="nn">completed</span> <span class="n">sessions</span><span class="o">.</span> <span class="n">This</span> <span class="n">happens</span>
+            <span class="n">automatically</span><span class="p">,</span> <span class="n">but</span> <span class="n">the</span> <span class="n">command</span> <span class="ow">is</span> <span class="n">provided</span> <span class="k">for</span> <span class="n">situations</span> <span class="n">where</span> <span class="n">it</span>
+            <span class="n">needs</span> <span class="n">to</span> <span class="n">be</span> <span class="n">expedited</span><span class="o">.</span> <span class="n">Use</span> <span class="o">--</span><span class="n">force</span> <span class="n">to</span> <span class="n">cancel</span> <span class="n">compactions</span> <span class="n">that</span> <span class="n">are</span>
+            <span class="n">preventing</span> <span class="n">promotion</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="n">force</span> <span class="n">option</span><span class="p">,</span> <span class="n">Force</span> <span class="n">a</span> <span class="n">cleanup</span><span class="o">.</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="n">option</span><span class="p">,</span> <span class="n">Use</span> <span class="o">-</span><span class="n">et</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">repair</span>
+            <span class="nb">range</span> <span class="n">ends</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="n">option</span><span class="p">,</span> <span class="n">Use</span> <span class="o">-</span><span class="n">st</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">the</span>
+            <span class="n">repair</span> <span class="nb">range</span> <span class="n">starts</span>
+
+        <span class="n">summarize</span><span class="o">-</span><span class="n">pending</span>
+            <span class="n">report</span> <span class="n">the</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">data</span> <span class="n">marked</span> <span class="n">pending</span> <span class="n">repair</span> <span class="k">for</span> <span class="n">the</span> <span class="n">given</span> <span class="n">token</span>
+            <span class="nb">range</span> <span class="p">(</span><span class="ow">or</span> <span class="nb">all</span> <span class="n">replicated</span> <span class="nb">range</span> <span class="k">if</span> <span class="n">no</span> <span class="n">tokens</span> <span class="n">are</span> <span class="n">provided</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="n">option</span><span class="p">,</span> <span class="n">Use</span> <span class="o">-</span><span class="n">et</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">repair</span>
+            <span class="nb">range</span> <span class="n">ends</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="n">verbose</span> <span class="n">option</span><span class="p">,</span> <span class="nb">print</span> <span class="n">additional</span> <span class="n">info</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="n">option</span><span class="p">,</span> <span class="n">Use</span> <span class="o">-</span><span class="n">st</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">the</span>
+            <span class="n">repair</span> <span class="nb">range</span> <span class="n">starts</span>
+
+        <span class="n">summarize</span><span class="o">-</span><span class="n">repaired</span>
+            <span class="k">return</span> <span class="n">the</span> <span class="n">most</span> <span class="n">recent</span> <span class="n">repairedAt</span> <span class="n">timestamp</span> <span class="k">for</span> <span class="n">the</span> <span class="n">given</span> <span class="n">token</span>
+            <span class="nb">range</span> <span class="p">(</span><span class="ow">or</span> <span class="nb">all</span> <span class="n">replicated</span> <span class="n">ranges</span> <span class="k">if</span> <span class="n">no</span> <span class="n">tokens</span> <span class="n">are</span> <span class="n">provided</span><span class="p">)</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="n">end</span><span class="o">-</span><span class="n">token</span> <span class="n">option</span><span class="p">,</span> <span class="n">Use</span> <span class="o">-</span><span class="n">et</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">repair</span>
+            <span class="nb">range</span> <span class="n">ends</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="n">verbose</span> <span class="n">option</span><span class="p">,</span> <span class="nb">print</span> <span class="n">additional</span> <span class="n">info</span>
+
+            <span class="n">With</span> <span class="o">--</span><span class="n">start</span><span class="o">-</span><span class="n">token</span> <span class="n">option</span><span class="p">,</span> <span class="n">Use</span> <span class="o">-</span><span class="n">st</span> <span class="n">to</span> <span class="n">specify</span> <span class="n">a</span> <span class="n">token</span> <span class="n">at</span> <span class="n">which</span> <span class="n">the</span>
+            <span class="n">repair</span> <span class="nb">range</span> <span class="n">starts</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/replaybatchlog.html b/src/doc/4.0-rc1/tools/nodetool/replaybatchlog.html
new file mode 100644
index 0000000..0800687
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/replaybatchlog.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "replaybatchlog"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="replaybatchlog">
+<span id="nodetool-replaybatchlog"></span><h1>replaybatchlog<a class="headerlink" href="#replaybatchlog" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">replaybatchlog</span> <span class="o">-</span> <span class="n">Kick</span> <span class="n">off</span> <span class="n">batchlog</span> <span class="n">replay</span> <span class="ow">and</span> <span class="n">wait</span> <span class="k">for</span> <span class="n">finish</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">replaybatchlog</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/resetfullquerylog.html b/src/doc/4.0-rc1/tools/nodetool/resetfullquerylog.html
new file mode 100644
index 0000000..74e9872
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/resetfullquerylog.html
@@ -0,0 +1,127 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "resetfullquerylog"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="resetfullquerylog">
+<span id="nodetool-resetfullquerylog"></span><h1>resetfullquerylog<a class="headerlink" href="#resetfullquerylog" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">resetfullquerylog</span> <span class="o">-</span> <span class="n">Stop</span> <span class="n">the</span> <span class="n">full</span> <span class="n">query</span> <span class="n">log</span> <span class="ow">and</span> <span class="n">clean</span> <span class="n">files</span> <span class="ow">in</span>
+        <span class="n">the</span> <span class="n">configured</span> <span class="n">full</span> <span class="n">query</span> <span class="n">log</span> <span class="n">directory</span> <span class="kn">from</span> <span class="nn">cassandra.yaml</span> <span class="k">as</span> <span class="n">well</span> <span class="k">as</span>
+        <span class="n">JMX</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">resetfullquerylog</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/resetlocalschema.html b/src/doc/4.0-rc1/tools/nodetool/resetlocalschema.html
new file mode 100644
index 0000000..bb11605
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/resetlocalschema.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "resetlocalschema"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="resetlocalschema">
+<span id="nodetool-resetlocalschema"></span><h1>resetlocalschema<a class="headerlink" href="#resetlocalschema" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">resetlocalschema</span> <span class="o">-</span> <span class="n">Reset</span> <span class="n">node</span><span class="s1">&#39;s local schema and resync</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">resetlocalschema</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/resumehandoff.html b/src/doc/4.0-rc1/tools/nodetool/resumehandoff.html
new file mode 100644
index 0000000..4f1d9d1
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/resumehandoff.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "resumehandoff"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="resumehandoff">
+<span id="nodetool-resumehandoff"></span><h1>resumehandoff<a class="headerlink" href="#resumehandoff" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">resumehandoff</span> <span class="o">-</span> <span class="n">Resume</span> <span class="n">hints</span> <span class="n">delivery</span> <span class="n">process</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">resumehandoff</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/ring.html b/src/doc/4.0-rc1/tools/nodetool/ring.html
new file mode 100644
index 0000000..bdfa2a0
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/ring.html
@@ -0,0 +1,138 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "ring"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="ring">
+<span id="nodetool-ring"></span><h1>ring<a class="headerlink" href="#ring" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">ring</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">information</span> <span class="n">about</span> <span class="n">the</span> <span class="n">token</span> <span class="n">ring</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">ring</span> <span class="p">[(</span><span class="o">-</span><span class="n">r</span> <span class="o">|</span> <span class="o">--</span><span class="n">resolve</span><span class="o">-</span><span class="n">ip</span><span class="p">)]</span>
+                <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">r</span><span class="p">,</span> <span class="o">--</span><span class="n">resolve</span><span class="o">-</span><span class="n">ip</span>
+            <span class="n">Show</span> <span class="n">node</span> <span class="n">domain</span> <span class="n">names</span> <span class="n">instead</span> <span class="n">of</span> <span class="n">IPs</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+            <span class="n">Specify</span> <span class="n">a</span> <span class="n">keyspace</span> <span class="k">for</span> <span class="n">accurate</span> <span class="n">ownership</span> <span class="n">information</span> <span class="p">(</span><span class="n">topology</span>
+            <span class="n">awareness</span><span class="p">)</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/scrub.html b/src/doc/4.0-rc1/tools/nodetool/scrub.html
new file mode 100644
index 0000000..74ddb3d
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/scrub.html
@@ -0,0 +1,159 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "scrub"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="scrub">
+<span id="nodetool-scrub"></span><h1>scrub<a class="headerlink" href="#scrub" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">scrub</span> <span class="o">-</span> <span class="n">Scrub</span> <span class="p">(</span><span class="n">rebuild</span> <span class="n">sstables</span> <span class="k">for</span><span class="p">)</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">more</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">scrub</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">n</span> <span class="o">|</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">validate</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">ns</span> <span class="o">|</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">snapshot</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">r</span> <span class="o">|</span> <span class="o">--</span><span class="n">reinsert</span><span class="o">-</span><span class="n">overflowed</span><span class="o">-</span><span class="n">ttl</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">s</span> <span class="o">|</span> <span class="o">--</span><span class="n">skip</span><span class="o">-</span><span class="n">corrupted</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">sstables</span> <span class="n">to</span> <span class="n">scrub</span> <span class="n">simultanously</span><span class="p">,</span> <span class="nb">set</span> <span class="n">to</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">use</span> <span class="nb">all</span>
+            <span class="n">available</span> <span class="n">compaction</span> <span class="n">threads</span>
+
+        <span class="o">-</span><span class="n">n</span><span class="p">,</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">validate</span>
+            <span class="n">Do</span> <span class="ow">not</span> <span class="n">validate</span> <span class="n">columns</span> <span class="n">using</span> <span class="n">column</span> <span class="n">validator</span>
+
+        <span class="o">-</span><span class="n">ns</span><span class="p">,</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">snapshot</span>
+            <span class="n">Scrubbed</span> <span class="n">CFs</span> <span class="n">will</span> <span class="n">be</span> <span class="n">snapshotted</span> <span class="n">first</span><span class="p">,</span> <span class="k">if</span> <span class="n">disableSnapshot</span> <span class="ow">is</span> <span class="n">false</span><span class="o">.</span>
+            <span class="p">(</span><span class="n">default</span> <span class="n">false</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">r</span><span class="p">,</span> <span class="o">--</span><span class="n">reinsert</span><span class="o">-</span><span class="n">overflowed</span><span class="o">-</span><span class="n">ttl</span>
+            <span class="n">Rewrites</span> <span class="n">rows</span> <span class="k">with</span> <span class="n">overflowed</span> <span class="n">expiration</span> <span class="n">date</span> <span class="n">affected</span> <span class="n">by</span>
+            <span class="n">CASSANDRA</span><span class="o">-</span><span class="mi">14092</span> <span class="k">with</span> <span class="n">the</span> <span class="n">maximum</span> <span class="n">supported</span> <span class="n">expiration</span> <span class="n">date</span> <span class="n">of</span>
+            <span class="mi">2038</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">19</span><span class="n">T03</span><span class="p">:</span><span class="mi">14</span><span class="p">:</span><span class="mi">06</span><span class="o">+</span><span class="mi">00</span><span class="p">:</span><span class="mf">00.</span> <span class="n">The</span> <span class="n">rows</span> <span class="n">are</span> <span class="n">rewritten</span> <span class="k">with</span> <span class="n">the</span> <span class="n">original</span>
+            <span class="n">timestamp</span> <span class="n">incremented</span> <span class="n">by</span> <span class="n">one</span> <span class="n">millisecond</span> <span class="n">to</span> <span class="n">override</span><span class="o">/</span><span class="n">supersede</span> <span class="nb">any</span>
+            <span class="n">potential</span> <span class="n">tombstone</span> <span class="n">that</span> <span class="n">may</span> <span class="n">have</span> <span class="n">been</span> <span class="n">generated</span> <span class="n">during</span> <span class="n">compaction</span>
+            <span class="n">of</span> <span class="n">the</span> <span class="n">affected</span> <span class="n">rows</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">s</span><span class="p">,</span> <span class="o">--</span><span class="n">skip</span><span class="o">-</span><span class="n">corrupted</span>
+            <span class="n">Skip</span> <span class="n">corrupted</span> <span class="n">partitions</span> <span class="n">even</span> <span class="n">when</span> <span class="n">scrubbing</span> <span class="n">counter</span> <span class="n">tables</span><span class="o">.</span>
+            <span class="p">(</span><span class="n">default</span> <span class="n">false</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/setbatchlogreplaythrottle.html b/src/doc/4.0-rc1/tools/nodetool/setbatchlogreplaythrottle.html
new file mode 100644
index 0000000..5614621
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/setbatchlogreplaythrottle.html
@@ -0,0 +1,136 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setbatchlogreplaythrottle"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setbatchlogreplaythrottle">
+<span id="nodetool-setbatchlogreplaythrottle"></span><h1>setbatchlogreplaythrottle<a class="headerlink" href="#setbatchlogreplaythrottle" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setbatchlogreplaythrottle</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">batchlog</span> <span class="n">replay</span> <span class="n">throttle</span> <span class="ow">in</span> <span class="n">KB</span>
+        <span class="n">per</span> <span class="n">second</span><span class="p">,</span> <span class="ow">or</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span><span class="o">.</span> <span class="n">This</span> <span class="n">will</span> <span class="n">be</span> <span class="n">reduced</span>
+        <span class="n">proportionally</span> <span class="n">to</span> <span class="n">the</span> <span class="n">number</span> <span class="n">of</span> <span class="n">nodes</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">cluster</span><span class="o">.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setbatchlogreplaythrottle</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">value_in_kb_per_sec</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value_in_kb_per_sec</span><span class="o">&gt;</span>
+            <span class="n">Value</span> <span class="ow">in</span> <span class="n">KB</span> <span class="n">per</span> <span class="n">second</span><span class="p">,</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/setcachecapacity.html b/src/doc/4.0-rc1/tools/nodetool/setcachecapacity.html
new file mode 100644
index 0000000..e42c0cc
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/setcachecapacity.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setcachecapacity"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setcachecapacity">
+<span id="nodetool-setcachecapacity"></span><h1>setcachecapacity<a class="headerlink" href="#setcachecapacity" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setcachecapacity</span> <span class="o">-</span> <span class="n">Set</span> <span class="k">global</span> <span class="n">key</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="ow">and</span> <span class="n">counter</span> <span class="n">cache</span>
+        <span class="n">capacities</span> <span class="p">(</span><span class="ow">in</span> <span class="n">MB</span> <span class="n">units</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setcachecapacity</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">key</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">capacity</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">row</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">capacity</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">counter</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">capacity</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">key</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">capacity</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">row</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">capacity</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">counter</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">capacity</span><span class="o">&gt;</span>
+            <span class="n">Key</span> <span class="n">cache</span><span class="p">,</span> <span class="n">row</span> <span class="n">cache</span><span class="p">,</span> <span class="ow">and</span> <span class="n">counter</span> <span class="n">cache</span> <span class="p">(</span><span class="ow">in</span> <span class="n">MB</span><span class="p">)</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/setcachekeystosave.html b/src/doc/4.0-rc1/tools/nodetool/setcachekeystosave.html
new file mode 100644
index 0000000..ba17d1d
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/setcachekeystosave.html
@@ -0,0 +1,137 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setcachekeystosave"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setcachekeystosave">
+<span id="nodetool-setcachekeystosave"></span><h1>setcachekeystosave<a class="headerlink" href="#setcachekeystosave" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setcachekeystosave</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">number</span> <span class="n">of</span> <span class="n">keys</span> <span class="n">saved</span> <span class="n">by</span> <span class="n">each</span> <span class="n">cache</span> <span class="k">for</span>
+        <span class="n">faster</span> <span class="n">post</span><span class="o">-</span><span class="n">restart</span> <span class="n">warmup</span><span class="o">.</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setcachekeystosave</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">key</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">keys</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">save</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">row</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">keys</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">save</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">counter</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">keys</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">save</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">key</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">keys</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">save</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">row</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">keys</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">save</span><span class="o">&gt;</span>
+        <span class="o">&lt;</span><span class="n">counter</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">keys</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">save</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">number</span> <span class="n">of</span> <span class="n">keys</span> <span class="n">saved</span> <span class="n">by</span> <span class="n">each</span> <span class="n">cache</span><span class="o">.</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/setcompactionthreshold.html b/src/doc/4.0-rc1/tools/nodetool/setcompactionthreshold.html
new file mode 100644
index 0000000..cc58cb2
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/setcompactionthreshold.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setcompactionthreshold"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setcompactionthreshold">
+<span id="nodetool-setcompactionthreshold"></span><h1>setcompactionthreshold<a class="headerlink" href="#setcompactionthreshold" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setcompactionthreshold</span> <span class="o">-</span> <span class="n">Set</span> <span class="nb">min</span> <span class="ow">and</span> <span class="nb">max</span> <span class="n">compaction</span> <span class="n">thresholds</span>
+        <span class="k">for</span> <span class="n">a</span> <span class="n">given</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setcompactionthreshold</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">minthreshold</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">maxthreshold</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">minthreshold</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">maxthreshold</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">the</span> <span class="n">table</span><span class="p">,</span> <span class="nb">min</span> <span class="ow">and</span> <span class="nb">max</span> <span class="n">threshold</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/setcompactionthroughput.html b/src/doc/4.0-rc1/tools/nodetool/setcompactionthroughput.html
new file mode 100644
index 0000000..6552307
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/setcompactionthroughput.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setcompactionthroughput"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setcompactionthroughput">
+<span id="nodetool-setcompactionthroughput"></span><h1>setcompactionthroughput<a class="headerlink" href="#setcompactionthroughput" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setcompactionthroughput</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">MB</span><span class="o">/</span><span class="n">s</span> <span class="n">throughput</span> <span class="n">cap</span> <span class="k">for</span>
+        <span class="n">compaction</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span><span class="p">,</span> <span class="ow">or</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setcompactionthroughput</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">value_in_mb</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value_in_mb</span><span class="o">&gt;</span>
+            <span class="n">Value</span> <span class="ow">in</span> <span class="n">MB</span><span class="p">,</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/setconcurrency.html b/src/doc/4.0-rc1/tools/nodetool/setconcurrency.html
new file mode 100644
index 0000000..4ae9042
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/setconcurrency.html
@@ -0,0 +1,136 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setconcurrency"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setconcurrency">
+<span id="nodetool-setconcurrency"></span><h1>setconcurrency<a class="headerlink" href="#setconcurrency" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setconcurrency</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">maximum</span> <span class="n">concurrency</span> <span class="k">for</span> <span class="n">processing</span> <span class="n">stage</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setconcurrency</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">stage</span><span class="o">-</span><span class="n">name</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">maximum</span><span class="o">-</span><span class="n">concurrency</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">&lt;</span><span class="n">stage</span><span class="o">-</span><span class="n">name</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">core</span><span class="o">-</span><span class="n">pool</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">maximum</span><span class="o">-</span><span class="n">concurrency</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">stage</span><span class="o">-</span><span class="n">name</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">maximum</span><span class="o">-</span><span class="n">concurrency</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">&lt;</span><span class="n">stage</span><span class="o">-</span><span class="n">name</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">core</span><span class="o">-</span><span class="n">pool</span><span class="o">&gt;</span>
+        <span class="o">&lt;</span><span class="n">maximum</span><span class="o">-</span><span class="n">concurrency</span><span class="o">&gt;</span>
+            <span class="n">Set</span> <span class="n">concurrency</span> <span class="k">for</span> <span class="n">processing</span> <span class="n">stage</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/setconcurrentcompactors.html b/src/doc/4.0-rc1/tools/nodetool/setconcurrentcompactors.html
new file mode 100644
index 0000000..d13831e
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/setconcurrentcompactors.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setconcurrentcompactors"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setconcurrentcompactors">
+<span id="nodetool-setconcurrentcompactors"></span><h1>setconcurrentcompactors<a class="headerlink" href="#setconcurrentcompactors" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setconcurrentcompactors</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">number</span> <span class="n">of</span> <span class="n">concurrent</span> <span class="n">compactors</span>
+        <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span><span class="o">.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setconcurrentcompactors</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">value</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">concurrent</span> <span class="n">compactors</span><span class="p">,</span> <span class="n">greater</span> <span class="n">than</span> <span class="mf">0.</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/setconcurrentviewbuilders.html b/src/doc/4.0-rc1/tools/nodetool/setconcurrentviewbuilders.html
new file mode 100644
index 0000000..7b3cffb
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/setconcurrentviewbuilders.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setconcurrentviewbuilders"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setconcurrentviewbuilders">
+<span id="nodetool-setconcurrentviewbuilders"></span><h1>setconcurrentviewbuilders<a class="headerlink" href="#setconcurrentviewbuilders" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setconcurrentviewbuilders</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">number</span> <span class="n">of</span> <span class="n">concurrent</span> <span class="n">view</span>
+        <span class="n">builders</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setconcurrentviewbuilders</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">value</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">concurrent</span> <span class="n">view</span> <span class="n">builders</span><span class="p">,</span> <span class="n">greater</span> <span class="n">than</span> <span class="mf">0.</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/sethintedhandoffthrottlekb.html b/src/doc/4.0-rc1/tools/nodetool/sethintedhandoffthrottlekb.html
new file mode 100644
index 0000000..755e58c
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/sethintedhandoffthrottlekb.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "sethintedhandoffthrottlekb"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sethintedhandoffthrottlekb">
+<span id="nodetool-sethintedhandoffthrottlekb"></span><h1>sethintedhandoffthrottlekb<a class="headerlink" href="#sethintedhandoffthrottlekb" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">sethintedhandoffthrottlekb</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">hinted</span> <span class="n">handoff</span> <span class="n">throttle</span> <span class="ow">in</span> <span class="n">kb</span>
+        <span class="n">per</span> <span class="n">second</span><span class="p">,</span> <span class="n">per</span> <span class="n">delivery</span> <span class="n">thread</span><span class="o">.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">sethintedhandoffthrottlekb</span>
+                <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">value_in_kb_per_sec</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value_in_kb_per_sec</span><span class="o">&gt;</span>
+            <span class="n">Value</span> <span class="ow">in</span> <span class="n">KB</span> <span class="n">per</span> <span class="n">second</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/setinterdcstreamthroughput.html b/src/doc/4.0-rc1/tools/nodetool/setinterdcstreamthroughput.html
new file mode 100644
index 0000000..eaa8e6a
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/setinterdcstreamthroughput.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setinterdcstreamthroughput"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setinterdcstreamthroughput">
+<span id="nodetool-setinterdcstreamthroughput"></span><h1>setinterdcstreamthroughput<a class="headerlink" href="#setinterdcstreamthroughput" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setinterdcstreamthroughput</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">Mb</span><span class="o">/</span><span class="n">s</span> <span class="n">throughput</span> <span class="n">cap</span> <span class="k">for</span>
+        <span class="n">inter</span><span class="o">-</span><span class="n">datacenter</span> <span class="n">streaming</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span><span class="p">,</span> <span class="ow">or</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setinterdcstreamthroughput</span>
+                <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">value_in_mb</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value_in_mb</span><span class="o">&gt;</span>
+            <span class="n">Value</span> <span class="ow">in</span> <span class="n">Mb</span><span class="p">,</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/setlogginglevel.html b/src/doc/4.0-rc1/tools/nodetool/setlogginglevel.html
new file mode 100644
index 0000000..b48f164
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/setlogginglevel.html
@@ -0,0 +1,138 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setlogginglevel"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setlogginglevel">
+<span id="nodetool-setlogginglevel"></span><h1>setlogginglevel<a class="headerlink" href="#setlogginglevel" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setlogginglevel</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">log</span> <span class="n">level</span> <span class="n">threshold</span> <span class="k">for</span> <span class="n">a</span> <span class="n">given</span>
+        <span class="n">component</span> <span class="ow">or</span> <span class="n">class</span><span class="o">.</span> <span class="n">Will</span> <span class="n">reset</span> <span class="n">to</span> <span class="n">the</span> <span class="n">initial</span> <span class="n">configuration</span> <span class="k">if</span> <span class="n">called</span>
+        <span class="k">with</span> <span class="n">no</span> <span class="n">parameters</span><span class="o">.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setlogginglevel</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">component</span><span class="o">|</span><span class="n">class</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">level</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">component</span><span class="o">|</span><span class="n">class</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">level</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">component</span> <span class="ow">or</span> <span class="k">class</span> <span class="nc">to</span> <span class="n">change</span> <span class="n">the</span> <span class="n">level</span> <span class="k">for</span> <span class="ow">and</span> <span class="n">the</span> <span class="n">log</span> <span class="n">level</span>
+            <span class="n">threshold</span> <span class="n">to</span> <span class="nb">set</span><span class="o">.</span> <span class="n">Will</span> <span class="n">reset</span> <span class="n">to</span> <span class="n">initial</span> <span class="n">level</span> <span class="k">if</span> <span class="n">omitted</span><span class="o">.</span> <span class="n">Available</span>
+            <span class="n">components</span><span class="p">:</span> <span class="n">bootstrap</span><span class="p">,</span> <span class="n">compaction</span><span class="p">,</span> <span class="n">repair</span><span class="p">,</span> <span class="n">streaming</span><span class="p">,</span> <span class="n">cql</span><span class="p">,</span> <span class="n">ring</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/setmaxhintwindow.html b/src/doc/4.0-rc1/tools/nodetool/setmaxhintwindow.html
new file mode 100644
index 0000000..fcea979
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/setmaxhintwindow.html
@@ -0,0 +1,134 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setmaxhintwindow"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setmaxhintwindow">
+<span id="nodetool-setmaxhintwindow"></span><h1>setmaxhintwindow<a class="headerlink" href="#setmaxhintwindow" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setmaxhintwindow</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">specified</span> <span class="nb">max</span> <span class="n">hint</span> <span class="n">window</span> <span class="ow">in</span> <span class="n">ms</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setmaxhintwindow</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">value_in_ms</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value_in_ms</span><span class="o">&gt;</span>
+            <span class="n">Value</span> <span class="n">of</span> <span class="n">maxhintwindow</span> <span class="ow">in</span> <span class="n">ms</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/setsnapshotthrottle.html b/src/doc/4.0-rc1/tools/nodetool/setsnapshotthrottle.html
new file mode 100644
index 0000000..7851708
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/setsnapshotthrottle.html
@@ -0,0 +1,136 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setsnapshotthrottle"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setsnapshotthrottle">
+<span id="nodetool-setsnapshotthrottle"></span><h1>setsnapshotthrottle<a class="headerlink" href="#setsnapshotthrottle" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setsnapshotthrottle</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">snapshot_links_per_second</span> <span class="n">cap</span> <span class="k">for</span>
+        <span class="n">snapshot</span> <span class="ow">and</span> <span class="n">clearsnapshot</span> <span class="n">throttling</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setsnapshotthrottle</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">throttle</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">throttle</span><span class="o">&gt;</span>
+            <span class="n">Value</span> <span class="n">represents</span> <span class="n">hardlinks</span> <span class="n">per</span> <span class="n">second</span> <span class="p">(</span> <span class="n">snapshot_links_per_second</span> <span class="p">)</span>
+            <span class="p">,</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/setstreamthroughput.html b/src/doc/4.0-rc1/tools/nodetool/setstreamthroughput.html
new file mode 100644
index 0000000..f4c54a3
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/setstreamthroughput.html
@@ -0,0 +1,135 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "setstreamthroughput"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="setstreamthroughput">
+<span id="nodetool-setstreamthroughput"></span><h1>setstreamthroughput<a class="headerlink" href="#setstreamthroughput" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">setstreamthroughput</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">Mb</span><span class="o">/</span><span class="n">s</span> <span class="n">throughput</span> <span class="n">cap</span> <span class="k">for</span> <span class="n">streaming</span>
+        <span class="ow">in</span> <span class="n">the</span> <span class="n">system</span><span class="p">,</span> <span class="ow">or</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">setstreamthroughput</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">value_in_mb</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value_in_mb</span><span class="o">&gt;</span>
+            <span class="n">Value</span> <span class="ow">in</span> <span class="n">Mb</span><span class="p">,</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">throttling</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/settimeout.html b/src/doc/4.0-rc1/tools/nodetool/settimeout.html
new file mode 100644
index 0000000..18d7848
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/settimeout.html
@@ -0,0 +1,138 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "settimeout"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="settimeout">
+<span id="nodetool-settimeout"></span><h1>settimeout<a class="headerlink" href="#settimeout" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">settimeout</span> <span class="o">-</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">specified</span> <span class="n">timeout</span> <span class="ow">in</span> <span class="n">ms</span><span class="p">,</span> <span class="ow">or</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">disable</span>
+        <span class="n">timeout</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">settimeout</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">timeout_type</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">timeout_in_ms</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">timeout_type</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">timeout_in_ms</span><span class="o">&gt;</span>
+            <span class="n">Timeout</span> <span class="nb">type</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">ms</span> <span class="p">(</span><span class="mi">0</span> <span class="n">disables</span> <span class="n">socket</span> <span class="n">streaming</span>
+            <span class="n">timeout</span><span class="p">)</span><span class="o">.</span> <span class="n">Type</span> <span class="n">should</span> <span class="n">be</span> <span class="n">one</span> <span class="n">of</span> <span class="p">(</span><span class="n">read</span><span class="p">,</span> <span class="nb">range</span><span class="p">,</span> <span class="n">write</span><span class="p">,</span> <span class="n">counterwrite</span><span class="p">,</span>
+            <span class="n">cascontention</span><span class="p">,</span> <span class="n">truncate</span><span class="p">,</span> <span class="n">internodeconnect</span><span class="p">,</span> <span class="n">internodeuser</span><span class="p">,</span>
+            <span class="n">internodestreaminguser</span><span class="p">,</span> <span class="n">misc</span> <span class="p">(</span><span class="n">general</span> <span class="n">rpc_timeout_in_ms</span><span class="p">))</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/settraceprobability.html b/src/doc/4.0-rc1/tools/nodetool/settraceprobability.html
new file mode 100644
index 0000000..8889059
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/settraceprobability.html
@@ -0,0 +1,136 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "settraceprobability"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="settraceprobability">
+<span id="nodetool-settraceprobability"></span><h1>settraceprobability<a class="headerlink" href="#settraceprobability" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">settraceprobability</span> <span class="o">-</span> <span class="n">Sets</span> <span class="n">the</span> <span class="n">probability</span> <span class="k">for</span> <span class="n">tracing</span> <span class="nb">any</span>
+        <span class="n">given</span> <span class="n">request</span> <span class="n">to</span> <span class="n">value</span><span class="o">.</span> <span class="mi">0</span> <span class="n">disables</span><span class="p">,</span> <span class="mi">1</span> <span class="n">enables</span> <span class="k">for</span> <span class="nb">all</span> <span class="n">requests</span><span class="p">,</span> <span class="mi">0</span> <span class="ow">is</span> <span class="n">the</span>
+        <span class="n">default</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">settraceprobability</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">value</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">value</span><span class="o">&gt;</span>
+            <span class="n">Trace</span> <span class="n">probability</span> <span class="n">between</span> <span class="mi">0</span> <span class="ow">and</span> <span class="mi">1</span> <span class="p">(</span><span class="n">ex</span><span class="p">:</span> <span class="mf">0.2</span><span class="p">)</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/sjk.html b/src/doc/4.0-rc1/tools/nodetool/sjk.html
new file mode 100644
index 0000000..9e43210
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/sjk.html
@@ -0,0 +1,134 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "sjk"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sjk">
+<span id="nodetool-sjk"></span><h1>sjk<a class="headerlink" href="#sjk" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">sjk</span> <span class="o">-</span> <span class="n">Run</span> <span class="n">commands</span> <span class="n">of</span> <span class="s1">&#39;Swiss Java Knife&#39;</span><span class="o">.</span> <span class="n">Run</span> <span class="s1">&#39;nodetool sjk</span>
+        <span class="o">--</span><span class="n">help</span><span class="s1">&#39; for more information.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">sjk</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">args</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">args</span><span class="o">&gt;</span>
+            <span class="n">Arguments</span> <span class="n">passed</span> <span class="k">as</span> <span class="ow">is</span> <span class="n">to</span> <span class="s1">&#39;Swiss Java Knife&#39;</span><span class="o">.</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/snapshot.html b/src/doc/4.0-rc1/tools/nodetool/snapshot.html
new file mode 100644
index 0000000..7d5ebd6
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/snapshot.html
@@ -0,0 +1,152 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "snapshot"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="snapshot">
+<span id="nodetool-snapshot"></span><h1>snapshot<a class="headerlink" href="#snapshot" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">snapshot</span> <span class="o">-</span> <span class="n">Take</span> <span class="n">a</span> <span class="n">snapshot</span> <span class="n">of</span> <span class="n">specified</span> <span class="n">keyspaces</span> <span class="ow">or</span> <span class="n">a</span> <span class="n">snapshot</span>
+        <span class="n">of</span> <span class="n">the</span> <span class="n">specified</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">snapshot</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">cf</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">column</span><span class="o">-</span><span class="n">family</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">table</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">kt</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">kt</span><span class="o">-</span><span class="nb">list</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">-</span><span class="n">kc</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">kc</span><span class="o">.</span><span class="n">list</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">sf</span> <span class="o">|</span> <span class="o">--</span><span class="n">skip</span><span class="o">-</span><span class="n">flush</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">t</span> <span class="o">&lt;</span><span class="n">tag</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">tag</span> <span class="o">&lt;</span><span class="n">tag</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspaces</span><span class="o">...&gt;</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">cf</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">column</span><span class="o">-</span><span class="n">family</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">table</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">table</span> <span class="n">name</span> <span class="p">(</span><span class="n">you</span> <span class="n">must</span> <span class="n">specify</span> <span class="n">one</span> <span class="ow">and</span> <span class="n">only</span> <span class="n">one</span> <span class="n">keyspace</span> <span class="k">for</span> <span class="n">using</span>
+            <span class="n">this</span> <span class="n">option</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">kt</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">kt</span><span class="o">-</span><span class="nb">list</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">-</span><span class="n">kc</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">kc</span><span class="o">.</span><span class="n">list</span> <span class="o">&lt;</span><span class="n">ktlist</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">Keyspace</span><span class="o">.</span><span class="n">table</span> <span class="n">to</span> <span class="n">take</span> <span class="n">snapshot</span><span class="o">.</span><span class="p">(</span><span class="n">you</span> <span class="n">must</span> <span class="ow">not</span> <span class="n">specify</span>
+            <span class="n">only</span> <span class="n">keyspace</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">sf</span><span class="p">,</span> <span class="o">--</span><span class="n">skip</span><span class="o">-</span><span class="n">flush</span>
+            <span class="n">Do</span> <span class="ow">not</span> <span class="n">flush</span> <span class="n">memtables</span> <span class="n">before</span> <span class="n">snapshotting</span> <span class="p">(</span><span class="n">snapshot</span> <span class="n">will</span> <span class="ow">not</span>
+            <span class="n">contain</span> <span class="n">unflushed</span> <span class="n">data</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">t</span> <span class="o">&lt;</span><span class="n">tag</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">tag</span> <span class="o">&lt;</span><span class="n">tag</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">name</span> <span class="n">of</span> <span class="n">the</span> <span class="n">snapshot</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspaces</span><span class="o">...&gt;</span><span class="p">]</span>
+            <span class="n">List</span> <span class="n">of</span> <span class="n">keyspaces</span><span class="o">.</span> <span class="n">By</span> <span class="n">default</span><span class="p">,</span> <span class="nb">all</span> <span class="n">keyspaces</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/status.html b/src/doc/4.0-rc1/tools/nodetool/status.html
new file mode 100644
index 0000000..e9463f1
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/status.html
@@ -0,0 +1,137 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "status"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="status">
+<span id="nodetool-status"></span><h1>status<a class="headerlink" href="#status" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">status</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">cluster</span> <span class="n">information</span> <span class="p">(</span><span class="n">state</span><span class="p">,</span> <span class="n">load</span><span class="p">,</span> <span class="n">IDs</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">status</span> <span class="p">[(</span><span class="o">-</span><span class="n">r</span> <span class="o">|</span> <span class="o">--</span><span class="n">resolve</span><span class="o">-</span><span class="n">ip</span><span class="p">)]</span>
+                <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">r</span><span class="p">,</span> <span class="o">--</span><span class="n">resolve</span><span class="o">-</span><span class="n">ip</span>
+            <span class="n">Show</span> <span class="n">node</span> <span class="n">domain</span> <span class="n">names</span> <span class="n">instead</span> <span class="n">of</span> <span class="n">IPs</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">name</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/statusautocompaction.html b/src/doc/4.0-rc1/tools/nodetool/statusautocompaction.html
new file mode 100644
index 0000000..eb04876
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/statusautocompaction.html
@@ -0,0 +1,138 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "statusautocompaction"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="statusautocompaction">
+<span id="nodetool-statusautocompaction"></span><h1>statusautocompaction<a class="headerlink" href="#statusautocompaction" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">statusautocompaction</span> <span class="o">-</span> <span class="n">status</span> <span class="n">of</span> <span class="n">autocompaction</span> <span class="n">of</span> <span class="n">the</span> <span class="n">given</span>
+        <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">statusautocompaction</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">a</span> <span class="o">|</span> <span class="o">--</span><span class="nb">all</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">a</span><span class="p">,</span> <span class="o">--</span><span class="nb">all</span>
+            <span class="n">Show</span> <span class="n">auto</span> <span class="n">compaction</span> <span class="n">status</span> <span class="k">for</span> <span class="n">each</span> <span class="n">keyspace</span><span class="o">/</span><span class="n">table</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/statusbackup.html b/src/doc/4.0-rc1/tools/nodetool/statusbackup.html
new file mode 100644
index 0000000..ae32f24
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/statusbackup.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "statusbackup"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="statusbackup">
+<span id="nodetool-statusbackup"></span><h1>statusbackup<a class="headerlink" href="#statusbackup" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">statusbackup</span> <span class="o">-</span> <span class="n">Status</span> <span class="n">of</span> <span class="n">incremental</span> <span class="n">backup</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">statusbackup</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/statusbinary.html b/src/doc/4.0-rc1/tools/nodetool/statusbinary.html
new file mode 100644
index 0000000..f46e70a
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/statusbinary.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "statusbinary"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="statusbinary">
+<span id="nodetool-statusbinary"></span><h1>statusbinary<a class="headerlink" href="#statusbinary" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">statusbinary</span> <span class="o">-</span> <span class="n">Status</span> <span class="n">of</span> <span class="n">native</span> <span class="n">transport</span> <span class="p">(</span><span class="n">binary</span> <span class="n">protocol</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">statusbinary</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/statusgossip.html b/src/doc/4.0-rc1/tools/nodetool/statusgossip.html
new file mode 100644
index 0000000..4dca4ff
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/statusgossip.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "statusgossip"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="statusgossip">
+<span id="nodetool-statusgossip"></span><h1>statusgossip<a class="headerlink" href="#statusgossip" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">statusgossip</span> <span class="o">-</span> <span class="n">Status</span> <span class="n">of</span> <span class="n">gossip</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">statusgossip</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/statushandoff.html b/src/doc/4.0-rc1/tools/nodetool/statushandoff.html
new file mode 100644
index 0000000..fdc9c92
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/statushandoff.html
@@ -0,0 +1,126 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "statushandoff"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="statushandoff">
+<span id="nodetool-statushandoff"></span><h1>statushandoff<a class="headerlink" href="#statushandoff" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">statushandoff</span> <span class="o">-</span> <span class="n">Status</span> <span class="n">of</span> <span class="n">storing</span> <span class="n">future</span> <span class="n">hints</span> <span class="n">on</span> <span class="n">the</span> <span class="n">current</span>
+        <span class="n">node</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">statushandoff</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/stop.html b/src/doc/4.0-rc1/tools/nodetool/stop.html
new file mode 100644
index 0000000..1bb62ae
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/stop.html
@@ -0,0 +1,142 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "stop"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="stop">
+<span id="nodetool-stop"></span><h1>stop<a class="headerlink" href="#stop" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">stop</span> <span class="o">-</span> <span class="n">Stop</span> <span class="n">compaction</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">stop</span>
+                <span class="p">[(</span><span class="o">-</span><span class="nb">id</span> <span class="o">&lt;</span><span class="n">compactionId</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">compaction</span><span class="o">-</span><span class="nb">id</span> <span class="o">&lt;</span><span class="n">compactionId</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">compaction</span>
+                <span class="nb">type</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="nb">id</span> <span class="o">&lt;</span><span class="n">compactionId</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">compaction</span><span class="o">-</span><span class="nb">id</span> <span class="o">&lt;</span><span class="n">compactionId</span><span class="o">&gt;</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="nb">id</span> <span class="n">to</span> <span class="n">stop</span> <span class="n">a</span> <span class="n">compaction</span> <span class="n">by</span> <span class="n">the</span> <span class="n">specified</span> <span class="nb">id</span><span class="o">.</span> <span class="n">Ids</span> <span class="n">can</span> <span class="n">be</span> <span class="n">found</span>
+            <span class="ow">in</span> <span class="n">the</span> <span class="n">transaction</span> <span class="n">log</span> <span class="n">files</span> <span class="n">whose</span> <span class="n">name</span> <span class="n">starts</span> <span class="k">with</span> <span class="n">compaction_</span><span class="p">,</span>
+            <span class="n">located</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">table</span> <span class="n">transactions</span> <span class="n">folder</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">compaction</span> <span class="nb">type</span><span class="o">&gt;</span>
+            <span class="n">Supported</span> <span class="n">types</span> <span class="n">are</span> <span class="n">COMPACTION</span><span class="p">,</span> <span class="n">VALIDATION</span><span class="p">,</span> <span class="n">CLEANUP</span><span class="p">,</span> <span class="n">SCRUB</span><span class="p">,</span>
+            <span class="n">UPGRADE_SSTABLES</span><span class="p">,</span> <span class="n">INDEX_BUILD</span><span class="p">,</span> <span class="n">TOMBSTONE_COMPACTION</span><span class="p">,</span> <span class="n">ANTICOMPACTION</span><span class="p">,</span>
+            <span class="n">VERIFY</span><span class="p">,</span> <span class="n">VIEW_BUILD</span><span class="p">,</span> <span class="n">INDEX_SUMMARY</span><span class="p">,</span> <span class="n">RELOCATE</span><span class="p">,</span> <span class="n">GARBAGE_COLLECT</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/stopdaemon.html b/src/doc/4.0-rc1/tools/nodetool/stopdaemon.html
new file mode 100644
index 0000000..dbd2821
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/stopdaemon.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "stopdaemon"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="stopdaemon">
+<span id="nodetool-stopdaemon"></span><h1>stopdaemon<a class="headerlink" href="#stopdaemon" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">stopdaemon</span> <span class="o">-</span> <span class="n">Stop</span> <span class="n">cassandra</span> <span class="n">daemon</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">stopdaemon</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/tablehistograms.html b/src/doc/4.0-rc1/tools/nodetool/tablehistograms.html
new file mode 100644
index 0000000..2a04a58
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/tablehistograms.html
@@ -0,0 +1,134 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "tablehistograms"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="tablehistograms">
+<span id="nodetool-tablehistograms"></span><h1>tablehistograms<a class="headerlink" href="#tablehistograms" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">tablehistograms</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">statistic</span> <span class="n">histograms</span> <span class="k">for</span> <span class="n">a</span> <span class="n">given</span> <span class="n">table</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">tablehistograms</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">.</span><span class="n">table</span><span class="o">&gt;</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">table</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">.</span><span class="n">table</span><span class="o">&gt;</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">table</span> <span class="n">name</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/tablestats.html b/src/doc/4.0-rc1/tools/nodetool/tablestats.html
new file mode 100644
index 0000000..7959b3d
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/tablestats.html
@@ -0,0 +1,172 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "tablestats"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="tablestats">
+<span id="nodetool-tablestats"></span><h1>tablestats<a class="headerlink" href="#tablestats" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">tablestats</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">statistics</span> <span class="n">on</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">tablestats</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">F</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="nb">format</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">H</span> <span class="o">|</span> <span class="o">--</span><span class="n">human</span><span class="o">-</span><span class="n">readable</span><span class="p">)]</span> <span class="p">[</span><span class="o">-</span><span class="n">i</span><span class="p">]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">l</span> <span class="o">|</span> <span class="o">--</span><span class="n">sstable</span><span class="o">-</span><span class="n">location</span><span class="o">-</span><span class="n">check</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">sort_key</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">sort</span> <span class="o">&lt;</span><span class="n">sort_key</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">t</span> <span class="o">&lt;</span><span class="n">top</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">top</span> <span class="o">&lt;</span><span class="n">top</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">.</span><span class="n">table</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">F</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="nb">format</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span>
+            <span class="n">Output</span> <span class="nb">format</span> <span class="p">(</span><span class="n">json</span><span class="p">,</span> <span class="n">yaml</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">H</span><span class="p">,</span> <span class="o">--</span><span class="n">human</span><span class="o">-</span><span class="n">readable</span>
+            <span class="n">Display</span> <span class="nb">bytes</span> <span class="ow">in</span> <span class="n">human</span> <span class="n">readable</span> <span class="n">form</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">e</span><span class="o">.</span> <span class="n">KiB</span><span class="p">,</span> <span class="n">MiB</span><span class="p">,</span> <span class="n">GiB</span><span class="p">,</span> <span class="n">TiB</span>
+
+        <span class="o">-</span><span class="n">i</span>
+            <span class="n">Ignore</span> <span class="n">the</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">tables</span> <span class="ow">and</span> <span class="n">display</span> <span class="n">the</span> <span class="n">remaining</span> <span class="n">tables</span>
+
+        <span class="o">-</span><span class="n">l</span><span class="p">,</span> <span class="o">--</span><span class="n">sstable</span><span class="o">-</span><span class="n">location</span><span class="o">-</span><span class="n">check</span>
+            <span class="n">Check</span> <span class="n">whether</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">the</span> <span class="n">SSTables</span> <span class="n">are</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">correct</span> <span class="n">location</span><span class="o">.</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">sort_key</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">sort</span> <span class="o">&lt;</span><span class="n">sort_key</span><span class="o">&gt;</span>
+            <span class="n">Sort</span> <span class="n">tables</span> <span class="n">by</span> <span class="n">specified</span> <span class="n">sort</span> <span class="n">key</span>
+            <span class="p">(</span><span class="n">average_live_cells_per_slice_last_five_minutes</span><span class="p">,</span>
+            <span class="n">average_tombstones_per_slice_last_five_minutes</span><span class="p">,</span>
+            <span class="n">bloom_filter_false_positives</span><span class="p">,</span> <span class="n">bloom_filter_false_ratio</span><span class="p">,</span>
+            <span class="n">bloom_filter_off_heap_memory_used</span><span class="p">,</span> <span class="n">bloom_filter_space_used</span><span class="p">,</span>
+            <span class="n">compacted_partition_maximum_bytes</span><span class="p">,</span> <span class="n">compacted_partition_mean_bytes</span><span class="p">,</span>
+            <span class="n">compacted_partition_minimum_bytes</span><span class="p">,</span>
+            <span class="n">compression_metadata_off_heap_memory_used</span><span class="p">,</span> <span class="n">dropped_mutations</span><span class="p">,</span>
+            <span class="n">full_name</span><span class="p">,</span> <span class="n">index_summary_off_heap_memory_used</span><span class="p">,</span> <span class="n">local_read_count</span><span class="p">,</span>
+            <span class="n">local_read_latency_ms</span><span class="p">,</span> <span class="n">local_write_latency_ms</span><span class="p">,</span>
+            <span class="n">maximum_live_cells_per_slice_last_five_minutes</span><span class="p">,</span>
+            <span class="n">maximum_tombstones_per_slice_last_five_minutes</span><span class="p">,</span> <span class="n">memtable_cell_count</span><span class="p">,</span>
+            <span class="n">memtable_data_size</span><span class="p">,</span> <span class="n">memtable_off_heap_memory_used</span><span class="p">,</span>
+            <span class="n">memtable_switch_count</span><span class="p">,</span> <span class="n">number_of_partitions_estimate</span><span class="p">,</span>
+            <span class="n">off_heap_memory_used_total</span><span class="p">,</span> <span class="n">pending_flushes</span><span class="p">,</span> <span class="n">percent_repaired</span><span class="p">,</span>
+            <span class="n">read_latency</span><span class="p">,</span> <span class="n">reads</span><span class="p">,</span> <span class="n">space_used_by_snapshots_total</span><span class="p">,</span> <span class="n">space_used_live</span><span class="p">,</span>
+            <span class="n">space_used_total</span><span class="p">,</span> <span class="n">sstable_compression_ratio</span><span class="p">,</span> <span class="n">sstable_count</span><span class="p">,</span>
+            <span class="n">table_name</span><span class="p">,</span> <span class="n">write_latency</span><span class="p">,</span> <span class="n">writes</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">t</span> <span class="o">&lt;</span><span class="n">top</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">top</span> <span class="o">&lt;</span><span class="n">top</span><span class="o">&gt;</span>
+            <span class="n">Show</span> <span class="n">only</span> <span class="n">the</span> <span class="n">top</span> <span class="n">K</span> <span class="n">tables</span> <span class="k">for</span> <span class="n">the</span> <span class="n">sort</span> <span class="n">key</span> <span class="p">(</span><span class="n">specify</span> <span class="n">the</span> <span class="n">number</span> <span class="n">K</span> <span class="n">of</span>
+            <span class="n">tables</span> <span class="n">to</span> <span class="n">be</span> <span class="n">shown</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">.</span><span class="n">table</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">List</span> <span class="n">of</span> <span class="n">tables</span> <span class="p">(</span><span class="ow">or</span> <span class="n">keyspace</span><span class="p">)</span> <span class="n">names</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/toppartitions.html b/src/doc/4.0-rc1/tools/nodetool/toppartitions.html
new file mode 100644
index 0000000..fc8d98d
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/toppartitions.html
@@ -0,0 +1,143 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "toppartitions"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="toppartitions">
+<span id="nodetool-toppartitions"></span><h1>toppartitions<a class="headerlink" href="#toppartitions" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">toppartitions</span> <span class="o">-</span> <span class="n">Sample</span> <span class="ow">and</span> <span class="nb">print</span> <span class="n">the</span> <span class="n">most</span> <span class="n">active</span> <span class="n">partitions</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">toppartitions</span> <span class="p">[</span><span class="o">-</span><span class="n">a</span> <span class="o">&lt;</span><span class="n">samplers</span><span class="o">&gt;</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">-</span><span class="n">k</span> <span class="o">&lt;</span><span class="n">topCount</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">capacity</span><span class="o">&gt;</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">cfname</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">duration</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">a</span> <span class="o">&lt;</span><span class="n">samplers</span><span class="o">&gt;</span>
+            <span class="n">Comma</span> <span class="n">separated</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">samplers</span> <span class="n">to</span> <span class="n">use</span> <span class="p">(</span><span class="n">Default</span><span class="p">:</span> <span class="nb">all</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">k</span> <span class="o">&lt;</span><span class="n">topCount</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">the</span> <span class="n">top</span> <span class="n">samples</span> <span class="n">to</span> <span class="nb">list</span> <span class="p">(</span><span class="n">Default</span><span class="p">:</span> <span class="mi">10</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">s</span> <span class="o">&lt;</span><span class="n">capacity</span><span class="o">&gt;</span>
+            <span class="n">Capacity</span> <span class="n">of</span> <span class="n">the</span> <span class="n">sampler</span><span class="p">,</span> <span class="n">higher</span> <span class="k">for</span> <span class="n">more</span> <span class="n">accuracy</span> <span class="p">(</span><span class="n">Default</span><span class="p">:</span> <span class="mi">256</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">cfname</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">duration</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">column</span> <span class="n">family</span> <span class="n">name</span><span class="p">,</span> <span class="ow">and</span> <span class="n">duration</span> <span class="ow">in</span> <span class="n">milliseconds</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/tpstats.html b/src/doc/4.0-rc1/tools/nodetool/tpstats.html
new file mode 100644
index 0000000..e661bfc
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/tpstats.html
@@ -0,0 +1,129 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "tpstats"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="tpstats">
+<span id="nodetool-tpstats"></span><h1>tpstats<a class="headerlink" href="#tpstats" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">tpstats</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">usage</span> <span class="n">statistics</span> <span class="n">of</span> <span class="n">thread</span> <span class="n">pools</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">tpstats</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">F</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="nb">format</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span><span class="p">)]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">F</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="nb">format</span> <span class="o">&lt;</span><span class="nb">format</span><span class="o">&gt;</span>
+            <span class="n">Output</span> <span class="nb">format</span> <span class="p">(</span><span class="n">json</span><span class="p">,</span> <span class="n">yaml</span><span class="p">)</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/truncatehints.html b/src/doc/4.0-rc1/tools/nodetool/truncatehints.html
new file mode 100644
index 0000000..7b8ec5a
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/truncatehints.html
@@ -0,0 +1,136 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "truncatehints"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="truncatehints">
+<span id="nodetool-truncatehints"></span><h1>truncatehints<a class="headerlink" href="#truncatehints" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">truncatehints</span> <span class="o">-</span> <span class="n">Truncate</span> <span class="nb">all</span> <span class="n">hints</span> <span class="n">on</span> <span class="n">the</span> <span class="n">local</span> <span class="n">node</span><span class="p">,</span> <span class="ow">or</span>
+        <span class="n">truncate</span> <span class="n">hints</span> <span class="k">for</span> <span class="n">the</span> <span class="n">endpoint</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="n">specified</span><span class="o">.</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">truncatehints</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="n">endpoint</span>
+                <span class="o">...</span> <span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="n">endpoint</span> <span class="o">...</span> <span class="p">]</span>
+            <span class="n">Endpoint</span> <span class="n">address</span><span class="p">(</span><span class="n">es</span><span class="p">)</span> <span class="n">to</span> <span class="n">delete</span> <span class="n">hints</span> <span class="k">for</span><span class="p">,</span> <span class="n">either</span> <span class="n">ip</span> <span class="n">address</span>
+            <span class="p">(</span><span class="s2">&quot;127.0.0.1&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">hostname</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/upgradesstables.html b/src/doc/4.0-rc1/tools/nodetool/upgradesstables.html
new file mode 100644
index 0000000..ac1c21f
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/upgradesstables.html
@@ -0,0 +1,145 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "upgradesstables"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="upgradesstables">
+<span id="nodetool-upgradesstables"></span><h1>upgradesstables<a class="headerlink" href="#upgradesstables" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">upgradesstables</span> <span class="o">-</span> <span class="n">Rewrite</span> <span class="n">sstables</span> <span class="p">(</span><span class="k">for</span> <span class="n">the</span> <span class="n">requested</span> <span class="n">tables</span><span class="p">)</span>
+        <span class="n">that</span> <span class="n">are</span> <span class="ow">not</span> <span class="n">on</span> <span class="n">the</span> <span class="n">current</span> <span class="n">version</span> <span class="p">(</span><span class="n">thus</span> <span class="n">upgrading</span> <span class="n">them</span> <span class="n">to</span> <span class="n">said</span> <span class="n">current</span>
+        <span class="n">version</span><span class="p">)</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">upgradesstables</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">a</span> <span class="o">|</span> <span class="o">--</span><span class="n">include</span><span class="o">-</span><span class="nb">all</span><span class="o">-</span><span class="n">sstables</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">a</span><span class="p">,</span> <span class="o">--</span><span class="n">include</span><span class="o">-</span><span class="nb">all</span><span class="o">-</span><span class="n">sstables</span>
+            <span class="n">Use</span> <span class="o">-</span><span class="n">a</span> <span class="n">to</span> <span class="n">include</span> <span class="nb">all</span> <span class="n">sstables</span><span class="p">,</span> <span class="n">even</span> <span class="n">those</span> <span class="n">already</span> <span class="n">on</span> <span class="n">the</span> <span class="n">current</span>
+            <span class="n">version</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">j</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">jobs</span> <span class="o">&lt;</span><span class="n">jobs</span><span class="o">&gt;</span>
+            <span class="n">Number</span> <span class="n">of</span> <span class="n">sstables</span> <span class="n">to</span> <span class="n">upgrade</span> <span class="n">simultanously</span><span class="p">,</span> <span class="nb">set</span> <span class="n">to</span> <span class="mi">0</span> <span class="n">to</span> <span class="n">use</span> <span class="nb">all</span>
+            <span class="n">available</span> <span class="n">compaction</span> <span class="n">threads</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/verify.html b/src/doc/4.0-rc1/tools/nodetool/verify.html
new file mode 100644
index 0000000..993bd46
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/verify.html
@@ -0,0 +1,154 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "verify"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="verify">
+<span id="nodetool-verify"></span><h1>verify<a class="headerlink" href="#verify" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">verify</span> <span class="o">-</span> <span class="n">Verify</span> <span class="p">(</span><span class="n">check</span> <span class="n">data</span> <span class="n">checksum</span> <span class="k">for</span><span class="p">)</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">more</span> <span class="n">tables</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">verify</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">c</span> <span class="o">|</span> <span class="o">--</span><span class="n">check</span><span class="o">-</span><span class="n">version</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">d</span> <span class="o">|</span> <span class="o">--</span><span class="n">dfp</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">e</span> <span class="o">|</span> <span class="o">--</span><span class="n">extended</span><span class="o">-</span><span class="n">verify</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">q</span> <span class="o">|</span> <span class="o">--</span><span class="n">quick</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">r</span> <span class="o">|</span> <span class="o">--</span><span class="n">rsc</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">t</span> <span class="o">|</span> <span class="o">--</span><span class="n">check</span><span class="o">-</span><span class="n">tokens</span><span class="p">)]</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span>
+                <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">c</span><span class="p">,</span> <span class="o">--</span><span class="n">check</span><span class="o">-</span><span class="n">version</span>
+            <span class="n">Also</span> <span class="n">check</span> <span class="n">that</span> <span class="nb">all</span> <span class="n">sstables</span> <span class="n">are</span> <span class="n">the</span> <span class="n">latest</span> <span class="n">version</span>
+
+        <span class="o">-</span><span class="n">d</span><span class="p">,</span> <span class="o">--</span><span class="n">dfp</span>
+            <span class="n">Invoke</span> <span class="n">the</span> <span class="n">disk</span> <span class="n">failure</span> <span class="n">policy</span> <span class="k">if</span> <span class="n">a</span> <span class="n">corrupt</span> <span class="n">sstable</span> <span class="ow">is</span> <span class="n">found</span>
+
+        <span class="o">-</span><span class="n">e</span><span class="p">,</span> <span class="o">--</span><span class="n">extended</span><span class="o">-</span><span class="n">verify</span>
+            <span class="n">Verify</span> <span class="n">each</span> <span class="n">cell</span> <span class="n">data</span><span class="p">,</span> <span class="n">beyond</span> <span class="n">simply</span> <span class="n">checking</span> <span class="n">sstable</span> <span class="n">checksums</span>
+
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">q</span><span class="p">,</span> <span class="o">--</span><span class="n">quick</span>
+            <span class="n">Do</span> <span class="n">a</span> <span class="n">quick</span> <span class="n">check</span> <span class="o">-</span> <span class="n">avoid</span> <span class="n">reading</span> <span class="nb">all</span> <span class="n">data</span> <span class="n">to</span> <span class="n">verify</span> <span class="n">checksums</span>
+
+        <span class="o">-</span><span class="n">r</span><span class="p">,</span> <span class="o">--</span><span class="n">rsc</span>
+            <span class="n">Mutate</span> <span class="n">the</span> <span class="n">repair</span> <span class="n">status</span> <span class="n">on</span> <span class="n">corrupt</span> <span class="n">sstables</span>
+
+        <span class="o">-</span><span class="n">t</span><span class="p">,</span> <span class="o">--</span><span class="n">check</span><span class="o">-</span><span class="n">tokens</span>
+            <span class="n">Verify</span> <span class="n">that</span> <span class="nb">all</span> <span class="n">tokens</span> <span class="ow">in</span> <span class="n">sstables</span> <span class="n">are</span> <span class="n">owned</span> <span class="n">by</span> <span class="n">this</span> <span class="n">node</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="p">[</span><span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">tables</span><span class="o">&gt;...</span><span class="p">]</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="n">followed</span> <span class="n">by</span> <span class="n">one</span> <span class="ow">or</span> <span class="n">many</span> <span class="n">tables</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/version.html b/src/doc/4.0-rc1/tools/nodetool/version.html
new file mode 100644
index 0000000..16274cf
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/version.html
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "version"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="version">
+<span id="nodetool-version"></span><h1>version<a class="headerlink" href="#version" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">version</span> <span class="o">-</span> <span class="n">Print</span> <span class="n">cassandra</span> <span class="n">version</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">version</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/nodetool/viewbuildstatus.html b/src/doc/4.0-rc1/tools/nodetool/viewbuildstatus.html
new file mode 100644
index 0000000..679bcc1
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/nodetool/viewbuildstatus.html
@@ -0,0 +1,134 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "viewbuildstatus"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="viewbuildstatus">
+<span id="nodetool-viewbuildstatus"></span><h1>viewbuildstatus<a class="headerlink" href="#viewbuildstatus" title="Permalink to this headline">¶</a></h1>
+</div>
+<div class="section" id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h1>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span>
+        <span class="n">nodetool</span> <span class="n">viewbuildstatus</span> <span class="o">-</span> <span class="n">Show</span> <span class="n">progress</span> <span class="n">of</span> <span class="n">a</span> <span class="n">materialized</span> <span class="n">view</span> <span class="n">build</span>
+
+<span class="n">SYNOPSIS</span>
+        <span class="n">nodetool</span> <span class="p">[(</span><span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pp</span> <span class="o">|</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span><span class="p">)]</span> <span class="p">[(</span><span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">)]</span>
+                <span class="p">[(</span><span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">)]</span> <span class="n">viewbuildstatus</span> <span class="p">[</span><span class="o">--</span><span class="p">]</span>
+                <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">view</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">.</span><span class="n">view</span><span class="o">&gt;</span>
+
+<span class="n">OPTIONS</span>
+        <span class="o">-</span><span class="n">h</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">host</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span>
+            <span class="n">Node</span> <span class="n">hostname</span> <span class="ow">or</span> <span class="n">ip</span> <span class="n">address</span>
+
+        <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">port</span> <span class="o">&lt;</span><span class="n">port</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pp</span><span class="p">,</span> <span class="o">--</span><span class="nb">print</span><span class="o">-</span><span class="n">port</span>
+            <span class="n">Operate</span> <span class="ow">in</span> <span class="mf">4.0</span> <span class="n">mode</span> <span class="k">with</span> <span class="n">hosts</span> <span class="n">disambiguated</span> <span class="n">by</span> <span class="n">port</span> <span class="n">number</span>
+
+        <span class="o">-</span><span class="n">pw</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span> <span class="o">&lt;</span><span class="n">password</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">password</span>
+
+        <span class="o">-</span><span class="n">pwf</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">password</span><span class="o">-</span><span class="n">file</span> <span class="o">&lt;</span><span class="n">passwordFilePath</span><span class="o">&gt;</span>
+            <span class="n">Path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JMX</span> <span class="n">password</span> <span class="n">file</span>
+
+        <span class="o">-</span><span class="n">u</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">--</span><span class="n">username</span> <span class="o">&lt;</span><span class="n">username</span><span class="o">&gt;</span>
+            <span class="n">Remote</span> <span class="n">jmx</span> <span class="n">agent</span> <span class="n">username</span>
+
+        <span class="o">--</span>
+            <span class="n">This</span> <span class="n">option</span> <span class="n">can</span> <span class="n">be</span> <span class="n">used</span> <span class="n">to</span> <span class="n">separate</span> <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span> <span class="kn">from</span> <span class="nn">the</span>
+            <span class="nb">list</span> <span class="n">of</span> <span class="n">argument</span><span class="p">,</span> <span class="p">(</span><span class="n">useful</span> <span class="n">when</span> <span class="n">arguments</span> <span class="n">might</span> <span class="n">be</span> <span class="n">mistaken</span> <span class="k">for</span>
+            <span class="n">command</span><span class="o">-</span><span class="n">line</span> <span class="n">options</span>
+
+        <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">view</span><span class="o">&gt;</span> <span class="o">|</span> <span class="o">&lt;</span><span class="n">keyspace</span><span class="o">.</span><span class="n">view</span><span class="o">&gt;</span>
+            <span class="n">The</span> <span class="n">keyspace</span> <span class="ow">and</span> <span class="n">view</span> <span class="n">name</span>
+
+
+</pre></div>
+</div>
+</div>
+
+
+
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/sstable/index.html b/src/doc/4.0-rc1/tools/sstable/index.html
new file mode 100644
index 0000000..6d569be
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/sstable/index.html
@@ -0,0 +1,230 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-title: "SSTable Tools"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="Cassandra Tools" href="../index.html"/>
+      <link rel="next" title="sstabledump" href="sstabledump.html"/>
+      <link rel="prev" title="Nodetool" href="../nodetool/nodetool.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">SSTable Tools</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="sstabledump.html">sstabledump</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableexpiredblockers.html">sstableexpiredblockers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablelevelreset.html">sstablelevelreset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableloader.html">sstableloader</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablemetadata.html">sstablemetadata</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableofflinerelevel.html">sstableofflinerelevel</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablerepairedset.html">sstablerepairedset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablescrub.html">sstablescrub</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablesplit.html">sstablesplit</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableupgrade.html">sstableupgrade</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableutil.html">sstableutil</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableverify.html">sstableverify</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sstable-tools">
+<h1>SSTable Tools<a class="headerlink" href="#sstable-tools" title="Permalink to this headline">¶</a></h1>
+<p>This section describes the functionality of the various sstable tools.</p>
+<p>Cassandra must be stopped before these tools are executed, or unexpected results will occur. Note: the scripts do not verify that Cassandra is stopped.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="sstabledump.html">sstabledump</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sstabledump.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstabledump.html#dump-entire-table">Dump entire table</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstabledump.html#dump-table-in-a-more-manageable-format">Dump table in a more manageable format</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstabledump.html#dump-only-keys">Dump only keys</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstabledump.html#dump-row-for-a-single-key">Dump row for a single key</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstabledump.html#exclude-a-key-or-keys-in-dump-of-rows">Exclude a key or keys in dump of rows</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstabledump.html#display-raw-timestamps">Display raw timestamps</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstabledump.html#display-internal-structure-in-output">Display internal structure in output</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sstableexpiredblockers.html">sstableexpiredblockers</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sstableexpiredblockers.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableexpiredblockers.html#output-blocked-sstables">Output blocked sstables</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sstablelevelreset.html">sstablelevelreset</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sstablelevelreset.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablelevelreset.html#table-not-found">Table not found</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablelevelreset.html#table-has-no-sstables">Table has no sstables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablelevelreset.html#table-already-at-level-0">Table already at level 0</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablelevelreset.html#table-levels-reduced-to-0">Table levels reduced to 0</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sstableloader.html">sstableloader</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sstableloader.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableloader.html#load-sstables-from-a-snapshot">Load sstables from a Snapshot</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableloader.html#use-a-config-file-for-ssl-clusters">Use a Config File for SSL Clusters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableloader.html#hide-progress-output">Hide Progress Output</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableloader.html#get-more-detail">Get More Detail</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableloader.html#throttling-load">Throttling Load</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableloader.html#speeding-up-load">Speeding up Load</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sstablemetadata.html">sstablemetadata</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sstablemetadata.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablemetadata.html#print-all-the-metadata">Print all the metadata</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablemetadata.html#specify-gc-grace-seconds">Specify gc grace seconds</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablemetadata.html#explanation-of-each-value-printed-above">Explanation of each value printed above</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sstableofflinerelevel.html">sstableofflinerelevel</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sstableofflinerelevel.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableofflinerelevel.html#doing-a-dry-run">Doing a dry run</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableofflinerelevel.html#running-a-relevel">Running a relevel</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableofflinerelevel.html#keyspace-or-table-not-found">Keyspace or table not found</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sstablerepairedset.html">sstablerepairedset</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sstablerepairedset.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablerepairedset.html#set-a-lot-of-sstables-to-unrepaired-status">Set a lot of sstables to unrepaired status</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablerepairedset.html#set-one-to-many-sstables-to-repaired-status">Set one to many sstables to repaired status</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablerepairedset.html#print-metadata-showing-repaired-status">Print metadata showing repaired status</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablerepairedset.html#using-command-in-a-script">Using command in a script</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sstablescrub.html">sstablescrub</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sstablescrub.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablescrub.html#basic-scrub">Basic Scrub</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablescrub.html#scrub-without-validation">Scrub without Validation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablescrub.html#skip-corrupted-counter-tables">Skip Corrupted Counter Tables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablescrub.html#dealing-with-overflow-dates">Dealing with Overflow Dates</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablescrub.html#manifest-check">Manifest Check</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sstablesplit.html">sstablesplit</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sstablesplit.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablesplit.html#split-a-file">Split a File</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablesplit.html#split-multiple-files">Split Multiple Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablesplit.html#attempt-to-split-a-small-file">Attempt to Split a Small File</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablesplit.html#split-a-file-into-specified-size">Split a File into Specified Size</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstablesplit.html#split-without-snapshot">Split Without Snapshot</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sstableupgrade.html">sstableupgrade</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sstableupgrade.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableupgrade.html#rewrite-tables-to-the-current-cassandra-version">Rewrite tables to the current Cassandra version</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableupgrade.html#rewrite-tables-to-the-current-cassandra-version-and-keep-tables-in-old-version">Rewrite tables to the current Cassandra version, and keep tables in old version</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableupgrade.html#rewrite-a-snapshot-to-the-current-cassandra-version">Rewrite a snapshot to the current Cassandra version</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sstableutil.html">sstableutil</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sstableutil.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableutil.html#list-all-sstables">List all sstables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableutil.html#list-only-temporary-sstables">List only temporary sstables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableutil.html#list-only-final-sstables">List only final sstables</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableutil.html#include-transaction-logs">Include transaction logs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableutil.html#clean-up-sstables">Clean up sstables</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sstableverify.html">sstableverify</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sstableverify.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableverify.html#basic-verification">Basic Verification</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableverify.html#extended-verification">Extended Verification</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sstableverify.html#corrupted-file">Corrupted File</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="sstabledump.html" class="btn btn-default pull-right " role="button" title="sstabledump" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../nodetool/nodetool.html" class="btn btn-default" role="button" title="Nodetool" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/sstable/sstabledump.html b/src/doc/4.0-rc1/tools/sstable/sstabledump.html
new file mode 100644
index 0000000..6f30411
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/sstable/sstabledump.html
@@ -0,0 +1,405 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-parent: "SSTable Tools"
+
+doc-title: "sstabledump"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="SSTable Tools" href="index.html"/>
+      <link rel="next" title="sstableexpiredblockers" href="sstableexpiredblockers.html"/>
+      <link rel="prev" title="SSTable Tools" href="index.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">SSTable Tools</a><ul class="current">
+<li class="toctree-l3 current"><a class="current reference internal" href="#">sstabledump</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableexpiredblockers.html">sstableexpiredblockers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablelevelreset.html">sstablelevelreset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableloader.html">sstableloader</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablemetadata.html">sstablemetadata</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableofflinerelevel.html">sstableofflinerelevel</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablerepairedset.html">sstablerepairedset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablescrub.html">sstablescrub</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablesplit.html">sstablesplit</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableupgrade.html">sstableupgrade</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableutil.html">sstableutil</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableverify.html">sstableverify</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sstabledump">
+<h1>sstabledump<a class="headerlink" href="#sstabledump" title="Permalink to this headline">¶</a></h1>
+<p>Dump contents of a given SSTable to standard output in JSON format.</p>
+<p>You must supply exactly one sstable.</p>
+<p>Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.</p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>sstabledump &lt;options&gt; &lt;sstable file path&gt;</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="30%" />
+<col width="70%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>-d</td>
+<td>CQL row per line internal representation</td>
+</tr>
+<tr class="row-even"><td>-e</td>
+<td>Enumerate partition keys only</td>
+</tr>
+<tr class="row-odd"><td>-k &lt;arg&gt;</td>
+<td>Partition key</td>
+</tr>
+<tr class="row-even"><td>-x &lt;arg&gt;</td>
+<td>Excluded partition key(s)</td>
+</tr>
+<tr class="row-odd"><td>-t</td>
+<td>Print raw timestamps instead of iso8601 date strings</td>
+</tr>
+<tr class="row-even"><td>-l</td>
+<td>Output each row as a separate JSON object</td>
+</tr>
+</tbody>
+</table>
+<p>If necessary, use sstableutil first to find out the sstables used by a table.</p>
+</div>
+<div class="section" id="dump-entire-table">
+<h2>Dump entire table<a class="headerlink" href="#dump-entire-table" title="Permalink to this headline">¶</a></h2>
+<p>Dump the entire table without any options.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstabledump</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">65</span><span class="n">c429e08c5a11e8939edf4f403979ef</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="o">&gt;</span> <span class="n">eventlog_dump_2018Jul26</span>
+
+<span class="n">cat</span> <span class="n">eventlog_dump_2018Jul26</span>
+<span class="p">[</span>
+  <span class="p">{</span>
+    <span class="s2">&quot;partition&quot;</span> <span class="p">:</span> <span class="p">{</span>
+      <span class="s2">&quot;key&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="s2">&quot;3578d7de-c60d-4599-aefb-3f22a07b2bc6&quot;</span> <span class="p">],</span>
+      <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">0</span>
+    <span class="p">},</span>
+    <span class="s2">&quot;rows&quot;</span> <span class="p">:</span> <span class="p">[</span>
+      <span class="p">{</span>
+        <span class="s2">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;row&quot;</span><span class="p">,</span>
+        <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">61</span><span class="p">,</span>
+        <span class="s2">&quot;liveness_info&quot;</span> <span class="p">:</span> <span class="p">{</span> <span class="s2">&quot;tstamp&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20T20:23:08.378711Z&quot;</span> <span class="p">},</span>
+        <span class="s2">&quot;cells&quot;</span> <span class="p">:</span> <span class="p">[</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;event&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;party&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;insertedtimestamp&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20 20:23:08.384Z&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;source&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;asdf&quot;</span> <span class="p">}</span>
+        <span class="p">]</span>
+      <span class="p">}</span>
+    <span class="p">]</span>
+  <span class="p">},</span>
+  <span class="p">{</span>
+    <span class="s2">&quot;partition&quot;</span> <span class="p">:</span> <span class="p">{</span>
+      <span class="s2">&quot;key&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="s2">&quot;d18250c0-84fc-4d40-b957-4248dc9d790e&quot;</span> <span class="p">],</span>
+      <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">62</span>
+    <span class="p">},</span>
+    <span class="s2">&quot;rows&quot;</span> <span class="p">:</span> <span class="p">[</span>
+      <span class="p">{</span>
+        <span class="s2">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;row&quot;</span><span class="p">,</span>
+        <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">123</span><span class="p">,</span>
+        <span class="s2">&quot;liveness_info&quot;</span> <span class="p">:</span> <span class="p">{</span> <span class="s2">&quot;tstamp&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20T20:23:07.783522Z&quot;</span> <span class="p">},</span>
+        <span class="s2">&quot;cells&quot;</span> <span class="p">:</span> <span class="p">[</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;event&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;party&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;insertedtimestamp&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20 20:23:07.789Z&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;source&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;asdf&quot;</span> <span class="p">}</span>
+        <span class="p">]</span>
+      <span class="p">}</span>
+    <span class="p">]</span>
+  <span class="p">},</span>
+  <span class="p">{</span>
+    <span class="s2">&quot;partition&quot;</span> <span class="p">:</span> <span class="p">{</span>
+      <span class="s2">&quot;key&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="s2">&quot;cf188983-d85b-48d6-9365-25005289beb2&quot;</span> <span class="p">],</span>
+      <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">124</span>
+    <span class="p">},</span>
+    <span class="s2">&quot;rows&quot;</span> <span class="p">:</span> <span class="p">[</span>
+      <span class="p">{</span>
+        <span class="s2">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;row&quot;</span><span class="p">,</span>
+        <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">182</span><span class="p">,</span>
+        <span class="s2">&quot;liveness_info&quot;</span> <span class="p">:</span> <span class="p">{</span> <span class="s2">&quot;tstamp&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20T20:22:27.028809Z&quot;</span> <span class="p">},</span>
+        <span class="s2">&quot;cells&quot;</span> <span class="p">:</span> <span class="p">[</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;event&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;party&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;insertedtimestamp&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20 20:22:27.055Z&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;source&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;asdf&quot;</span> <span class="p">}</span>
+        <span class="p">]</span>
+      <span class="p">}</span>
+    <span class="p">]</span>
+  <span class="p">}</span>
+<span class="p">]</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="dump-table-in-a-more-manageable-format">
+<h2>Dump table in a more manageable format<a class="headerlink" href="#dump-table-in-a-more-manageable-format" title="Permalink to this headline">¶</a></h2>
+<p>Use the -l option to dump each row as a separate JSON object. This will make the output easier to manipulate for large data sets. ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-13848">https://issues.apache.org/jira/browse/CASSANDRA-13848</a></p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstabledump</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">65</span><span class="n">c429e08c5a11e8939edf4f403979ef</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="o">-</span><span class="n">l</span> <span class="o">&gt;</span> <span class="n">eventlog_dump_2018Jul26_justlines</span>
+
+<span class="n">cat</span> <span class="n">eventlog_dump_2018Jul26_justlines</span>
+<span class="p">[</span>
+  <span class="p">{</span>
+    <span class="s2">&quot;partition&quot;</span> <span class="p">:</span> <span class="p">{</span>
+      <span class="s2">&quot;key&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="s2">&quot;3578d7de-c60d-4599-aefb-3f22a07b2bc6&quot;</span> <span class="p">],</span>
+      <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">0</span>
+    <span class="p">},</span>
+    <span class="s2">&quot;rows&quot;</span> <span class="p">:</span> <span class="p">[</span>
+      <span class="p">{</span>
+        <span class="s2">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;row&quot;</span><span class="p">,</span>
+        <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">61</span><span class="p">,</span>
+        <span class="s2">&quot;liveness_info&quot;</span> <span class="p">:</span> <span class="p">{</span> <span class="s2">&quot;tstamp&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20T20:23:08.378711Z&quot;</span> <span class="p">},</span>
+        <span class="s2">&quot;cells&quot;</span> <span class="p">:</span> <span class="p">[</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;event&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;party&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;insertedtimestamp&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20 20:23:08.384Z&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;source&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;asdf&quot;</span> <span class="p">}</span>
+        <span class="p">]</span>
+      <span class="p">}</span>
+    <span class="p">]</span>
+  <span class="p">},</span>
+  <span class="p">{</span>
+    <span class="s2">&quot;partition&quot;</span> <span class="p">:</span> <span class="p">{</span>
+      <span class="s2">&quot;key&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="s2">&quot;d18250c0-84fc-4d40-b957-4248dc9d790e&quot;</span> <span class="p">],</span>
+      <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">62</span>
+    <span class="p">},</span>
+    <span class="s2">&quot;rows&quot;</span> <span class="p">:</span> <span class="p">[</span>
+      <span class="p">{</span>
+        <span class="s2">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;row&quot;</span><span class="p">,</span>
+        <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">123</span><span class="p">,</span>
+        <span class="s2">&quot;liveness_info&quot;</span> <span class="p">:</span> <span class="p">{</span> <span class="s2">&quot;tstamp&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20T20:23:07.783522Z&quot;</span> <span class="p">},</span>
+        <span class="s2">&quot;cells&quot;</span> <span class="p">:</span> <span class="p">[</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;event&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;party&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;insertedtimestamp&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20 20:23:07.789Z&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;source&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;asdf&quot;</span> <span class="p">}</span>
+        <span class="p">]</span>
+      <span class="p">}</span>
+    <span class="p">]</span>
+  <span class="p">},</span>
+  <span class="p">{</span>
+    <span class="s2">&quot;partition&quot;</span> <span class="p">:</span> <span class="p">{</span>
+      <span class="s2">&quot;key&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="s2">&quot;cf188983-d85b-48d6-9365-25005289beb2&quot;</span> <span class="p">],</span>
+      <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">124</span>
+    <span class="p">},</span>
+    <span class="s2">&quot;rows&quot;</span> <span class="p">:</span> <span class="p">[</span>
+      <span class="p">{</span>
+        <span class="s2">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;row&quot;</span><span class="p">,</span>
+        <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">182</span><span class="p">,</span>
+        <span class="s2">&quot;liveness_info&quot;</span> <span class="p">:</span> <span class="p">{</span> <span class="s2">&quot;tstamp&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20T20:22:27.028809Z&quot;</span> <span class="p">},</span>
+        <span class="s2">&quot;cells&quot;</span> <span class="p">:</span> <span class="p">[</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;event&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;party&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;insertedtimestamp&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20 20:22:27.055Z&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;source&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;asdf&quot;</span> <span class="p">}</span>
+        <span class="p">]</span>
+      <span class="p">}</span>
+    <span class="p">]</span>
+  <span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="dump-only-keys">
+<h2>Dump only keys<a class="headerlink" href="#dump-only-keys" title="Permalink to this headline">¶</a></h2>
+<p>Dump only the keys by using the -e option.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstabledump</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">65</span><span class="n">c429e08c5a11e8939edf4f403979ef</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="o">-</span><span class="n">e</span> <span class="o">&gt;</span> <span class="n">eventlog_dump_2018Jul26_justkeys</span>
+
+<span class="n">cat</span> <span class="n">eventlog_dump_2018Jul26b</span>
+<span class="p">[</span> <span class="p">[</span> <span class="s2">&quot;3578d7de-c60d-4599-aefb-3f22a07b2bc6&quot;</span> <span class="p">],</span> <span class="p">[</span> <span class="s2">&quot;d18250c0-84fc-4d40-b957-4248dc9d790e&quot;</span> <span class="p">],</span> <span class="p">[</span> <span class="s2">&quot;cf188983-d85b-48d6-9365-25005289beb2&quot;</span> <span class="p">]</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="dump-row-for-a-single-key">
+<h2>Dump row for a single key<a class="headerlink" href="#dump-row-for-a-single-key" title="Permalink to this headline">¶</a></h2>
+<p>Dump a single key using the -k option.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstabledump</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">65</span><span class="n">c429e08c5a11e8939edf4f403979ef</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="o">-</span><span class="n">k</span> <span class="mi">3578</span><span class="n">d7de</span><span class="o">-</span><span class="n">c60d</span><span class="o">-</span><span class="mi">4599</span><span class="o">-</span><span class="n">aefb</span><span class="o">-</span><span class="mi">3</span><span class="n">f22a07b2bc6</span> <span class="o">&gt;</span> <span class="n">eventlog_dump_2018Jul26_singlekey</span>
+
+<span class="n">cat</span> <span class="n">eventlog_dump_2018Jul26_singlekey</span>
+<span class="p">[</span>
+  <span class="p">{</span>
+    <span class="s2">&quot;partition&quot;</span> <span class="p">:</span> <span class="p">{</span>
+      <span class="s2">&quot;key&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="s2">&quot;3578d7de-c60d-4599-aefb-3f22a07b2bc6&quot;</span> <span class="p">],</span>
+      <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">0</span>
+    <span class="p">},</span>
+    <span class="s2">&quot;rows&quot;</span> <span class="p">:</span> <span class="p">[</span>
+      <span class="p">{</span>
+        <span class="s2">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;row&quot;</span><span class="p">,</span>
+        <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">61</span><span class="p">,</span>
+        <span class="s2">&quot;liveness_info&quot;</span> <span class="p">:</span> <span class="p">{</span> <span class="s2">&quot;tstamp&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20T20:23:08.378711Z&quot;</span> <span class="p">},</span>
+        <span class="s2">&quot;cells&quot;</span> <span class="p">:</span> <span class="p">[</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;event&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;party&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;insertedtimestamp&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20 20:23:08.384Z&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;source&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;asdf&quot;</span> <span class="p">}</span>
+        <span class="p">]</span>
+      <span class="p">}</span>
+    <span class="p">]</span>
+  <span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="exclude-a-key-or-keys-in-dump-of-rows">
+<h2>Exclude a key or keys in dump of rows<a class="headerlink" href="#exclude-a-key-or-keys-in-dump-of-rows" title="Permalink to this headline">¶</a></h2>
+<p>Dump a table except for the rows excluded with the -x option. Multiple keys can be used.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstabledump</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">65</span><span class="n">c429e08c5a11e8939edf4f403979ef</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="o">-</span><span class="n">x</span> <span class="mi">3578</span><span class="n">d7de</span><span class="o">-</span><span class="n">c60d</span><span class="o">-</span><span class="mi">4599</span><span class="o">-</span><span class="n">aefb</span><span class="o">-</span><span class="mi">3</span><span class="n">f22a07b2bc6</span> <span class="n">d18250c0</span><span class="o">-</span><span class="mi">84</span><span class="n">fc</span><span class="o">-</span><span class="mi">4</span><span class="n">d40</span><span class="o">-</span><span class="n">b957</span><span class="o">-</span><span class="mi">4248</span><span class="n">dc9d790e</span>  <span class="o">&gt;</span> <span class="n">eventlog_dump_2018Jul26_excludekeys</span>
+
+<span class="n">cat</span> <span class="n">eventlog_dump_2018Jul26_excludekeys</span>
+<span class="p">[</span>
+  <span class="p">{</span>
+    <span class="s2">&quot;partition&quot;</span> <span class="p">:</span> <span class="p">{</span>
+      <span class="s2">&quot;key&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="s2">&quot;cf188983-d85b-48d6-9365-25005289beb2&quot;</span> <span class="p">],</span>
+      <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">0</span>
+    <span class="p">},</span>
+    <span class="s2">&quot;rows&quot;</span> <span class="p">:</span> <span class="p">[</span>
+      <span class="p">{</span>
+        <span class="s2">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;row&quot;</span><span class="p">,</span>
+        <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">182</span><span class="p">,</span>
+        <span class="s2">&quot;liveness_info&quot;</span> <span class="p">:</span> <span class="p">{</span> <span class="s2">&quot;tstamp&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20T20:22:27.028809Z&quot;</span> <span class="p">},</span>
+        <span class="s2">&quot;cells&quot;</span> <span class="p">:</span> <span class="p">[</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;event&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;party&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;insertedtimestamp&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20 20:22:27.055Z&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;source&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;asdf&quot;</span> <span class="p">}</span>
+        <span class="p">]</span>
+      <span class="p">}</span>
+    <span class="p">]</span>
+  <span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="display-raw-timestamps">
+<h2>Display raw timestamps<a class="headerlink" href="#display-raw-timestamps" title="Permalink to this headline">¶</a></h2>
+<p>By default, dates are displayed in iso8601 date format. Using the -t option will dump the data with the raw timestamp.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstabledump</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">65</span><span class="n">c429e08c5a11e8939edf4f403979ef</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="o">-</span><span class="n">t</span> <span class="o">-</span><span class="n">k</span> <span class="n">cf188983</span><span class="o">-</span><span class="n">d85b</span><span class="o">-</span><span class="mi">48</span><span class="n">d6</span><span class="o">-</span><span class="mi">9365</span><span class="o">-</span><span class="mi">25005289</span><span class="n">beb2</span> <span class="o">&gt;</span> <span class="n">eventlog_dump_2018Jul26_times</span>
+
+<span class="n">cat</span> <span class="n">eventlog_dump_2018Jul26_times</span>
+<span class="p">[</span>
+  <span class="p">{</span>
+    <span class="s2">&quot;partition&quot;</span> <span class="p">:</span> <span class="p">{</span>
+      <span class="s2">&quot;key&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="s2">&quot;cf188983-d85b-48d6-9365-25005289beb2&quot;</span> <span class="p">],</span>
+      <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">124</span>
+    <span class="p">},</span>
+    <span class="s2">&quot;rows&quot;</span> <span class="p">:</span> <span class="p">[</span>
+      <span class="p">{</span>
+        <span class="s2">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;row&quot;</span><span class="p">,</span>
+        <span class="s2">&quot;position&quot;</span> <span class="p">:</span> <span class="mi">182</span><span class="p">,</span>
+        <span class="s2">&quot;liveness_info&quot;</span> <span class="p">:</span> <span class="p">{</span> <span class="s2">&quot;tstamp&quot;</span> <span class="p">:</span> <span class="s2">&quot;1532118147028809&quot;</span> <span class="p">},</span>
+        <span class="s2">&quot;cells&quot;</span> <span class="p">:</span> <span class="p">[</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;event&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;party&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;insertedtimestamp&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;2018-07-20 20:22:27.055Z&quot;</span> <span class="p">},</span>
+          <span class="p">{</span> <span class="s2">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;source&quot;</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span> <span class="p">:</span> <span class="s2">&quot;asdf&quot;</span> <span class="p">}</span>
+        <span class="p">]</span>
+      <span class="p">}</span>
+    <span class="p">]</span>
+  <span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="display-internal-structure-in-output">
+<h2>Display internal structure in output<a class="headerlink" href="#display-internal-structure-in-output" title="Permalink to this headline">¶</a></h2>
+<p>Dump the table in a format that reflects the internal structure.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstabledump</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">65</span><span class="n">c429e08c5a11e8939edf4f403979ef</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="o">-</span><span class="n">d</span> <span class="o">&gt;</span> <span class="n">eventlog_dump_2018Jul26_d</span>
+
+<span class="n">cat</span> <span class="n">eventlog_dump_2018Jul26_d</span>
+<span class="p">[</span><span class="mi">3578</span><span class="n">d7de</span><span class="o">-</span><span class="n">c60d</span><span class="o">-</span><span class="mi">4599</span><span class="o">-</span><span class="n">aefb</span><span class="o">-</span><span class="mi">3</span><span class="n">f22a07b2bc6</span><span class="p">]</span><span class="o">@</span><span class="mi">0</span> <span class="n">Row</span><span class="p">[</span><span class="n">info</span><span class="o">=</span><span class="p">[</span><span class="n">ts</span><span class="o">=</span><span class="mi">1532118188378711</span><span class="p">]</span> <span class="p">]:</span>  <span class="o">|</span> <span class="p">[</span><span class="n">event</span><span class="o">=</span><span class="n">party</span> <span class="n">ts</span><span class="o">=</span><span class="mi">1532118188378711</span><span class="p">],</span> <span class="p">[</span><span class="n">insertedtimestamp</span><span class="o">=</span><span class="mi">2018</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">20</span> <span class="mi">20</span><span class="p">:</span><span class="mi">23</span><span class="n">Z</span> <span class="n">ts</span><span class="o">=</span><span class="mi">1532118188378711</span><span class="p">],</span> <span class="p">[</span><span class="n">source</span><span class="o">=</span><span class="n">asdf</span> <span class="n">ts</span><span class="o">=</span><span class="mi">1532118188378711</span><span class="p">]</span>
+<span class="p">[</span><span class="n">d18250c0</span><span class="o">-</span><span class="mi">84</span><span class="n">fc</span><span class="o">-</span><span class="mi">4</span><span class="n">d40</span><span class="o">-</span><span class="n">b957</span><span class="o">-</span><span class="mi">4248</span><span class="n">dc9d790e</span><span class="p">]</span><span class="o">@</span><span class="mi">62</span> <span class="n">Row</span><span class="p">[</span><span class="n">info</span><span class="o">=</span><span class="p">[</span><span class="n">ts</span><span class="o">=</span><span class="mi">1532118187783522</span><span class="p">]</span> <span class="p">]:</span>  <span class="o">|</span> <span class="p">[</span><span class="n">event</span><span class="o">=</span><span class="n">party</span> <span class="n">ts</span><span class="o">=</span><span class="mi">1532118187783522</span><span class="p">],</span> <span class="p">[</span><span class="n">insertedtimestamp</span><span class="o">=</span><span class="mi">2018</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">20</span> <span class="mi">20</span><span class="p">:</span><span class="mi">23</span><span class="n">Z</span> <span class="n">ts</span><span class="o">=</span><span class="mi">1532118187783522</span><span class="p">],</span> <span class="p">[</span><span class="n">source</span><span class="o">=</span><span class="n">asdf</span> <span class="n">ts</span><span class="o">=</span><span class="mi">1532118187783522</span><span class="p">]</span>
+<span class="p">[</span><span class="n">cf188983</span><span class="o">-</span><span class="n">d85b</span><span class="o">-</span><span class="mi">48</span><span class="n">d6</span><span class="o">-</span><span class="mi">9365</span><span class="o">-</span><span class="mi">25005289</span><span class="n">beb2</span><span class="p">]</span><span class="o">@</span><span class="mi">124</span> <span class="n">Row</span><span class="p">[</span><span class="n">info</span><span class="o">=</span><span class="p">[</span><span class="n">ts</span><span class="o">=</span><span class="mi">1532118147028809</span><span class="p">]</span> <span class="p">]:</span>  <span class="o">|</span> <span class="p">[</span><span class="n">event</span><span class="o">=</span><span class="n">party</span> <span class="n">ts</span><span class="o">=</span><span class="mi">1532118147028809</span><span class="p">],</span> <span class="p">[</span><span class="n">insertedtimestamp</span><span class="o">=</span><span class="mi">2018</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">20</span> <span class="mi">20</span><span class="p">:</span><span class="mi">22</span><span class="n">Z</span> <span class="n">ts</span><span class="o">=</span><span class="mi">1532118147028809</span><span class="p">],</span> <span class="p">[</span><span class="n">source</span><span class="o">=</span><span class="n">asdf</span> <span class="n">ts</span><span class="o">=</span><span class="mi">1532118147028809</span><span class="p">]</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="sstableexpiredblockers.html" class="btn btn-default pull-right " role="button" title="sstableexpiredblockers" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="SSTable Tools" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/sstable/sstableexpiredblockers.html b/src/doc/4.0-rc1/tools/sstable/sstableexpiredblockers.html
new file mode 100644
index 0000000..3242aff
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/sstable/sstableexpiredblockers.html
@@ -0,0 +1,150 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-parent: "SSTable Tools"
+
+doc-title: "sstableexpiredblockers"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="SSTable Tools" href="index.html"/>
+      <link rel="next" title="sstablelevelreset" href="sstablelevelreset.html"/>
+      <link rel="prev" title="sstabledump" href="sstabledump.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">SSTable Tools</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="sstabledump.html">sstabledump</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">sstableexpiredblockers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablelevelreset.html">sstablelevelreset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableloader.html">sstableloader</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablemetadata.html">sstablemetadata</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableofflinerelevel.html">sstableofflinerelevel</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablerepairedset.html">sstablerepairedset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablescrub.html">sstablescrub</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablesplit.html">sstablesplit</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableupgrade.html">sstableupgrade</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableutil.html">sstableutil</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableverify.html">sstableverify</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sstableexpiredblockers">
+<h1>sstableexpiredblockers<a class="headerlink" href="#sstableexpiredblockers" title="Permalink to this headline">¶</a></h1>
+<p>During compaction, entire sstables can be dropped if they contain only expired tombstones, and if it is guaranteed that the data is not newer than the data in other sstables. An expired sstable can be blocked from getting dropped if its newest timestamp is newer than the oldest data in another sstable.</p>
+<p>This tool is used to list all sstables that are blocking other sstables from getting dropped (by having older data than the newest tombstone in an expired sstable) so a user can figure out why certain sstables are still on disk.</p>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-10015">https://issues.apache.org/jira/browse/CASSANDRA-10015</a></p>
+<p>Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.</p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>sstableexpiredblockers &lt;keyspace&gt; &lt;table&gt;</p>
+</div>
+<div class="section" id="output-blocked-sstables">
+<h2>Output blocked sstables<a class="headerlink" href="#output-blocked-sstables" title="Permalink to this headline">¶</a></h2>
+<p>If the sstables exist for the table, but no tables have older data than the newest tombstone in an expired sstable, the script will return nothing.</p>
+<p>Otherwise, the script will return <cite>&lt;sstable&gt; blocks &lt;#&gt; expired sstables from getting dropped</cite> followed by a list of the blocked sstables.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableexpiredblockers</span> <span class="n">keyspace1</span> <span class="n">standard1</span>
+
+<span class="p">[</span><span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-0665ae80b2d711e886c66d2c86545d91/mc-2-big-Data.db&#39;</span><span class="p">)</span> <span class="p">(</span><span class="n">minTS</span> <span class="o">=</span> <span class="mi">5</span><span class="p">,</span> <span class="n">maxTS</span> <span class="o">=</span> <span class="mi">5</span><span class="p">,</span> <span class="n">maxLDT</span> <span class="o">=</span> <span class="mi">2147483647</span><span class="p">)],</span>  <span class="n">blocks</span> <span class="mi">1</span> <span class="n">expired</span> <span class="n">sstables</span> <span class="kn">from</span> <span class="nn">getting</span> <span class="n">dropped</span><span class="p">:</span> <span class="p">[</span><span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-0665ae80b2d711e886c66d2c86545d91/mc-3-big-Data.db&#39;</span><span class="p">)</span> <span class="p">(</span><span class="n">minTS</span> <span class="o">=</span> <span class="mi">1536349775157606</span><span class="p">,</span> <span class="n">maxTS</span> <span class="o">=</span> <span class="mi">1536349780311159</span><span class="p">,</span> <span class="n">maxLDT</span> <span class="o">=</span> <span class="mi">1536349780</span><span class="p">)],</span>
+
+<span class="p">[</span><span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-0665ae80b2d711e886c66d2c86545d91/mc-1-big-Data.db&#39;</span><span class="p">)</span> <span class="p">(</span><span class="n">minTS</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">maxTS</span> <span class="o">=</span> <span class="mi">10</span><span class="p">,</span> <span class="n">maxLDT</span> <span class="o">=</span> <span class="mi">2147483647</span><span class="p">)],</span>  <span class="n">blocks</span> <span class="mi">1</span> <span class="n">expired</span> <span class="n">sstables</span> <span class="kn">from</span> <span class="nn">getting</span> <span class="n">dropped</span><span class="p">:</span> <span class="p">[</span><span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-0665ae80b2d711e886c66d2c86545d91/mc-3-big-Data.db&#39;</span><span class="p">)</span> <span class="p">(</span><span class="n">minTS</span> <span class="o">=</span> <span class="mi">1536349775157606</span><span class="p">,</span> <span class="n">maxTS</span> <span class="o">=</span> <span class="mi">1536349780311159</span><span class="p">,</span> <span class="n">maxLDT</span> <span class="o">=</span> <span class="mi">1536349780</span><span class="p">)],</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="sstablelevelreset.html" class="btn btn-default pull-right " role="button" title="sstablelevelreset" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="sstabledump.html" class="btn btn-default" role="button" title="sstabledump" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/sstable/sstablelevelreset.html b/src/doc/4.0-rc1/tools/sstable/sstablelevelreset.html
new file mode 100644
index 0000000..2e46608
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/sstable/sstablelevelreset.html
@@ -0,0 +1,176 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-parent: "SSTable Tools"
+
+doc-title: "sstablelevelreset"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="SSTable Tools" href="index.html"/>
+      <link rel="next" title="sstableloader" href="sstableloader.html"/>
+      <link rel="prev" title="sstableexpiredblockers" href="sstableexpiredblockers.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">SSTable Tools</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="sstabledump.html">sstabledump</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableexpiredblockers.html">sstableexpiredblockers</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">sstablelevelreset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableloader.html">sstableloader</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablemetadata.html">sstablemetadata</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableofflinerelevel.html">sstableofflinerelevel</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablerepairedset.html">sstablerepairedset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablescrub.html">sstablescrub</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablesplit.html">sstablesplit</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableupgrade.html">sstableupgrade</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableutil.html">sstableutil</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableverify.html">sstableverify</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sstablelevelreset">
+<h1>sstablelevelreset<a class="headerlink" href="#sstablelevelreset" title="Permalink to this headline">¶</a></h1>
+<p>If LeveledCompactionStrategy is set, this script can be used to reset level to 0 on a given set of sstables. This is useful if you want to, for example, change the minimum sstable size, and therefore restart the compaction process using this new configuration.</p>
+<p>See <a class="reference external" href="http://cassandra.apache.org/doc/latest/operating/compaction.html#leveled-compaction-strategy">http://cassandra.apache.org/doc/latest/operating/compaction.html#leveled-compaction-strategy</a> for information on how levels are used in this compaction strategy.</p>
+<p>Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.</p>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-5271">https://issues.apache.org/jira/browse/CASSANDRA-5271</a></p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>sstablelevelreset –really-reset &lt;keyspace&gt; &lt;table&gt;</p>
+<p>The really-reset flag is required, to ensure this intrusive command is not run accidentally.</p>
+</div>
+<div class="section" id="table-not-found">
+<h2>Table not found<a class="headerlink" href="#table-not-found" title="Permalink to this headline">¶</a></h2>
+<p>If the keyspace and/or table is not in the schema (e.g., if you misspelled the table name), the script will return an error.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ColumnFamily</span> <span class="ow">not</span> <span class="n">found</span><span class="p">:</span> <span class="n">keyspace</span><span class="o">/</span><span class="n">evenlog</span><span class="o">.</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="table-has-no-sstables">
+<h2>Table has no sstables<a class="headerlink" href="#table-has-no-sstables" title="Permalink to this headline">¶</a></h2>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>Found no sstables, did you give the correct keyspace/table?
+</pre></div>
+</div>
+</div>
+<div class="section" id="table-already-at-level-0">
+<h2>Table already at level 0<a class="headerlink" href="#table-already-at-level-0" title="Permalink to this headline">¶</a></h2>
+<p>The script will not set the level if it is already set to 0.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Skipped</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">65</span><span class="n">c429e08c5a11e8939edf4f403979ef</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="n">since</span> <span class="n">it</span> <span class="ow">is</span> <span class="n">already</span> <span class="n">on</span> <span class="n">level</span> <span class="mi">0</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="table-levels-reduced-to-0">
+<h2>Table levels reduced to 0<a class="headerlink" href="#table-levels-reduced-to-0" title="Permalink to this headline">¶</a></h2>
+<p>If the level is not already 0, then this will reset it to 0.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstablemetadata</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">8</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="o">|</span> <span class="n">grep</span> <span class="o">-</span><span class="n">i</span> <span class="n">level</span>
+<span class="n">SSTable</span> <span class="n">Level</span><span class="p">:</span> <span class="mi">1</span>
+
+<span class="n">sstablelevelreset</span> <span class="o">--</span><span class="n">really</span><span class="o">-</span><span class="n">reset</span> <span class="n">keyspace</span> <span class="n">eventlog</span>
+<span class="n">Changing</span> <span class="n">level</span> <span class="kn">from</span> <span class="mi">1</span> <span class="n">to</span> <span class="mi">0</span> <span class="n">on</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">8</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+
+<span class="n">sstablemetadata</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">8</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="o">|</span> <span class="n">grep</span> <span class="o">-</span><span class="n">i</span> <span class="n">level</span>
+<span class="n">SSTable</span> <span class="n">Level</span><span class="p">:</span> <span class="mi">0</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="sstableloader.html" class="btn btn-default pull-right " role="button" title="sstableloader" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="sstableexpiredblockers.html" class="btn btn-default" role="button" title="sstableexpiredblockers" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/sstable/sstableloader.html b/src/doc/4.0-rc1/tools/sstable/sstableloader.html
new file mode 100644
index 0000000..b98401c
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/sstable/sstableloader.html
@@ -0,0 +1,410 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-parent: "SSTable Tools"
+
+doc-title: "sstableloader"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="SSTable Tools" href="index.html"/>
+      <link rel="next" title="sstablemetadata" href="sstablemetadata.html"/>
+      <link rel="prev" title="sstablelevelreset" href="sstablelevelreset.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">SSTable Tools</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="sstabledump.html">sstabledump</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableexpiredblockers.html">sstableexpiredblockers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablelevelreset.html">sstablelevelreset</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">sstableloader</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablemetadata.html">sstablemetadata</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableofflinerelevel.html">sstableofflinerelevel</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablerepairedset.html">sstablerepairedset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablescrub.html">sstablescrub</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablesplit.html">sstablesplit</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableupgrade.html">sstableupgrade</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableutil.html">sstableutil</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableverify.html">sstableverify</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sstableloader">
+<h1>sstableloader<a class="headerlink" href="#sstableloader" title="Permalink to this headline">¶</a></h1>
+<p>Bulk-load the sstables found in the directory &lt;dir_path&gt; to the configured cluster. The parent directories of &lt;dir_path&gt; are used as the target keyspace/table name. For example, to load an sstable named ma-1-big-Data.db into keyspace1/standard1, you will need to have the files ma-1-big-Data.db and ma-1-big-Index.db in a directory /path/to/keyspace1/standard1/. The tool will create new sstables, and does not clean up your copied files.</p>
+<p>Several of the options listed below don’t work quite as intended, and in those cases, workarounds are mentioned for specific use cases.</p>
+<p>To avoid having the sstable files to be loaded compacted while reading them, place the files in an alternate keyspace/table path than the data directory.</p>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-1278">https://issues.apache.org/jira/browse/CASSANDRA-1278</a></p>
+<p>Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.</p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>sstableloader &lt;options&gt; &lt;dir_path&gt;</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="39%" />
+<col width="61%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>-d, –nodes &lt;initial hosts&gt;</td>
+<td>Required. Try to connect to these hosts (comma-separated)
+initially for ring information</td>
+</tr>
+<tr class="row-even"><td>-u, –username &lt;username&gt;</td>
+<td>username for Cassandra authentication</td>
+</tr>
+<tr class="row-odd"><td>-pw, –password &lt;password&gt;</td>
+<td>password for Cassandra authentication</td>
+</tr>
+<tr class="row-even"><td>-p, –port &lt;native transport port&gt;</td>
+<td>port used for native connection (default 9042)</td>
+</tr>
+<tr class="row-odd"><td>-sp, –storage-port &lt;storage port&gt;</td>
+<td>port used for internode communication (default 7000)</td>
+</tr>
+<tr class="row-even"><td>-ssp, –ssl-storage-port &lt;ssl storage port&gt;</td>
+<td>port used for TLS internode communication (default 7001)</td>
+</tr>
+<tr class="row-odd"><td>–no-progress</td>
+<td>don’t display progress</td>
+</tr>
+<tr class="row-even"><td>-t, –throttle &lt;throttle&gt;</td>
+<td>throttle speed in Mbits (default unlimited)</td>
+</tr>
+<tr class="row-odd"><td>-idct, –inter-dc-throttle &lt;inter-dc-throttle&gt;</td>
+<td>inter-datacenter throttle speed in Mbits (default unlimited)</td>
+</tr>
+<tr class="row-even"><td>-cph, –connections-per-host &lt;connectionsPerHost&gt;</td>
+<td>number of concurrent connections-per-host</td>
+</tr>
+<tr class="row-odd"><td>-i, –ignore &lt;NODES&gt;</td>
+<td>don’t stream to this (comma separated) list of nodes</td>
+</tr>
+<tr class="row-even"><td>-alg, –ssl-alg &lt;ALGORITHM&gt;</td>
+<td>Client SSL: algorithm (default: SunX509)</td>
+</tr>
+<tr class="row-odd"><td>-ciphers, –ssl-ciphers &lt;CIPHER-SUITES&gt;</td>
+<td>Client SSL: comma-separated list of encryption suites to use</td>
+</tr>
+<tr class="row-even"><td>-ks, –keystore &lt;KEYSTORE&gt;</td>
+<td>Client SSL: full path to keystore</td>
+</tr>
+<tr class="row-odd"><td>-kspw, –keystore-password &lt;KEYSTORE-PASSWORD&gt;</td>
+<td>Client SSL: password of the keystore</td>
+</tr>
+<tr class="row-even"><td>-st, –store-type &lt;STORE-TYPE&gt;</td>
+<td>Client SSL: type of store</td>
+</tr>
+<tr class="row-odd"><td>-ts, –truststore &lt;TRUSTSTORE&gt;</td>
+<td>Client SSL: full path to truststore</td>
+</tr>
+<tr class="row-even"><td>-tspw, –truststore-password &lt;TRUSTSTORE-PASSWORD&gt;</td>
+<td>Client SSL: password of the truststore</td>
+</tr>
+<tr class="row-odd"><td>-prtcl, –ssl-protocol &lt;PROTOCOL&gt;</td>
+<td>Client SSL: connections protocol to use (default: TLS)</td>
+</tr>
+<tr class="row-even"><td>-ap, –auth-provider &lt;auth provider&gt;</td>
+<td>custom AuthProvider class name for cassandra authentication</td>
+</tr>
+<tr class="row-odd"><td>-f, –conf-path &lt;path to config file&gt;</td>
+<td>cassandra.yaml file path for streaming throughput and client/server SSL</td>
+</tr>
+<tr class="row-even"><td>-v, –verbose</td>
+<td>verbose output</td>
+</tr>
+<tr class="row-odd"><td>-h, –help</td>
+<td>display this help message</td>
+</tr>
+</tbody>
+</table>
+<p>You can provide a cassandra.yaml file with the -f command line option to set up streaming throughput, and client and server encryption options. Only stream_throughput_outbound_megabits_per_sec, server_encryption_options, and client_encryption_options are read from yaml. You can override options read from cassandra.yaml with corresponding command line options.</p>
+</div>
+<div class="section" id="load-sstables-from-a-snapshot">
+<h2>Load sstables from a Snapshot<a class="headerlink" href="#load-sstables-from-a-snapshot" title="Permalink to this headline">¶</a></h2>
+<p>Copy the snapshot sstables into an accessible directory and use sstableloader to restore them.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cp</span> <span class="n">snapshots</span><span class="o">/</span><span class="mi">1535397029191</span><span class="o">/*</span> <span class="o">/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">/</span>
+
+<span class="n">sstableloader</span> <span class="o">--</span><span class="n">nodes</span> <span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">loadme</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">f8a4fa30aa2a11e8af27091830ac5256</span><span class="o">/</span>
+<span class="n">Established</span> <span class="n">connection</span> <span class="n">to</span> <span class="n">initial</span> <span class="n">hosts</span>
+<span class="n">Opening</span> <span class="n">sstables</span> <span class="ow">and</span> <span class="n">calculating</span> <span class="n">sections</span> <span class="n">to</span> <span class="n">stream</span>
+<span class="n">Streaming</span> <span class="n">relevant</span> <span class="n">part</span> <span class="n">of</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">loadme</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">f8a4fa30aa2a11e8af27091830ac5256</span><span class="o">/</span><span class="n">ma</span><span class="o">-</span><span class="mi">3</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="n">to</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span> <span class="mi">100</span><span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">100</span><span class="o">%</span> <span class="mi">0</span>  <span class="n">MB</span><span class="o">/</span><span class="n">s</span><span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mi">1</span> <span class="n">MB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">Summary</span> <span class="n">statistics</span><span class="p">:</span>
+   <span class="n">Connections</span> <span class="n">per</span> <span class="n">host</span><span class="p">:</span>         <span class="p">:</span> <span class="mi">1</span>
+   <span class="n">Total</span> <span class="n">files</span> <span class="n">transferred</span><span class="p">:</span>      <span class="p">:</span> <span class="mi">1</span>
+   <span class="n">Total</span> <span class="nb">bytes</span> <span class="n">transferred</span><span class="p">:</span>      <span class="p">:</span> <span class="mi">4700000</span>
+   <span class="n">Total</span> <span class="n">duration</span> <span class="p">(</span><span class="n">ms</span><span class="p">):</span>          <span class="p">:</span> <span class="mi">4390</span>
+   <span class="n">Average</span> <span class="n">transfer</span> <span class="n">rate</span> <span class="p">(</span><span class="n">MB</span><span class="o">/</span><span class="n">s</span><span class="p">):</span> <span class="p">:</span> <span class="mi">1</span>
+   <span class="n">Peak</span> <span class="n">transfer</span> <span class="n">rate</span> <span class="p">(</span><span class="n">MB</span><span class="o">/</span><span class="n">s</span><span class="p">):</span>    <span class="p">:</span> <span class="mi">1</span>
+</pre></div>
+</div>
+<p>The -d or –nodes option is required, or the script will not run.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableloader</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">loadme</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">f8a4fa30aa2a11e8af27091830ac5256</span><span class="o">/</span>
+<span class="n">Initial</span> <span class="n">hosts</span> <span class="n">must</span> <span class="n">be</span> <span class="n">specified</span> <span class="p">(</span><span class="o">-</span><span class="n">d</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="use-a-config-file-for-ssl-clusters">
+<h2>Use a Config File for SSL Clusters<a class="headerlink" href="#use-a-config-file-for-ssl-clusters" title="Permalink to this headline">¶</a></h2>
+<p>If SSL encryption is enabled in the cluster, use the –conf-path option with sstableloader to point the tool to the cassandra.yaml with the relevant server_encryption_options (e.g., truststore location, algorithm). This will work better than passing individual ssl options shown above to sstableloader on the command line.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableloader</span> <span class="o">--</span><span class="n">nodes</span> <span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span> <span class="o">--</span><span class="n">conf</span><span class="o">-</span><span class="n">path</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">cassandra</span><span class="o">.</span><span class="n">yaml</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">loadme</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="mf">0974e5</span><span class="n">a0aa5811e8a0a06d2c86545d91</span><span class="o">/</span><span class="n">snapshots</span><span class="o">/</span>
+<span class="n">Established</span> <span class="n">connection</span> <span class="n">to</span> <span class="n">initial</span> <span class="n">hosts</span>
+<span class="n">Opening</span> <span class="n">sstables</span> <span class="ow">and</span> <span class="n">calculating</span> <span class="n">sections</span> <span class="n">to</span> <span class="n">stream</span>
+<span class="n">Streaming</span> <span class="n">relevant</span> <span class="n">part</span> <span class="n">of</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">loadme</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="mf">0974e5</span><span class="n">a0aa5811e8a0a06d2c86545d91</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>  <span class="n">to</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">1</span>  <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">1</span><span class="o">%</span> <span class="mf">9.165</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">9.165</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">2</span>  <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">2</span><span class="o">%</span> <span class="mf">5.147</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">18.299</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">4</span>  <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">4</span><span class="o">%</span> <span class="mf">9.751</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">27.423</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">5</span>  <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">5</span><span class="o">%</span> <span class="mf">8.203</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">36.524</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="o">...</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span> <span class="mi">100</span><span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">100</span><span class="o">%</span> <span class="mf">0.000</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">480.513</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+
+<span class="n">Summary</span> <span class="n">statistics</span><span class="p">:</span>
+   <span class="n">Connections</span> <span class="n">per</span> <span class="n">host</span>    <span class="p">:</span> <span class="mi">1</span>
+   <span class="n">Total</span> <span class="n">files</span> <span class="n">transferred</span> <span class="p">:</span> <span class="mi">1</span>
+   <span class="n">Total</span> <span class="nb">bytes</span> <span class="n">transferred</span> <span class="p">:</span> <span class="mf">4.387</span><span class="n">MiB</span>
+   <span class="n">Total</span> <span class="n">duration</span>          <span class="p">:</span> <span class="mi">9356</span> <span class="n">ms</span>
+   <span class="n">Average</span> <span class="n">transfer</span> <span class="n">rate</span>   <span class="p">:</span> <span class="mf">480.105</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span>
+   <span class="n">Peak</span> <span class="n">transfer</span> <span class="n">rate</span>      <span class="p">:</span> <span class="mf">586.410</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="hide-progress-output">
+<h2>Hide Progress Output<a class="headerlink" href="#hide-progress-output" title="Permalink to this headline">¶</a></h2>
+<p>To hide the output of progress and the summary statistics (e.g., if you wanted to use this tool in a script), use the –no-progress option.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableloader</span> <span class="o">--</span><span class="n">nodes</span> <span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">progress</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">loadme</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">f8a4fa30aa2a11e8af27091830ac5256</span><span class="o">/</span>
+<span class="n">Established</span> <span class="n">connection</span> <span class="n">to</span> <span class="n">initial</span> <span class="n">hosts</span>
+<span class="n">Opening</span> <span class="n">sstables</span> <span class="ow">and</span> <span class="n">calculating</span> <span class="n">sections</span> <span class="n">to</span> <span class="n">stream</span>
+<span class="n">Streaming</span> <span class="n">relevant</span> <span class="n">part</span> <span class="n">of</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">loadme</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">f8a4fa30aa2a11e8af27091830ac5256</span><span class="o">/</span><span class="n">ma</span><span class="o">-</span><span class="mi">4</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="n">to</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="get-more-detail">
+<h2>Get More Detail<a class="headerlink" href="#get-more-detail" title="Permalink to this headline">¶</a></h2>
+<p>Using the –verbose option will provide much more progress output.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableloader</span> <span class="o">--</span><span class="n">nodes</span> <span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span> <span class="o">--</span><span class="n">verbose</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">loadme</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="mf">0974e5</span><span class="n">a0aa5811e8a0a06d2c86545d91</span><span class="o">/</span>
+<span class="n">Established</span> <span class="n">connection</span> <span class="n">to</span> <span class="n">initial</span> <span class="n">hosts</span>
+<span class="n">Opening</span> <span class="n">sstables</span> <span class="ow">and</span> <span class="n">calculating</span> <span class="n">sections</span> <span class="n">to</span> <span class="n">stream</span>
+<span class="n">Streaming</span> <span class="n">relevant</span> <span class="n">part</span> <span class="n">of</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">loadme</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="mf">0974e5</span><span class="n">a0aa5811e8a0a06d2c86545d91</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>  <span class="n">to</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">1</span>  <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">1</span><span class="o">%</span> <span class="mf">12.056</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">12.056</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">2</span>  <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">2</span><span class="o">%</span> <span class="mf">9.092</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">24.081</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">4</span>  <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">4</span><span class="o">%</span> <span class="mf">18.832</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">36.099</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">5</span>  <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">5</span><span class="o">%</span> <span class="mf">2.253</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">47.882</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">7</span>  <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">7</span><span class="o">%</span> <span class="mf">6.388</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">59.743</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">8</span>  <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">8</span><span class="o">%</span> <span class="mf">14.606</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">71.635</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">9</span>  <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">9</span><span class="o">%</span> <span class="mf">8.880</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">83.465</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">11</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">11</span><span class="o">%</span> <span class="mf">5.217</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">95.176</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">12</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">12</span><span class="o">%</span> <span class="mf">12.563</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">106.975</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">14</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">14</span><span class="o">%</span> <span class="mf">2.550</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">118.322</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">15</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">15</span><span class="o">%</span> <span class="mf">16.638</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">130.063</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">17</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">17</span><span class="o">%</span> <span class="mf">17.270</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">141.793</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">18</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">18</span><span class="o">%</span> <span class="mf">11.280</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">153.452</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">19</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">19</span><span class="o">%</span> <span class="mf">2.903</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">164.603</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">21</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">21</span><span class="o">%</span> <span class="mf">6.744</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">176.061</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">22</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">22</span><span class="o">%</span> <span class="mf">6.011</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">187.440</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">24</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">24</span><span class="o">%</span> <span class="mf">9.690</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">198.920</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">25</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">25</span><span class="o">%</span> <span class="mf">11.481</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">210.412</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">27</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">27</span><span class="o">%</span> <span class="mf">9.957</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">221.848</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">28</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">28</span><span class="o">%</span> <span class="mf">10.270</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">233.265</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">29</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">29</span><span class="o">%</span> <span class="mf">7.812</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">244.571</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">31</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">31</span><span class="o">%</span> <span class="mf">14.843</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">256.021</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">32</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">32</span><span class="o">%</span> <span class="mf">11.457</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">267.394</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">34</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">34</span><span class="o">%</span> <span class="mf">6.550</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">278.536</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">35</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">35</span><span class="o">%</span> <span class="mf">9.115</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">289.782</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">37</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">37</span><span class="o">%</span> <span class="mf">11.054</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">301.064</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">38</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">38</span><span class="o">%</span> <span class="mf">10.449</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">312.307</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">39</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">39</span><span class="o">%</span> <span class="mf">1.646</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">321.665</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">41</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">41</span><span class="o">%</span> <span class="mf">13.300</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">332.872</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">42</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">42</span><span class="o">%</span> <span class="mf">14.370</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">344.082</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">44</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">44</span><span class="o">%</span> <span class="mf">16.734</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">355.314</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">45</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">45</span><span class="o">%</span> <span class="mf">22.245</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">366.592</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">47</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">47</span><span class="o">%</span> <span class="mf">25.561</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">377.882</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">48</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">48</span><span class="o">%</span> <span class="mf">24.543</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">389.155</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">49</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">49</span><span class="o">%</span> <span class="mf">4.894</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">399.688</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">51</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">51</span><span class="o">%</span> <span class="mf">8.331</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">410.559</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">52</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">52</span><span class="o">%</span> <span class="mf">5.771</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">421.150</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">54</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">54</span><span class="o">%</span> <span class="mf">8.738</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">431.983</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">55</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">55</span><span class="o">%</span> <span class="mf">3.406</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">441.911</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">56</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">56</span><span class="o">%</span> <span class="mf">9.791</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">452.730</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">58</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">58</span><span class="o">%</span> <span class="mf">3.401</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">462.545</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">59</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">59</span><span class="o">%</span> <span class="mf">5.280</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">472.840</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">61</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">61</span><span class="o">%</span> <span class="mf">12.232</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">483.663</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">62</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">62</span><span class="o">%</span> <span class="mf">9.258</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">494.325</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">64</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">64</span><span class="o">%</span> <span class="mf">2.877</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">503.640</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">65</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">65</span><span class="o">%</span> <span class="mf">7.461</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">514.078</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">66</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">66</span><span class="o">%</span> <span class="mf">24.247</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">525.018</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">68</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">68</span><span class="o">%</span> <span class="mf">9.348</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">535.563</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">69</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">69</span><span class="o">%</span> <span class="mf">5.130</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">545.563</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">71</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">71</span><span class="o">%</span> <span class="mf">19.861</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">556.392</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">72</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">72</span><span class="o">%</span> <span class="mf">15.501</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">567.122</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">74</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">74</span><span class="o">%</span> <span class="mf">5.031</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">576.996</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">75</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">75</span><span class="o">%</span> <span class="mf">22.771</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">587.813</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">76</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">76</span><span class="o">%</span> <span class="mf">22.780</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">598.619</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">78</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">78</span><span class="o">%</span> <span class="mf">20.684</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">609.386</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">79</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">79</span><span class="o">%</span> <span class="mf">22.920</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">620.173</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">81</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">81</span><span class="o">%</span> <span class="mf">7.458</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">630.333</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">82</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">82</span><span class="o">%</span> <span class="mf">22.993</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">641.090</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">84</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">84</span><span class="o">%</span> <span class="mf">21.392</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">651.814</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">85</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">85</span><span class="o">%</span> <span class="mf">7.732</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">661.938</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">86</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">86</span><span class="o">%</span> <span class="mf">3.476</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">670.892</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">88</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">88</span><span class="o">%</span> <span class="mf">19.889</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">681.521</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">89</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">89</span><span class="o">%</span> <span class="mf">21.077</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">692.162</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">91</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">91</span><span class="o">%</span> <span class="mf">24.062</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">702.835</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">92</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">92</span><span class="o">%</span> <span class="mf">19.798</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">713.431</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">94</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">94</span><span class="o">%</span> <span class="mf">17.591</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">723.965</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">95</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">95</span><span class="o">%</span> <span class="mf">13.725</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">734.361</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">96</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">96</span><span class="o">%</span> <span class="mf">16.737</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">744.846</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">98</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">98</span><span class="o">%</span> <span class="mf">22.701</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">755.443</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">0</span><span class="o">/</span><span class="mi">1</span> <span class="mi">99</span> <span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">99</span><span class="o">%</span> <span class="mf">18.718</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">765.954</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span> <span class="mi">100</span><span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">100</span><span class="o">%</span> <span class="mf">6.613</span><span class="n">MiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">767.802</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span> <span class="mi">100</span><span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">100</span><span class="o">%</span> <span class="mf">0.000</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span> <span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mf">670.295</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+
+<span class="n">Summary</span> <span class="n">statistics</span><span class="p">:</span>
+   <span class="n">Connections</span> <span class="n">per</span> <span class="n">host</span>    <span class="p">:</span> <span class="mi">1</span>
+   <span class="n">Total</span> <span class="n">files</span> <span class="n">transferred</span> <span class="p">:</span> <span class="mi">1</span>
+   <span class="n">Total</span> <span class="nb">bytes</span> <span class="n">transferred</span> <span class="p">:</span> <span class="mf">4.387</span><span class="n">MiB</span>
+   <span class="n">Total</span> <span class="n">duration</span>          <span class="p">:</span> <span class="mi">6706</span> <span class="n">ms</span>
+   <span class="n">Average</span> <span class="n">transfer</span> <span class="n">rate</span>   <span class="p">:</span> <span class="mf">669.835</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span>
+   <span class="n">Peak</span> <span class="n">transfer</span> <span class="n">rate</span>      <span class="p">:</span> <span class="mf">767.802</span><span class="n">KiB</span><span class="o">/</span><span class="n">s</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="throttling-load">
+<h2>Throttling Load<a class="headerlink" href="#throttling-load" title="Permalink to this headline">¶</a></h2>
+<p>To prevent the table loader from overloading the system resources, you can throttle the process with the –throttle option. The default is unlimited (no throttling). Throttle units are in megabits. Note that the total duration is increased in the example below.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableloader</span> <span class="o">--</span><span class="n">nodes</span> <span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span> <span class="o">--</span><span class="n">throttle</span> <span class="mi">1</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">loadme</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">f8a4fa30aa2a11e8af27091830ac5256</span><span class="o">/</span>
+<span class="n">Established</span> <span class="n">connection</span> <span class="n">to</span> <span class="n">initial</span> <span class="n">hosts</span>
+<span class="n">Opening</span> <span class="n">sstables</span> <span class="ow">and</span> <span class="n">calculating</span> <span class="n">sections</span> <span class="n">to</span> <span class="n">stream</span>
+<span class="n">Streaming</span> <span class="n">relevant</span> <span class="n">part</span> <span class="n">of</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">loadme</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">f8a4fa30aa2a11e8af27091830ac5256</span><span class="o">/</span><span class="n">ma</span><span class="o">-</span><span class="mi">6</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="n">to</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span> <span class="mi">100</span><span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">100</span><span class="o">%</span> <span class="mi">0</span>  <span class="n">MB</span><span class="o">/</span><span class="n">s</span><span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mi">0</span> <span class="n">MB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">Summary</span> <span class="n">statistics</span><span class="p">:</span>
+   <span class="n">Connections</span> <span class="n">per</span> <span class="n">host</span><span class="p">:</span>         <span class="p">:</span> <span class="mi">1</span>
+   <span class="n">Total</span> <span class="n">files</span> <span class="n">transferred</span><span class="p">:</span>      <span class="p">:</span> <span class="mi">1</span>
+   <span class="n">Total</span> <span class="nb">bytes</span> <span class="n">transferred</span><span class="p">:</span>      <span class="p">:</span> <span class="mi">4595705</span>
+   <span class="n">Total</span> <span class="n">duration</span> <span class="p">(</span><span class="n">ms</span><span class="p">):</span>          <span class="p">:</span> <span class="mi">37634</span>
+   <span class="n">Average</span> <span class="n">transfer</span> <span class="n">rate</span> <span class="p">(</span><span class="n">MB</span><span class="o">/</span><span class="n">s</span><span class="p">):</span> <span class="p">:</span> <span class="mi">0</span>
+   <span class="n">Peak</span> <span class="n">transfer</span> <span class="n">rate</span> <span class="p">(</span><span class="n">MB</span><span class="o">/</span><span class="n">s</span><span class="p">):</span>    <span class="p">:</span> <span class="mi">0</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="speeding-up-load">
+<h2>Speeding up Load<a class="headerlink" href="#speeding-up-load" title="Permalink to this headline">¶</a></h2>
+<p>To speed up the load process, the number of connections per host can be increased.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableloader</span> <span class="o">--</span><span class="n">nodes</span> <span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span> <span class="o">--</span><span class="n">connections</span><span class="o">-</span><span class="n">per</span><span class="o">-</span><span class="n">host</span> <span class="mi">100</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">loadme</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">f8a4fa30aa2a11e8af27091830ac5256</span><span class="o">/</span>
+<span class="n">Established</span> <span class="n">connection</span> <span class="n">to</span> <span class="n">initial</span> <span class="n">hosts</span>
+<span class="n">Opening</span> <span class="n">sstables</span> <span class="ow">and</span> <span class="n">calculating</span> <span class="n">sections</span> <span class="n">to</span> <span class="n">stream</span>
+<span class="n">Streaming</span> <span class="n">relevant</span> <span class="n">part</span> <span class="n">of</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">loadme</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">f8a4fa30aa2a11e8af27091830ac5256</span><span class="o">/</span><span class="n">ma</span><span class="o">-</span><span class="mi">9</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span> <span class="n">to</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span>
+<span class="n">progress</span><span class="p">:</span> <span class="p">[</span><span class="o">/</span><span class="mf">172.17</span><span class="o">.</span><span class="mf">0.2</span><span class="p">]</span><span class="mi">0</span><span class="p">:</span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span> <span class="mi">100</span><span class="o">%</span> <span class="n">total</span><span class="p">:</span> <span class="mi">100</span><span class="o">%</span> <span class="mi">0</span>  <span class="n">MB</span><span class="o">/</span><span class="n">s</span><span class="p">(</span><span class="n">avg</span><span class="p">:</span> <span class="mi">1</span> <span class="n">MB</span><span class="o">/</span><span class="n">s</span><span class="p">)</span>
+<span class="n">Summary</span> <span class="n">statistics</span><span class="p">:</span>
+   <span class="n">Connections</span> <span class="n">per</span> <span class="n">host</span><span class="p">:</span>         <span class="p">:</span> <span class="mi">100</span>
+   <span class="n">Total</span> <span class="n">files</span> <span class="n">transferred</span><span class="p">:</span>      <span class="p">:</span> <span class="mi">1</span>
+   <span class="n">Total</span> <span class="nb">bytes</span> <span class="n">transferred</span><span class="p">:</span>      <span class="p">:</span> <span class="mi">4595705</span>
+   <span class="n">Total</span> <span class="n">duration</span> <span class="p">(</span><span class="n">ms</span><span class="p">):</span>          <span class="p">:</span> <span class="mi">3486</span>
+   <span class="n">Average</span> <span class="n">transfer</span> <span class="n">rate</span> <span class="p">(</span><span class="n">MB</span><span class="o">/</span><span class="n">s</span><span class="p">):</span> <span class="p">:</span> <span class="mi">1</span>
+   <span class="n">Peak</span> <span class="n">transfer</span> <span class="n">rate</span> <span class="p">(</span><span class="n">MB</span><span class="o">/</span><span class="n">s</span><span class="p">):</span>    <span class="p">:</span> <span class="mi">1</span>
+</pre></div>
+</div>
+<p>This small data set doesn’t benefit much from the increase in connections per host, but note that the total duration has decreased in this example.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="sstablemetadata.html" class="btn btn-default pull-right " role="button" title="sstablemetadata" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="sstablelevelreset.html" class="btn btn-default" role="button" title="sstablelevelreset" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/sstable/sstablemetadata.html b/src/doc/4.0-rc1/tools/sstable/sstablemetadata.html
new file mode 100644
index 0000000..158fe21
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/sstable/sstablemetadata.html
@@ -0,0 +1,463 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-parent: "SSTable Tools"
+
+doc-title: "sstablemetadata"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="SSTable Tools" href="index.html"/>
+      <link rel="next" title="sstableofflinerelevel" href="sstableofflinerelevel.html"/>
+      <link rel="prev" title="sstableloader" href="sstableloader.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">SSTable Tools</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="sstabledump.html">sstabledump</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableexpiredblockers.html">sstableexpiredblockers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablelevelreset.html">sstablelevelreset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableloader.html">sstableloader</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">sstablemetadata</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableofflinerelevel.html">sstableofflinerelevel</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablerepairedset.html">sstablerepairedset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablescrub.html">sstablescrub</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablesplit.html">sstablesplit</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableupgrade.html">sstableupgrade</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableutil.html">sstableutil</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableverify.html">sstableverify</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sstablemetadata">
+<h1>sstablemetadata<a class="headerlink" href="#sstablemetadata" title="Permalink to this headline">¶</a></h1>
+<p>Print information about an sstable from the related Statistics.db and Summary.db files to standard output.</p>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-7159">https://issues.apache.org/jira/browse/CASSANDRA-7159</a> and <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-10838">https://issues.apache.org/jira/browse/CASSANDRA-10838</a></p>
+<p>Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.</p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>sstablemetadata &lt;options&gt; &lt;sstable filename(s)&gt;</p>
+</div>
+<div class="section" id="print-all-the-metadata">
+<h2>Print all the metadata<a class="headerlink" href="#print-all-the-metadata" title="Permalink to this headline">¶</a></h2>
+<p>Run sstablemetadata against the <a href="#id1"><span class="problematic" id="id2">*</span></a>Data.db file(s) related to a table. If necessary, find the <a href="#id3"><span class="problematic" id="id4">*</span></a>Data.db file(s) using sstableutil.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableutil</span> <span class="n">keyspace1</span> <span class="n">standard1</span> <span class="o">|</span> <span class="n">grep</span> <span class="n">Data</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">f6845640a6cb11e8b6836d2c86545d91</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+
+<span class="n">sstablemetadata</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">f6845640a6cb11e8b6836d2c86545d91</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+
+<span class="n">SSTable</span><span class="p">:</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">f6845640a6cb11e8b6836d2c86545d91</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">big</span>
+<span class="n">Partitioner</span><span class="p">:</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">dht</span><span class="o">.</span><span class="n">Murmur3Partitioner</span>
+<span class="n">Bloom</span> <span class="n">Filter</span> <span class="n">FP</span> <span class="n">chance</span><span class="p">:</span> <span class="mf">0.010000</span>
+<span class="n">Minimum</span> <span class="n">timestamp</span><span class="p">:</span> <span class="mi">1535025576141000</span>
+<span class="n">Maximum</span> <span class="n">timestamp</span><span class="p">:</span> <span class="mi">1535025604309000</span>
+<span class="n">SSTable</span> <span class="nb">min</span> <span class="n">local</span> <span class="n">deletion</span> <span class="n">time</span><span class="p">:</span> <span class="mi">2147483647</span>
+<span class="n">SSTable</span> <span class="nb">max</span> <span class="n">local</span> <span class="n">deletion</span> <span class="n">time</span><span class="p">:</span> <span class="mi">2147483647</span>
+<span class="n">Compressor</span><span class="p">:</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">io</span><span class="o">.</span><span class="n">compress</span><span class="o">.</span><span class="n">LZ4Compressor</span>
+<span class="n">TTL</span> <span class="nb">min</span><span class="p">:</span> <span class="mi">86400</span>
+<span class="n">TTL</span> <span class="nb">max</span><span class="p">:</span> <span class="mi">86400</span>
+<span class="n">First</span> <span class="n">token</span><span class="p">:</span> <span class="o">-</span><span class="mi">9223004712949498654</span> <span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="mi">39373333373831303130</span><span class="p">)</span>
+<span class="n">Last</span> <span class="n">token</span><span class="p">:</span> <span class="mi">9222554117157811897</span> <span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="mi">4</span><span class="n">f3438394e39374d3730</span><span class="p">)</span>
+<span class="n">Estimated</span> <span class="n">droppable</span> <span class="n">tombstones</span><span class="p">:</span> <span class="mf">0.9188263888888889</span>
+<span class="n">SSTable</span> <span class="n">Level</span><span class="p">:</span> <span class="mi">0</span>
+<span class="n">Repaired</span> <span class="n">at</span><span class="p">:</span> <span class="mi">0</span>
+<span class="n">Replay</span> <span class="n">positions</span> <span class="n">covered</span><span class="p">:</span> <span class="p">{</span><span class="n">CommitLogPosition</span><span class="p">(</span><span class="n">segmentId</span><span class="o">=</span><span class="mi">1535025390651</span><span class="p">,</span> <span class="n">position</span><span class="o">=</span><span class="mi">226400</span><span class="p">)</span><span class="o">=</span><span class="n">CommitLogPosition</span><span class="p">(</span><span class="n">segmentId</span><span class="o">=</span><span class="mi">1535025390651</span><span class="p">,</span> <span class="n">position</span><span class="o">=</span><span class="mi">6849139</span><span class="p">)}</span>
+<span class="n">totalColumnsSet</span><span class="p">:</span> <span class="mi">100000</span>
+<span class="n">totalRows</span><span class="p">:</span> <span class="mi">20000</span>
+<span class="n">Estimated</span> <span class="n">tombstone</span> <span class="n">drop</span> <span class="n">times</span><span class="p">:</span>
+<span class="mi">1535039100</span><span class="p">:</span>     <span class="mi">80390</span>
+<span class="mi">1535039160</span><span class="p">:</span>      <span class="mi">5645</span>
+<span class="mi">1535039220</span><span class="p">:</span>     <span class="mi">13965</span>
+<span class="n">Count</span>               <span class="n">Row</span> <span class="n">Size</span>        <span class="n">Cell</span> <span class="n">Count</span>
+<span class="mi">1</span>                          <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">2</span>                          <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">3</span>                          <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">4</span>                          <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">5</span>                          <span class="mi">0</span>             <span class="mi">20000</span>
+<span class="mi">6</span>                          <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">7</span>                          <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">8</span>                          <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">10</span>                         <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">12</span>                         <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">14</span>                         <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">17</span>                         <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">20</span>                         <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">24</span>                         <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">29</span>                         <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">35</span>                         <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">42</span>                         <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">50</span>                         <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">60</span>                         <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">72</span>                         <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">86</span>                         <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">103</span>                        <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">124</span>                        <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">149</span>                        <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">179</span>                        <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">215</span>                        <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">258</span>                    <span class="mi">20000</span>                 <span class="mi">0</span>
+<span class="mi">310</span>                        <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">372</span>                        <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">446</span>                        <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">535</span>                        <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">642</span>                        <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">770</span>                        <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">924</span>                        <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">1109</span>                       <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">1331</span>                       <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">1597</span>                       <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">1916</span>                       <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">2299</span>                       <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">2759</span>                       <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">3311</span>                       <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">3973</span>                       <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">4768</span>                       <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">5722</span>                       <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">6866</span>                       <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">8239</span>                       <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">9887</span>                       <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">11864</span>                      <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">14237</span>                      <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">17084</span>                      <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">20501</span>                      <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">24601</span>                      <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">29521</span>                      <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">35425</span>                      <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">42510</span>                      <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">51012</span>                      <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">61214</span>                      <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">73457</span>                      <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">88148</span>                      <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">105778</span>                     <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">126934</span>                     <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">152321</span>                     <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">182785</span>                     <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">219342</span>                     <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">263210</span>                     <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">315852</span>                     <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">379022</span>                     <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">454826</span>                     <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">545791</span>                     <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">654949</span>                     <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">785939</span>                     <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">943127</span>                     <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">1131752</span>                    <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">1358102</span>                    <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">1629722</span>                    <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">1955666</span>                    <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">2346799</span>                    <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">2816159</span>                    <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">3379391</span>                    <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">4055269</span>                    <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">4866323</span>                    <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">5839588</span>                    <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">7007506</span>                    <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">8409007</span>                    <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">10090808</span>                   <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">12108970</span>                   <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">14530764</span>                   <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">17436917</span>                   <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">20924300</span>                   <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">25109160</span>                   <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">30130992</span>                   <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">36157190</span>                   <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">43388628</span>                   <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">52066354</span>                   <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">62479625</span>                   <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">74975550</span>                   <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">89970660</span>                   <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">107964792</span>                  <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">129557750</span>                  <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">155469300</span>                  <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">186563160</span>                  <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">223875792</span>                  <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">268650950</span>                  <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">322381140</span>                  <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">386857368</span>                  <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">464228842</span>                  <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">557074610</span>                  <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">668489532</span>                  <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">802187438</span>                  <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">962624926</span>                  <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">1155149911</span>                 <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">1386179893</span>                 <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">1663415872</span>                 <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">1996099046</span>                 <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">2395318855</span>                 <span class="mi">0</span>                 <span class="mi">0</span>
+<span class="mi">2874382626</span>                 <span class="mi">0</span>
+<span class="mi">3449259151</span>                 <span class="mi">0</span>
+<span class="mi">4139110981</span>                 <span class="mi">0</span>
+<span class="mi">4966933177</span>                 <span class="mi">0</span>
+<span class="mi">5960319812</span>                 <span class="mi">0</span>
+<span class="mi">7152383774</span>                 <span class="mi">0</span>
+<span class="mi">8582860529</span>                 <span class="mi">0</span>
+<span class="mi">10299432635</span>                 <span class="mi">0</span>
+<span class="mi">12359319162</span>                 <span class="mi">0</span>
+<span class="mi">14831182994</span>                 <span class="mi">0</span>
+<span class="mi">17797419593</span>                 <span class="mi">0</span>
+<span class="mi">21356903512</span>                 <span class="mi">0</span>
+<span class="mi">25628284214</span>                 <span class="mi">0</span>
+<span class="mi">30753941057</span>                 <span class="mi">0</span>
+<span class="mi">36904729268</span>                 <span class="mi">0</span>
+<span class="mi">44285675122</span>                 <span class="mi">0</span>
+<span class="mi">53142810146</span>                 <span class="mi">0</span>
+<span class="mi">63771372175</span>                 <span class="mi">0</span>
+<span class="mi">76525646610</span>                 <span class="mi">0</span>
+<span class="mi">91830775932</span>                 <span class="mi">0</span>
+<span class="mi">110196931118</span>                 <span class="mi">0</span>
+<span class="mi">132236317342</span>                 <span class="mi">0</span>
+<span class="mi">158683580810</span>                 <span class="mi">0</span>
+<span class="mi">190420296972</span>                 <span class="mi">0</span>
+<span class="mi">228504356366</span>                 <span class="mi">0</span>
+<span class="mi">274205227639</span>                 <span class="mi">0</span>
+<span class="mi">329046273167</span>                 <span class="mi">0</span>
+<span class="mi">394855527800</span>                 <span class="mi">0</span>
+<span class="mi">473826633360</span>                 <span class="mi">0</span>
+<span class="mi">568591960032</span>                 <span class="mi">0</span>
+<span class="mi">682310352038</span>                 <span class="mi">0</span>
+<span class="mi">818772422446</span>                 <span class="mi">0</span>
+<span class="mi">982526906935</span>                 <span class="mi">0</span>
+<span class="mi">1179032288322</span>                 <span class="mi">0</span>
+<span class="mi">1414838745986</span>                 <span class="mi">0</span>
+<span class="n">Estimated</span> <span class="n">cardinality</span><span class="p">:</span> <span class="mi">20196</span>
+<span class="n">EncodingStats</span> <span class="n">minTTL</span><span class="p">:</span> <span class="mi">0</span>
+<span class="n">EncodingStats</span> <span class="n">minLocalDeletionTime</span><span class="p">:</span> <span class="mi">1442880000</span>
+<span class="n">EncodingStats</span> <span class="n">minTimestamp</span><span class="p">:</span> <span class="mi">1535025565275000</span>
+<span class="n">KeyType</span><span class="p">:</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">marshal</span><span class="o">.</span><span class="n">BytesType</span>
+<span class="n">ClusteringTypes</span><span class="p">:</span> <span class="p">[</span><span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">marshal</span><span class="o">.</span><span class="n">UTF8Type</span><span class="p">]</span>
+<span class="n">StaticColumns</span><span class="p">:</span> <span class="p">{</span><span class="n">C3</span><span class="p">:</span><span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">marshal</span><span class="o">.</span><span class="n">BytesType</span><span class="p">,</span> <span class="n">C4</span><span class="p">:</span><span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">marshal</span><span class="o">.</span><span class="n">BytesType</span><span class="p">,</span> <span class="n">C0</span><span class="p">:</span><span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">marshal</span><span class="o">.</span><span class="n">BytesType</span><span class="p">,</span> <span class="n">C1</span><span class="p">:</span><span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">marshal</span><span class="o">.</span><span class="n">BytesType</span><span class="p">,</span> <span class="n">C2</span><span class="p">:</span><span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">marshal</span><span class="o">.</span><span class="n">BytesType</span><span class="p">}</span>
+<span class="n">RegularColumns</span><span class="p">:</span> <span class="p">{}</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="specify-gc-grace-seconds">
+<h2>Specify gc grace seconds<a class="headerlink" href="#specify-gc-grace-seconds" title="Permalink to this headline">¶</a></h2>
+<p>To see the ratio of droppable tombstones given a configured gc grace seconds, use the gc_grace_seconds option. Because the sstablemetadata tool doesn’t access the schema directly, this is a way to more accurately estimate droppable tombstones – for example, if you pass in gc_grace_seconds matching what is configured in the schema. The gc_grace_seconds value provided is subtracted from the curent machine time (in seconds).</p>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-12208">https://issues.apache.org/jira/browse/CASSANDRA-12208</a></p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sstablemetadata /var/lib/cassandra/data/keyspace1/standard1-41b52700b4ed11e896476d2c86545d91/mc-12-big-Data.db | grep &quot;Estimated tombstone drop times&quot; -A4
+Estimated tombstone drop times:
+1536599100:         1
+1536599640:         1
+1536599700:         2
+
+echo $(date +%s)
+1536602005
+
+# if gc_grace_seconds was configured at 100, all of the tombstones would be currently droppable
+sstablemetadata --gc_grace_seconds 100 /var/lib/cassandra/data/keyspace1/standard1-41b52700b4ed11e896476d2c86545d91/mc-12-big-Data.db | grep &quot;Estimated droppable tombstones&quot;
+Estimated droppable tombstones: 4.0E-5
+
+# if gc_grace_seconds was configured at 4700, some of the tombstones would be currently droppable
+sstablemetadata --gc_grace_seconds 4700 /var/lib/cassandra/data/keyspace1/standard1-41b52700b4ed11e896476d2c86545d91/mc-12-big-Data.db | grep &quot;Estimated droppable tombstones&quot;
+Estimated droppable tombstones: 9.61111111111111E-6
+
+# if gc_grace_seconds was configured at 5000, none of the tombstones would be currently droppable
+sstablemetadata --gc_grace_seconds 5000 /var/lib/cassandra/data/keyspace1/standard1-41b52700b4ed11e896476d2c86545d91/mc-12-big-Data.db | grep &quot;Estimated droppable tombstones&quot;
+Estimated droppable tombstones: 0.0
+</pre></div>
+</div>
+</div>
+<div class="section" id="explanation-of-each-value-printed-above">
+<h2>Explanation of each value printed above<a class="headerlink" href="#explanation-of-each-value-printed-above" title="Permalink to this headline">¶</a></h2>
+<table border="1" class="docutils">
+<colgroup>
+<col width="27%" />
+<col width="73%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Value</th>
+<th class="head">Explanation</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>SSTable</td>
+<td>prefix of the sstable filenames related to this sstable</td>
+</tr>
+<tr class="row-odd"><td>Partitioner</td>
+<td>partitioner type used to distribute data across nodes; defined in cassandra.yaml</td>
+</tr>
+<tr class="row-even"><td>Bloom Filter FP</td>
+<td>precision of Bloom filter used in reads; defined in the table definition</td>
+</tr>
+<tr class="row-odd"><td>Minimum timestamp</td>
+<td>minimum timestamp of any entry in this sstable, in epoch microseconds</td>
+</tr>
+<tr class="row-even"><td>Maximum timestamp</td>
+<td>maximum timestamp of any entry in this sstable, in epoch microseconds</td>
+</tr>
+<tr class="row-odd"><td>SSTable min local deletion time</td>
+<td>minimum timestamp of deletion date, based on TTL, in epoch seconds</td>
+</tr>
+<tr class="row-even"><td>SSTable max local deletion time</td>
+<td>maximum timestamp of deletion date, based on TTL, in epoch seconds</td>
+</tr>
+<tr class="row-odd"><td>Compressor</td>
+<td>blank (-) by default; if not blank, indicates type of compression enabled on the table</td>
+</tr>
+<tr class="row-even"><td>TTL min</td>
+<td>time-to-live in seconds; default 0 unless defined in the table definition</td>
+</tr>
+<tr class="row-odd"><td>TTL max</td>
+<td>time-to-live in seconds; default 0 unless defined in the table definition</td>
+</tr>
+<tr class="row-even"><td>First token</td>
+<td>lowest token and related key found in the sstable summary</td>
+</tr>
+<tr class="row-odd"><td>Last token</td>
+<td>highest token and related key found in the sstable summary</td>
+</tr>
+<tr class="row-even"><td>Estimated droppable tombstones</td>
+<td>ratio of tombstones to columns, using configured gc grace seconds if relevant</td>
+</tr>
+<tr class="row-odd"><td>SSTable level</td>
+<td>compaction level of this sstable, if leveled compaction (LCS) is used</td>
+</tr>
+<tr class="row-even"><td>Repaired at</td>
+<td>the timestamp this sstable was marked as repaired via sstablerepairedset, in epoch milliseconds</td>
+</tr>
+<tr class="row-odd"><td>Replay positions covered</td>
+<td>the interval of time and commitlog positions related to this sstable</td>
+</tr>
+<tr class="row-even"><td>totalColumnsSet</td>
+<td>number of cells in the table</td>
+</tr>
+<tr class="row-odd"><td>totalRows</td>
+<td>number of rows in the table</td>
+</tr>
+<tr class="row-even"><td>Estimated tombstone drop times</td>
+<td>approximate number of rows that will expire, ordered by epoch seconds</td>
+</tr>
+<tr class="row-odd"><td>Count  Row Size  Cell Count</td>
+<td>two histograms in two columns; one represents distribution of Row Size
+and the other represents distribution of Cell Count</td>
+</tr>
+<tr class="row-even"><td>Estimated cardinality</td>
+<td>an estimate of unique values, used for compaction</td>
+</tr>
+<tr class="row-odd"><td>EncodingStats* minTTL</td>
+<td>in epoch milliseconds</td>
+</tr>
+<tr class="row-even"><td>EncodingStats* minLocalDeletionTime</td>
+<td>in epoch seconds</td>
+</tr>
+<tr class="row-odd"><td>EncodingStats* minTimestamp</td>
+<td>in epoch microseconds</td>
+</tr>
+<tr class="row-even"><td>KeyType</td>
+<td>the type of partition key, useful in reading and writing data
+from/to storage; defined in the table definition</td>
+</tr>
+<tr class="row-odd"><td>ClusteringTypes</td>
+<td>the type of clustering key, useful in reading and writing data
+from/to storage; defined in the table definition</td>
+</tr>
+<tr class="row-even"><td>StaticColumns</td>
+<td>a list of the shared columns in the table</td>
+</tr>
+<tr class="row-odd"><td>RegularColumns</td>
+<td>a list of non-static, non-key columns in the table</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>For the encoding stats values, the delta of this and the current epoch time is used when encoding and storing data in the most optimal way.</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="sstableofflinerelevel.html" class="btn btn-default pull-right " role="button" title="sstableofflinerelevel" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="sstableloader.html" class="btn btn-default" role="button" title="sstableloader" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/sstable/sstableofflinerelevel.html b/src/doc/4.0-rc1/tools/sstable/sstableofflinerelevel.html
new file mode 100644
index 0000000..460e545
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/sstable/sstableofflinerelevel.html
@@ -0,0 +1,191 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-parent: "SSTable Tools"
+
+doc-title: "sstableofflinerelevel"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="SSTable Tools" href="index.html"/>
+      <link rel="next" title="sstablerepairedset" href="sstablerepairedset.html"/>
+      <link rel="prev" title="sstablemetadata" href="sstablemetadata.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">SSTable Tools</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="sstabledump.html">sstabledump</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableexpiredblockers.html">sstableexpiredblockers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablelevelreset.html">sstablelevelreset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableloader.html">sstableloader</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablemetadata.html">sstablemetadata</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">sstableofflinerelevel</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablerepairedset.html">sstablerepairedset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablescrub.html">sstablescrub</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablesplit.html">sstablesplit</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableupgrade.html">sstableupgrade</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableutil.html">sstableutil</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableverify.html">sstableverify</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sstableofflinerelevel">
+<h1>sstableofflinerelevel<a class="headerlink" href="#sstableofflinerelevel" title="Permalink to this headline">¶</a></h1>
+<p>When using LeveledCompactionStrategy, sstables can get stuck at L0 on a recently bootstrapped node, and compactions may never catch up. This tool is used to bump sstables into the highest level possible.</p>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-8301">https://issues.apache.org/jira/browse/CASSANDRA-8301</a></p>
+<p>The way this is done is: sstables are storted by their last token. Given an original leveling like this (note that [ ] indicates token boundaries, not sstable size on disk; all sstables are the same size):</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">L3</span> <span class="p">[][][][][][][][][][][]</span>
+<span class="n">L2</span> <span class="p">[</span>    <span class="p">][</span>    <span class="p">][</span>    <span class="p">][</span>  <span class="p">]</span>
+<span class="n">L1</span> <span class="p">[</span>          <span class="p">][</span>        <span class="p">]</span>
+<span class="n">L0</span> <span class="p">[</span>                    <span class="p">]</span>
+</pre></div>
+</div>
+<p>Will look like this after being dropped to L0 and sorted by last token (and, to illustrate overlap, the overlapping ones are put on a new line):</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[][][]</span>
+<span class="p">[</span>    <span class="p">][][][]</span>
+    <span class="p">[</span>    <span class="p">]</span>
+<span class="p">[</span>          <span class="p">]</span>
+<span class="o">...</span>
+</pre></div>
+</div>
+<p>Then, we start iterating from the smallest last-token and adding all sstables that do not cause an overlap to a level. We will reconstruct the original leveling top-down. Whenever we add an sstable to the level, we remove it from the sorted list. Once we reach the end of the sorted list, we have a full level, and can start over with the level below.</p>
+<p>If we end up with more levels than expected, we put all levels exceeding the expected in L0, for example, original L0 files will most likely be put in a level of its own since they most often overlap many other sstables.</p>
+<p>Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.</p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>sstableofflinerelevel [–dry-run] &lt;keyspace&gt; &lt;table&gt;</p>
+</div>
+<div class="section" id="doing-a-dry-run">
+<h2>Doing a dry run<a class="headerlink" href="#doing-a-dry-run" title="Permalink to this headline">¶</a></h2>
+<p>Use the –dry-run option to see the current level distribution and predicted level after the change.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableofflinerelevel</span> <span class="o">--</span><span class="n">dry</span><span class="o">-</span><span class="n">run</span> <span class="n">keyspace</span> <span class="n">eventlog</span>
+<span class="n">For</span> <span class="n">sstables</span> <span class="ow">in</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="p">:</span>
+<span class="n">Current</span> <span class="n">leveling</span><span class="p">:</span>
+<span class="n">L0</span><span class="o">=</span><span class="mi">2</span>
+<span class="n">Potential</span> <span class="n">leveling</span><span class="p">:</span>
+<span class="n">L0</span><span class="o">=</span><span class="mi">1</span>
+<span class="n">L1</span><span class="o">=</span><span class="mi">1</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="running-a-relevel">
+<h2>Running a relevel<a class="headerlink" href="#running-a-relevel" title="Permalink to this headline">¶</a></h2>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableofflinerelevel</span> <span class="n">keyspace</span> <span class="n">eventlog</span>
+<span class="n">For</span> <span class="n">sstables</span> <span class="ow">in</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="p">:</span>
+<span class="n">Current</span> <span class="n">leveling</span><span class="p">:</span>
+<span class="n">L0</span><span class="o">=</span><span class="mi">2</span>
+<span class="n">New</span> <span class="n">leveling</span><span class="p">:</span>
+<span class="n">L0</span><span class="o">=</span><span class="mi">1</span>
+<span class="n">L1</span><span class="o">=</span><span class="mi">1</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="keyspace-or-table-not-found">
+<h2>Keyspace or table not found<a class="headerlink" href="#keyspace-or-table-not-found" title="Permalink to this headline">¶</a></h2>
+<p>If an invalid keyspace and/or table is provided, an exception will be thrown.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableofflinerelevel</span> <span class="o">--</span><span class="n">dry</span><span class="o">-</span><span class="n">run</span> <span class="n">keyspace</span> <span class="n">evenlog</span>
+
+<span class="ne">Exception</span> <span class="ow">in</span> <span class="n">thread</span> <span class="s2">&quot;main&quot;</span> <span class="n">java</span><span class="o">.</span><span class="n">lang</span><span class="o">.</span><span class="n">IllegalArgumentException</span><span class="p">:</span> <span class="n">Unknown</span> <span class="n">keyspace</span><span class="o">/</span><span class="n">columnFamily</span> <span class="n">keyspace1</span><span class="o">.</span><span class="n">evenlog</span>
+    <span class="n">at</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">cassandra</span><span class="o">.</span><span class="n">tools</span><span class="o">.</span><span class="n">SSTableOfflineRelevel</span><span class="o">.</span><span class="n">main</span><span class="p">(</span><span class="n">SSTableOfflineRelevel</span><span class="o">.</span><span class="n">java</span><span class="p">:</span><span class="mi">96</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="sstablerepairedset.html" class="btn btn-default pull-right " role="button" title="sstablerepairedset" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="sstablemetadata.html" class="btn btn-default" role="button" title="sstablemetadata" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/sstable/sstablerepairedset.html b/src/doc/4.0-rc1/tools/sstable/sstablerepairedset.html
new file mode 100644
index 0000000..29ef67d
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/sstable/sstablerepairedset.html
@@ -0,0 +1,194 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-parent: "SSTable Tools"
+
+doc-title: "sstablerepairedset"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="SSTable Tools" href="index.html"/>
+      <link rel="next" title="sstablescrub" href="sstablescrub.html"/>
+      <link rel="prev" title="sstableofflinerelevel" href="sstableofflinerelevel.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">SSTable Tools</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="sstabledump.html">sstabledump</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableexpiredblockers.html">sstableexpiredblockers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablelevelreset.html">sstablelevelreset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableloader.html">sstableloader</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablemetadata.html">sstablemetadata</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableofflinerelevel.html">sstableofflinerelevel</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">sstablerepairedset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablescrub.html">sstablescrub</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablesplit.html">sstablesplit</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableupgrade.html">sstableupgrade</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableutil.html">sstableutil</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableverify.html">sstableverify</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sstablerepairedset">
+<h1>sstablerepairedset<a class="headerlink" href="#sstablerepairedset" title="Permalink to this headline">¶</a></h1>
+<p>Repairs can take a very long time in some environments, for large sizes of data. Use this tool to set the repairedAt status on a given set of sstables, so that repairs can be run on only un-repaired sstables if desired.</p>
+<p>Note that running a repair (e.g., via nodetool repair) doesn’t set the status of this metadata. Only setting the status of this metadata via this tool does.</p>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-5351">https://issues.apache.org/jira/browse/CASSANDRA-5351</a></p>
+<p>Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.</p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>sstablerepairedset –really-set &lt;options&gt; [-f &lt;sstable-list&gt; | &lt;sstables&gt;]</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="30%" />
+<col width="70%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>–really-set</td>
+<td>required if you want to really set the status</td>
+</tr>
+<tr class="row-even"><td>–is-repaired</td>
+<td>set the repairedAt status to the last modified time</td>
+</tr>
+<tr class="row-odd"><td>–is-unrepaired</td>
+<td>set the repairedAt status to 0</td>
+</tr>
+<tr class="row-even"><td>-f</td>
+<td>use a file containing a list of sstables as the input</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="set-a-lot-of-sstables-to-unrepaired-status">
+<h2>Set a lot of sstables to unrepaired status<a class="headerlink" href="#set-a-lot-of-sstables-to-unrepaired-status" title="Permalink to this headline">¶</a></h2>
+<p>There are many ways to do this programmatically. This way would likely include variables for the keyspace and table.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">find</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">d936bd20a17c11e8bc92a55ed562cd82</span><span class="o">/*</span> <span class="o">-</span><span class="n">name</span> <span class="s2">&quot;*Data.db&quot;</span> <span class="o">-</span><span class="n">print0</span> <span class="o">|</span> <span class="n">xargs</span> <span class="o">-</span><span class="mi">0</span> <span class="o">-</span><span class="n">I</span> <span class="o">%</span> <span class="n">sstablerepairedset</span> <span class="o">--</span><span class="n">really</span><span class="o">-</span><span class="nb">set</span> <span class="o">--</span><span class="ow">is</span><span class="o">-</span><span class="n">unrepaired</span> <span class="o">%</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="set-one-to-many-sstables-to-repaired-status">
+<h2>Set one to many sstables to repaired status<a class="headerlink" href="#set-one-to-many-sstables-to-repaired-status" title="Permalink to this headline">¶</a></h2>
+<p>Set the repairedAt status after a repair to mark the sstables as repaired. Again, using variables for the keyspace and table names is a good choice.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">nodetool</span> <span class="n">repair</span> <span class="n">keyspace1</span> <span class="n">standard1</span>
+<span class="n">find</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">d936bd20a17c11e8bc92a55ed562cd82</span><span class="o">/*</span> <span class="o">-</span><span class="n">name</span> <span class="s2">&quot;*Data.db&quot;</span> <span class="o">-</span><span class="n">print0</span> <span class="o">|</span> <span class="n">xargs</span> <span class="o">-</span><span class="mi">0</span> <span class="o">-</span><span class="n">I</span> <span class="o">%</span> <span class="n">sstablerepairedset</span> <span class="o">--</span><span class="n">really</span><span class="o">-</span><span class="nb">set</span> <span class="o">--</span><span class="ow">is</span><span class="o">-</span><span class="n">repaired</span> <span class="o">%</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="print-metadata-showing-repaired-status">
+<h2>Print metadata showing repaired status<a class="headerlink" href="#print-metadata-showing-repaired-status" title="Permalink to this headline">¶</a></h2>
+<p>sstablemetadata can be used to view the status set or unset using this command.</p>
+<p>Example:</p>
+<blockquote>
+<div><p>sstablerepairedset –really-set –is-repaired /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db
+sstablemetadata /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db | grep “Repaired at”
+Repaired at: 1534443974000</p>
+<p>sstablerepairedset –really-set –is-unrepaired /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db
+sstablemetadata /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db | grep “Repaired at”
+Repaired at: 0</p>
+</div></blockquote>
+</div>
+<div class="section" id="using-command-in-a-script">
+<h2>Using command in a script<a class="headerlink" href="#using-command-in-a-script" title="Permalink to this headline">¶</a></h2>
+<p>If you know you ran repair 2 weeks ago, you can do something like the following:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstablerepairset</span> <span class="o">--</span><span class="ow">is</span><span class="o">-</span><span class="n">repaired</span> <span class="o">-</span><span class="n">f</span> <span class="o">&lt;</span><span class="p">(</span><span class="n">find</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/.../</span> <span class="o">-</span><span class="n">iname</span> <span class="s2">&quot;*Data.db*&quot;</span> <span class="o">-</span><span class="n">mtime</span> <span class="o">+</span><span class="mi">14</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="sstablescrub.html" class="btn btn-default pull-right " role="button" title="sstablescrub" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="sstableofflinerelevel.html" class="btn btn-default" role="button" title="sstableofflinerelevel" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/sstable/sstablescrub.html b/src/doc/4.0-rc1/tools/sstable/sstablescrub.html
new file mode 100644
index 0000000..8d056f8
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/sstable/sstablescrub.html
@@ -0,0 +1,226 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-parent: "SSTable Tools"
+
+doc-title: "sstablescrub"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="SSTable Tools" href="index.html"/>
+      <link rel="next" title="sstablesplit" href="sstablesplit.html"/>
+      <link rel="prev" title="sstablerepairedset" href="sstablerepairedset.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">SSTable Tools</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="sstabledump.html">sstabledump</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableexpiredblockers.html">sstableexpiredblockers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablelevelreset.html">sstablelevelreset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableloader.html">sstableloader</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablemetadata.html">sstablemetadata</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableofflinerelevel.html">sstableofflinerelevel</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablerepairedset.html">sstablerepairedset</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">sstablescrub</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablesplit.html">sstablesplit</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableupgrade.html">sstableupgrade</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableutil.html">sstableutil</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableverify.html">sstableverify</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sstablescrub">
+<h1>sstablescrub<a class="headerlink" href="#sstablescrub" title="Permalink to this headline">¶</a></h1>
+<p>Fix a broken sstable. The scrub process rewrites the sstable, skipping any corrupted rows. Because these rows are lost, follow this process with a repair.</p>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-4321">https://issues.apache.org/jira/browse/CASSANDRA-4321</a></p>
+<p>Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.</p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>sstablescrub &lt;options&gt; &lt;keyspace&gt; &lt;table&gt;</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="12%" />
+<col width="88%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>–debug</td>
+<td>display stack traces</td>
+</tr>
+<tr class="row-even"><td>-e,–header-fix &lt;arg&gt;</td>
+<td><p class="first">Option whether and how to perform a check of the sstable serialization-headers and fix , fixable issues.
+Possible argument values:</p>
+<blockquote class="last">
+<div><ul class="simple">
+<li>validate-only: validate the serialization-headers, but do not fix those. Do not continue with scrub - i.e. only validate the header (dry-run of fix-only).</li>
+<li>validate: (default) validate the serialization-headers, but do not fix those and only continue with scrub if no error were detected.</li>
+<li>fix-only: validate and fix the serialization-headers, don’t continue with scrub.</li>
+<li>fix: validate and fix the serialization-headers, do not fix and do not continue with scrub if the serialization-header check encountered errors.</li>
+<li>off: don’t perform the serialization-header checks.</li>
+</ul>
+</div></blockquote>
+</td>
+</tr>
+<tr class="row-odd"><td>-h,–help</td>
+<td>display this help message</td>
+</tr>
+<tr class="row-even"><td>-m,–manifest-check</td>
+<td>only check and repair the leveled manifest, without actually scrubbing the sstables</td>
+</tr>
+<tr class="row-odd"><td>-n,–no-validate</td>
+<td>do not validate columns using column validator</td>
+</tr>
+<tr class="row-even"><td>-r,–reinsert-overflowed-ttl</td>
+<td>Rewrites rows with overflowed expiration date affected by CASSANDRA-14092
+with the maximum supported expiration date of 2038-01-19T03:14:06+00:00. The rows are rewritten with the original timestamp incremented by one millisecond to override/supersede any potential tombstone that may have been generated during compaction of the affected rows.</td>
+</tr>
+<tr class="row-odd"><td>-s,–skip-corrupted</td>
+<td>skip corrupt rows in counter tables</td>
+</tr>
+<tr class="row-even"><td>-v,–verbose</td>
+<td>verbose output</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="basic-scrub">
+<h2>Basic Scrub<a class="headerlink" href="#basic-scrub" title="Permalink to this headline">¶</a></h2>
+<p>The scrub without options will do a snapshot first, then write all non-corrupted files to a new sstable.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstablescrub</span> <span class="n">keyspace1</span> <span class="n">standard1</span>
+<span class="n">Pre</span><span class="o">-</span><span class="n">scrub</span> <span class="n">sstables</span> <span class="n">snapshotted</span> <span class="n">into</span> <span class="n">snapshot</span> <span class="n">pre</span><span class="o">-</span><span class="n">scrub</span><span class="o">-</span><span class="mi">1534424070883</span>
+<span class="n">Scrubbing</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-6365332094dd11e88f324f9c503e4753/mc-5-big-Data.db&#39;</span><span class="p">)</span> <span class="p">(</span><span class="mf">17.142</span><span class="n">MiB</span><span class="p">)</span>
+<span class="n">Scrub</span> <span class="n">of</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-6365332094dd11e88f324f9c503e4753/mc-5-big-Data.db&#39;</span><span class="p">)</span> <span class="n">complete</span><span class="p">:</span> <span class="mi">73367</span> <span class="n">rows</span> <span class="ow">in</span> <span class="n">new</span> <span class="n">sstable</span> <span class="ow">and</span> <span class="mi">0</span> <span class="n">empty</span> <span class="p">(</span><span class="n">tombstoned</span><span class="p">)</span> <span class="n">rows</span> <span class="n">dropped</span>
+<span class="n">Checking</span> <span class="n">leveled</span> <span class="n">manifest</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="scrub-without-validation">
+<h2>Scrub without Validation<a class="headerlink" href="#scrub-without-validation" title="Permalink to this headline">¶</a></h2>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-9406">https://issues.apache.org/jira/browse/CASSANDRA-9406</a></p>
+<p>Use the –no-validate option to retain data that may be misrepresented (e.g., an integer stored in a long field) but not corrupt. This data usually doesn not present any errors to the client.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstablescrub</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">validate</span> <span class="n">keyspace1</span> <span class="n">standard1</span>
+<span class="n">Pre</span><span class="o">-</span><span class="n">scrub</span> <span class="n">sstables</span> <span class="n">snapshotted</span> <span class="n">into</span> <span class="n">snapshot</span> <span class="n">pre</span><span class="o">-</span><span class="n">scrub</span><span class="o">-</span><span class="mi">1536243158517</span>
+<span class="n">Scrubbing</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-bc9cf530b1da11e886c66d2c86545d91/mc-2-big-Data.db&#39;</span><span class="p">)</span> <span class="p">(</span><span class="mf">4.482</span><span class="n">MiB</span><span class="p">)</span>
+<span class="n">Scrub</span> <span class="n">of</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-bc9cf530b1da11e886c66d2c86545d91/mc-2-big-Data.db&#39;</span><span class="p">)</span> <span class="n">complete</span><span class="p">;</span> <span class="n">looks</span> <span class="n">like</span> <span class="nb">all</span> <span class="mi">0</span> <span class="n">rows</span> <span class="n">were</span> <span class="n">tombstoned</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="skip-corrupted-counter-tables">
+<h2>Skip Corrupted Counter Tables<a class="headerlink" href="#skip-corrupted-counter-tables" title="Permalink to this headline">¶</a></h2>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-5930">https://issues.apache.org/jira/browse/CASSANDRA-5930</a></p>
+<p>If counter tables are corrupted in a way that prevents sstablescrub from completing, you can use the –skip-corrupted option to skip scrubbing those counter tables. This workaround is not necessary in versions 2.0+.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstablescrub</span> <span class="o">--</span><span class="n">skip</span><span class="o">-</span><span class="n">corrupted</span> <span class="n">keyspace1</span> <span class="n">counter1</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="dealing-with-overflow-dates">
+<h2>Dealing with Overflow Dates<a class="headerlink" href="#dealing-with-overflow-dates" title="Permalink to this headline">¶</a></h2>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-14092">https://issues.apache.org/jira/browse/CASSANDRA-14092</a></p>
+<p>Using the option –reinsert-overflowed-ttl allows a rewriting of rows that had a max TTL going over the maximum (causing an overflow).</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstablescrub</span> <span class="o">--</span><span class="n">reinsert</span><span class="o">-</span><span class="n">overflowed</span><span class="o">-</span><span class="n">ttl</span> <span class="n">keyspace1</span> <span class="n">counter1</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="manifest-check">
+<h2>Manifest Check<a class="headerlink" href="#manifest-check" title="Permalink to this headline">¶</a></h2>
+<p>As of Cassandra version 2.0, this option is no longer relevant, since level data was moved from a separate manifest into the sstable metadata.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="sstablesplit.html" class="btn btn-default pull-right " role="button" title="sstablesplit" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="sstablerepairedset.html" class="btn btn-default" role="button" title="sstablerepairedset" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/sstable/sstablesplit.html b/src/doc/4.0-rc1/tools/sstable/sstablesplit.html
new file mode 100644
index 0000000..9f9ce64
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/sstable/sstablesplit.html
@@ -0,0 +1,203 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-parent: "SSTable Tools"
+
+doc-title: "sstablesplit"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="SSTable Tools" href="index.html"/>
+      <link rel="next" title="sstableupgrade" href="sstableupgrade.html"/>
+      <link rel="prev" title="sstablescrub" href="sstablescrub.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">SSTable Tools</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="sstabledump.html">sstabledump</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableexpiredblockers.html">sstableexpiredblockers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablelevelreset.html">sstablelevelreset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableloader.html">sstableloader</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablemetadata.html">sstablemetadata</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableofflinerelevel.html">sstableofflinerelevel</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablerepairedset.html">sstablerepairedset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablescrub.html">sstablescrub</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">sstablesplit</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableupgrade.html">sstableupgrade</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableutil.html">sstableutil</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableverify.html">sstableverify</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sstablesplit">
+<h1>sstablesplit<a class="headerlink" href="#sstablesplit" title="Permalink to this headline">¶</a></h1>
+<p>Big sstable files can take up a lot of disk space. The sstablesplit tool can be used to split those large files into smaller files. It can be thought of as a type of anticompaction.</p>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-4766">https://issues.apache.org/jira/browse/CASSANDRA-4766</a></p>
+<p>Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.</p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>sstablesplit &lt;options&gt; &lt;filename&gt;</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="30%" />
+<col width="70%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>–debug</td>
+<td>display stack traces</td>
+</tr>
+<tr class="row-even"><td>-h, –help</td>
+<td>display this help message</td>
+</tr>
+<tr class="row-odd"><td>–no-snapshot</td>
+<td>don’t snapshot the sstables before splitting</td>
+</tr>
+<tr class="row-even"><td>-s, –size &lt;size&gt;</td>
+<td>maximum size in MB for the output sstables (default: 50)</td>
+</tr>
+</tbody>
+</table>
+<p>This command should be run with Cassandra stopped. Note: the script does not verify that Cassandra is stopped.</p>
+</div>
+<div class="section" id="split-a-file">
+<h2>Split a File<a class="headerlink" href="#split-a-file" title="Permalink to this headline">¶</a></h2>
+<p>Split a large sstable into smaller sstables. By default, unless the option –no-snapshot is added, a snapshot will be done of the original sstable and placed in the snapshots folder.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstablesplit</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">8</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+
+<span class="n">Pre</span><span class="o">-</span><span class="n">split</span> <span class="n">sstables</span> <span class="n">snapshotted</span> <span class="n">into</span> <span class="n">snapshot</span> <span class="n">pre</span><span class="o">-</span><span class="n">split</span><span class="o">-</span><span class="mi">1533144514795</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="split-multiple-files">
+<h2>Split Multiple Files<a class="headerlink" href="#split-multiple-files" title="Permalink to this headline">¶</a></h2>
+<p>Wildcards can be used in the filename portion of the command to split multiple files.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstablesplit</span> <span class="o">--</span><span class="n">size</span> <span class="mi">1</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">1</span><span class="o">*</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="attempt-to-split-a-small-file">
+<h2>Attempt to Split a Small File<a class="headerlink" href="#attempt-to-split-a-small-file" title="Permalink to this headline">¶</a></h2>
+<p>If the file is already smaller than the split size provided, the sstable will not be split.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstablesplit</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">8</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+<span class="n">Skipping</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">8</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span><span class="p">:</span> <span class="n">it</span><span class="s1">&#39;s size (1.442 MB) is less than the split size (50 MB)</span>
+<span class="n">No</span> <span class="n">sstables</span> <span class="n">needed</span> <span class="n">splitting</span><span class="o">.</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="split-a-file-into-specified-size">
+<h2>Split a File into Specified Size<a class="headerlink" href="#split-a-file-into-specified-size" title="Permalink to this headline">¶</a></h2>
+<p>The default size used for splitting is 50MB. Specify another size with the –size option. The size is in megabytes (MB). Specify only the number, not the units. For example –size 50 is correct, but –size 50MB is not.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstablesplit</span> <span class="o">--</span><span class="n">size</span> <span class="mi">1</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">9</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+<span class="n">Pre</span><span class="o">-</span><span class="n">split</span> <span class="n">sstables</span> <span class="n">snapshotted</span> <span class="n">into</span> <span class="n">snapshot</span> <span class="n">pre</span><span class="o">-</span><span class="n">split</span><span class="o">-</span><span class="mi">1533144996008</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="split-without-snapshot">
+<h2>Split Without Snapshot<a class="headerlink" href="#split-without-snapshot" title="Permalink to this headline">¶</a></h2>
+<p>By default, sstablesplit will create a snapshot before splitting. If a snapshot is not needed, use the –no-snapshot option to skip it.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstablesplit</span> <span class="o">--</span><span class="n">size</span> <span class="mi">1</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">snapshot</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">11</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+</pre></div>
+</div>
+<p>Note: There is no output, but you can see the results in your file system.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="sstableupgrade.html" class="btn btn-default pull-right " role="button" title="sstableupgrade" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="sstablescrub.html" class="btn btn-default" role="button" title="sstablescrub" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/sstable/sstableupgrade.html b/src/doc/4.0-rc1/tools/sstable/sstableupgrade.html
new file mode 100644
index 0000000..ce57efa
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/sstable/sstableupgrade.html
@@ -0,0 +1,250 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-parent: "SSTable Tools"
+
+doc-title: "sstableupgrade"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="SSTable Tools" href="index.html"/>
+      <link rel="next" title="sstableutil" href="sstableutil.html"/>
+      <link rel="prev" title="sstablesplit" href="sstablesplit.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">SSTable Tools</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="sstabledump.html">sstabledump</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableexpiredblockers.html">sstableexpiredblockers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablelevelreset.html">sstablelevelreset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableloader.html">sstableloader</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablemetadata.html">sstablemetadata</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableofflinerelevel.html">sstableofflinerelevel</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablerepairedset.html">sstablerepairedset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablescrub.html">sstablescrub</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablesplit.html">sstablesplit</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">sstableupgrade</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableutil.html">sstableutil</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableverify.html">sstableverify</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sstableupgrade">
+<h1>sstableupgrade<a class="headerlink" href="#sstableupgrade" title="Permalink to this headline">¶</a></h1>
+<p>Upgrade the sstables in the given table (or snapshot) to the current version of Cassandra. This process is typically done after a Cassandra version upgrade. This operation will rewrite the sstables in the specified table to match the currently installed version of Cassandra. The sstableupgrade command can also be used to downgrade sstables to a previous version.</p>
+<p>The snapshot option will only upgrade the specified snapshot. Upgrading snapshots is required before attempting to restore a snapshot taken in a major version older than the major version Cassandra is currently running. This will replace the files in the given snapshot as well as break any hard links to live sstables.</p>
+<p>Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.</p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>sstableupgrade &lt;options&gt; &lt;keyspace&gt; &lt;table&gt; [snapshot_name]</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="30%" />
+<col width="70%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>–debug</td>
+<td>display stack traces</td>
+</tr>
+<tr class="row-even"><td>-h,–help</td>
+<td>display this help message</td>
+</tr>
+<tr class="row-odd"><td>-k,–keep-source</td>
+<td>do not delete the source sstables</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="rewrite-tables-to-the-current-cassandra-version">
+<h2>Rewrite tables to the current Cassandra version<a class="headerlink" href="#rewrite-tables-to-the-current-cassandra-version" title="Permalink to this headline">¶</a></h2>
+<p>Start with a set of sstables in one version of Cassandra:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ls</span> <span class="o">-</span><span class="n">al</span> <span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="mi">9695</span><span class="n">b790a63211e8a6fb091830ac5256</span><span class="o">/</span>
+<span class="o">...</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>      <span class="mi">348</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">45</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">CRC</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>  <span class="mi">5620000</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">45</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>       <span class="mi">10</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">45</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Digest</span><span class="o">.</span><span class="n">sha1</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>    <span class="mi">25016</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">45</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Filter</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>   <span class="mi">480000</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">45</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Index</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>     <span class="mi">9895</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">45</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Statistics</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>     <span class="mi">3562</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">45</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Summary</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>       <span class="mi">79</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">45</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">TOC</span><span class="o">.</span><span class="n">txt</span>
+</pre></div>
+</div>
+<p>After upgrading the Cassandra version, upgrade the sstables:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableupgrade</span> <span class="n">keyspace1</span> <span class="n">standard1</span>
+<span class="n">Found</span> <span class="mi">1</span> <span class="n">sstables</span> <span class="n">that</span> <span class="n">need</span> <span class="n">upgrading</span><span class="o">.</span>
+<span class="n">Upgrading</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-9695b790a63211e8a6fb091830ac5256/keyspace1-standard1-ka-1-Data.db&#39;</span><span class="p">)</span>
+<span class="n">Upgrade</span> <span class="n">of</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-9695b790a63211e8a6fb091830ac5256/keyspace1-standard1-ka-1-Data.db&#39;</span><span class="p">)</span> <span class="n">complete</span><span class="o">.</span>
+
+<span class="n">ls</span> <span class="o">-</span><span class="n">al</span> <span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="mi">9695</span><span class="n">b790a63211e8a6fb091830ac5256</span><span class="o">/</span>
+<span class="o">...</span>
+<span class="n">drwxr</span><span class="o">-</span><span class="n">xr</span><span class="o">-</span><span class="n">x</span>   <span class="mi">2</span> <span class="n">user</span>  <span class="n">wheel</span>       <span class="mi">64</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">48</span> <span class="n">backups</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>      <span class="mi">292</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">48</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">CRC</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>  <span class="mi">4599475</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">48</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>       <span class="mi">10</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">48</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Digest</span><span class="o">.</span><span class="n">crc32</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>    <span class="mi">25256</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">48</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Filter</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>   <span class="mi">330807</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">48</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Index</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>    <span class="mi">10312</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">48</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Statistics</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>     <span class="mi">3506</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">48</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Summary</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>       <span class="mi">80</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">48</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">TOC</span><span class="o">.</span><span class="n">txt</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="rewrite-tables-to-the-current-cassandra-version-and-keep-tables-in-old-version">
+<h2>Rewrite tables to the current Cassandra version, and keep tables in old version<a class="headerlink" href="#rewrite-tables-to-the-current-cassandra-version-and-keep-tables-in-old-version" title="Permalink to this headline">¶</a></h2>
+<p>Again, starting with a set of sstables in one version:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ls</span> <span class="o">-</span><span class="n">al</span> <span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">db532690a63411e8b4ae091830ac5256</span><span class="o">/</span>
+<span class="o">...</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>      <span class="mi">348</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">CRC</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>  <span class="mi">5620000</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>       <span class="mi">10</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Digest</span><span class="o">.</span><span class="n">sha1</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>    <span class="mi">25016</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Filter</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>   <span class="mi">480000</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Index</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>     <span class="mi">9895</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Statistics</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>     <span class="mi">3562</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Summary</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>       <span class="mi">79</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">TOC</span><span class="o">.</span><span class="n">txt</span>
+</pre></div>
+</div>
+<p>After upgrading the Cassandra version, upgrade the sstables, retaining the original sstables:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableupgrade</span> <span class="n">keyspace1</span> <span class="n">standard1</span> <span class="o">-</span><span class="n">k</span>
+<span class="n">Found</span> <span class="mi">1</span> <span class="n">sstables</span> <span class="n">that</span> <span class="n">need</span> <span class="n">upgrading</span><span class="o">.</span>
+<span class="n">Upgrading</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-db532690a63411e8b4ae091830ac5256/keyspace1-standard1-ka-1-Data.db&#39;</span><span class="p">)</span>
+<span class="n">Upgrade</span> <span class="n">of</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-db532690a63411e8b4ae091830ac5256/keyspace1-standard1-ka-1-Data.db&#39;</span><span class="p">)</span> <span class="n">complete</span><span class="o">.</span>
+
+<span class="n">ls</span> <span class="o">-</span><span class="n">al</span> <span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace1</span><span class="o">/</span><span class="n">standard1</span><span class="o">-</span><span class="n">db532690a63411e8b4ae091830ac5256</span><span class="o">/</span>
+<span class="o">...</span>
+<span class="n">drwxr</span><span class="o">-</span><span class="n">xr</span><span class="o">-</span><span class="n">x</span>   <span class="mi">2</span> <span class="n">user</span>  <span class="n">wheel</span>       <span class="mi">64</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">14</span><span class="p">:</span><span class="mi">00</span> <span class="n">backups</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--@</span>  <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>      <span class="mi">348</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">CRC</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--@</span>  <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>  <span class="mi">5620000</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--@</span>  <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>       <span class="mi">10</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Digest</span><span class="o">.</span><span class="n">sha1</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--@</span>  <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>    <span class="mi">25016</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Filter</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--@</span>  <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>   <span class="mi">480000</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Index</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--@</span>  <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>     <span class="mi">9895</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Statistics</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--@</span>  <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>     <span class="mi">3562</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">Summary</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--@</span>  <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>       <span class="mi">79</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">13</span><span class="p">:</span><span class="mi">58</span> <span class="n">keyspace1</span><span class="o">-</span><span class="n">standard1</span><span class="o">-</span><span class="n">ka</span><span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">TOC</span><span class="o">.</span><span class="n">txt</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>      <span class="mi">292</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">14</span><span class="p">:</span><span class="mi">01</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">CRC</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>  <span class="mi">4596370</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">14</span><span class="p">:</span><span class="mi">01</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>       <span class="mi">10</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">14</span><span class="p">:</span><span class="mi">01</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Digest</span><span class="o">.</span><span class="n">crc32</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>    <span class="mi">25256</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">14</span><span class="p">:</span><span class="mi">01</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Filter</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>   <span class="mi">330801</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">14</span><span class="p">:</span><span class="mi">01</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Index</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>    <span class="mi">10312</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">14</span><span class="p">:</span><span class="mi">01</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Statistics</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>     <span class="mi">3506</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">14</span><span class="p">:</span><span class="mi">01</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Summary</span><span class="o">.</span><span class="n">db</span>
+<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span>   <span class="mi">1</span> <span class="n">user</span>  <span class="n">wheel</span>       <span class="mi">80</span> <span class="n">Aug</span> <span class="mi">22</span> <span class="mi">14</span><span class="p">:</span><span class="mi">01</span> <span class="n">mc</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">TOC</span><span class="o">.</span><span class="n">txt</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="rewrite-a-snapshot-to-the-current-cassandra-version">
+<h2>Rewrite a snapshot to the current Cassandra version<a class="headerlink" href="#rewrite-a-snapshot-to-the-current-cassandra-version" title="Permalink to this headline">¶</a></h2>
+<p>Find the snapshot name:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">nodetool</span> <span class="n">listsnapshots</span>
+
+<span class="n">Snapshot</span> <span class="n">Details</span><span class="p">:</span>
+<span class="n">Snapshot</span> <span class="n">name</span>       <span class="n">Keyspace</span> <span class="n">name</span>                <span class="n">Column</span> <span class="n">family</span> <span class="n">name</span>           <span class="kc">True</span> <span class="n">size</span>          <span class="n">Size</span> <span class="n">on</span> <span class="n">disk</span>
+<span class="o">...</span>
+<span class="mi">1534962986979</span>       <span class="n">keyspace1</span>                    <span class="n">standard1</span>                    <span class="mf">5.85</span> <span class="n">MB</span>            <span class="mf">5.85</span> <span class="n">MB</span>
+</pre></div>
+</div>
+<p>Then rewrite the snapshot:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableupgrade</span> <span class="n">keyspace1</span> <span class="n">standard1</span> <span class="mi">1534962986979</span>
+<span class="n">Found</span> <span class="mi">1</span> <span class="n">sstables</span> <span class="n">that</span> <span class="n">need</span> <span class="n">upgrading</span><span class="o">.</span>
+<span class="n">Upgrading</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-5850e9f0a63711e8a5c5091830ac5256/snapshots/1534962986979/keyspace1-standard1-ka-1-Data.db&#39;</span><span class="p">)</span>
+<span class="n">Upgrade</span> <span class="n">of</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace1/standard1-5850e9f0a63711e8a5c5091830ac5256/snapshots/1534962986979/keyspace1-standard1-ka-1-Data.db&#39;</span><span class="p">)</span> <span class="n">complete</span><span class="o">.</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="sstableutil.html" class="btn btn-default pull-right " role="button" title="sstableutil" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="sstablesplit.html" class="btn btn-default" role="button" title="sstablesplit" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/sstable/sstableutil.html b/src/doc/4.0-rc1/tools/sstable/sstableutil.html
new file mode 100644
index 0000000..16f5bf5
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/sstable/sstableutil.html
@@ -0,0 +1,206 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-parent: "SSTable Tools"
+
+doc-title: "sstableutil"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="SSTable Tools" href="index.html"/>
+      <link rel="next" title="sstableverify" href="sstableverify.html"/>
+      <link rel="prev" title="sstableupgrade" href="sstableupgrade.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">SSTable Tools</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="sstabledump.html">sstabledump</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableexpiredblockers.html">sstableexpiredblockers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablelevelreset.html">sstablelevelreset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableloader.html">sstableloader</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablemetadata.html">sstablemetadata</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableofflinerelevel.html">sstableofflinerelevel</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablerepairedset.html">sstablerepairedset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablescrub.html">sstablescrub</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablesplit.html">sstablesplit</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableupgrade.html">sstableupgrade</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">sstableutil</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableverify.html">sstableverify</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sstableutil">
+<h1>sstableutil<a class="headerlink" href="#sstableutil" title="Permalink to this headline">¶</a></h1>
+<p>List sstable files for the provided table.</p>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-7066">https://issues.apache.org/jira/browse/CASSANDRA-7066</a></p>
+<p>Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.</p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>sstableutil &lt;options&gt; &lt;keyspace&gt; &lt;table&gt;</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="30%" />
+<col width="70%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>-c, –cleanup</td>
+<td>clean up any outstanding transactions</td>
+</tr>
+<tr class="row-even"><td>-d, –debug</td>
+<td>display stack traces</td>
+</tr>
+<tr class="row-odd"><td>-h, –help</td>
+<td>display this help message</td>
+</tr>
+<tr class="row-even"><td>-o, –oplog</td>
+<td>include operation logs</td>
+</tr>
+<tr class="row-odd"><td>-t, –type &lt;arg&gt;</td>
+<td>all (list all files, final or temporary), tmp (list temporary files only),
+final (list final files only),</td>
+</tr>
+<tr class="row-even"><td>-v, –verbose</td>
+<td>verbose output</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="list-all-sstables">
+<h2>List all sstables<a class="headerlink" href="#list-all-sstables" title="Permalink to this headline">¶</a></h2>
+<p>The basic command lists the sstables associated with a given keyspace/table.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableutil</span> <span class="n">keyspace</span> <span class="n">eventlog</span>
+<span class="n">Listing</span> <span class="n">files</span><span class="o">...</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">32</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">CRC</span><span class="o">.</span><span class="n">db</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">32</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">32</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Digest</span><span class="o">.</span><span class="n">crc32</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">32</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Filter</span><span class="o">.</span><span class="n">db</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">32</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Index</span><span class="o">.</span><span class="n">db</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">32</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Statistics</span><span class="o">.</span><span class="n">db</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">32</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Summary</span><span class="o">.</span><span class="n">db</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">32</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">TOC</span><span class="o">.</span><span class="n">txt</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">37</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">CRC</span><span class="o">.</span><span class="n">db</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">37</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">37</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Digest</span><span class="o">.</span><span class="n">crc32</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">37</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Filter</span><span class="o">.</span><span class="n">db</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">37</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Index</span><span class="o">.</span><span class="n">db</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">37</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Statistics</span><span class="o">.</span><span class="n">db</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">37</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Summary</span><span class="o">.</span><span class="n">db</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">37</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">TOC</span><span class="o">.</span><span class="n">txt</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="list-only-temporary-sstables">
+<h2>List only temporary sstables<a class="headerlink" href="#list-only-temporary-sstables" title="Permalink to this headline">¶</a></h2>
+<p>Using the -t option followed by <cite>tmp</cite> will list all temporary sstables, in the format above. Temporary sstables were used in pre-3.0 versions of Cassandra.</p>
+</div>
+<div class="section" id="list-only-final-sstables">
+<h2>List only final sstables<a class="headerlink" href="#list-only-final-sstables" title="Permalink to this headline">¶</a></h2>
+<p>Using the -t option followed by <cite>final</cite> will list all final sstables, in the format above. In recent versions of Cassandra, this is the same output as not using the -t option.</p>
+</div>
+<div class="section" id="include-transaction-logs">
+<h2>Include transaction logs<a class="headerlink" href="#include-transaction-logs" title="Permalink to this headline">¶</a></h2>
+<p>Using the -o option will include transaction logs in the listing, in the format above.</p>
+</div>
+<div class="section" id="clean-up-sstables">
+<h2>Clean up sstables<a class="headerlink" href="#clean-up-sstables" title="Permalink to this headline">¶</a></h2>
+<p>Using the -c option removes any transactions left over from incomplete writes or compactions.</p>
+<p>From the 3.0 upgrade notes:</p>
+<p>New transaction log files have been introduced to replace the compactions_in_progress system table, temporary file markers (tmp and tmplink) and sstable ancestors. Therefore, compaction metadata no longer contains ancestors. Transaction log files list sstable descriptors involved in compactions and other operations such as flushing and streaming. Use the sstableutil tool to list any sstable files currently involved in operations not yet completed, which previously would have been marked as temporary. A transaction log file contains one sstable per line, with the prefix “add:” or “remove:”. They also contain a special line “commit”, only inserted at the end when the transaction is committed. On startup we use these files to cleanup any partial transactions that were in progress when the process exited. If the commit line is found, we keep new sstables (those with the “add” prefix) and delete the old sstables (those with the “remove” prefix), vice-versa if the commit line is missing. Should you lose or delete these log files, both old and new sstable files will be kept as live files, which will result in duplicated sstables. These files are protected by incremental checksums so you should not manually edit them. When restoring a full backup or moving sstable files, you should clean-up any left over transactions and their temporary files first.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="sstableverify.html" class="btn btn-default pull-right " role="button" title="sstableverify" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="sstableupgrade.html" class="btn btn-default" role="button" title="sstableupgrade" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/tools/sstable/sstableverify.html b/src/doc/4.0-rc1/tools/sstable/sstableverify.html
new file mode 100644
index 0000000..5a46d00
--- /dev/null
+++ b/src/doc/4.0-rc1/tools/sstable/sstableverify.html
@@ -0,0 +1,206 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Cassandra Tools"
+
+doc-parent: "SSTable Tools"
+
+doc-title: "sstableverify"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../../index.html"/>
+      <link rel="up" title="SSTable Tools" href="index.html"/>
+      <link rel="next" title="Cassandra Stress" href="../cassandra_stress.html"/>
+      <link rel="prev" title="sstableutil" href="sstableutil.html"/>
+'
+doc-search-path: "../../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Cassandra Tools</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../cqlsh.html">cqlsh: the CQL shell</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../generatetokens.html">generatetokens</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html">Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../nodetool/nodetool.html#usage">Usage</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">SSTable Tools</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="sstabledump.html">sstabledump</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableexpiredblockers.html">sstableexpiredblockers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablelevelreset.html">sstablelevelreset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableloader.html">sstableloader</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablemetadata.html">sstablemetadata</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableofflinerelevel.html">sstableofflinerelevel</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablerepairedset.html">sstablerepairedset</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablescrub.html">sstablescrub</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstablesplit.html">sstablesplit</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableupgrade.html">sstableupgrade</a></li>
+<li class="toctree-l3"><a class="reference internal" href="sstableutil.html">sstableutil</a></li>
+<li class="toctree-l3 current"><a class="current reference internal" href="#">sstableverify</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../cassandra_stress.html">Cassandra Stress</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="sstableverify">
+<h1>sstableverify<a class="headerlink" href="#sstableverify" title="Permalink to this headline">¶</a></h1>
+<p>Check sstable(s) for errors or corruption, for the provided table.</p>
+<p>ref: <a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-5791">https://issues.apache.org/jira/browse/CASSANDRA-5791</a></p>
+<p>Cassandra must be stopped before this tool is executed, or unexpected results will occur. Note: the script does not verify that Cassandra is stopped.</p>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<p>sstableverify &lt;options&gt; &lt;keyspace&gt; &lt;table&gt;</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="30%" />
+<col width="70%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>–debug</td>
+<td>display stack traces</td>
+</tr>
+<tr class="row-even"><td>-e, –extended</td>
+<td>extended verification</td>
+</tr>
+<tr class="row-odd"><td>-h, –help</td>
+<td>display this help message</td>
+</tr>
+<tr class="row-even"><td>-v, –verbose</td>
+<td>verbose output</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="basic-verification">
+<h2>Basic Verification<a class="headerlink" href="#basic-verification" title="Permalink to this headline">¶</a></h2>
+<p>This is the basic verification. It is not a very quick process, and uses memory. You might need to increase your memory settings if you have many sstables.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableverify</span> <span class="n">keyspace</span> <span class="n">eventlog</span>
+<span class="n">Verifying</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db&#39;</span><span class="p">)</span> <span class="p">(</span><span class="mf">7.353</span><span class="n">MiB</span><span class="p">)</span>
+<span class="n">Deserializing</span> <span class="n">sstable</span> <span class="n">metadata</span> <span class="k">for</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db&#39;</span><span class="p">)</span>
+<span class="n">Checking</span> <span class="n">computed</span> <span class="nb">hash</span> <span class="n">of</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db&#39;</span><span class="p">)</span>
+<span class="n">Verifying</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db&#39;</span><span class="p">)</span> <span class="p">(</span><span class="mf">3.775</span><span class="n">MiB</span><span class="p">)</span>
+<span class="n">Deserializing</span> <span class="n">sstable</span> <span class="n">metadata</span> <span class="k">for</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db&#39;</span><span class="p">)</span>
+<span class="n">Checking</span> <span class="n">computed</span> <span class="nb">hash</span> <span class="n">of</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db&#39;</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="extended-verification">
+<h2>Extended Verification<a class="headerlink" href="#extended-verification" title="Permalink to this headline">¶</a></h2>
+<p>During an extended verification, the individual values will be validated for errors or corruption. This of course takes more time.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">root</span><span class="nd">@DC1C1</span><span class="p">:</span><span class="o">/</span><span class="c1"># sstableverify -e keyspace eventlog</span>
+<span class="n">WARN</span>  <span class="mi">14</span><span class="p">:</span><span class="mi">08</span><span class="p">:</span><span class="mi">06</span><span class="p">,</span><span class="mi">255</span> <span class="n">Only</span> <span class="mf">33.096</span><span class="n">GiB</span> <span class="n">free</span> <span class="n">across</span> <span class="nb">all</span> <span class="n">data</span> <span class="n">volumes</span><span class="o">.</span> <span class="n">Consider</span> <span class="n">adding</span> <span class="n">more</span> <span class="n">capacity</span> <span class="n">to</span> <span class="n">your</span> <span class="n">cluster</span> <span class="ow">or</span> <span class="n">removing</span> <span class="n">obsolete</span> <span class="n">snapshots</span>
+<span class="n">Verifying</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db&#39;</span><span class="p">)</span> <span class="p">(</span><span class="mf">7.353</span><span class="n">MiB</span><span class="p">)</span>
+<span class="n">Deserializing</span> <span class="n">sstable</span> <span class="n">metadata</span> <span class="k">for</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db&#39;</span><span class="p">)</span>
+<span class="n">Checking</span> <span class="n">computed</span> <span class="nb">hash</span> <span class="n">of</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db&#39;</span><span class="p">)</span>
+<span class="n">Extended</span> <span class="n">Verify</span> <span class="n">requested</span><span class="p">,</span> <span class="n">proceeding</span> <span class="n">to</span> <span class="n">inspect</span> <span class="n">values</span>
+<span class="n">Verify</span> <span class="n">of</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-32-big-Data.db&#39;</span><span class="p">)</span> <span class="n">succeeded</span><span class="o">.</span> <span class="n">All</span> <span class="mi">33211</span> <span class="n">rows</span> <span class="n">read</span> <span class="n">successfully</span>
+<span class="n">Verifying</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db&#39;</span><span class="p">)</span> <span class="p">(</span><span class="mf">3.775</span><span class="n">MiB</span><span class="p">)</span>
+<span class="n">Deserializing</span> <span class="n">sstable</span> <span class="n">metadata</span> <span class="k">for</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db&#39;</span><span class="p">)</span>
+<span class="n">Checking</span> <span class="n">computed</span> <span class="nb">hash</span> <span class="n">of</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db&#39;</span><span class="p">)</span>
+<span class="n">Extended</span> <span class="n">Verify</span> <span class="n">requested</span><span class="p">,</span> <span class="n">proceeding</span> <span class="n">to</span> <span class="n">inspect</span> <span class="n">values</span>
+<span class="n">Verify</span> <span class="n">of</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-37-big-Data.db&#39;</span><span class="p">)</span> <span class="n">succeeded</span><span class="o">.</span> <span class="n">All</span> <span class="mi">17068</span> <span class="n">rows</span> <span class="n">read</span> <span class="n">successfully</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="corrupted-file">
+<h2>Corrupted File<a class="headerlink" href="#corrupted-file" title="Permalink to this headline">¶</a></h2>
+<p>Corrupted files are listed if they are detected by the script.</p>
+<p>Example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sstableverify</span> <span class="n">keyspace</span> <span class="n">eventlog</span>
+<span class="n">Verifying</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-40-big-Data.db&#39;</span><span class="p">)</span> <span class="p">(</span><span class="mf">7.416</span><span class="n">MiB</span><span class="p">)</span>
+<span class="n">Deserializing</span> <span class="n">sstable</span> <span class="n">metadata</span> <span class="k">for</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-40-big-Data.db&#39;</span><span class="p">)</span>
+<span class="n">Checking</span> <span class="n">computed</span> <span class="nb">hash</span> <span class="n">of</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-40-big-Data.db&#39;</span><span class="p">)</span>
+<span class="n">Error</span> <span class="n">verifying</span> <span class="n">BigTableReader</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;/var/lib/cassandra/data/keyspace/eventlog-6365332094dd11e88f324f9c503e4753/mc-40-big-Data.db&#39;</span><span class="p">):</span> <span class="n">Corrupted</span><span class="p">:</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">40</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span>
+</pre></div>
+</div>
+<p>A similar (but less verbose) tool will show the suggested actions:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">nodetool</span> <span class="n">verify</span> <span class="n">keyspace</span> <span class="n">eventlog</span>
+<span class="n">error</span><span class="p">:</span> <span class="n">Invalid</span> <span class="n">SSTable</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cassandra</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">keyspace</span><span class="o">/</span><span class="n">eventlog</span><span class="o">-</span><span class="mi">6365332094</span><span class="n">dd11e88f324f9c503e4753</span><span class="o">/</span><span class="n">mc</span><span class="o">-</span><span class="mi">40</span><span class="o">-</span><span class="n">big</span><span class="o">-</span><span class="n">Data</span><span class="o">.</span><span class="n">db</span><span class="p">,</span> <span class="n">please</span> <span class="n">force</span> <span class="n">repair</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../cassandra_stress.html" class="btn btn-default pull-right " role="button" title="Cassandra Stress" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="sstableutil.html" class="btn btn-default" role="button" title="sstableutil" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/troubleshooting/finding_nodes.html b/src/doc/4.0-rc1/troubleshooting/finding_nodes.html
new file mode 100644
index 0000000..e5d5958
--- /dev/null
+++ b/src/doc/4.0-rc1/troubleshooting/finding_nodes.html
@@ -0,0 +1,241 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Troubleshooting"
+
+doc-title: "Find The Misbehaving Nodes"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Troubleshooting" href="index.html"/>
+      <link rel="next" title="Cassandra Logs" href="reading_logs.html"/>
+      <link rel="prev" title="Troubleshooting" href="index.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Troubleshooting</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Find The Misbehaving Nodes</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#client-logs-and-errors">Client Logs and Errors</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#metrics">Metrics</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#next-step-investigate-the-node-s">Next Step: Investigate the Node(s)</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="reading_logs.html">Cassandra Logs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="use_nodetool.html">Use Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="use_tools.html">Diving Deep, Use External Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="find-the-misbehaving-nodes">
+<h1>Find The Misbehaving Nodes<a class="headerlink" href="#find-the-misbehaving-nodes" title="Permalink to this headline">¶</a></h1>
+<p>The first step to troubleshooting a Cassandra issue is to use error messages,
+metrics and monitoring information to identify if the issue lies with the
+clients or the server and if it does lie with the server find the problematic
+nodes in the Cassandra cluster. The goal is to determine if this is a systemic
+issue (e.g. a query pattern that affects the entire cluster) or isolated to a
+subset of nodes (e.g. neighbors holding a shared token range or even a single
+node with bad hardware).</p>
+<p>There are many sources of information that help determine where the problem
+lies. Some of the most common are mentioned below.</p>
+<div class="section" id="client-logs-and-errors">
+<h2>Client Logs and Errors<a class="headerlink" href="#client-logs-and-errors" title="Permalink to this headline">¶</a></h2>
+<p>Clients of the cluster often leave the best breadcrumbs to follow. Perhaps
+client latencies or error rates have increased in a particular datacenter
+(likely eliminating other datacenter’s nodes), or clients are receiving a
+particular kind of error code indicating a particular kind of problem.
+Troubleshooters can often rule out many failure modes just by reading the error
+messages. In fact, many Cassandra error messages include the last coordinator
+contacted to help operators find nodes to start with.</p>
+<p>Some common errors (likely culprit in parenthesis) assuming the client has
+similar error names as the Datastax <a class="reference internal" href="../getting_started/drivers.html#client-drivers"><span class="std std-ref">drivers</span></a>:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">SyntaxError</span></code> (<strong>client</strong>). This and other <code class="docutils literal notranslate"><span class="pre">QueryValidationException</span></code>
+indicate that the client sent a malformed request. These are rarely server
+issues and usually indicate bad queries.</li>
+<li><code class="docutils literal notranslate"><span class="pre">UnavailableException</span></code> (<strong>server</strong>): This means that the Cassandra
+coordinator node has rejected the query as it believes that insufficent
+replica nodes are available.  If many coordinators are throwing this error it
+likely means that there really are (typically) multiple nodes down in the
+cluster and you can identify them using <a class="reference internal" href="use_nodetool.html#nodetool-status"><span class="std std-ref">nodetool status</span></a> If only a single coordinator is throwing this error it may
+mean that node has been partitioned from the rest.</li>
+<li><code class="docutils literal notranslate"><span class="pre">OperationTimedOutException</span></code> (<strong>server</strong>): This is the most frequent
+timeout message raised when clients set timeouts and means that the query
+took longer than the supplied timeout. This is a <em>client side</em> timeout
+meaning that it took longer than the client specified timeout. The error
+message will include the coordinator node that was last tried which is
+usually a good starting point. This error usually indicates either
+aggressive client timeout values or latent server coordinators/replicas.</li>
+<li><code class="docutils literal notranslate"><span class="pre">ReadTimeoutException</span></code> or <code class="docutils literal notranslate"><span class="pre">WriteTimeoutException</span></code> (<strong>server</strong>): These
+are raised when clients do not specify lower timeouts and there is a
+<em>coordinator</em> timeouts based on the values supplied in the <code class="docutils literal notranslate"><span class="pre">cassandra.yaml</span></code>
+configuration file. They usually indicate a serious server side problem as
+the default values are usually multiple seconds.</li>
+</ul>
+</div>
+<div class="section" id="metrics">
+<h2>Metrics<a class="headerlink" href="#metrics" title="Permalink to this headline">¶</a></h2>
+<p>If you have Cassandra <a class="reference internal" href="../operating/metrics.html#monitoring-metrics"><span class="std std-ref">metrics</span></a> reporting to a
+centralized location such as <a class="reference external" href="https://graphiteapp.org/">Graphite</a> or
+<a class="reference external" href="https://grafana.com/">Grafana</a> you can typically use those to narrow down
+the problem. At this stage narrowing down the issue to a particular
+datacenter, rack, or even group of nodes is the main goal. Some helpful metrics
+to look at are:</p>
+<div class="section" id="errors">
+<h3>Errors<a class="headerlink" href="#errors" title="Permalink to this headline">¶</a></h3>
+<p>Cassandra refers to internode messaging errors as “drops”, and provided a
+number of <a class="reference internal" href="../operating/metrics.html#dropped-metrics"><span class="std std-ref">Dropped Message Metrics</span></a> to help narrow
+down errors. If particular nodes are dropping messages actively, they are
+likely related to the issue.</p>
+</div>
+<div class="section" id="latency">
+<h3>Latency<a class="headerlink" href="#latency" title="Permalink to this headline">¶</a></h3>
+<p>For timeouts or latency related issues you can start with <a class="reference internal" href="../operating/metrics.html#table-metrics"><span class="std std-ref">Table
+Metrics</span></a> by comparing Coordinator level metrics e.g.
+<code class="docutils literal notranslate"><span class="pre">CoordinatorReadLatency</span></code> or <code class="docutils literal notranslate"><span class="pre">CoordinatorWriteLatency</span></code> with their associated
+replica metrics e.g.  <code class="docutils literal notranslate"><span class="pre">ReadLatency</span></code> or <code class="docutils literal notranslate"><span class="pre">WriteLatency</span></code>.  Issues usually show
+up on the <code class="docutils literal notranslate"><span class="pre">99th</span></code> percentile before they show up on the <code class="docutils literal notranslate"><span class="pre">50th</span></code> percentile or
+the <code class="docutils literal notranslate"><span class="pre">mean</span></code>.  While <code class="docutils literal notranslate"><span class="pre">maximum</span></code> coordinator latencies are not typically very
+helpful due to the exponentially decaying reservoir used internally to produce
+metrics, <code class="docutils literal notranslate"><span class="pre">maximum</span></code> replica latencies that correlate with increased <code class="docutils literal notranslate"><span class="pre">99th</span></code>
+percentiles on coordinators can help narrow down the problem.</p>
+<p>There are usually three main possibilities:</p>
+<ol class="arabic simple">
+<li>Coordinator latencies are high on all nodes, but only a few node’s local
+read latencies are high. This points to slow replica nodes and the
+coordinator’s are just side-effects. This usually happens when clients are
+not token aware.</li>
+<li>Coordinator latencies and replica latencies increase at the
+same time on the a few nodes. If clients are token aware this is almost
+always what happens and points to slow replicas of a subset of token
+ranges (only part of the ring).</li>
+<li>Coordinator and local latencies are high on many nodes. This usually
+indicates either a tipping point in the cluster capacity (too many writes or
+reads per second), or a new query pattern.</li>
+</ol>
+<p>It’s important to remember that depending on the client’s load balancing
+behavior and consistency levels coordinator and replica metrics may or may
+not correlate. In particular if you use <code class="docutils literal notranslate"><span class="pre">TokenAware</span></code> policies the same
+node’s coordinator and replica latencies will often increase together, but if
+you just use normal <code class="docutils literal notranslate"><span class="pre">DCAwareRoundRobin</span></code> coordinator latencies can increase
+with unrelated replica node’s latencies. For example:</p>
+<ul class="simple">
+<li><code class="docutils literal notranslate"><span class="pre">TokenAware</span></code> + <code class="docutils literal notranslate"><span class="pre">LOCAL_ONE</span></code>: should always have coordinator and replica
+latencies on the same node rise together</li>
+<li><code class="docutils literal notranslate"><span class="pre">TokenAware</span></code> + <code class="docutils literal notranslate"><span class="pre">LOCAL_QUORUM</span></code>: should always have coordinator and
+multiple replica latencies rise together in the same datacenter.</li>
+<li><code class="docutils literal notranslate"><span class="pre">TokenAware</span></code> + <code class="docutils literal notranslate"><span class="pre">QUORUM</span></code>: replica latencies in other datacenters can
+affect coordinator latencies.</li>
+<li><code class="docutils literal notranslate"><span class="pre">DCAwareRoundRobin</span></code> + <code class="docutils literal notranslate"><span class="pre">LOCAL_ONE</span></code>: coordinator latencies and unrelated
+replica node’s latencies will rise together.</li>
+<li><code class="docutils literal notranslate"><span class="pre">DCAwareRoundRobin</span></code> + <code class="docutils literal notranslate"><span class="pre">LOCAL_QUORUM</span></code>: different coordinator and replica
+latencies will rise together with little correlation.</li>
+</ul>
+</div>
+<div class="section" id="query-rates">
+<h3>Query Rates<a class="headerlink" href="#query-rates" title="Permalink to this headline">¶</a></h3>
+<p>Sometimes the <a class="reference internal" href="../operating/metrics.html#table-metrics"><span class="std std-ref">Table</span></a> query rate metrics can help
+narrow down load issues as  “small” increase in coordinator queries per second
+(QPS) may correlate with a very large increase in replica level QPS. This most
+often happens with <code class="docutils literal notranslate"><span class="pre">BATCH</span></code> writes, where a client may send a single <code class="docutils literal notranslate"><span class="pre">BATCH</span></code>
+query that might contain 50 statements in it, which if you have 9 copies (RF=3,
+three datacenters) means that every coordinator <code class="docutils literal notranslate"><span class="pre">BATCH</span></code> write turns into 450
+replica writes! This is why keeping <code class="docutils literal notranslate"><span class="pre">BATCH</span></code>’s to the same partition is so
+critical, otherwise you can exhaust significant CPU capacitity with a “single”
+query.</p>
+</div>
+</div>
+<div class="section" id="next-step-investigate-the-node-s">
+<h2>Next Step: Investigate the Node(s)<a class="headerlink" href="#next-step-investigate-the-node-s" title="Permalink to this headline">¶</a></h2>
+<p>Once you have narrowed down the problem as much as possible (datacenter, rack
+, node), login to one of the nodes using SSH and proceed to debug using
+<a class="reference internal" href="reading_logs.html#reading-logs"><span class="std std-ref">logs</span></a>, <a class="reference internal" href="use_nodetool.html#use-nodetool"><span class="std std-ref">nodetool</span></a>, and
+<a class="reference internal" href="use_tools.html#use-os-tools"><span class="std std-ref">os tools</span></a>. If you are not able to login you may still
+have access to <a class="reference internal" href="reading_logs.html#reading-logs"><span class="std std-ref">logs</span></a> and <a class="reference internal" href="use_nodetool.html#use-nodetool"><span class="std std-ref">nodetool</span></a>
+remotely.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="reading_logs.html" class="btn btn-default pull-right " role="button" title="Cassandra Logs" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="index.html" class="btn btn-default" role="button" title="Troubleshooting" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/troubleshooting/index.html b/src/doc/4.0-rc1/troubleshooting/index.html
new file mode 100644
index 0000000..3f4f036
--- /dev/null
+++ b/src/doc/4.0-rc1/troubleshooting/index.html
@@ -0,0 +1,148 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-title: "Troubleshooting"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="next" title="Find The Misbehaving Nodes" href="finding_nodes.html"/>
+      <link rel="prev" title="Cassandra Stress" href="../tools/cassandra_stress.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Troubleshooting</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="finding_nodes.html">Find The Misbehaving Nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reading_logs.html">Cassandra Logs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="use_nodetool.html">Use Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="use_tools.html">Diving Deep, Use External Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="troubleshooting">
+<h1>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permalink to this headline">¶</a></h1>
+<p>As any distributed database does, sometimes Cassandra breaks and you will have
+to troubleshoot what is going on. Generally speaking you can debug Cassandra
+like any other distributed Java program, meaning that you have to find which
+machines in your cluster are misbehaving and then isolate the problem using
+logs and tools. Luckily Cassandra had a great set of instrospection tools to
+help you.</p>
+<p>These pages include a number of command examples demonstrating various
+debugging and analysis techniques, mostly for Linux/Unix systems. If you don’t
+have access to the machines running Cassandra, or are running on Windows or
+another operating system you may not be able to use the exact commands but
+there are likely equivalent tools you can use.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="finding_nodes.html">Find The Misbehaving Nodes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="finding_nodes.html#client-logs-and-errors">Client Logs and Errors</a></li>
+<li class="toctree-l2"><a class="reference internal" href="finding_nodes.html#metrics">Metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="finding_nodes.html#next-step-investigate-the-node-s">Next Step: Investigate the Node(s)</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="reading_logs.html">Cassandra Logs</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="reading_logs.html#common-log-files">Common Log Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reading_logs.html#getting-more-information">Getting More Information</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="use_nodetool.html">Use Nodetool</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="use_nodetool.html#cluster-status">Cluster Status</a></li>
+<li class="toctree-l2"><a class="reference internal" href="use_nodetool.html#coordinator-query-latency">Coordinator Query Latency</a></li>
+<li class="toctree-l2"><a class="reference internal" href="use_nodetool.html#local-query-latency">Local Query Latency</a></li>
+<li class="toctree-l2"><a class="reference internal" href="use_nodetool.html#threadpool-state">Threadpool State</a></li>
+<li class="toctree-l2"><a class="reference internal" href="use_nodetool.html#compaction-state">Compaction State</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="use_tools.html">Diving Deep, Use External Tools</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="use_tools.html#jvm-tooling">JVM Tooling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="use_tools.html#basic-os-tooling">Basic OS Tooling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="use_tools.html#advanced-tools">Advanced tools</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="finding_nodes.html" class="btn btn-default pull-right " role="button" title="Find The Misbehaving Nodes" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="../tools/cassandra_stress.html" class="btn btn-default" role="button" title="Cassandra Stress" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/troubleshooting/reading_logs.html b/src/doc/4.0-rc1/troubleshooting/reading_logs.html
new file mode 100644
index 0000000..0037153
--- /dev/null
+++ b/src/doc/4.0-rc1/troubleshooting/reading_logs.html
@@ -0,0 +1,351 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Troubleshooting"
+
+doc-title: "Cassandra Logs"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Troubleshooting" href="index.html"/>
+      <link rel="next" title="Use Nodetool" href="use_nodetool.html"/>
+      <link rel="prev" title="Find The Misbehaving Nodes" href="finding_nodes.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Troubleshooting</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="finding_nodes.html">Find The Misbehaving Nodes</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Cassandra Logs</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#common-log-files">Common Log Files</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#getting-more-information">Getting More Information</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="use_nodetool.html">Use Nodetool</a></li>
+<li class="toctree-l2"><a class="reference internal" href="use_tools.html">Diving Deep, Use External Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="cassandra-logs">
+<span id="reading-logs"></span><h1>Cassandra Logs<a class="headerlink" href="#cassandra-logs" title="Permalink to this headline">¶</a></h1>
+<p>Cassandra has rich support for logging and attempts to give operators maximum
+insight into the database while at the same time limiting noise to the logs.</p>
+<div class="section" id="common-log-files">
+<h2>Common Log Files<a class="headerlink" href="#common-log-files" title="Permalink to this headline">¶</a></h2>
+<p>Cassandra has three main logs, the <code class="docutils literal notranslate"><span class="pre">system.log</span></code>, <code class="docutils literal notranslate"><span class="pre">debug.log</span></code> and
+<code class="docutils literal notranslate"><span class="pre">gc.log</span></code> which hold general logging messages, debugging logging messages, and
+java garbage collection logs respectively.</p>
+<p>These logs by default live in <code class="docutils literal notranslate"><span class="pre">${CASSANDRA_HOME}/logs</span></code>, but most Linux
+distributions relocate logs to <code class="docutils literal notranslate"><span class="pre">/var/log/cassandra</span></code>. Operators can tune
+this location as well as what levels are logged using the provided
+<code class="docutils literal notranslate"><span class="pre">logback.xml</span></code> file.</p>
+<div class="section" id="system-log">
+<h3><code class="docutils literal notranslate"><span class="pre">system.log</span></code><a class="headerlink" href="#system-log" title="Permalink to this headline">¶</a></h3>
+<p>This log is the default Cassandra log and is a good place to start any
+investigation. Some examples of activities logged to this log:</p>
+<ul class="simple">
+<li>Uncaught exceptions. These can be very useful for debugging errors.</li>
+<li><code class="docutils literal notranslate"><span class="pre">GCInspector</span></code> messages indicating long garbage collector pauses. When long
+pauses happen Cassandra will print how long and also what was the state of
+the system (thread state) at the time of that pause. This can help narrow
+down a capacity issue (either not enough heap or not enough spare CPU).</li>
+<li>Information about nodes joining and leaving the cluster as well as token
+metadata (data ownersip) changes. This is useful for debugging network
+partitions, data movements, and more.</li>
+<li>Keyspace/Table creation, modification, deletion.</li>
+<li><code class="docutils literal notranslate"><span class="pre">StartupChecks</span></code> that ensure optimal configuration of the operating system
+to run Cassandra</li>
+<li>Information about some background operational tasks (e.g. Index
+Redistribution).</li>
+</ul>
+<p>As with any application, looking for <code class="docutils literal notranslate"><span class="pre">ERROR</span></code> or <code class="docutils literal notranslate"><span class="pre">WARN</span></code> lines can be a
+great first step:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ # Search for warnings or errors in the latest system.log
+$ grep &#39;WARN\|ERROR&#39; system.log | tail
+...
+
+$ # Search for warnings or errors in all rotated system.log
+$ zgrep &#39;WARN\|ERROR&#39; system.log.* | less
+...
+</pre></div>
+</div>
+</div>
+<div class="section" id="debug-log">
+<h3><code class="docutils literal notranslate"><span class="pre">debug.log</span></code><a class="headerlink" href="#debug-log" title="Permalink to this headline">¶</a></h3>
+<p>This log contains additional debugging information that may be useful when
+troubleshooting but may be much noiser than the normal <code class="docutils literal notranslate"><span class="pre">system.log</span></code>. Some
+examples of activities logged to this log:</p>
+<ul class="simple">
+<li>Information about compactions, including when they start, which sstables
+they contain, and when they finish.</li>
+<li>Information about memtable flushes to disk, including when they happened,
+how large the flushes were, and which commitlog segments the flush impacted.</li>
+</ul>
+<p>This log can be <em>very</em> noisy, so it is highly recommended to use <code class="docutils literal notranslate"><span class="pre">grep</span></code> and
+other log analysis tools to dive deep. For example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ # Search for messages involving a CompactionTask with 5 lines of context
+$ grep CompactionTask debug.log -C 5
+...
+
+$ # Look at the distribution of flush tasks per keyspace
+$ grep &quot;Enqueuing flush&quot; debug.log | cut -f 10 -d &#39; &#39; | sort | uniq -c
+    6 compaction_history:
+    1 test_keyspace:
+    2 local:
+    17 size_estimates:
+    17 sstable_activity:
+</pre></div>
+</div>
+</div>
+<div class="section" id="gc-log">
+<h3><code class="docutils literal notranslate"><span class="pre">gc.log</span></code><a class="headerlink" href="#gc-log" title="Permalink to this headline">¶</a></h3>
+<p>The gc log is a standard Java GC log. With the default <code class="docutils literal notranslate"><span class="pre">jvm.options</span></code>
+settings you get a lot of valuable information in this log such as
+application pause times, and why pauses happened. This may help narrow
+down throughput or latency issues to a mistuned JVM. For example you can
+view the last few pauses:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ grep stopped gc.log.0.current | tail
+2018-08-29T00:19:39.522+0000: 3022663.591: Total time for which application threads were stopped: 0.0332813 seconds, Stopping threads took: 0.0008189 seconds
+2018-08-29T00:19:44.369+0000: 3022668.438: Total time for which application threads were stopped: 0.0312507 seconds, Stopping threads took: 0.0007025 seconds
+2018-08-29T00:19:49.796+0000: 3022673.865: Total time for which application threads were stopped: 0.0307071 seconds, Stopping threads took: 0.0006662 seconds
+2018-08-29T00:19:55.452+0000: 3022679.521: Total time for which application threads were stopped: 0.0309578 seconds, Stopping threads took: 0.0006832 seconds
+2018-08-29T00:20:00.127+0000: 3022684.197: Total time for which application threads were stopped: 0.0310082 seconds, Stopping threads took: 0.0007090 seconds
+2018-08-29T00:20:06.583+0000: 3022690.653: Total time for which application threads were stopped: 0.0317346 seconds, Stopping threads took: 0.0007106 seconds
+2018-08-29T00:20:10.079+0000: 3022694.148: Total time for which application threads were stopped: 0.0299036 seconds, Stopping threads took: 0.0006889 seconds
+2018-08-29T00:20:15.739+0000: 3022699.809: Total time for which application threads were stopped: 0.0078283 seconds, Stopping threads took: 0.0006012 seconds
+2018-08-29T00:20:15.770+0000: 3022699.839: Total time for which application threads were stopped: 0.0301285 seconds, Stopping threads took: 0.0003789 seconds
+2018-08-29T00:20:15.798+0000: 3022699.867: Total time for which application threads were stopped: 0.0279407 seconds, Stopping threads took: 0.0003627 seconds
+</pre></div>
+</div>
+<p>This shows a lot of valuable information including how long the application
+was paused (meaning zero user queries were being serviced during the e.g. 33ms
+JVM pause) as well as how long it took to enter the safepoint. You can use this
+raw data to e.g. get the longest pauses:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ grep stopped gc.log.0.current | cut -f 11 -d &#39; &#39; | sort -n  | tail | xargs -IX grep X gc.log.0.current | sort -k 1
+2018-08-28T17:13:40.520-0700: 1.193: Total time for which application threads were stopped: 0.0157914 seconds, Stopping threads took: 0.0000355 seconds
+2018-08-28T17:13:41.206-0700: 1.879: Total time for which application threads were stopped: 0.0249811 seconds, Stopping threads took: 0.0000318 seconds
+2018-08-28T17:13:41.638-0700: 2.311: Total time for which application threads were stopped: 0.0561130 seconds, Stopping threads took: 0.0000328 seconds
+2018-08-28T17:13:41.677-0700: 2.350: Total time for which application threads were stopped: 0.0362129 seconds, Stopping threads took: 0.0000597 seconds
+2018-08-28T17:13:41.781-0700: 2.454: Total time for which application threads were stopped: 0.0442846 seconds, Stopping threads took: 0.0000238 seconds
+2018-08-28T17:13:41.976-0700: 2.649: Total time for which application threads were stopped: 0.0377115 seconds, Stopping threads took: 0.0000250 seconds
+2018-08-28T17:13:42.172-0700: 2.845: Total time for which application threads were stopped: 0.0475415 seconds, Stopping threads took: 0.0001018 seconds
+2018-08-28T17:13:42.825-0700: 3.498: Total time for which application threads were stopped: 0.0379155 seconds, Stopping threads took: 0.0000571 seconds
+2018-08-28T17:13:43.574-0700: 4.247: Total time for which application threads were stopped: 0.0323812 seconds, Stopping threads took: 0.0000574 seconds
+2018-08-28T17:13:44.602-0700: 5.275: Total time for which application threads were stopped: 0.0238975 seconds, Stopping threads took: 0.0000788 seconds
+</pre></div>
+</div>
+<p>In this case any client waiting on a query would have experienced a <cite>56ms</cite>
+latency at 17:13:41.</p>
+<p>Note that GC pauses are not _only_ garbage collection, although
+generally speaking high pauses with fast safepoints indicate a lack of JVM heap
+or mistuned JVM GC algorithm. High pauses with slow safepoints typically
+indicate that the JVM is having trouble entering a safepoint which usually
+indicates slow disk drives (Cassandra makes heavy use of memory mapped reads
+which the JVM doesn’t know could have disk latency, so the JVM safepoint logic
+doesn’t handle a blocking memory mapped read particularly well).</p>
+<p>Using these logs you can even get a pause distribution with something like
+<a class="reference external" href="https://github.com/bitly/data_hacks/blob/master/data_hacks/histogram.py">histogram.py</a>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ grep stopped gc.log.0.current | cut -f 11 -d &#39; &#39; | sort -n | histogram.py
+# NumSamples = 410293; Min = 0.00; Max = 11.49
+# Mean = 0.035346; Variance = 0.002216; SD = 0.047078; Median 0.036498
+# each ∎ represents a count of 5470
+    0.0001 -     1.1496 [410255]: ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
+    1.1496 -     2.2991 [    15]:
+    2.2991 -     3.4486 [     5]:
+    3.4486 -     4.5981 [     1]:
+    4.5981 -     5.7475 [     5]:
+    5.7475 -     6.8970 [     9]:
+    6.8970 -     8.0465 [     1]:
+    8.0465 -     9.1960 [     0]:
+    9.1960 -    10.3455 [     0]:
+   10.3455 -    11.4949 [     2]:
+</pre></div>
+</div>
+<p>We can see in this case while we have very good average performance something
+is causing multi second JVM pauses … In this case it was mostly safepoint
+pauses caused by slow disks:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ grep stopped gc.log.0.current | cut -f 11 -d &#39; &#39; | sort -n | tail | xargs -IX grep X  gc.log.0.current| sort -k 1
+2018-07-27T04:52:27.413+0000: 187831.482: Total time for which application threads were stopped: 6.5037022 seconds, Stopping threads took: 0.0005212 seconds
+2018-07-30T23:38:18.354+0000: 514582.423: Total time for which application threads were stopped: 6.3262938 seconds, Stopping threads took: 0.0004882 seconds
+2018-08-01T02:37:48.380+0000: 611752.450: Total time for which application threads were stopped: 10.3879659 seconds, Stopping threads took: 0.0004475 seconds
+2018-08-06T22:04:14.990+0000: 1113739.059: Total time for which application threads were stopped: 6.0917409 seconds, Stopping threads took: 0.0005553 seconds
+2018-08-14T00:04:06.091+0000: 1725730.160: Total time for which application threads were stopped: 6.0141054 seconds, Stopping threads took: 0.0004976 seconds
+2018-08-17T06:23:06.755+0000: 2007670.824: Total time for which application threads were stopped: 6.0133694 seconds, Stopping threads took: 0.0006011 seconds
+2018-08-23T06:35:46.068+0000: 2526830.137: Total time for which application threads were stopped: 6.4767751 seconds, Stopping threads took: 6.4426849 seconds
+2018-08-23T06:36:29.018+0000: 2526873.087: Total time for which application threads were stopped: 11.4949489 seconds, Stopping threads took: 11.4638297 seconds
+2018-08-23T06:37:12.671+0000: 2526916.741: Total time for which application threads were stopped: 6.3867003 seconds, Stopping threads took: 6.3507166 seconds
+2018-08-23T06:37:47.156+0000: 2526951.225: Total time for which application threads were stopped: 7.9528200 seconds, Stopping threads took: 7.9197756 seconds
+</pre></div>
+</div>
+<p>Sometimes reading and understanding java GC logs is hard, but you can take the
+raw GC files and visualize them using tools such as <a class="reference external" href="https://github.com/chewiebug/GCViewer">GCViewer</a> which take the Cassandra GC log as
+input and show you detailed visual information on your garbage collection
+performance. This includes pause analysis as well as throughput information.
+For a stable Cassandra JVM you probably want to aim for pauses less than
+<cite>200ms</cite> and GC throughput greater than <cite>99%</cite> (ymmv).</p>
+<p>Java GC pauses are one of the leading causes of tail latency in Cassandra
+(along with drive latency) so sometimes this information can be crucial
+while debugging tail latency issues.</p>
+</div>
+</div>
+<div class="section" id="getting-more-information">
+<h2>Getting More Information<a class="headerlink" href="#getting-more-information" title="Permalink to this headline">¶</a></h2>
+<p>If the default logging levels are insuficient, <code class="docutils literal notranslate"><span class="pre">nodetool</span></code> can set higher
+or lower logging levels for various packages and classes using the
+<code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">setlogginglevel</span></code> command. Start by viewing the current levels:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ nodetool getlogginglevels
+
+Logger Name                                        Log Level
+ROOT                                                    INFO
+org.apache.cassandra                                   DEBUG
+</pre></div>
+</div>
+<p>Perhaps the <code class="docutils literal notranslate"><span class="pre">Gossiper</span></code> is acting up and we wish to enable it at <code class="docutils literal notranslate"><span class="pre">TRACE</span></code>
+level for even more insight:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ nodetool setlogginglevel org.apache.cassandra.gms.Gossiper TRACE
+
+$ nodetool getlogginglevels
+
+Logger Name                                        Log Level
+ROOT                                                    INFO
+org.apache.cassandra                                   DEBUG
+org.apache.cassandra.gms.Gossiper                      TRACE
+
+$ grep TRACE debug.log | tail -2
+TRACE [GossipStage:1] 2018-07-04 17:07:47,879 Gossiper.java:1234 - Updating
+heartbeat state version to 2344 from 2343 for 127.0.0.2:7000 ...
+TRACE [GossipStage:1] 2018-07-04 17:07:47,879 Gossiper.java:923 - local
+heartbeat version 2341 greater than 2340 for 127.0.0.1:7000
+</pre></div>
+</div>
+<p>Note that any changes made this way are reverted on next Cassandra process
+restart. To make the changes permanent add the appropriate rule to
+<code class="docutils literal notranslate"><span class="pre">logback.xml</span></code>.</p>
+<div class="highlight-diff notranslate"><div class="highlight"><pre><span></span><span class="gh">diff --git a/conf/logback.xml b/conf/logback.xml</span>
+<span class="gh">index b2c5b10..71b0a49 100644</span>
+<span class="gd">--- a/conf/logback.xml</span>
+<span class="gi">+++ b/conf/logback.xml</span>
+<span class="gu">@@ -98,4 +98,5 @@ appender reference in the root level section below.</span>
+   &lt;/root&gt;
+
+   &lt;logger name=&quot;org.apache.cassandra&quot; level=&quot;DEBUG&quot;/&gt;
+<span class="gi">+  &lt;logger name=&quot;org.apache.cassandra.gms.Gossiper&quot; level=&quot;TRACE&quot;/&gt;</span>
+ &lt;/configuration&gt;
+</pre></div>
+</div>
+<div class="section" id="full-query-logger">
+<h3>Full Query Logger<a class="headerlink" href="#full-query-logger" title="Permalink to this headline">¶</a></h3>
+<p>Cassandra 4.0 additionally ships with support for full query logging. This
+is a highly performant binary logging tool which captures Cassandra queries
+in real time, writes them (if possible) to a log file, and ensures the total
+size of the capture does not exceed a particular limit. FQL is enabled with
+<code class="docutils literal notranslate"><span class="pre">nodetool</span></code> and the logs are read with the provided <code class="docutils literal notranslate"><span class="pre">bin/fqltool</span></code> utility:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ mkdir /var/tmp/fql_logs
+$ nodetool enablefullquerylog --path /var/tmp/fql_logs
+
+# ... do some querying
+
+$ bin/fqltool dump /var/tmp/fql_logs/20180705-00.cq4 | tail
+Query time: 1530750927224
+Query: SELECT * FROM system_virtual_schema.columns WHERE keyspace_name =
+&#39;system_views&#39; AND table_name = &#39;sstable_tasks&#39;;
+Values:
+
+Type: single
+Protocol version: 4
+Query time: 1530750934072
+Query: select * from keyspace1.standard1 ;
+Values:
+
+$ nodetool disablefullquerylog
+</pre></div>
+</div>
+<p>Note that if you want more information than this tool provides, there are other
+live capture options available such as <a class="reference internal" href="use_tools.html#packet-capture"><span class="std std-ref">packet capture</span></a>.</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="use_nodetool.html" class="btn btn-default pull-right " role="button" title="Use Nodetool" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="finding_nodes.html" class="btn btn-default" role="button" title="Find The Misbehaving Nodes" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/troubleshooting/use_nodetool.html b/src/doc/4.0-rc1/troubleshooting/use_nodetool.html
new file mode 100644
index 0000000..778844c
--- /dev/null
+++ b/src/doc/4.0-rc1/troubleshooting/use_nodetool.html
@@ -0,0 +1,321 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Troubleshooting"
+
+doc-title: "Use Nodetool"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Troubleshooting" href="index.html"/>
+      <link rel="next" title="Diving Deep, Use External Tools" href="use_tools.html"/>
+      <link rel="prev" title="Cassandra Logs" href="reading_logs.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Troubleshooting</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="finding_nodes.html">Find The Misbehaving Nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reading_logs.html">Cassandra Logs</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Use Nodetool</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#cluster-status">Cluster Status</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#coordinator-query-latency">Coordinator Query Latency</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#local-query-latency">Local Query Latency</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#threadpool-state">Threadpool State</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#compaction-state">Compaction State</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="use_tools.html">Diving Deep, Use External Tools</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="use-nodetool">
+<span id="id1"></span><h1>Use Nodetool<a class="headerlink" href="#use-nodetool" title="Permalink to this headline">¶</a></h1>
+<p>Cassandra’s <code class="docutils literal notranslate"><span class="pre">nodetool</span></code> allows you to narrow problems from the cluster down
+to a particular node and gives a lot of insight into the state of the Cassandra
+process itself. There are dozens of useful commands (see <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">help</span></code>
+for all the commands), but briefly some of the most useful for troubleshooting:</p>
+<div class="section" id="cluster-status">
+<span id="nodetool-status"></span><h2>Cluster Status<a class="headerlink" href="#cluster-status" title="Permalink to this headline">¶</a></h2>
+<p>You can use <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">status</span></code> to assess status of the cluster:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ nodetool status &lt;optional keyspace&gt;
+
+Datacenter: dc1
+=======================
+Status=Up/Down
+|/ State=Normal/Leaving/Joining/Moving
+--  Address    Load       Tokens       Owns (effective)  Host ID                               Rack
+UN  127.0.1.1  4.69 GiB   1            100.0%            35ea8c9f-b7a2-40a7-b9c5-0ee8b91fdd0e  r1
+UN  127.0.1.2  4.71 GiB   1            100.0%            752e278f-b7c5-4f58-974b-9328455af73f  r2
+UN  127.0.1.3  4.69 GiB   1            100.0%            9dc1a293-2cc0-40fa-a6fd-9e6054da04a7  r3
+</pre></div>
+</div>
+<p>In this case we can see that we have three nodes in one datacenter with about
+4.6GB of data each and they are all “up”. The up/down status of a node is
+independently determined by every node in the cluster, so you may have to run
+<code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">status</span></code> on multiple nodes in a cluster to see the full view.</p>
+<p>You can use <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">status</span></code> plus a little grep to see which nodes are
+down:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ nodetool status | grep -v &#39;^UN&#39;
+Datacenter: dc1
+===============
+Status=Up/Down
+|/ State=Normal/Leaving/Joining/Moving
+--  Address    Load       Tokens       Owns (effective)  Host ID                               Rack
+Datacenter: dc2
+===============
+Status=Up/Down
+|/ State=Normal/Leaving/Joining/Moving
+--  Address    Load       Tokens       Owns (effective)  Host ID                               Rack
+DN  127.0.0.5  105.73 KiB  1            33.3%             df303ac7-61de-46e9-ac79-6e630115fd75  r1
+</pre></div>
+</div>
+<p>In this case there are two datacenters and there is one node down in datacenter
+<code class="docutils literal notranslate"><span class="pre">dc2</span></code> and rack <code class="docutils literal notranslate"><span class="pre">r1</span></code>. This may indicate an issue on <code class="docutils literal notranslate"><span class="pre">127.0.0.5</span></code>
+warranting investigation.</p>
+</div>
+<div class="section" id="coordinator-query-latency">
+<span id="nodetool-proxyhistograms"></span><h2>Coordinator Query Latency<a class="headerlink" href="#coordinator-query-latency" title="Permalink to this headline">¶</a></h2>
+<p>You can view latency distributions of coordinator read and write latency
+to help narrow down latency issues using <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">proxyhistograms</span></code>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ nodetool proxyhistograms
+Percentile       Read Latency      Write Latency      Range Latency   CAS Read Latency  CAS Write Latency View Write Latency
+                     (micros)           (micros)           (micros)           (micros)           (micros)           (micros)
+50%                    454.83             219.34               0.00               0.00               0.00               0.00
+75%                    545.79             263.21               0.00               0.00               0.00               0.00
+95%                    654.95             315.85               0.00               0.00               0.00               0.00
+98%                    785.94             379.02               0.00               0.00               0.00               0.00
+99%                   3379.39            2346.80               0.00               0.00               0.00               0.00
+Min                     42.51             105.78               0.00               0.00               0.00               0.00
+Max                  25109.16           43388.63               0.00               0.00               0.00               0.00
+</pre></div>
+</div>
+<p>Here you can see the full latency distribution of reads, writes, range requests
+(e.g. <code class="docutils literal notranslate"><span class="pre">select</span> <span class="pre">*</span> <span class="pre">from</span> <span class="pre">keyspace.table</span></code>), CAS read (compare phase of CAS) and
+CAS write (set phase of compare and set). These can be useful for narrowing
+down high level latency problems, for example in this case if a client had a
+20 millisecond timeout on their reads they might experience the occasional
+timeout from this node but less than 1% (since the 99% read latency is 3.3
+milliseconds &lt; 20 milliseconds).</p>
+</div>
+<div class="section" id="local-query-latency">
+<span id="nodetool-tablehistograms"></span><h2>Local Query Latency<a class="headerlink" href="#local-query-latency" title="Permalink to this headline">¶</a></h2>
+<p>If you know which table is having latency/error issues, you can use
+<code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">tablehistograms</span></code> to get a better idea of what is happening
+locally on a node:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ nodetool tablehistograms keyspace table
+Percentile  SSTables     Write Latency      Read Latency    Partition Size        Cell Count
+                              (micros)          (micros)           (bytes)
+50%             0.00             73.46            182.79             17084               103
+75%             1.00             88.15            315.85             17084               103
+95%             2.00            126.93            545.79             17084               103
+98%             2.00            152.32            654.95             17084               103
+99%             2.00            182.79            785.94             17084               103
+Min             0.00             42.51             24.60             14238                87
+Max             2.00          12108.97          17436.92             17084               103
+</pre></div>
+</div>
+<p>This shows you percentile breakdowns particularly critical metrics.</p>
+<p>The first column contains how many sstables were read per logical read. A very
+high number here indicates that you may have chosen the wrong compaction
+strategy, e.g. <code class="docutils literal notranslate"><span class="pre">SizeTieredCompactionStrategy</span></code> typically has many more reads
+per read than <code class="docutils literal notranslate"><span class="pre">LeveledCompactionStrategy</span></code> does for update heavy workloads.</p>
+<p>The second column shows you a latency breakdown of <em>local</em> write latency. In
+this case we see that while the p50 is quite good at 73 microseconds, the
+maximum latency is quite slow at 12 milliseconds. High write max latencies
+often indicate a slow commitlog volume (slow to fsync) or large writes
+that quickly saturate commitlog segments.</p>
+<p>The third column shows you a latency breakdown of <em>local</em> read latency. We can
+see that local Cassandra reads are (as expected) slower than local writes, and
+the read speed correlates highly with the number of sstables read per read.</p>
+<p>The fourth and fifth columns show distributions of partition size and column
+count per partition. These are useful for determining if the table has on
+average skinny or wide partitions and can help you isolate bad data patterns.
+For example if you have a single cell that is 2 megabytes, that is probably
+going to cause some heap pressure when it’s read.</p>
+</div>
+<div class="section" id="threadpool-state">
+<span id="nodetool-tpstats"></span><h2>Threadpool State<a class="headerlink" href="#threadpool-state" title="Permalink to this headline">¶</a></h2>
+<p>You can use <code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">tpstats</span></code> to view the current outstanding requests on
+a particular node. This is useful for trying to find out which resource
+(read threads, write threads, compaction, request response threads) the
+Cassandra process lacks. For example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ nodetool tpstats
+Pool Name                         Active   Pending      Completed   Blocked  All time blocked
+ReadStage                              2         0             12         0                 0
+MiscStage                              0         0              0         0                 0
+CompactionExecutor                     0         0           1940         0                 0
+MutationStage                          0         0              0         0                 0
+GossipStage                            0         0          10293         0                 0
+Repair-Task                            0         0              0         0                 0
+RequestResponseStage                   0         0             16         0                 0
+ReadRepairStage                        0         0              0         0                 0
+CounterMutationStage                   0         0              0         0                 0
+MemtablePostFlush                      0         0             83         0                 0
+ValidationExecutor                     0         0              0         0                 0
+MemtableFlushWriter                    0         0             30         0                 0
+ViewMutationStage                      0         0              0         0                 0
+CacheCleanupExecutor                   0         0              0         0                 0
+MemtableReclaimMemory                  0         0             30         0                 0
+PendingRangeCalculator                 0         0             11         0                 0
+SecondaryIndexManagement               0         0              0         0                 0
+HintsDispatcher                        0         0              0         0                 0
+Native-Transport-Requests              0         0            192         0                 0
+MigrationStage                         0         0             14         0                 0
+PerDiskMemtableFlushWriter_0           0         0             30         0                 0
+Sampler                                0         0              0         0                 0
+ViewBuildExecutor                      0         0              0         0                 0
+InternalResponseStage                  0         0              0         0                 0
+AntiEntropyStage                       0         0              0         0                 0
+
+Message type           Dropped                  Latency waiting in queue (micros)
+                                             50%               95%               99%               Max
+READ                         0               N/A               N/A               N/A               N/A
+RANGE_SLICE                  0              0.00              0.00              0.00              0.00
+_TRACE                       0               N/A               N/A               N/A               N/A
+HINT                         0               N/A               N/A               N/A               N/A
+MUTATION                     0               N/A               N/A               N/A               N/A
+COUNTER_MUTATION             0               N/A               N/A               N/A               N/A
+BATCH_STORE                  0               N/A               N/A               N/A               N/A
+BATCH_REMOVE                 0               N/A               N/A               N/A               N/A
+REQUEST_RESPONSE             0              0.00              0.00              0.00              0.00
+PAGED_RANGE                  0               N/A               N/A               N/A               N/A
+READ_REPAIR                  0               N/A               N/A               N/A               N/A
+</pre></div>
+</div>
+<p>This command shows you all kinds of interesting statistics. The first section
+shows a detailed breakdown of threadpools for each Cassandra stage, including
+how many threads are current executing (Active) and how many are waiting to
+run (Pending). Typically if you see pending executions in a particular
+threadpool that indicates a problem localized to that type of operation. For
+example if the <code class="docutils literal notranslate"><span class="pre">RequestResponseState</span></code> queue is backing up, that means
+that the coordinators are waiting on a lot of downstream replica requests and
+may indicate a lack of token awareness, or very high consistency levels being
+used on read requests (for example reading at <code class="docutils literal notranslate"><span class="pre">ALL</span></code> ties up RF
+<code class="docutils literal notranslate"><span class="pre">RequestResponseState</span></code> threads whereas <code class="docutils literal notranslate"><span class="pre">LOCAL_ONE</span></code> only uses a single
+thread in the <code class="docutils literal notranslate"><span class="pre">ReadStage</span></code> threadpool). On the other hand if you see a lot of
+pending compactions that may indicate that your compaction threads cannot keep
+up with the volume of writes and you may need to tune either the compaction
+strategy or the <code class="docutils literal notranslate"><span class="pre">concurrent_compactors</span></code> or <code class="docutils literal notranslate"><span class="pre">compaction_throughput</span></code> options.</p>
+<p>The second section shows drops (errors) and latency distributions for all the
+major request types. Drops are cumulative since process start, but if you
+have any that indicate a serious problem as the default timeouts to qualify as
+a drop are quite high (~5-10 seconds). Dropped messages often warrants further
+investigation.</p>
+</div>
+<div class="section" id="compaction-state">
+<span id="nodetool-compactionstats"></span><h2>Compaction State<a class="headerlink" href="#compaction-state" title="Permalink to this headline">¶</a></h2>
+<p>As Cassandra is a LSM datastore, Cassandra sometimes has to compact sstables
+together, which can have adverse effects on performance. In particular,
+compaction uses a reasonable quantity of CPU resources, invalidates large
+quantities of the OS <a class="reference external" href="https://en.wikipedia.org/wiki/Page_cache">page cache</a>,
+and can put a lot of load on your disk drives. There are great
+<a class="reference internal" href="use_tools.html#os-iostat"><span class="std std-ref">os tools</span></a> to determine if this is the case, but often it’s a
+good idea to check if compactions are even running using
+<code class="docutils literal notranslate"><span class="pre">nodetool</span> <span class="pre">compactionstats</span></code>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ nodetool compactionstats
+pending tasks: 2
+- keyspace.table: 2
+
+id                                   compaction type keyspace table completed total    unit  progress
+2062b290-7f3a-11e8-9358-cd941b956e60 Compaction      keyspace table 21848273  97867583 bytes 22.32%
+Active compaction remaining time :   0h00m04s
+</pre></div>
+</div>
+<p>In this case there is a single compaction running on the <code class="docutils literal notranslate"><span class="pre">keyspace.table</span></code>
+table, has completed 21.8 megabytes of 97 and Cassandra estimates (based on
+the configured compaction throughput) that this will take 4 seconds. You can
+also pass <code class="docutils literal notranslate"><span class="pre">-H</span></code> to get the units in a human readable format.</p>
+<p>Generally each running compaction can consume a single core, but the more
+you do in parallel the faster data compacts. Compaction is crucial to ensuring
+good read performance so having the right balance of concurrent compactions
+such that compactions complete quickly but don’t take too many resources
+away from query threads is very important for performance. If you notice
+compaction unable to keep up, try tuning Cassandra’s <code class="docutils literal notranslate"><span class="pre">concurrent_compactors</span></code>
+or <code class="docutils literal notranslate"><span class="pre">compaction_throughput</span></code> options.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="use_tools.html" class="btn btn-default pull-right " role="button" title="Diving Deep, Use External Tools" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="reading_logs.html" class="btn btn-default" role="button" title="Cassandra Logs" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/4.0-rc1/troubleshooting/use_tools.html b/src/doc/4.0-rc1/troubleshooting/use_tools.html
new file mode 100644
index 0000000..efb7324
--- /dev/null
+++ b/src/doc/4.0-rc1/troubleshooting/use_tools.html
@@ -0,0 +1,609 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Troubleshooting"
+
+doc-title: "Diving Deep, Use External Tools"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v4.0-rc1" href="../index.html"/>
+      <link rel="up" title="Troubleshooting" href="index.html"/>
+      <link rel="next" title="Contributing to Cassandra" href="../development/index.html"/>
+      <link rel="prev" title="Use Nodetool" href="use_nodetool.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ".txt"
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-3">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Troubleshooting</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="finding_nodes.html">Find The Misbehaving Nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reading_logs.html">Cassandra Logs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="use_nodetool.html">Use Nodetool</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Diving Deep, Use External Tools</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#jvm-tooling">JVM Tooling</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#basic-os-tooling">Basic OS Tooling</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#advanced-tools">Advanced tools</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Contributing to Cassandra</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="content-container">
+          
+  <div class="section" id="diving-deep-use-external-tools">
+<span id="use-os-tools"></span><h1>Diving Deep, Use External Tools<a class="headerlink" href="#diving-deep-use-external-tools" title="Permalink to this headline">¶</a></h1>
+<p>Machine access allows operators to dive even deeper than logs and <code class="docutils literal notranslate"><span class="pre">nodetool</span></code>
+allow. While every Cassandra operator may have their personal favorite
+toolsets for troubleshooting issues, this page contains some of the most common
+operator techniques and examples of those tools. Many of these commands work
+only on Linux, but if you are deploying on a different operating system you may
+have access to other substantially similar tools that assess similar OS level
+metrics and processes.</p>
+<div class="section" id="jvm-tooling">
+<h2>JVM Tooling<a class="headerlink" href="#jvm-tooling" title="Permalink to this headline">¶</a></h2>
+<p>The JVM ships with a number of useful tools. Some of them are useful for
+debugging Cassandra issues, especially related to heap and execution stacks.</p>
+<p><strong>NOTE</strong>: There are two common gotchas with JVM tooling and Cassandra:</p>
+<ol class="arabic simple">
+<li>By default Cassandra ships with <code class="docutils literal notranslate"><span class="pre">-XX:+PerfDisableSharedMem</span></code> set to prevent
+long pauses (see <code class="docutils literal notranslate"><span class="pre">CASSANDRA-9242</span></code> and <code class="docutils literal notranslate"><span class="pre">CASSANDRA-9483</span></code> for details). If
+you want to use JVM tooling you can instead have <code class="docutils literal notranslate"><span class="pre">/tmp</span></code> mounted on an in
+memory <code class="docutils literal notranslate"><span class="pre">tmpfs</span></code> which also effectively works around <code class="docutils literal notranslate"><span class="pre">CASSANDRA-9242</span></code>.</li>
+<li>Make sure you run the tools as the same user as Cassandra is running as,
+e.g. if the database is running as <code class="docutils literal notranslate"><span class="pre">cassandra</span></code> the tool also has to be
+run as <code class="docutils literal notranslate"><span class="pre">cassandra</span></code>, e.g. via <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">-u</span> <span class="pre">cassandra</span> <span class="pre">&lt;cmd&gt;</span></code>.</li>
+</ol>
+<div class="section" id="garbage-collection-state-jstat">
+<h3>Garbage Collection State (jstat)<a class="headerlink" href="#garbage-collection-state-jstat" title="Permalink to this headline">¶</a></h3>
+<p>If you suspect heap pressure you can use <code class="docutils literal notranslate"><span class="pre">jstat</span></code> to dive deep into the
+garbage collection state of a Cassandra process. This command is always
+safe to run and yields detailed heap information including eden heap usage (E),
+old generation heap usage (O), count of eden collections (YGC), time spend in
+eden collections (YGCT), old/mixed generation collections (FGC) and time spent
+in old/mixed generation collections (FGCT):</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">jstat</span> <span class="o">-</span><span class="n">gcutil</span> <span class="o">&lt;</span><span class="n">cassandra</span> <span class="n">pid</span><span class="o">&gt;</span> <span class="mi">500</span><span class="n">ms</span>
+ <span class="n">S0</span>     <span class="n">S1</span>     <span class="n">E</span>      <span class="n">O</span>      <span class="n">M</span>     <span class="n">CCS</span>    <span class="n">YGC</span>     <span class="n">YGCT</span>    <span class="n">FGC</span>    <span class="n">FGCT</span>     <span class="n">GCT</span>
+ <span class="mf">0.00</span>   <span class="mf">0.00</span>  <span class="mf">81.53</span>  <span class="mf">31.16</span>  <span class="mf">93.07</span>  <span class="mf">88.20</span>     <span class="mi">12</span>    <span class="mf">0.151</span>     <span class="mi">3</span>    <span class="mf">0.257</span>    <span class="mf">0.408</span>
+ <span class="mf">0.00</span>   <span class="mf">0.00</span>  <span class="mf">82.36</span>  <span class="mf">31.16</span>  <span class="mf">93.07</span>  <span class="mf">88.20</span>     <span class="mi">12</span>    <span class="mf">0.151</span>     <span class="mi">3</span>    <span class="mf">0.257</span>    <span class="mf">0.408</span>
+ <span class="mf">0.00</span>   <span class="mf">0.00</span>  <span class="mf">82.36</span>  <span class="mf">31.16</span>  <span class="mf">93.07</span>  <span class="mf">88.20</span>     <span class="mi">12</span>    <span class="mf">0.151</span>     <span class="mi">3</span>    <span class="mf">0.257</span>    <span class="mf">0.408</span>
+ <span class="mf">0.00</span>   <span class="mf">0.00</span>  <span class="mf">83.19</span>  <span class="mf">31.16</span>  <span class="mf">93.07</span>  <span class="mf">88.20</span>     <span class="mi">12</span>    <span class="mf">0.151</span>     <span class="mi">3</span>    <span class="mf">0.257</span>    <span class="mf">0.408</span>
+ <span class="mf">0.00</span>   <span class="mf">0.00</span>  <span class="mf">83.19</span>  <span class="mf">31.16</span>  <span class="mf">93.07</span>  <span class="mf">88.20</span>     <span class="mi">12</span>    <span class="mf">0.151</span>     <span class="mi">3</span>    <span class="mf">0.257</span>    <span class="mf">0.408</span>
+ <span class="mf">0.00</span>   <span class="mf">0.00</span>  <span class="mf">84.19</span>  <span class="mf">31.16</span>  <span class="mf">93.07</span>  <span class="mf">88.20</span>     <span class="mi">12</span>    <span class="mf">0.151</span>     <span class="mi">3</span>    <span class="mf">0.257</span>    <span class="mf">0.408</span>
+ <span class="mf">0.00</span>   <span class="mf">0.00</span>  <span class="mf">84.19</span>  <span class="mf">31.16</span>  <span class="mf">93.07</span>  <span class="mf">88.20</span>     <span class="mi">12</span>    <span class="mf">0.151</span>     <span class="mi">3</span>    <span class="mf">0.257</span>    <span class="mf">0.408</span>
+ <span class="mf">0.00</span>   <span class="mf">0.00</span>  <span class="mf">85.03</span>  <span class="mf">31.16</span>  <span class="mf">93.07</span>  <span class="mf">88.20</span>     <span class="mi">12</span>    <span class="mf">0.151</span>     <span class="mi">3</span>    <span class="mf">0.257</span>    <span class="mf">0.408</span>
+ <span class="mf">0.00</span>   <span class="mf">0.00</span>  <span class="mf">85.03</span>  <span class="mf">31.16</span>  <span class="mf">93.07</span>  <span class="mf">88.20</span>     <span class="mi">12</span>    <span class="mf">0.151</span>     <span class="mi">3</span>    <span class="mf">0.257</span>    <span class="mf">0.408</span>
+ <span class="mf">0.00</span>   <span class="mf">0.00</span>  <span class="mf">85.94</span>  <span class="mf">31.16</span>  <span class="mf">93.07</span>  <span class="mf">88.20</span>     <span class="mi">12</span>    <span class="mf">0.151</span>     <span class="mi">3</span>    <span class="mf">0.257</span>    <span class="mf">0.408</span>
+</pre></div>
+</div>
+<p>In this case we see we have a relatively healthy heap profile, with 31.16%
+old generation heap usage and 83% eden. If the old generation routinely is
+above 75% then you probably need more heap (assuming CMS with a 75% occupancy
+threshold). If you do have such persistently high old gen that often means you
+either have under-provisioned the old generation heap, or that there is too
+much live data on heap for Cassandra to collect (e.g. because of memtables).
+Another thing to watch for is time between young garbage collections (YGC),
+which indicate how frequently the eden heap is collected. Each young gc pause
+is about 20-50ms, so if you have a lot of them your clients will notice in
+their high percentile latencies.</p>
+</div>
+<div class="section" id="thread-information-jstack">
+<h3>Thread Information (jstack)<a class="headerlink" href="#thread-information-jstack" title="Permalink to this headline">¶</a></h3>
+<p>To get a point in time snapshot of exactly what Cassandra is doing, run
+<code class="docutils literal notranslate"><span class="pre">jstack</span></code> against the Cassandra PID. <strong>Note</strong> that this does pause the JVM for
+a very brief period (&lt;20ms).:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ jstack &lt;cassandra pid&gt; &gt; threaddump
+
+# display the threaddump
+$ cat threaddump
+...
+
+# look at runnable threads
+$grep RUNNABLE threaddump -B 1
+&quot;Attach Listener&quot; #15 daemon prio=9 os_prio=0 tid=0x00007f829c001000 nid=0x3a74 waiting on condition [0x0000000000000000]
+   java.lang.Thread.State: RUNNABLE
+--
+&quot;DestroyJavaVM&quot; #13 prio=5 os_prio=0 tid=0x00007f82e800e000 nid=0x2a19 waiting on condition [0x0000000000000000]
+   java.lang.Thread.State: RUNNABLE
+--
+&quot;JPS thread pool&quot; #10 prio=5 os_prio=0 tid=0x00007f82e84d0800 nid=0x2a2c runnable [0x00007f82d0856000]
+   java.lang.Thread.State: RUNNABLE
+--
+&quot;Service Thread&quot; #9 daemon prio=9 os_prio=0 tid=0x00007f82e80d7000 nid=0x2a2a runnable [0x0000000000000000]
+   java.lang.Thread.State: RUNNABLE
+--
+&quot;C1 CompilerThread3&quot; #8 daemon prio=9 os_prio=0 tid=0x00007f82e80cc000 nid=0x2a29 waiting on condition [0x0000000000000000]
+   java.lang.Thread.State: RUNNABLE
+--
+...
+
+# Note that the nid is the Linux thread id
+</pre></div>
+</div>
+<p>Some of the most important information in the threaddumps are waiting/blocking
+threads, including what locks or monitors the thread is blocking/waiting on.</p>
+</div>
+</div>
+<div class="section" id="basic-os-tooling">
+<h2>Basic OS Tooling<a class="headerlink" href="#basic-os-tooling" title="Permalink to this headline">¶</a></h2>
+<p>A great place to start when debugging a Cassandra issue is understanding how
+Cassandra is interacting with system resources. The following are all
+resources that Cassandra makes heavy uses of:</p>
+<ul class="simple">
+<li>CPU cores. For executing concurrent user queries</li>
+<li>CPU processing time. For query activity (data decompression, row merging,
+etc…)</li>
+<li>CPU processing time (low priority). For background tasks (compaction,
+streaming, etc …)</li>
+<li>RAM for Java Heap. Used to hold internal data-structures and by default the
+Cassandra memtables. Heap space is a crucial component of write performance
+as well as generally.</li>
+<li>RAM for OS disk cache. Used to cache frequently accessed SSTable blocks. OS
+disk cache is a crucial component of read performance.</li>
+<li>Disks. Cassandra cares a lot about disk read latency, disk write throughput,
+and of course disk space.</li>
+<li>Network latency. Cassandra makes many internode requests, so network latency
+between nodes can directly impact performance.</li>
+<li>Network throughput. Cassandra (as other databases) frequently have the
+so called “incast” problem where a small request (e.g. <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">*</span> <span class="pre">from</span>
+<span class="pre">foo.bar</span></code>) returns a massively large result set (e.g. the entire dataset).
+In such situations outgoing bandwidth is crucial.</li>
+</ul>
+<p>Often troubleshooting Cassandra comes down to troubleshooting what resource
+the machine or cluster is running out of. Then you create more of that resource
+or change the query pattern to make less use of that resource.</p>
+<div class="section" id="high-level-resource-usage-top-htop">
+<h3>High Level Resource Usage (top/htop)<a class="headerlink" href="#high-level-resource-usage-top-htop" title="Permalink to this headline">¶</a></h3>
+<p>Cassandra makes signifiant use of system resources, and often the very first
+useful action is to run <code class="docutils literal notranslate"><span class="pre">top</span></code> or <code class="docutils literal notranslate"><span class="pre">htop</span></code> (<a class="reference external" href="https://hisham.hm/htop/">website</a>)to see the state of the machine.</p>
+<p>Useful things to look at:</p>
+<ul class="simple">
+<li>System load levels. While these numbers can be confusing, generally speaking
+if the load average is greater than the number of CPU cores, Cassandra
+probably won’t have very good (sub 100 millisecond) latencies. See
+<a class="reference external" href="http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html">Linux Load Averages</a>
+for more information.</li>
+<li>CPU utilization. <code class="docutils literal notranslate"><span class="pre">htop</span></code> in particular can help break down CPU utilization
+into <code class="docutils literal notranslate"><span class="pre">user</span></code> (low and normal priority), <code class="docutils literal notranslate"><span class="pre">system</span></code> (kernel), and <code class="docutils literal notranslate"><span class="pre">io-wait</span></code>
+. Cassandra query threads execute as normal priority <code class="docutils literal notranslate"><span class="pre">user</span></code> threads, while
+compaction threads execute as low priority <code class="docutils literal notranslate"><span class="pre">user</span></code> threads. High <code class="docutils literal notranslate"><span class="pre">system</span></code>
+time could indicate problems like thread contention, and high <code class="docutils literal notranslate"><span class="pre">io-wait</span></code>
+may indicate slow disk drives. This can help you understand what Cassandra
+is spending processing resources doing.</li>
+<li>Memory usage. Look for which programs have the most resident memory, it is
+probably Cassandra. The number for Cassandra is likely inaccurately high due
+to how Linux (as of 2018) accounts for memory mapped file memory.</li>
+</ul>
+</div>
+<div class="section" id="io-usage-iostat">
+<span id="os-iostat"></span><h3>IO Usage (iostat)<a class="headerlink" href="#io-usage-iostat" title="Permalink to this headline">¶</a></h3>
+<p>Use iostat to determine how data drives are faring, including latency
+distributions, throughput, and utilization:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo iostat -xdm 2
+Linux 4.13.0-13-generic (hostname)     07/03/2018     _x86_64_    (8 CPU)
+
+Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
+sda               0.00     0.28    0.32    5.42     0.01     0.13    48.55     0.01    2.21    0.26    2.32   0.64   0.37
+sdb               0.00     0.00    0.00    0.00     0.00     0.00    79.34     0.00    0.20    0.20    0.00   0.16   0.00
+sdc               0.34     0.27    0.76    0.36     0.01     0.02    47.56     0.03   26.90    2.98   77.73   9.21   1.03
+
+Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
+sda               0.00     0.00    2.00   32.00     0.01     4.04   244.24     0.54   16.00    0.00   17.00   1.06   3.60
+sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
+sdc               0.00    24.50    0.00  114.00     0.00    11.62   208.70     5.56   48.79    0.00   48.79   1.12  12.80
+</pre></div>
+</div>
+<p>In this case we can see that <code class="docutils literal notranslate"><span class="pre">/dev/sdc1</span></code> is a very slow drive, having an
+<code class="docutils literal notranslate"><span class="pre">await</span></code> close to 50 milliseconds and an <code class="docutils literal notranslate"><span class="pre">avgqu-sz</span></code> close to 5 ios. The
+drive is not particularly saturated (utilization is only 12.8%), but we should
+still be concerned about how this would affect our p99 latency since 50ms is
+quite long for typical Cassandra operations. That being said, in this case
+most of the latency is present in writes (typically writes are more latent
+than reads), which due to the LSM nature of Cassandra is often hidden from
+the user.</p>
+<p>Important metrics to assess using iostat:</p>
+<ul class="simple">
+<li>Reads and writes per second. These numbers will change with the workload,
+but generally speaking the more reads Cassandra has to do from disk the
+slower Cassandra read latencies are. Large numbers of reads per second
+can be a dead giveaway that the cluster has insufficient memory for OS
+page caching.</li>
+<li>Write throughput. Cassandra’s LSM model defers user writes and batches them
+together, which means that throughput to the underlying medium is the most
+important write metric for Cassandra.</li>
+<li>Read latency (<code class="docutils literal notranslate"><span class="pre">r_await</span></code>). When Cassandra missed the OS page cache and reads
+from SSTables, the read latency directly determines how fast Cassandra can
+respond with the data.</li>
+<li>Write latency. Cassandra is less sensitive to write latency except when it
+syncs the commit log. This typically enters into the very high percentiles of
+write latency.</li>
+</ul>
+<p>Note that to get detailed latency breakdowns you will need a more advanced
+tool such as <a class="reference internal" href="#use-bcc-tools"><span class="std std-ref">bcc-tools</span></a>.</p>
+</div>
+<div class="section" id="os-page-cache-usage">
+<h3>OS page Cache Usage<a class="headerlink" href="#os-page-cache-usage" title="Permalink to this headline">¶</a></h3>
+<p>As Cassandra makes heavy use of memory mapped files, the health of the
+operating system’s <a class="reference external" href="https://en.wikipedia.org/wiki/Page_cache">Page Cache</a> is
+crucial to performance. Start by finding how much available cache is in the
+system:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ free -g
+              total        used        free      shared  buff/cache   available
+Mem:             15           9           2           0           3           5
+Swap:             0           0           0
+</pre></div>
+</div>
+<p>In this case 9GB of memory is used by user processes (Cassandra heap) and 8GB
+is available for OS page cache. Of that, 3GB is actually used to cache files.
+If most memory is used and unavailable to the page cache, Cassandra performance
+can suffer significantly. This is why Cassandra starts with a reasonably small
+amount of memory reserved for the heap.</p>
+<p>If you suspect that you are missing the OS page cache frequently you can use
+advanced tools like <a class="reference internal" href="#use-bcc-tools"><span class="std std-ref">cachestat</span></a> or
+<a class="reference internal" href="#use-vmtouch"><span class="std std-ref">vmtouch</span></a> to dive deeper.</p>
+</div>
+<div class="section" id="network-latency-and-reliability">
+<h3>Network Latency and Reliability<a class="headerlink" href="#network-latency-and-reliability" title="Permalink to this headline">¶</a></h3>
+<p>Whenever Cassandra does writes or reads that involve other replicas,
+<code class="docutils literal notranslate"><span class="pre">LOCAL_QUORUM</span></code> reads for example, one of the dominant effects on latency is
+network latency. When trying to debug issues with multi machine operations,
+the network can be an important resource to investigate. You can determine
+internode latency using tools like <code class="docutils literal notranslate"><span class="pre">ping</span></code> and <code class="docutils literal notranslate"><span class="pre">traceroute</span></code> or most
+effectively <code class="docutils literal notranslate"><span class="pre">mtr</span></code>:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ mtr -nr www.google.com
+Start: Sun Jul 22 13:10:28 2018
+HOST: hostname                     Loss%   Snt   Last   Avg  Best  Wrst StDev
+  1.|-- 192.168.1.1                0.0%    10    2.0   1.9   1.1   3.7   0.7
+  2.|-- 96.123.29.15               0.0%    10   11.4  11.0   9.0  16.4   1.9
+  3.|-- 68.86.249.21               0.0%    10   10.6  10.7   9.0  13.7   1.1
+  4.|-- 162.141.78.129             0.0%    10   11.5  10.6   9.6  12.4   0.7
+  5.|-- 162.151.78.253             0.0%    10   10.9  12.1  10.4  20.2   2.8
+  6.|-- 68.86.143.93               0.0%    10   12.4  12.6   9.9  23.1   3.8
+  7.|-- 96.112.146.18              0.0%    10   11.9  12.4  10.6  15.5   1.6
+  9.|-- 209.85.252.250             0.0%    10   13.7  13.2  12.5  13.9   0.0
+ 10.|-- 108.170.242.238            0.0%    10   12.7  12.4  11.1  13.0   0.5
+ 11.|-- 74.125.253.149             0.0%    10   13.4  13.7  11.8  19.2   2.1
+ 12.|-- 216.239.62.40              0.0%    10   13.4  14.7  11.5  26.9   4.6
+ 13.|-- 108.170.242.81             0.0%    10   14.4  13.2  10.9  16.0   1.7
+ 14.|-- 72.14.239.43               0.0%    10   12.2  16.1  11.0  32.8   7.1
+ 15.|-- 216.58.195.68              0.0%    10   25.1  15.3  11.1  25.1   4.8
+</pre></div>
+</div>
+<p>In this example of <code class="docutils literal notranslate"><span class="pre">mtr</span></code>, we can rapidly assess the path that your packets
+are taking, as well as what their typical loss and latency are. Packet loss
+typically leads to between <code class="docutils literal notranslate"><span class="pre">200ms</span></code> and <code class="docutils literal notranslate"><span class="pre">3s</span></code> of additional latency, so that
+can be a common cause of latency issues.</p>
+</div>
+<div class="section" id="network-throughput">
+<h3>Network Throughput<a class="headerlink" href="#network-throughput" title="Permalink to this headline">¶</a></h3>
+<p>As Cassandra is sensitive to outgoing bandwidth limitations, sometimes it is
+useful to determine if network throughput is limited. One handy tool to do
+this is <a class="reference external" href="https://www.systutorials.com/docs/linux/man/8-iftop/">iftop</a> which
+shows both bandwidth usage as well as connection information at a glance. An
+example showing traffic during a stress run against a local <code class="docutils literal notranslate"><span class="pre">ccm</span></code> cluster:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ # remove the -t for ncurses instead of pure text
+$ sudo iftop -nNtP -i lo
+interface: lo
+IP address is: 127.0.0.1
+MAC address is: 00:00:00:00:00:00
+Listening on lo
+   # Host name (port/service if enabled)            last 2s   last 10s   last 40s cumulative
+--------------------------------------------------------------------------------------------
+   1 127.0.0.1:58946                          =&gt;      869Kb      869Kb      869Kb      217KB
+     127.0.0.3:9042                           &lt;=         0b         0b         0b         0B
+   2 127.0.0.1:54654                          =&gt;      736Kb      736Kb      736Kb      184KB
+     127.0.0.1:9042                           &lt;=         0b         0b         0b         0B
+   3 127.0.0.1:51186                          =&gt;      669Kb      669Kb      669Kb      167KB
+     127.0.0.2:9042                           &lt;=         0b         0b         0b         0B
+   4 127.0.0.3:9042                           =&gt;     3.30Kb     3.30Kb     3.30Kb       845B
+     127.0.0.1:58946                          &lt;=         0b         0b         0b         0B
+   5 127.0.0.1:9042                           =&gt;     2.79Kb     2.79Kb     2.79Kb       715B
+     127.0.0.1:54654                          &lt;=         0b         0b         0b         0B
+   6 127.0.0.2:9042                           =&gt;     2.54Kb     2.54Kb     2.54Kb       650B
+     127.0.0.1:51186                          &lt;=         0b         0b         0b         0B
+   7 127.0.0.1:36894                          =&gt;     1.65Kb     1.65Kb     1.65Kb       423B
+     127.0.0.5:7000                           &lt;=         0b         0b         0b         0B
+   8 127.0.0.1:38034                          =&gt;     1.50Kb     1.50Kb     1.50Kb       385B
+     127.0.0.2:7000                           &lt;=         0b         0b         0b         0B
+   9 127.0.0.1:56324                          =&gt;     1.50Kb     1.50Kb     1.50Kb       383B
+     127.0.0.1:7000                           &lt;=         0b         0b         0b         0B
+  10 127.0.0.1:53044                          =&gt;     1.43Kb     1.43Kb     1.43Kb       366B
+     127.0.0.4:7000                           &lt;=         0b         0b         0b         0B
+--------------------------------------------------------------------------------------------
+Total send rate:                                     2.25Mb     2.25Mb     2.25Mb
+Total receive rate:                                      0b         0b         0b
+Total send and receive rate:                         2.25Mb     2.25Mb     2.25Mb
+--------------------------------------------------------------------------------------------
+Peak rate (sent/received/total):                     2.25Mb         0b     2.25Mb
+Cumulative (sent/received/total):                     576KB         0B      576KB
+============================================================================================
+</pre></div>
+</div>
+<p>In this case we can see that bandwidth is fairly shared between many peers,
+but if the total was getting close to the rated capacity of the NIC or was focussed
+on a single client, that may indicate a clue as to what issue is occurring.</p>
+</div>
+</div>
+<div class="section" id="advanced-tools">
+<h2>Advanced tools<a class="headerlink" href="#advanced-tools" title="Permalink to this headline">¶</a></h2>
+<p>Sometimes as an operator you may need to really dive deep. This is where
+advanced OS tooling can come in handy.</p>
+<div class="section" id="bcc-tools">
+<span id="use-bcc-tools"></span><h3>bcc-tools<a class="headerlink" href="#bcc-tools" title="Permalink to this headline">¶</a></h3>
+<p>Most modern Linux distributions (kernels newer than <code class="docutils literal notranslate"><span class="pre">4.1</span></code>) support <a class="reference external" href="https://github.com/iovisor/bcc">bcc-tools</a> for diving deep into performance problems.
+First install <code class="docutils literal notranslate"><span class="pre">bcc-tools</span></code>, e.g.  via <code class="docutils literal notranslate"><span class="pre">apt</span></code> on Debian:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ apt install bcc-tools
+</pre></div>
+</div>
+<p>Then you can use all the tools that <code class="docutils literal notranslate"><span class="pre">bcc-tools</span></code> contains. One of the most
+useful tools is <code class="docutils literal notranslate"><span class="pre">cachestat</span></code>
+(<a class="reference external" href="https://github.com/iovisor/bcc/blob/master/tools/cachestat_example.txt">cachestat examples</a>)
+which allows you to determine exactly how many OS page cache hits and misses
+are happening:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo /usr/share/bcc/tools/cachestat -T 1
+TIME        TOTAL   MISSES     HITS  DIRTIES   BUFFERS_MB  CACHED_MB
+18:44:08       66       66        0       64           88       4427
+18:44:09       40       40        0       75           88       4427
+18:44:10     4353       45     4308      203           88       4427
+18:44:11       84       77        7       13           88       4428
+18:44:12     2511       14     2497       14           88       4428
+18:44:13      101       98        3       18           88       4428
+18:44:14    16741        0    16741       58           88       4428
+18:44:15     1935       36     1899       18           88       4428
+18:44:16       89       34       55       18           88       4428
+</pre></div>
+</div>
+<p>In this case there are not too many page cache <code class="docutils literal notranslate"><span class="pre">MISSES</span></code> which indicates a
+reasonably sized cache. These metrics are the most direct measurement of your
+Cassandra node’s “hot” dataset. If you don’t have enough cache, <code class="docutils literal notranslate"><span class="pre">MISSES</span></code> will
+be high and performance will be slow. If you have enough cache, <code class="docutils literal notranslate"><span class="pre">MISSES</span></code> will
+be low and performance will be fast (as almost all reads are being served out
+of memory).</p>
+<p>You can also measure disk latency distributions using <code class="docutils literal notranslate"><span class="pre">biolatency</span></code>
+(<a class="reference external" href="https://github.com/iovisor/bcc/blob/master/tools/biolatency_example.txt">biolatency examples</a>)
+to get an idea of how slow Cassandra will be when reads miss the OS page Cache
+and have to hit disks:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo /usr/share/bcc/tools/biolatency -D 10
+Tracing block device I/O... Hit Ctrl-C to end.
+
+
+disk = &#39;sda&#39;
+     usecs               : count     distribution
+         0 -&gt; 1          : 0        |                                        |
+         2 -&gt; 3          : 0        |                                        |
+         4 -&gt; 7          : 0        |                                        |
+         8 -&gt; 15         : 0        |                                        |
+        16 -&gt; 31         : 12       |****************************************|
+        32 -&gt; 63         : 9        |******************************          |
+        64 -&gt; 127        : 1        |***                                     |
+       128 -&gt; 255        : 3        |**********                              |
+       256 -&gt; 511        : 7        |***********************                 |
+       512 -&gt; 1023       : 2        |******                                  |
+
+disk = &#39;sdc&#39;
+     usecs               : count     distribution
+         0 -&gt; 1          : 0        |                                        |
+         2 -&gt; 3          : 0        |                                        |
+         4 -&gt; 7          : 0        |                                        |
+         8 -&gt; 15         : 0        |                                        |
+        16 -&gt; 31         : 0        |                                        |
+        32 -&gt; 63         : 0        |                                        |
+        64 -&gt; 127        : 41       |************                            |
+       128 -&gt; 255        : 17       |*****                                   |
+       256 -&gt; 511        : 13       |***                                     |
+       512 -&gt; 1023       : 2        |                                        |
+      1024 -&gt; 2047       : 0        |                                        |
+      2048 -&gt; 4095       : 0        |                                        |
+      4096 -&gt; 8191       : 56       |*****************                       |
+      8192 -&gt; 16383      : 131      |****************************************|
+     16384 -&gt; 32767      : 9        |**                                      |
+</pre></div>
+</div>
+<p>In this case most ios on the data drive (<code class="docutils literal notranslate"><span class="pre">sdc</span></code>) are fast, but many take
+between 8 and 16 milliseconds.</p>
+<p>Finally <code class="docutils literal notranslate"><span class="pre">biosnoop</span></code> (<a class="reference external" href="https://github.com/iovisor/bcc/blob/master/tools/biosnoop_example.txt">examples</a>)
+can be used to dive even deeper and see per IO latencies:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo /usr/share/bcc/tools/biosnoop | grep java | head
+0.000000000    java           17427  sdc     R  3972458600 4096      13.58
+0.000818000    java           17427  sdc     R  3972459408 4096       0.35
+0.007098000    java           17416  sdc     R  3972401824 4096       5.81
+0.007896000    java           17416  sdc     R  3972489960 4096       0.34
+0.008920000    java           17416  sdc     R  3972489896 4096       0.34
+0.009487000    java           17427  sdc     R  3972401880 4096       0.32
+0.010238000    java           17416  sdc     R  3972488368 4096       0.37
+0.010596000    java           17427  sdc     R  3972488376 4096       0.34
+0.011236000    java           17410  sdc     R  3972488424 4096       0.32
+0.011825000    java           17427  sdc     R  3972488576 16384      0.65
+... time passes
+8.032687000    java           18279  sdc     R  10899712  122880     3.01
+8.033175000    java           18279  sdc     R  10899952  8192       0.46
+8.073295000    java           18279  sdc     R  23384320  122880     3.01
+8.073768000    java           18279  sdc     R  23384560  8192       0.46
+</pre></div>
+</div>
+<p>With <code class="docutils literal notranslate"><span class="pre">biosnoop</span></code> you see every single IO and how long they take. This data
+can be used to construct the latency distributions in <code class="docutils literal notranslate"><span class="pre">biolatency</span></code> but can
+also be used to better understand how disk latency affects performance. For
+example this particular drive takes ~3ms to service a memory mapped read due to
+the large default value (<code class="docutils literal notranslate"><span class="pre">128kb</span></code>) of <code class="docutils literal notranslate"><span class="pre">read_ahead_kb</span></code>. To improve point read
+performance you may may want to decrease <code class="docutils literal notranslate"><span class="pre">read_ahead_kb</span></code> on fast data volumes
+such as SSDs while keeping the a higher value like <code class="docutils literal notranslate"><span class="pre">128kb</span></code> value is probably
+right for HDs. There are tradeoffs involved, see <a class="reference external" href="https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt">queue-sysfs</a> docs for more
+information, but regardless <code class="docutils literal notranslate"><span class="pre">biosnoop</span></code> is useful for understanding <em>how</em>
+Cassandra uses drives.</p>
+</div>
+<div class="section" id="vmtouch">
+<span id="use-vmtouch"></span><h3>vmtouch<a class="headerlink" href="#vmtouch" title="Permalink to this headline">¶</a></h3>
+<p>Sometimes it’s useful to know how much of the Cassandra data files are being
+cached by the OS. A great tool for answering this question is
+<a class="reference external" href="https://github.com/hoytech/vmtouch">vmtouch</a>.</p>
+<p>First install it:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ git clone https://github.com/hoytech/vmtouch.git
+$ cd vmtouch
+$ make
+</pre></div>
+</div>
+<p>Then run it on the Cassandra data directory:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ ./vmtouch /var/lib/cassandra/data/
+           Files: 312
+     Directories: 92
+  Resident Pages: 62503/64308  244M/251M  97.2%
+         Elapsed: 0.005657 seconds
+</pre></div>
+</div>
+<p>In this case almost the entire dataset is hot in OS page Cache. Generally
+speaking the percentage doesn’t really matter unless reads are missing the
+cache (per e.g. <a class="reference internal" href="#use-bcc-tools"><span class="std std-ref">cachestat</span></a>), in which case having
+additional memory may help read performance.</p>
+</div>
+<div class="section" id="cpu-flamegraphs">
+<h3>CPU Flamegraphs<a class="headerlink" href="#cpu-flamegraphs" title="Permalink to this headline">¶</a></h3>
+<p>Cassandra often uses a lot of CPU, but telling <em>what</em> it is doing can prove
+difficult. One of the best ways to analyze Cassandra on CPU time is to use
+<a class="reference external" href="http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html">CPU Flamegraphs</a>
+which display in a useful way which areas of Cassandra code are using CPU. This
+may help narrow down a compaction problem to a “compaction problem dropping
+tombstones” or just generally help you narrow down what Cassandra is doing
+while it is having an issue. To get CPU flamegraphs follow the instructions for
+<a class="reference external" href="http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html#Java">Java Flamegraphs</a>.</p>
+<p>Generally:</p>
+<ol class="arabic simple">
+<li>Enable the <code class="docutils literal notranslate"><span class="pre">-XX:+PreserveFramePointer</span></code> option in Cassandra’s
+<code class="docutils literal notranslate"><span class="pre">jvm.options</span></code> configuation file. This has a negligible performance impact
+but allows you actually see what Cassandra is doing.</li>
+<li>Run <code class="docutils literal notranslate"><span class="pre">perf</span></code> to get some data.</li>
+<li>Send that data through the relevant scripts in the FlameGraph toolset and
+convert the data into a pretty flamegraph. View the resulting SVG image in
+a browser or other image browser.</li>
+</ol>
+<p>For example just cloning straight off github we first install the
+<code class="docutils literal notranslate"><span class="pre">perf-map-agent</span></code> to the location of our JVMs (assumed to be
+<code class="docutils literal notranslate"><span class="pre">/usr/lib/jvm</span></code>):</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo bash
+$ export JAVA_HOME=/usr/lib/jvm/java-8-oracle/
+$ cd /usr/lib/jvm
+$ git clone --depth=1 https://github.com/jvm-profiling-tools/perf-map-agent
+$ cd perf-map-agent
+$ cmake .
+$ make
+</pre></div>
+</div>
+<p>Now to get a flamegraph:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ git clone --depth=1 https://github.com/brendangregg/FlameGraph
+$ sudo bash
+$ cd FlameGraph
+$ # Record traces of Cassandra and map symbols for all java processes
+$ perf record -F 49 -a -g -p &lt;CASSANDRA PID&gt; -- sleep 30; ./jmaps
+$ # Translate the data
+$ perf script &gt; cassandra_stacks
+$ cat cassandra_stacks | ./stackcollapse-perf.pl | grep -v cpu_idle | \
+    ./flamegraph.pl --color=java --hash &gt; cassandra_flames.svg
+</pre></div>
+</div>
+<p>The resulting SVG is searchable, zoomable, and generally easy to introspect
+using a browser.</p>
+</div>
+<div class="section" id="packet-capture">
+<span id="id4"></span><h3>Packet Capture<a class="headerlink" href="#packet-capture" title="Permalink to this headline">¶</a></h3>
+<p>Sometimes you have to understand what queries a Cassandra node is performing
+<em>right now</em> to troubleshoot an issue. For these times trusty packet capture
+tools like <code class="docutils literal notranslate"><span class="pre">tcpdump</span></code> and <a class="reference external" href="https://www.wireshark.org/">Wireshark</a> can be very helpful to dissect packet captures.
+Wireshark even has native <a class="reference external" href="https://www.wireshark.org/docs/dfref/c/cql.html">CQL support</a> although it sometimes has
+compatibility issues with newer Cassandra protocol releases.</p>
+<p>To get a packet capture first capture some packets:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo tcpdump -U -s0 -i &lt;INTERFACE&gt; -w cassandra.pcap -n &quot;tcp port 9042&quot;
+</pre></div>
+</div>
+<p>Now open it up with wireshark:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ wireshark cassandra.pcap
+</pre></div>
+</div>
+<p>If you don’t see CQL like statements try telling to decode as CQL by right
+clicking on a packet going to 9042 -&gt; <code class="docutils literal notranslate"><span class="pre">Decode</span> <span class="pre">as</span></code> -&gt; select CQL from the
+dropdown for port 9042.</p>
+<p>If you don’t want to do this manually or use a GUI, you can also use something
+like <a class="reference external" href="https://github.com/jolynch/cqltrace">cqltrace</a> to ease obtaining and
+parsing CQL packet captures.</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="../development/index.html" class="btn btn-default pull-right " role="button" title="Contributing to Cassandra" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="use_nodetool.html" class="btn btn-default" role="button" title="Use Nodetool" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/src/doc/latest b/src/doc/latest
index 08a056e..be775f1 120000
--- a/src/doc/latest
+++ b/src/doc/latest
@@ -1 +1 @@
-4.0-beta3
\ No newline at end of file
+4.0-rc1
\ No newline at end of file
diff --git a/src/doc/stable b/src/doc/stable
index 530fe91..902b2c9 120000
--- a/src/doc/stable
+++ b/src/doc/stable
@@ -1 +1 @@
-3.11.9
\ No newline at end of file
+3.11
\ No newline at end of file